Don't generate unnecessary let $arg=$arg for intrinsics
This commit is contained in:
parent
246998f5ec
commit
5efd7782b3
2 changed files with 6 additions and 10 deletions
|
@ -52,8 +52,8 @@ pub(crate) fn codegen_llvm_intrinsic_call<'tcx>(
|
|||
ret.write_cvalue(fx, res);
|
||||
};
|
||||
"llvm.x86.sse2.cmp.ps" | "llvm.x86.sse2.cmp.pd", (c x, c y, o kind) {
|
||||
let kind_const = crate::constant::mir_operand_get_const_val(fx, kind).expect("llvm.x86.sse2.cmp.* kind not const");
|
||||
let flt_cc = match kind_const.try_to_bits(Size::from_bytes(1)).unwrap_or_else(|| panic!("kind not scalar: {:?}", kind_const)) {
|
||||
let kind = crate::constant::mir_operand_get_const_val(fx, kind).expect("llvm.x86.sse2.cmp.* kind not const");
|
||||
let flt_cc = match kind.try_to_bits(Size::from_bytes(1)).unwrap_or_else(|| panic!("kind not scalar: {:?}", kind)) {
|
||||
0 => FloatCC::Equal,
|
||||
1 => FloatCC::LessThan,
|
||||
2 => FloatCC::LessThanOrEqual,
|
||||
|
|
|
@ -31,14 +31,12 @@ macro intrinsic_pat {
|
|||
}
|
||||
|
||||
macro intrinsic_arg {
|
||||
(o $fx:expr, $arg:ident) => {
|
||||
$arg
|
||||
},
|
||||
(o $fx:expr, $arg:ident) => {},
|
||||
(c $fx:expr, $arg:ident) => {
|
||||
codegen_operand($fx, $arg)
|
||||
let $arg = codegen_operand($fx, $arg);
|
||||
},
|
||||
(v $fx:expr, $arg:ident) => {
|
||||
codegen_operand($fx, $arg).load_scalar($fx)
|
||||
let $arg = codegen_operand($fx, $arg).load_scalar($fx);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -52,9 +50,7 @@ macro intrinsic_match {
|
|||
$(
|
||||
$(intrinsic_pat!($($name).*))|* $(if $cond)? => {
|
||||
if let [$($arg),*] = $args {
|
||||
let ($($arg,)*) = (
|
||||
$(intrinsic_arg!($a $fx, $arg),)*
|
||||
);
|
||||
$(intrinsic_arg!($a $fx, $arg);)*
|
||||
$content
|
||||
} else {
|
||||
bug!("wrong number of args for intrinsic {:?}", $intrinsic);
|
||||
|
|
Loading…
Add table
Reference in a new issue