summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/ir/ir_emitter.h
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2021-02-14 22:46:40 -0300
committerGravatar ameerj2021-07-22 21:51:22 -0400
commit1b0cf2309c760c1cb97a230a1572f8e87f84444a (patch)
tree6316825f65565b4c764b7851d061be0776a89974 /src/shader_recompiler/frontend/ir/ir_emitter.h
parentshader: Support SSA loops on IR (diff)
downloadyuzu-1b0cf2309c760c1cb97a230a1572f8e87f84444a.tar.gz
yuzu-1b0cf2309c760c1cb97a230a1572f8e87f84444a.tar.xz
yuzu-1b0cf2309c760c1cb97a230a1572f8e87f84444a.zip
shader: Add support for forward declarations
Diffstat (limited to 'src/shader_recompiler/frontend/ir/ir_emitter.h')
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.h b/src/shader_recompiler/frontend/ir/ir_emitter.h
index 4decb46bc..24b012a39 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.h
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.h
@@ -178,7 +178,7 @@ private:
178 } 178 }
179 179
180 template <typename T> 180 template <typename T>
181 requires(sizeof(T) <= sizeof(u64) && std::is_trivially_copyable_v<T>) struct Flags { 181 requires(sizeof(T) <= sizeof(u32) && std::is_trivially_copyable_v<T>) struct Flags {
182 Flags() = default; 182 Flags() = default;
183 Flags(T proxy_) : proxy{proxy_} {} 183 Flags(T proxy_) : proxy{proxy_} {}
184 184
@@ -187,7 +187,7 @@ private:
187 187
188 template <typename T = Value, typename FlagType, typename... Args> 188 template <typename T = Value, typename FlagType, typename... Args>
189 T Inst(Opcode op, Flags<FlagType> flags, Args... args) { 189 T Inst(Opcode op, Flags<FlagType> flags, Args... args) {
190 u64 raw_flags{}; 190 u32 raw_flags{};
191 std::memcpy(&raw_flags, &flags.proxy, sizeof(flags.proxy)); 191 std::memcpy(&raw_flags, &flags.proxy, sizeof(flags.proxy));
192 auto it{block->PrependNewInst(insertion_point, op, {Value{args}...}, raw_flags)}; 192 auto it{block->PrependNewInst(insertion_point, op, {Value{args}...}, raw_flags)};
193 return T{Value{&*it}}; 193 return T{Value{&*it}};