Add "algebraic" versions of the fast-math intrinsics
This commit is contained in:
parent
aa6d02f368
commit
968e79540d
@ -1152,17 +1152,26 @@ fn codegen_regular_intrinsic_call<'tcx>(
|
|||||||
ret.write_cvalue(fx, ret_val);
|
ret.write_cvalue(fx, ret_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
sym::fadd_fast | sym::fsub_fast | sym::fmul_fast | sym::fdiv_fast | sym::frem_fast => {
|
sym::fadd_fast
|
||||||
|
| sym::fsub_fast
|
||||||
|
| sym::fmul_fast
|
||||||
|
| sym::fdiv_fast
|
||||||
|
| sym::frem_fast
|
||||||
|
| sym::fadd_algebraic
|
||||||
|
| sym::fsub_algebraic
|
||||||
|
| sym::fmul_algebraic
|
||||||
|
| sym::fdiv_algebraic
|
||||||
|
| sym::frem_algebraic => {
|
||||||
intrinsic_args!(fx, args => (x, y); intrinsic);
|
intrinsic_args!(fx, args => (x, y); intrinsic);
|
||||||
|
|
||||||
let res = crate::num::codegen_float_binop(
|
let res = crate::num::codegen_float_binop(
|
||||||
fx,
|
fx,
|
||||||
match intrinsic {
|
match intrinsic {
|
||||||
sym::fadd_fast => BinOp::Add,
|
sym::fadd_fast | sym::fadd_algebraic => BinOp::Add,
|
||||||
sym::fsub_fast => BinOp::Sub,
|
sym::fsub_fast | sym::fsub_algebraic => BinOp::Sub,
|
||||||
sym::fmul_fast => BinOp::Mul,
|
sym::fmul_fast | sym::fmul_algebraic => BinOp::Mul,
|
||||||
sym::fdiv_fast => BinOp::Div,
|
sym::fdiv_fast | sym::fdiv_algebraic => BinOp::Div,
|
||||||
sym::frem_fast => BinOp::Rem,
|
sym::frem_fast | sym::frem_algebraic => BinOp::Rem,
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
},
|
},
|
||||||
x,
|
x,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user