Add x86 SIMD implementation of float comparison

This commit is contained in:
Andrew Brown
2019-10-28 13:26:21 -07:00
parent e5a36e2c61
commit d32301854d
5 changed files with 122 additions and 0 deletions

View File

@@ -610,6 +610,7 @@ pub(crate) fn define(
let rec_null_fpr = r.recipe("null_fpr");
let rec_pcrel_fnaddr8 = r.template("pcrel_fnaddr8");
let rec_pcrel_gvaddr8 = r.template("pcrel_gvaddr8");
let rec_pfcmp = r.template("pfcmp");
let rec_popq = r.template("popq");
let rec_pu_id = r.template("pu_id");
let rec_pu_id_bool = r.template("pu_id_bool");
@@ -2070,6 +2071,16 @@ pub(crate) fn define(
e.enc_32_64_maybe_isap(inst_, rec_fa.opcodes(opcodes), *isa_predicate);
}
// SIMD float comparisons
e.enc_both(
fcmp.bind(vector(F32, sse_vector_size)),
rec_pfcmp.opcodes(&CMPPS),
);
e.enc_both(
fcmp.bind(vector(F64, sse_vector_size)),
rec_pfcmp.opcodes(&CMPPD),
);
// Reference type instructions
// Null references implemented as iconst 0.