diff options
| author | 2021-03-03 03:07:19 -0300 | |
|---|---|---|
| committer | 2021-07-22 21:51:23 -0400 | |
| commit | 4006929c986a2e0e52429fe21201a7ad5ca3fea9 (patch) | |
| tree | 9f4a1ffa7782ed76db5561e107e8ae9f71f63a15 /src/shader_recompiler/ir_opt | |
| parent | shader: Implement LOP and LOP3 (diff) | |
| download | yuzu-4006929c986a2e0e52429fe21201a7ad5ca3fea9.tar.gz yuzu-4006929c986a2e0e52429fe21201a7ad5ca3fea9.tar.xz yuzu-4006929c986a2e0e52429fe21201a7ad5ca3fea9.zip | |
shader: Implement HADD2
Diffstat (limited to 'src/shader_recompiler/ir_opt')
| -rw-r--r-- | src/shader_recompiler/ir_opt/global_memory_to_storage_buffer_pass.cpp | 2 | ||||
| -rw-r--r-- | src/shader_recompiler/ir_opt/lower_fp16_to_fp32.cpp | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/shader_recompiler/ir_opt/global_memory_to_storage_buffer_pass.cpp b/src/shader_recompiler/ir_opt/global_memory_to_storage_buffer_pass.cpp index 98e3dfef7..965e52135 100644 --- a/src/shader_recompiler/ir_opt/global_memory_to_storage_buffer_pass.cpp +++ b/src/shader_recompiler/ir_opt/global_memory_to_storage_buffer_pass.cpp | |||
| @@ -298,7 +298,7 @@ IR::U32 StorageOffset(IR::Block& block, IR::Inst& inst, StorageBufferAddr buffer | |||
| 298 | offset = ir.IAdd(offset, ir.Imm32(low_addr->imm_offset)); | 298 | offset = ir.IAdd(offset, ir.Imm32(low_addr->imm_offset)); |
| 299 | } | 299 | } |
| 300 | } else { | 300 | } else { |
| 301 | offset = ir.ConvertU(32, IR::U64{inst.Arg(0)}); | 301 | offset = ir.UConvert(32, IR::U64{inst.Arg(0)}); |
| 302 | } | 302 | } |
| 303 | // Subtract the least significant 32 bits from the guest offset. The result is the storage | 303 | // Subtract the least significant 32 bits from the guest offset. The result is the storage |
| 304 | // buffer offset in bytes. | 304 | // buffer offset in bytes. |
diff --git a/src/shader_recompiler/ir_opt/lower_fp16_to_fp32.cpp b/src/shader_recompiler/ir_opt/lower_fp16_to_fp32.cpp index c7032f168..14a5cb50f 100644 --- a/src/shader_recompiler/ir_opt/lower_fp16_to_fp32.cpp +++ b/src/shader_recompiler/ir_opt/lower_fp16_to_fp32.cpp | |||
| @@ -44,6 +44,12 @@ IR::Opcode Replace(IR::Opcode op) { | |||
| 44 | return IR::Opcode::CompositeExtractF32x3; | 44 | return IR::Opcode::CompositeExtractF32x3; |
| 45 | case IR::Opcode::CompositeExtractF16x4: | 45 | case IR::Opcode::CompositeExtractF16x4: |
| 46 | return IR::Opcode::CompositeExtractF32x4; | 46 | return IR::Opcode::CompositeExtractF32x4; |
| 47 | case IR::Opcode::CompositeInsertF16x2: | ||
| 48 | return IR::Opcode::CompositeInsertF32x2; | ||
| 49 | case IR::Opcode::CompositeInsertF16x3: | ||
| 50 | return IR::Opcode::CompositeInsertF32x3; | ||
| 51 | case IR::Opcode::CompositeInsertF16x4: | ||
| 52 | return IR::Opcode::CompositeInsertF32x4; | ||
| 47 | case IR::Opcode::ConvertS16F16: | 53 | case IR::Opcode::ConvertS16F16: |
| 48 | return IR::Opcode::ConvertS16F32; | 54 | return IR::Opcode::ConvertS16F32; |
| 49 | case IR::Opcode::ConvertS32F16: | 55 | case IR::Opcode::ConvertS32F16: |
| @@ -60,6 +66,10 @@ IR::Opcode Replace(IR::Opcode op) { | |||
| 60 | return IR::Opcode::PackHalf2x16; | 66 | return IR::Opcode::PackHalf2x16; |
| 61 | case IR::Opcode::UnpackFloat2x16: | 67 | case IR::Opcode::UnpackFloat2x16: |
| 62 | return IR::Opcode::UnpackHalf2x16; | 68 | return IR::Opcode::UnpackHalf2x16; |
| 69 | case IR::Opcode::ConvertF32F16: | ||
| 70 | return IR::Opcode::Identity; | ||
| 71 | case IR::Opcode::ConvertF16F32: | ||
| 72 | return IR::Opcode::Identity; | ||
| 63 | default: | 73 | default: |
| 64 | return op; | 74 | return op; |
| 65 | } | 75 | } |