diff options
Diffstat (limited to 'src/shader_recompiler/frontend/ir/ir_emitter.cpp')
| -rw-r--r-- | src/shader_recompiler/frontend/ir/ir_emitter.cpp | 70 |
1 files changed, 35 insertions, 35 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.cpp b/src/shader_recompiler/frontend/ir/ir_emitter.cpp index f42489d41..559ab9cca 100644 --- a/src/shader_recompiler/frontend/ir/ir_emitter.cpp +++ b/src/shader_recompiler/frontend/ir/ir_emitter.cpp | |||
| @@ -547,11 +547,11 @@ F32 IREmitter::FPSqrt(const F32& value) { | |||
| 547 | 547 | ||
| 548 | F16F32F64 IREmitter::FPSaturate(const F16F32F64& value) { | 548 | F16F32F64 IREmitter::FPSaturate(const F16F32F64& value) { |
| 549 | switch (value.Type()) { | 549 | switch (value.Type()) { |
| 550 | case Type::U16: | 550 | case Type::F16: |
| 551 | return Inst<F16>(Opcode::FPSaturate16, value); | 551 | return Inst<F16>(Opcode::FPSaturate16, value); |
| 552 | case Type::U32: | 552 | case Type::F32: |
| 553 | return Inst<F32>(Opcode::FPSaturate32, value); | 553 | return Inst<F32>(Opcode::FPSaturate32, value); |
| 554 | case Type::U64: | 554 | case Type::F64: |
| 555 | return Inst<F64>(Opcode::FPSaturate64, value); | 555 | return Inst<F64>(Opcode::FPSaturate64, value); |
| 556 | default: | 556 | default: |
| 557 | ThrowInvalidType(value.Type()); | 557 | ThrowInvalidType(value.Type()); |
| @@ -560,11 +560,11 @@ F16F32F64 IREmitter::FPSaturate(const F16F32F64& value) { | |||
| 560 | 560 | ||
| 561 | F16F32F64 IREmitter::FPRoundEven(const F16F32F64& value) { | 561 | F16F32F64 IREmitter::FPRoundEven(const F16F32F64& value) { |
| 562 | switch (value.Type()) { | 562 | switch (value.Type()) { |
| 563 | case Type::U16: | 563 | case Type::F16: |
| 564 | return Inst<F16>(Opcode::FPRoundEven16, value); | 564 | return Inst<F16>(Opcode::FPRoundEven16, value); |
| 565 | case Type::U32: | 565 | case Type::F32: |
| 566 | return Inst<F32>(Opcode::FPRoundEven32, value); | 566 | return Inst<F32>(Opcode::FPRoundEven32, value); |
| 567 | case Type::U64: | 567 | case Type::F64: |
| 568 | return Inst<F64>(Opcode::FPRoundEven64, value); | 568 | return Inst<F64>(Opcode::FPRoundEven64, value); |
| 569 | default: | 569 | default: |
| 570 | ThrowInvalidType(value.Type()); | 570 | ThrowInvalidType(value.Type()); |
| @@ -573,11 +573,11 @@ F16F32F64 IREmitter::FPRoundEven(const F16F32F64& value) { | |||
| 573 | 573 | ||
| 574 | F16F32F64 IREmitter::FPFloor(const F16F32F64& value) { | 574 | F16F32F64 IREmitter::FPFloor(const F16F32F64& value) { |
| 575 | switch (value.Type()) { | 575 | switch (value.Type()) { |
| 576 | case Type::U16: | 576 | case Type::F16: |
| 577 | return Inst<F16>(Opcode::FPFloor16, value); | 577 | return Inst<F16>(Opcode::FPFloor16, value); |
| 578 | case Type::U32: | 578 | case Type::F32: |
| 579 | return Inst<F32>(Opcode::FPFloor32, value); | 579 | return Inst<F32>(Opcode::FPFloor32, value); |
| 580 | case Type::U64: | 580 | case Type::F64: |
| 581 | return Inst<F64>(Opcode::FPFloor64, value); | 581 | return Inst<F64>(Opcode::FPFloor64, value); |
| 582 | default: | 582 | default: |
| 583 | ThrowInvalidType(value.Type()); | 583 | ThrowInvalidType(value.Type()); |
| @@ -586,11 +586,11 @@ F16F32F64 IREmitter::FPFloor(const F16F32F64& value) { | |||
| 586 | 586 | ||
| 587 | F16F32F64 IREmitter::FPCeil(const F16F32F64& value) { | 587 | F16F32F64 IREmitter::FPCeil(const F16F32F64& value) { |
| 588 | switch (value.Type()) { | 588 | switch (value.Type()) { |
| 589 | case Type::U16: | 589 | case Type::F16: |
| 590 | return Inst<F16>(Opcode::FPCeil16, value); | 590 | return Inst<F16>(Opcode::FPCeil16, value); |
| 591 | case Type::U32: | 591 | case Type::F32: |
| 592 | return Inst<F32>(Opcode::FPCeil32, value); | 592 | return Inst<F32>(Opcode::FPCeil32, value); |
| 593 | case Type::U64: | 593 | case Type::F64: |
| 594 | return Inst<F64>(Opcode::FPCeil64, value); | 594 | return Inst<F64>(Opcode::FPCeil64, value); |
| 595 | default: | 595 | default: |
| 596 | ThrowInvalidType(value.Type()); | 596 | ThrowInvalidType(value.Type()); |
| @@ -599,11 +599,11 @@ F16F32F64 IREmitter::FPCeil(const F16F32F64& value) { | |||
| 599 | 599 | ||
| 600 | F16F32F64 IREmitter::FPTrunc(const F16F32F64& value) { | 600 | F16F32F64 IREmitter::FPTrunc(const F16F32F64& value) { |
| 601 | switch (value.Type()) { | 601 | switch (value.Type()) { |
| 602 | case Type::U16: | 602 | case Type::F16: |
| 603 | return Inst<F16>(Opcode::FPTrunc16, value); | 603 | return Inst<F16>(Opcode::FPTrunc16, value); |
| 604 | case Type::U32: | 604 | case Type::F32: |
| 605 | return Inst<F32>(Opcode::FPTrunc32, value); | 605 | return Inst<F32>(Opcode::FPTrunc32, value); |
| 606 | case Type::U64: | 606 | case Type::F64: |
| 607 | return Inst<F64>(Opcode::FPTrunc64, value); | 607 | return Inst<F64>(Opcode::FPTrunc64, value); |
| 608 | default: | 608 | default: |
| 609 | ThrowInvalidType(value.Type()); | 609 | ThrowInvalidType(value.Type()); |
| @@ -729,33 +729,33 @@ U32U64 IREmitter::ConvertFToS(size_t bitsize, const F16F32F64& value) { | |||
| 729 | switch (bitsize) { | 729 | switch (bitsize) { |
| 730 | case 16: | 730 | case 16: |
| 731 | switch (value.Type()) { | 731 | switch (value.Type()) { |
| 732 | case Type::U16: | 732 | case Type::F16: |
| 733 | return Inst<U32>(Opcode::ConvertS16F16, value); | 733 | return Inst<U32>(Opcode::ConvertS16F16, value); |
| 734 | case Type::U32: | 734 | case Type::F32: |
| 735 | return Inst<U32>(Opcode::ConvertS16F32, value); | 735 | return Inst<U32>(Opcode::ConvertS16F32, value); |
| 736 | case Type::U64: | 736 | case Type::F64: |
| 737 | return Inst<U32>(Opcode::ConvertS16F64, value); | 737 | return Inst<U32>(Opcode::ConvertS16F64, value); |
| 738 | default: | 738 | default: |
| 739 | ThrowInvalidType(value.Type()); | 739 | ThrowInvalidType(value.Type()); |
| 740 | } | 740 | } |
| 741 | case 32: | 741 | case 32: |
| 742 | switch (value.Type()) { | 742 | switch (value.Type()) { |
| 743 | case Type::U16: | 743 | case Type::F16: |
| 744 | return Inst<U32>(Opcode::ConvertS32F16, value); | 744 | return Inst<U32>(Opcode::ConvertS32F16, value); |
| 745 | case Type::U32: | 745 | case Type::F32: |
| 746 | return Inst<U32>(Opcode::ConvertS32F32, value); | 746 | return Inst<U32>(Opcode::ConvertS32F32, value); |
| 747 | case Type::U64: | 747 | case Type::F64: |
| 748 | return Inst<U32>(Opcode::ConvertS32F64, value); | 748 | return Inst<U32>(Opcode::ConvertS32F64, value); |
| 749 | default: | 749 | default: |
| 750 | ThrowInvalidType(value.Type()); | 750 | ThrowInvalidType(value.Type()); |
| 751 | } | 751 | } |
| 752 | case 64: | 752 | case 64: |
| 753 | switch (value.Type()) { | 753 | switch (value.Type()) { |
| 754 | case Type::U16: | 754 | case Type::F16: |
| 755 | return Inst<U64>(Opcode::ConvertS64F16, value); | 755 | return Inst<U64>(Opcode::ConvertS64F16, value); |
| 756 | case Type::U32: | 756 | case Type::F32: |
| 757 | return Inst<U64>(Opcode::ConvertS64F32, value); | 757 | return Inst<U64>(Opcode::ConvertS64F32, value); |
| 758 | case Type::U64: | 758 | case Type::F64: |
| 759 | return Inst<U64>(Opcode::ConvertS64F64, value); | 759 | return Inst<U64>(Opcode::ConvertS64F64, value); |
| 760 | default: | 760 | default: |
| 761 | ThrowInvalidType(value.Type()); | 761 | ThrowInvalidType(value.Type()); |
| @@ -769,33 +769,33 @@ U32U64 IREmitter::ConvertFToU(size_t bitsize, const F16F32F64& value) { | |||
| 769 | switch (bitsize) { | 769 | switch (bitsize) { |
| 770 | case 16: | 770 | case 16: |
| 771 | switch (value.Type()) { | 771 | switch (value.Type()) { |
| 772 | case Type::U16: | 772 | case Type::F16: |
| 773 | return Inst<U32>(Opcode::ConvertU16F16, value); | 773 | return Inst<U32>(Opcode::ConvertU16F16, value); |
| 774 | case Type::U32: | 774 | case Type::F32: |
| 775 | return Inst<U32>(Opcode::ConvertU16F32, value); | 775 | return Inst<U32>(Opcode::ConvertU16F32, value); |
| 776 | case Type::U64: | 776 | case Type::F64: |
| 777 | return Inst<U32>(Opcode::ConvertU16F64, value); | 777 | return Inst<U32>(Opcode::ConvertU16F64, value); |
| 778 | default: | 778 | default: |
| 779 | ThrowInvalidType(value.Type()); | 779 | ThrowInvalidType(value.Type()); |
| 780 | } | 780 | } |
| 781 | case 32: | 781 | case 32: |
| 782 | switch (value.Type()) { | 782 | switch (value.Type()) { |
| 783 | case Type::U16: | 783 | case Type::F16: |
| 784 | return Inst<U32>(Opcode::ConvertU32F16, value); | 784 | return Inst<U32>(Opcode::ConvertU32F16, value); |
| 785 | case Type::U32: | 785 | case Type::F32: |
| 786 | return Inst<U32>(Opcode::ConvertU32F32, value); | 786 | return Inst<U32>(Opcode::ConvertU32F32, value); |
| 787 | case Type::U64: | 787 | case Type::F64: |
| 788 | return Inst<U32>(Opcode::ConvertU32F64, value); | 788 | return Inst<U32>(Opcode::ConvertU32F64, value); |
| 789 | default: | 789 | default: |
| 790 | ThrowInvalidType(value.Type()); | 790 | ThrowInvalidType(value.Type()); |
| 791 | } | 791 | } |
| 792 | case 64: | 792 | case 64: |
| 793 | switch (value.Type()) { | 793 | switch (value.Type()) { |
| 794 | case Type::U16: | 794 | case Type::F16: |
| 795 | return Inst<U64>(Opcode::ConvertU64F16, value); | 795 | return Inst<U64>(Opcode::ConvertU64F16, value); |
| 796 | case Type::U32: | 796 | case Type::F32: |
| 797 | return Inst<U64>(Opcode::ConvertU64F32, value); | 797 | return Inst<U64>(Opcode::ConvertU64F32, value); |
| 798 | case Type::U64: | 798 | case Type::F64: |
| 799 | return Inst<U64>(Opcode::ConvertU64F64, value); | 799 | return Inst<U64>(Opcode::ConvertU64F64, value); |
| 800 | default: | 800 | default: |
| 801 | ThrowInvalidType(value.Type()); | 801 | ThrowInvalidType(value.Type()); |
| @@ -829,10 +829,10 @@ U32U64 IREmitter::ConvertU(size_t result_bitsize, const U32U64& value) { | |||
| 829 | case 64: | 829 | case 64: |
| 830 | switch (value.Type()) { | 830 | switch (value.Type()) { |
| 831 | case Type::U32: | 831 | case Type::U32: |
| 832 | return Inst<U64>(Opcode::ConvertU64U32, value); | ||
| 833 | case Type::U64: | ||
| 832 | // Nothing to do | 834 | // Nothing to do |
| 833 | return value; | 835 | return value; |
| 834 | case Type::U64: | ||
| 835 | return Inst<U64>(Opcode::ConvertU64U32, value); | ||
| 836 | default: | 836 | default: |
| 837 | break; | 837 | break; |
| 838 | } | 838 | } |