Browse Source

refactor: using emit_cmp helper to refactor lowering of selection ins… (#7344)

* refactor: using emit_cmp helper to refactor lowering of selection instruction on x64

* chore: remove space before paran
pull/7386/head
Steven 1 year ago
committed by GitHub
parent
commit
b1b37f4aba
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      cranelift/codegen/src/isa/x64/lower.isle

7
cranelift/codegen/src/isa/x64/lower.isle

@ -2082,8 +2082,7 @@
;; than one instruction for certain types (e.g., XMM-held, I128).
(rule (lower (has_type ty (select (maybe_uextend (icmp cc a @ (value_type (fits_in_64 a_ty)) b)) x y)))
(let ((size OperandSize (raw_operand_size_of_type a_ty)))
(with_flags (x64_cmp size b a) (cmove_from_values ty cc x y))))
(lower_select_icmp ty (emit_cmp cc a b) x y))
;; Finally, we lower `select` from a condition value `c`. These rules are meant
;; to be the final, default lowerings if no other patterns matched above.
@ -2099,6 +2098,10 @@
(let ((cond_result IcmpCondResult (cmp_zero_i128 (CC.Z) c)))
(select_icmp cond_result x y)))
(decl lower_select_icmp (Type IcmpCondResult Value Value) InstOutput)
(rule (lower_select_icmp ty (IcmpCondResult.Condition flags cc) x y)
(with_flags flags (cmove_from_values ty cc x y)))
;; Specializations for floating-point compares to generate a `mins*` or a
;; `maxs*` instruction. These are equivalent to the "pseudo-m{in,ax}"
;; specializations for vectors.

Loading…
Cancel
Save