diff options
| author | 2021-04-04 02:31:09 -0300 | |
|---|---|---|
| committer | 2021-07-22 21:51:26 -0400 | |
| commit | 3f594dd86bd1ee1b178109132482c7d6b43e66dd (patch) | |
| tree | 7de68eba744644121f3409f2de8c2e7a0bd5c125 /src/shader_recompiler/frontend/ir/ir_emitter.cpp | |
| parent | vk_compute_pass: Fix compute passes (diff) | |
| download | yuzu-3f594dd86bd1ee1b178109132482c7d6b43e66dd.tar.gz yuzu-3f594dd86bd1ee1b178109132482c7d6b43e66dd.tar.xz yuzu-3f594dd86bd1ee1b178109132482c7d6b43e66dd.zip | |
shader: Reimplement GetCbufU64 as GetCbufU32x2
It may generate better code on some compilers and it's easier to handle.
Diffstat (limited to 'src/shader_recompiler/frontend/ir/ir_emitter.cpp')
| -rw-r--r-- | src/shader_recompiler/frontend/ir/ir_emitter.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.cpp b/src/shader_recompiler/frontend/ir/ir_emitter.cpp index dbfc670b0..dbd38a28b 100644 --- a/src/shader_recompiler/frontend/ir/ir_emitter.cpp +++ b/src/shader_recompiler/frontend/ir/ir_emitter.cpp | |||
| @@ -162,8 +162,8 @@ U32 IREmitter::GetCbuf(const U32& binding, const U32& byte_offset) { | |||
| 162 | return Inst<U32>(Opcode::GetCbufU32, binding, byte_offset); | 162 | return Inst<U32>(Opcode::GetCbufU32, binding, byte_offset); |
| 163 | } | 163 | } |
| 164 | 164 | ||
| 165 | UAny IREmitter::GetCbuf(const U32& binding, const U32& byte_offset, size_t bitsize, | 165 | Value IREmitter::GetCbuf(const U32& binding, const U32& byte_offset, size_t bitsize, |
| 166 | bool is_signed) { | 166 | bool is_signed) { |
| 167 | switch (bitsize) { | 167 | switch (bitsize) { |
| 168 | case 8: | 168 | case 8: |
| 169 | return Inst<U32>(is_signed ? Opcode::GetCbufS8 : Opcode::GetCbufU8, binding, byte_offset); | 169 | return Inst<U32>(is_signed ? Opcode::GetCbufS8 : Opcode::GetCbufU8, binding, byte_offset); |
| @@ -172,7 +172,7 @@ UAny IREmitter::GetCbuf(const U32& binding, const U32& byte_offset, size_t bitsi | |||
| 172 | case 32: | 172 | case 32: |
| 173 | return Inst<U32>(Opcode::GetCbufU32, binding, byte_offset); | 173 | return Inst<U32>(Opcode::GetCbufU32, binding, byte_offset); |
| 174 | case 64: | 174 | case 64: |
| 175 | return Inst<U64>(Opcode::GetCbufU64, binding, byte_offset); | 175 | return Inst(Opcode::GetCbufU32x2, binding, byte_offset); |
| 176 | default: | 176 | default: |
| 177 | throw InvalidArgument("Invalid bit size {}", bitsize); | 177 | throw InvalidArgument("Invalid bit size {}", bitsize); |
| 178 | } | 178 | } |