cranelift: Remove redundant branch and select instructions (#5097)
As discussed in the 2022/10/19 meeting, this PR removes many of the branch and select instructions that used iflags, in favor if using brz/brnz and select in their place. Additionally, it reworks selectif_spectre_guard to take an i8 input instead of an iflags input. For reference, the removed instructions are: br_icmp, brif, brff, trueif, trueff, and selectif.
This commit is contained in:
@@ -320,6 +320,23 @@
|
||||
|
||||
;;;; Helpers for Working with Flags ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
;; Reverse an IntCC flag.
|
||||
(decl intcc_reverse (IntCC) IntCC)
|
||||
(extern constructor intcc_reverse intcc_reverse)
|
||||
|
||||
;; Invert an IntCC flag.
|
||||
(decl intcc_inverse (IntCC) IntCC)
|
||||
(extern constructor intcc_inverse intcc_inverse)
|
||||
|
||||
;; Reverse an FloatCC flag.
|
||||
(decl floatcc_reverse (FloatCC) FloatCC)
|
||||
(extern constructor floatcc_reverse floatcc_reverse)
|
||||
|
||||
;; Invert an FloatCC flag.
|
||||
(decl floatcc_inverse (FloatCC) FloatCC)
|
||||
(extern constructor floatcc_inverse floatcc_inverse)
|
||||
|
||||
|
||||
;; Newtype wrapper around `MInst` for instructions that are used for their
|
||||
;; effect on flags.
|
||||
;;
|
||||
|
||||
Reference in New Issue
Block a user