Fix Switch for 128bit integers

This commit is contained in:
bjorn3
2020-09-21 14:48:31 +02:00
parent 010e5b9aa8
commit 45ccc6940e
3 changed files with 20 additions and 3 deletions

View File

@@ -402,6 +402,17 @@ pub(crate) fn define(insts: &InstructionGroup, imm: &Immediates) -> TransformGro
);
}
let zero = Literal::constant(&imm.imm64, 0);
narrow.legalize(
def!(a = iadd_imm.I128(x, c)),
vec![
def!(yh = iconst.I64(zero)),
def!(yl = iconst.I64(c)),
def!(y = iconcat.I64(yh, yl)),
def!(a = iadd(x, y)),
],
);
// Widen instructions with one input operand.
for &op in &[bnot, popcnt] {
for &int_ty in &[I8, I16] {