summaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/ir/ir_emitter.cpp
diff options
context:
space:
mode:
authorGravatar FernandoS272021-03-21 09:32:16 +0100
committerGravatar ameerj2021-07-22 21:51:24 -0400
commita62f04efab4331eeabd4441962f86a5e87db3f2d (patch)
tree679974e509fac5a738a3661a44f0a475d22a5a71 /src/shader_recompiler/frontend/ir/ir_emitter.cpp
parentshader: Add missing fp64 usage flags (diff)
downloadyuzu-a62f04efab4331eeabd4441962f86a5e87db3f2d.tar.gz
yuzu-a62f04efab4331eeabd4441962f86a5e87db3f2d.tar.xz
yuzu-a62f04efab4331eeabd4441962f86a5e87db3f2d.zip
shader: Implement F2F
Diffstat (limited to 'src/shader_recompiler/frontend/ir/ir_emitter.cpp')
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.cpp b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
index 1eda95071..00c909f3e 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.cpp
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
@@ -1361,7 +1361,7 @@ U32U64 IREmitter::UConvert(size_t result_bitsize, const U32U64& value) {
1361 throw NotImplementedException("Conversion from {} to {} bits", value.Type(), result_bitsize); 1361 throw NotImplementedException("Conversion from {} to {} bits", value.Type(), result_bitsize);
1362} 1362}
1363 1363
1364F16F32F64 IREmitter::FPConvert(size_t result_bitsize, const F16F32F64& value) { 1364F16F32F64 IREmitter::FPConvert(size_t result_bitsize, const F16F32F64& value, FpControl control) {
1365 switch (result_bitsize) { 1365 switch (result_bitsize) {
1366 case 16: 1366 case 16:
1367 switch (value.Type()) { 1367 switch (value.Type()) {
@@ -1369,7 +1369,7 @@ F16F32F64 IREmitter::FPConvert(size_t result_bitsize, const F16F32F64& value) {
1369 // Nothing to do 1369 // Nothing to do
1370 return value; 1370 return value;
1371 case Type::F32: 1371 case Type::F32:
1372 return Inst<F16>(Opcode::ConvertF16F32, value); 1372 return Inst<F16>(Opcode::ConvertF16F32, Flags{control}, value);
1373 case Type::F64: 1373 case Type::F64:
1374 throw LogicError("Illegal conversion from F64 to F16"); 1374 throw LogicError("Illegal conversion from F64 to F16");
1375 default: 1375 default:
@@ -1379,12 +1379,12 @@ F16F32F64 IREmitter::FPConvert(size_t result_bitsize, const F16F32F64& value) {
1379 case 32: 1379 case 32:
1380 switch (value.Type()) { 1380 switch (value.Type()) {
1381 case Type::F16: 1381 case Type::F16:
1382 return Inst<F32>(Opcode::ConvertF32F16, value); 1382 return Inst<F32>(Opcode::ConvertF32F16, Flags{control}, value);
1383 case Type::F32: 1383 case Type::F32:
1384 // Nothing to do 1384 // Nothing to do
1385 return value; 1385 return value;
1386 case Type::F64: 1386 case Type::F64:
1387 return Inst<F64>(Opcode::ConvertF32F64, value); 1387 return Inst<F32>(Opcode::ConvertF32F64, Flags{control}, value);
1388 default: 1388 default:
1389 break; 1389 break;
1390 } 1390 }
@@ -1394,10 +1394,10 @@ F16F32F64 IREmitter::FPConvert(size_t result_bitsize, const F16F32F64& value) {
1394 case Type::F16: 1394 case Type::F16:
1395 throw LogicError("Illegal conversion from F16 to F64"); 1395 throw LogicError("Illegal conversion from F16 to F64");
1396 case Type::F32: 1396 case Type::F32:
1397 return Inst<F64>(Opcode::ConvertF64F32, Flags{control}, value);
1398 case Type::F64:
1397 // Nothing to do 1399 // Nothing to do
1398 return value; 1400 return value;
1399 case Type::F64:
1400 return Inst<F64>(Opcode::ConvertF32F64, value);
1401 default: 1401 default:
1402 break; 1402 break;
1403 } 1403 }