summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2021-05-14 00:40:54 -0300
committerGravatar ameerj2021-07-22 21:51:31 -0400
commitd54d7de40e7295827b0e4e4026441b53d3fc9569 (patch)
tree29b5074f851292dace7aeb5da7716675544b3735 /src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
parentglasm: Implement Storage atomics (diff)
downloadyuzu-d54d7de40e7295827b0e4e4026441b53d3fc9569.tar.gz
yuzu-d54d7de40e7295827b0e4e4026441b53d3fc9569.tar.xz
yuzu-d54d7de40e7295827b0e4e4026441b53d3fc9569.zip
glasm: Rework control flow introducing a syntax list
This commit regresses VertexA shaders, their transformation pass has to be adapted to the new control flow.
Diffstat (limited to 'src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp')
-rw-r--r--src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp b/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
index 15fd23356..adcc0404b 100644
--- a/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
+++ b/src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp
@@ -91,7 +91,8 @@ void EmitBitFieldInsert(EmitContext& ctx, IR::Inst& inst, ScalarS32 base, Scalar
91 if (count.type != Type::Register && offset.type != Type::Register) { 91 if (count.type != Type::Register && offset.type != Type::Register) {
92 ctx.Add("BFI.S {},{{{},{},0,0}},{},{};", ret, count, offset, insert, base); 92 ctx.Add("BFI.S {},{{{},{},0,0}},{},{};", ret, count, offset, insert, base);
93 } else { 93 } else {
94 ctx.Add("MOV.S RC.x,{};MOV.U RC.y,{};" 94 ctx.Add("MOV.S RC.x,{};"
95 "MOV.S RC.y,{};"
95 "BFI.S {},RC,{},{};", 96 "BFI.S {},RC,{},{};",
96 count, offset, ret, insert, base); 97 count, offset, ret, insert, base);
97 } 98 }
@@ -103,7 +104,8 @@ void EmitBitFieldSExtract(EmitContext& ctx, IR::Inst& inst, ScalarS32 base, Scal
103 if (count.type != Type::Register && offset.type != Type::Register) { 104 if (count.type != Type::Register && offset.type != Type::Register) {
104 ctx.Add("BFE.S {},{{{},{},0,0}},{};", ret, count, offset, base); 105 ctx.Add("BFE.S {},{{{},{},0,0}},{};", ret, count, offset, base);
105 } else { 106 } else {
106 ctx.Add("MOV.S RC.x,{};MOV.U RC.y,{};" 107 ctx.Add("MOV.S RC.x,{};"
108 "MOV.S RC.y,{};"
107 "BFE.S {},RC,{};", 109 "BFE.S {},RC,{};",
108 count, offset, ret, base); 110 count, offset, ret, base);
109 } 111 }
@@ -115,7 +117,8 @@ void EmitBitFieldUExtract(EmitContext& ctx, IR::Inst& inst, ScalarU32 base, Scal
115 if (count.type != Type::Register && offset.type != Type::Register) { 117 if (count.type != Type::Register && offset.type != Type::Register) {
116 ctx.Add("BFE.U {},{{{},{},0,0}},{};", ret, count, offset, base); 118 ctx.Add("BFE.U {},{{{},{},0,0}},{};", ret, count, offset, base);
117 } else { 119 } else {
118 ctx.Add("MOV.U RC.x,{};MOV.U RC.y,{};" 120 ctx.Add("MOV.U RC.x,{};"
121 "MOV.U RC.y,{};"
119 "BFE.U {},RC,{};", 122 "BFE.U {},RC,{};",
120 count, offset, ret, base); 123 count, offset, ret, base);
121 } 124 }