diff options
| author | 2021-02-14 20:15:42 -0300 | |
|---|---|---|
| committer | 2021-07-22 21:51:22 -0400 | |
| commit | cbfb7d182a4e90e4e263696d1fca35e47d3eabb4 (patch) | |
| tree | a8d384aa0daefdfafd9b61330e06b1cf7ac40ea6 /src/shader_recompiler/backend | |
| parent | shader: Misc fixes (diff) | |
| download | yuzu-cbfb7d182a4e90e4e263696d1fca35e47d3eabb4.tar.gz yuzu-cbfb7d182a4e90e4e263696d1fca35e47d3eabb4.tar.xz yuzu-cbfb7d182a4e90e4e263696d1fca35e47d3eabb4.zip | |
shader: Support SSA loops on IR
Diffstat (limited to 'src/shader_recompiler/backend')
3 files changed, 15 insertions, 15 deletions
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv.h b/src/shader_recompiler/backend/spirv/emit_spirv.h index 46ec7a1bb..6b09757d1 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv.h +++ b/src/shader_recompiler/backend/spirv/emit_spirv.h | |||
| @@ -159,10 +159,10 @@ private: | |||
| 159 | Id EmitWorkgroupId(EmitContext& ctx); | 159 | Id EmitWorkgroupId(EmitContext& ctx); |
| 160 | Id EmitLocalInvocationId(EmitContext& ctx); | 160 | Id EmitLocalInvocationId(EmitContext& ctx); |
| 161 | Id EmitUndefU1(EmitContext& ctx); | 161 | Id EmitUndefU1(EmitContext& ctx); |
| 162 | void EmitUndefU8(EmitContext& ctx); | 162 | Id EmitUndefU8(EmitContext& ctx); |
| 163 | void EmitUndefU16(EmitContext& ctx); | 163 | Id EmitUndefU16(EmitContext& ctx); |
| 164 | void EmitUndefU32(EmitContext& ctx); | 164 | Id EmitUndefU32(EmitContext& ctx); |
| 165 | void EmitUndefU64(EmitContext& ctx); | 165 | Id EmitUndefU64(EmitContext& ctx); |
| 166 | void EmitLoadGlobalU8(EmitContext& ctx); | 166 | void EmitLoadGlobalU8(EmitContext& ctx); |
| 167 | void EmitLoadGlobalS8(EmitContext& ctx); | 167 | void EmitLoadGlobalS8(EmitContext& ctx); |
| 168 | void EmitLoadGlobalU16(EmitContext& ctx); | 168 | void EmitLoadGlobalU16(EmitContext& ctx); |
| @@ -297,12 +297,12 @@ private: | |||
| 297 | void EmitBitFieldInsert(EmitContext& ctx); | 297 | void EmitBitFieldInsert(EmitContext& ctx); |
| 298 | void EmitBitFieldSExtract(EmitContext& ctx); | 298 | void EmitBitFieldSExtract(EmitContext& ctx); |
| 299 | Id EmitBitFieldUExtract(EmitContext& ctx, Id base, Id offset, Id count); | 299 | Id EmitBitFieldUExtract(EmitContext& ctx, Id base, Id offset, Id count); |
| 300 | void EmitSLessThan(EmitContext& ctx); | 300 | Id EmitSLessThan(EmitContext& ctx, Id lhs, Id rhs); |
| 301 | void EmitULessThan(EmitContext& ctx); | 301 | void EmitULessThan(EmitContext& ctx); |
| 302 | void EmitIEqual(EmitContext& ctx); | 302 | void EmitIEqual(EmitContext& ctx); |
| 303 | void EmitSLessThanEqual(EmitContext& ctx); | 303 | void EmitSLessThanEqual(EmitContext& ctx); |
| 304 | void EmitULessThanEqual(EmitContext& ctx); | 304 | void EmitULessThanEqual(EmitContext& ctx); |
| 305 | void EmitSGreaterThan(EmitContext& ctx); | 305 | Id EmitSGreaterThan(EmitContext& ctx, Id lhs, Id rhs); |
| 306 | void EmitUGreaterThan(EmitContext& ctx); | 306 | void EmitUGreaterThan(EmitContext& ctx); |
| 307 | void EmitINotEqual(EmitContext& ctx); | 307 | void EmitINotEqual(EmitContext& ctx); |
| 308 | void EmitSGreaterThanEqual(EmitContext& ctx); | 308 | void EmitSGreaterThanEqual(EmitContext& ctx); |
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp index 3ef4f3d78..e811a63ab 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_integer.cpp | |||
| @@ -73,8 +73,8 @@ Id EmitSPIRV::EmitBitFieldUExtract(EmitContext& ctx, Id base, Id offset, Id coun | |||
| 73 | return ctx.OpBitFieldUExtract(ctx.u32[1], base, offset, count); | 73 | return ctx.OpBitFieldUExtract(ctx.u32[1], base, offset, count); |
| 74 | } | 74 | } |
| 75 | 75 | ||
| 76 | void EmitSPIRV::EmitSLessThan(EmitContext&) { | 76 | Id EmitSPIRV::EmitSLessThan(EmitContext& ctx, Id lhs, Id rhs) { |
| 77 | throw NotImplementedException("SPIR-V Instruction"); | 77 | return ctx.OpSLessThan(ctx.u1, lhs, rhs); |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | void EmitSPIRV::EmitULessThan(EmitContext&) { | 80 | void EmitSPIRV::EmitULessThan(EmitContext&) { |
| @@ -93,8 +93,8 @@ void EmitSPIRV::EmitULessThanEqual(EmitContext&) { | |||
| 93 | throw NotImplementedException("SPIR-V Instruction"); | 93 | throw NotImplementedException("SPIR-V Instruction"); |
| 94 | } | 94 | } |
| 95 | 95 | ||
| 96 | void EmitSPIRV::EmitSGreaterThan(EmitContext&) { | 96 | Id EmitSPIRV::EmitSGreaterThan(EmitContext& ctx, Id lhs, Id rhs) { |
| 97 | throw NotImplementedException("SPIR-V Instruction"); | 97 | return ctx.OpSGreaterThan(ctx.u1, lhs, rhs); |
| 98 | } | 98 | } |
| 99 | 99 | ||
| 100 | void EmitSPIRV::EmitUGreaterThan(EmitContext&) { | 100 | void EmitSPIRV::EmitUGreaterThan(EmitContext&) { |
diff --git a/src/shader_recompiler/backend/spirv/emit_spirv_undefined.cpp b/src/shader_recompiler/backend/spirv/emit_spirv_undefined.cpp index 859b60a95..a6f542360 100644 --- a/src/shader_recompiler/backend/spirv/emit_spirv_undefined.cpp +++ b/src/shader_recompiler/backend/spirv/emit_spirv_undefined.cpp | |||
| @@ -10,19 +10,19 @@ Id EmitSPIRV::EmitUndefU1(EmitContext& ctx) { | |||
| 10 | return ctx.OpUndef(ctx.u1); | 10 | return ctx.OpUndef(ctx.u1); |
| 11 | } | 11 | } |
| 12 | 12 | ||
| 13 | void EmitSPIRV::EmitUndefU8(EmitContext&) { | 13 | Id EmitSPIRV::EmitUndefU8(EmitContext&) { |
| 14 | throw NotImplementedException("SPIR-V Instruction"); | 14 | throw NotImplementedException("SPIR-V Instruction"); |
| 15 | } | 15 | } |
| 16 | 16 | ||
| 17 | void EmitSPIRV::EmitUndefU16(EmitContext&) { | 17 | Id EmitSPIRV::EmitUndefU16(EmitContext&) { |
| 18 | throw NotImplementedException("SPIR-V Instruction"); | 18 | throw NotImplementedException("SPIR-V Instruction"); |
| 19 | } | 19 | } |
| 20 | 20 | ||
| 21 | void EmitSPIRV::EmitUndefU32(EmitContext&) { | 21 | Id EmitSPIRV::EmitUndefU32(EmitContext& ctx) { |
| 22 | throw NotImplementedException("SPIR-V Instruction"); | 22 | return ctx.OpUndef(ctx.u32[1]); |
| 23 | } | 23 | } |
| 24 | 24 | ||
| 25 | void EmitSPIRV::EmitUndefU64(EmitContext&) { | 25 | Id EmitSPIRV::EmitUndefU64(EmitContext&) { |
| 26 | throw NotImplementedException("SPIR-V Instruction"); | 26 | throw NotImplementedException("SPIR-V Instruction"); |
| 27 | } | 27 | } |
| 28 | 28 | ||