Add x86 legalization for SIMD ineg

This commit is contained in:
Andrew Brown
2019-09-18 10:50:01 -07:00
parent ca1df499a0
commit ba393afd4d
5 changed files with 77 additions and 4 deletions

View File

@@ -36,6 +36,7 @@ pub(crate) fn define(shared: &mut SharedDefinitions, x86_instructions: &Instruct
let iadd = insts.by_name("iadd");
let iconst = insts.by_name("iconst");
let imul = insts.by_name("imul");
let ineg = insts.by_name("ineg");
let insertlane = insts.by_name("insertlane");
let isub = insts.by_name("isub");
let popcnt = insts.by_name("popcnt");
@@ -385,6 +386,7 @@ pub(crate) fn define(shared: &mut SharedDefinitions, x86_instructions: &Instruct
narrow.custom_legalize(shuffle, "convert_shuffle");
narrow.custom_legalize(extractlane, "convert_extractlane");
narrow.custom_legalize(insertlane, "convert_insertlane");
narrow.custom_legalize(ineg, "convert_ineg");
narrow.build_and_add_to(&mut shared.transform_groups);
}

View File

@@ -1704,6 +1704,17 @@ pub(crate) fn define(
.operands_out(vec![a]),
);
ig.push(
Inst::new(
"ineg",
r#"
Integer negation: `a := -x \pmod{2^B}`.
"#,
)
.operands_in(vec![x])
.operands_out(vec![a]),
);
ig.push(
Inst::new(
"imul",