summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/ir_opt
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2021-03-03 03:07:19 -0300
committerGravatar ameerj2021-07-22 21:51:23 -0400
commit4006929c986a2e0e52429fe21201a7ad5ca3fea9 (patch)
tree9f4a1ffa7782ed76db5561e107e8ae9f71f63a15 /src/shader_recompiler/ir_opt
parentshader: Implement LOP and LOP3 (diff)
downloadyuzu-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.cpp2
-rw-r--r--src/shader_recompiler/ir_opt/lower_fp16_to_fp32.cpp10
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 }