diff options
Diffstat (limited to 'src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp')
| -rw-r--r-- | src/shader_recompiler/backend/glasm/emit_glasm_integer.cpp | 9 |
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 | } |