[codegen] add new recipe "rout" (#1014)

* [codegen] add new recipe "rout"

Add a new recipe "rout" intended to be used by arithematic operations
that output flags, currently being used for `iadd_cout` and `isub_bout`.

Fixes: https://github.com/CraneStation/cranelift/issues/1009
This commit is contained in:
Ujjwal Sharma
2019-09-10 16:25:24 +05:30
committed by Benjamin Bouvier
parent ac2ca6116b
commit 345b2dc0cc
3 changed files with 38 additions and 3 deletions

View File

@@ -566,6 +566,7 @@ pub(crate) fn define(
let rec_rfurm = r.template("rfurm");
let rec_rmov = r.template("rmov");
let rec_rr = r.template("rr");
let rec_rout = r.template("rout");
let rec_rin = r.template("rin");
let rec_rio = r.template("rio");
let rec_rrx = r.template("rrx");
@@ -631,12 +632,12 @@ pub(crate) fn define(
);
e.enc_i32_i64(iadd, rec_rr.opcodes(vec![0x01]));
e.enc_i32_i64(iadd_cout, rec_rr.opcodes(vec![0x01]));
e.enc_i32_i64(iadd_cout, rec_rout.opcodes(vec![0x01]));
e.enc_i32_i64(iadd_cin, rec_rin.opcodes(vec![0x11]));
e.enc_i32_i64(iadd_carry, rec_rio.opcodes(vec![0x11]));
e.enc_i32_i64(isub, rec_rr.opcodes(vec![0x29]));
e.enc_i32_i64(isub_bout, rec_rr.opcodes(vec![0x29]));
e.enc_i32_i64(isub_bout, rec_rout.opcodes(vec![0x29]));
e.enc_i32_i64(isub_bin, rec_rin.opcodes(vec![0x19]));
e.enc_i32_i64(isub_borrow, rec_rio.opcodes(vec![0x19]));