summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/ir
diff options
context:
space:
mode:
authorGravatar FernandoS272021-04-17 11:56:45 +0200
committerGravatar ameerj2021-07-22 21:51:28 -0400
commit04c459fc8d99b41fa8a03c49523599e9bf797f9d (patch)
tree199934b3ef85a5affbe9ef115e9b0a1085851b36 /src/shader_recompiler/frontend/ir
parentshader: Implement SR_Y_DIRECTION (diff)
downloadyuzu-04c459fc8d99b41fa8a03c49523599e9bf797f9d.tar.gz
yuzu-04c459fc8d99b41fa8a03c49523599e9bf797f9d.tar.xz
yuzu-04c459fc8d99b41fa8a03c49523599e9bf797f9d.zip
shader: Implement fine derivates constant propagation
Diffstat (limited to 'src/shader_recompiler/frontend/ir')
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.cpp8
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.h4
-rw-r--r--src/shader_recompiler/frontend/ir/opcodes.inc2
3 files changed, 14 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.cpp b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
index c3e8d0681..845a57b1e 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.cpp
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
@@ -1925,4 +1925,12 @@ F32 IREmitter::FSwizzleAdd(const F32& a, const F32& b, const U32& swizzle, FpCon
1925 return Inst<F32>(Opcode::FSwizzleAdd, Flags{control}, a, b, swizzle); 1925 return Inst<F32>(Opcode::FSwizzleAdd, Flags{control}, a, b, swizzle);
1926} 1926}
1927 1927
1928F32 IREmitter::DPdxFine(const F32& a) {
1929 return Inst<F32>(Opcode::DPdxFine, a);
1930}
1931
1932F32 IREmitter::DPdyFine(const F32& a) {
1933 return Inst<F32>(Opcode::DPdyFine, a);
1934}
1935
1928} // namespace Shader::IR 1936} // namespace Shader::IR
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.h b/src/shader_recompiler/frontend/ir/ir_emitter.h
index 7e67f5e30..c7101d668 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.h
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.h
@@ -353,6 +353,10 @@ public:
353 [[nodiscard]] F32 FSwizzleAdd(const F32& a, const F32& b, const U32& swizzle, 353 [[nodiscard]] F32 FSwizzleAdd(const F32& a, const F32& b, const U32& swizzle,
354 FpControl control = {}); 354 FpControl control = {});
355 355
356 [[nodiscard]] F32 DPdxFine(const F32& a);
357
358 [[nodiscard]] F32 DPdyFine(const F32& a);
359
356private: 360private:
357 IR::Block::iterator insertion_point; 361 IR::Block::iterator insertion_point;
358 362
diff --git a/src/shader_recompiler/frontend/ir/opcodes.inc b/src/shader_recompiler/frontend/ir/opcodes.inc
index 269de8ca5..e4cb8964a 100644
--- a/src/shader_recompiler/frontend/ir/opcodes.inc
+++ b/src/shader_recompiler/frontend/ir/opcodes.inc
@@ -511,3 +511,5 @@ OPCODE(ShuffleUp, U32, U32,
511OPCODE(ShuffleDown, U32, U32, U32, U32, U32, ) 511OPCODE(ShuffleDown, U32, U32, U32, U32, U32, )
512OPCODE(ShuffleButterfly, U32, U32, U32, U32, U32, ) 512OPCODE(ShuffleButterfly, U32, U32, U32, U32, U32, )
513OPCODE(FSwizzleAdd, F32, F32, F32, U32, ) 513OPCODE(FSwizzleAdd, F32, F32, F32, U32, )
514OPCODE(DPdxFine, F32, F32, )
515OPCODE(DPdyFine, F32, F32, )