summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/ir
diff options
context:
space:
mode:
authorGravatar FernandoS272021-04-02 23:05:47 +0200
committerGravatar ameerj2021-07-22 21:51:26 -0400
commit45d547af11a18434ea17e4427db7286856a19537 (patch)
treea12a3d283abb99d52c3084b9ded7d1aa9b0bd03f /src/shader_recompiler/frontend/ir
parentshader: Fix shared memory on cool drivers (diff)
downloadyuzu-45d547af11a18434ea17e4427db7286856a19537.tar.gz
yuzu-45d547af11a18434ea17e4427db7286856a19537.tar.xz
yuzu-45d547af11a18434ea17e4427db7286856a19537.zip
shader: Implement SR_LaneId
Diffstat (limited to 'src/shader_recompiler/frontend/ir')
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.cpp4
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.h2
-rw-r--r--src/shader_recompiler/frontend/ir/opcodes.inc1
3 files changed, 7 insertions, 0 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.cpp b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
index 2fd90303f..b5f61956a 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.cpp
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
@@ -355,6 +355,10 @@ U32 IREmitter::LocalInvocationIdZ() {
355 return U32{CompositeExtract(Inst(Opcode::LocalInvocationId), 2)}; 355 return U32{CompositeExtract(Inst(Opcode::LocalInvocationId), 2)};
356} 356}
357 357
358U32 IREmitter::LaneId() {
359 return Inst<U32>(Opcode::LaneId);
360}
361
358U32 IREmitter::LoadGlobalU8(const U64& address) { 362U32 IREmitter::LoadGlobalU8(const U64& address) {
359 return Inst<U32>(Opcode::LoadGlobalU8, address); 363 return Inst<U32>(Opcode::LoadGlobalU8, address);
360} 364}
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.h b/src/shader_recompiler/frontend/ir/ir_emitter.h
index 5bebf66e3..e034d672f 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.h
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.h
@@ -97,6 +97,8 @@ public:
97 [[nodiscard]] U32 LocalInvocationIdY(); 97 [[nodiscard]] U32 LocalInvocationIdY();
98 [[nodiscard]] U32 LocalInvocationIdZ(); 98 [[nodiscard]] U32 LocalInvocationIdZ();
99 99
100 [[nodiscard]] U32 LaneId();
101
100 [[nodiscard]] U32 LoadGlobalU8(const U64& address); 102 [[nodiscard]] U32 LoadGlobalU8(const U64& address);
101 [[nodiscard]] U32 LoadGlobalS8(const U64& address); 103 [[nodiscard]] U32 LoadGlobalS8(const U64& address);
102 [[nodiscard]] U32 LoadGlobalU16(const U64& address); 104 [[nodiscard]] U32 LoadGlobalU16(const U64& address);
diff --git a/src/shader_recompiler/frontend/ir/opcodes.inc b/src/shader_recompiler/frontend/ir/opcodes.inc
index d9e0d5471..74e956930 100644
--- a/src/shader_recompiler/frontend/ir/opcodes.inc
+++ b/src/shader_recompiler/frontend/ir/opcodes.inc
@@ -63,6 +63,7 @@ OPCODE(SetTRFlag, Void, U1,
63OPCODE(SetMXFlag, Void, U1, ) 63OPCODE(SetMXFlag, Void, U1, )
64OPCODE(WorkgroupId, U32x3, ) 64OPCODE(WorkgroupId, U32x3, )
65OPCODE(LocalInvocationId, U32x3, ) 65OPCODE(LocalInvocationId, U32x3, )
66OPCODE(LaneId, U32, )
66 67
67// Undefined 68// Undefined
68OPCODE(UndefU1, U1, ) 69OPCODE(UndefU1, U1, )