Use 'xor r, r' to set registers to 0 instead of mov (#766)

This commit is contained in:
Andy Wortman
2019-09-16 14:35:55 +00:00
committed by Benjamin Bouvier
parent b95508c51a
commit 99380fad1a
9 changed files with 193 additions and 7 deletions

View File

@@ -1023,6 +1023,18 @@ pub(crate) fn define<'shared>(
),
);
// XX+rd id unary with zero immediate.
recipes.add_template_recipe(
EncodingRecipeBuilder::new("u_id_z", f_unary_imm, 1)
.operands_out(vec![gpr])
.emit(
r#"
{{PUT_OP}}(bits, rex2(out_reg0, out_reg0), sink);
modrm_rr(out_reg0, out_reg0, sink);
"#,
),
);
// XX /n Unary with floating point 32-bit immediate equal to zero.
{
let format = formats.get(f_unary_ieee32);