Where does MetalFX Upscaling's calculation take place?

Does MetalFX Upscaling's calculation take place,

  1. in GPU shader cores? just the same as traditional shaders?
  2. in NPU?
  3. in some special circutes? which may has better performance than [1] and [2].