Legalize ireduce.iN.i2N to isplit.
This commit is contained in:
@@ -61,6 +61,7 @@ pub(crate) fn define(insts: &InstructionGroup, imm: &Immediates) -> TransformGro
|
||||
let cls = insts.by_name("cls");
|
||||
let clz = insts.by_name("clz");
|
||||
let ctz = insts.by_name("ctz");
|
||||
let copy = insts.by_name("copy");
|
||||
let fabs = insts.by_name("fabs");
|
||||
let f32const = insts.by_name("f32const");
|
||||
let f64const = insts.by_name("f64const");
|
||||
@@ -629,6 +630,14 @@ pub(crate) fn define(insts: &InstructionGroup, imm: &Immediates) -> TransformGro
|
||||
);
|
||||
}
|
||||
|
||||
for &(ty_half, ty) in &[(I64, I128), (I32, I64)] {
|
||||
let inst = ireduce.bind(ty_half).bind(ty);
|
||||
expand.legalize(
|
||||
def!(a = inst(x)),
|
||||
vec![def!((b, c) = isplit(x)), def!(a = copy(b))],
|
||||
);
|
||||
}
|
||||
|
||||
// Expand integer operations with carry for RISC architectures that don't have
|
||||
// the flags.
|
||||
let intcc_ult = Literal::enumerator_for(&imm.intcc, "ult");
|
||||
|
||||
Reference in New Issue
Block a user