diff options
| author | 2021-03-21 09:32:16 +0100 | |
|---|---|---|
| committer | 2021-07-22 21:51:24 -0400 | |
| commit | a62f04efab4331eeabd4441962f86a5e87db3f2d (patch) | |
| tree | 679974e509fac5a738a3661a44f0a475d22a5a71 /src/shader_recompiler/frontend/ir/ir_emitter.cpp | |
| parent | shader: Add missing fp64 usage flags (diff) | |
| download | yuzu-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.cpp | 12 |
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 | ||
| 1364 | F16F32F64 IREmitter::FPConvert(size_t result_bitsize, const F16F32F64& value) { | 1364 | F16F32F64 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 | } |