aboutsummaryrefslogtreecommitdiff
path: root/src/shader_recompiler/frontend/ir/ir_emitter.cpp
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2021-02-20 03:30:13 -0300
committerameerj <52414509+ameerj@users.noreply.github.com>2021-07-22 21:51:22 -0400
commite2bc05b17d91854cbb9c0ce3647141bf7d33143e (patch)
tree96769db006b6015cd536483db98ee0697aee4992 /src/shader_recompiler/frontend/ir/ir_emitter.cpp
parent6db69990da9f232e6d982cdcb69c2e27d93075cf (diff)
shader: Add denorm flush support
Diffstat (limited to 'src/shader_recompiler/frontend/ir/ir_emitter.cpp')
-rw-r--r--src/shader_recompiler/frontend/ir/ir_emitter.cpp32
1 files changed, 16 insertions, 16 deletions
diff --git a/src/shader_recompiler/frontend/ir/ir_emitter.cpp b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
index 559ab9cca6..8f120a2f67 100644
--- a/src/shader_recompiler/frontend/ir/ir_emitter.cpp
+++ b/src/shader_recompiler/frontend/ir/ir_emitter.cpp
@@ -558,53 +558,53 @@ F16F32F64 IREmitter::FPSaturate(const F16F32F64& value) {
}
}
-F16F32F64 IREmitter::FPRoundEven(const F16F32F64& value) {
+F16F32F64 IREmitter::FPRoundEven(const F16F32F64& value, FpControl control) {
switch (value.Type()) {
case Type::F16:
- return Inst<F16>(Opcode::FPRoundEven16, value);
+ return Inst<F16>(Opcode::FPRoundEven16, Flags{control}, value);
case Type::F32:
- return Inst<F32>(Opcode::FPRoundEven32, value);
+ return Inst<F32>(Opcode::FPRoundEven32, Flags{control}, value);
case Type::F64:
- return Inst<F64>(Opcode::FPRoundEven64, value);
+ return Inst<F64>(Opcode::FPRoundEven64, Flags{control}, value);
default:
ThrowInvalidType(value.Type());
}
}
-F16F32F64 IREmitter::FPFloor(const F16F32F64& value) {
+F16F32F64 IREmitter::FPFloor(const F16F32F64& value, FpControl control) {
switch (value.Type()) {
case Type::F16:
- return Inst<F16>(Opcode::FPFloor16, value);
+ return Inst<F16>(Opcode::FPFloor16, Flags{control}, value);
case Type::F32:
- return Inst<F32>(Opcode::FPFloor32, value);
+ return Inst<F32>(Opcode::FPFloor32, Flags{control}, value);
case Type::F64:
- return Inst<F64>(Opcode::FPFloor64, value);
+ return Inst<F64>(Opcode::FPFloor64, Flags{control}, value);
default:
ThrowInvalidType(value.Type());
}
}
-F16F32F64 IREmitter::FPCeil(const F16F32F64& value) {
+F16F32F64 IREmitter::FPCeil(const F16F32F64& value, FpControl control) {
switch (value.Type()) {
case Type::F16:
- return Inst<F16>(Opcode::FPCeil16, value);
+ return Inst<F16>(Opcode::FPCeil16, Flags{control}, value);
case Type::F32:
- return Inst<F32>(Opcode::FPCeil32, value);
+ return Inst<F32>(Opcode::FPCeil32, Flags{control}, value);
case Type::F64:
- return Inst<F64>(Opcode::FPCeil64, value);
+ return Inst<F64>(Opcode::FPCeil64, Flags{control}, value);
default:
ThrowInvalidType(value.Type());
}
}
-F16F32F64 IREmitter::FPTrunc(const F16F32F64& value) {
+F16F32F64 IREmitter::FPTrunc(const F16F32F64& value, FpControl control) {
switch (value.Type()) {
case Type::F16:
- return Inst<F16>(Opcode::FPTrunc16, value);
+ return Inst<F16>(Opcode::FPTrunc16, Flags{control}, value);
case Type::F32:
- return Inst<F32>(Opcode::FPTrunc32, value);
+ return Inst<F32>(Opcode::FPTrunc32, Flags{control}, value);
case Type::F64:
- return Inst<F64>(Opcode::FPTrunc64, value);
+ return Inst<F64>(Opcode::FPTrunc64, Flags{control}, value);
default:
ThrowInvalidType(value.Type());
}