Add rules for lowering `cbranch<mode>4` to CBB<cond>/CBH<cond>/CB<cond> when
CMPBR extension is enabled.
gcc/ChangeLog:
* config/aarch64/aarch64-protos.h (aarch64_cb_rhs): New function.
* config/aarch64/aarch64.cc (aarch64_cb_rhs): Likewise.
* config/aarch64/aarch64.md (cbranch<mode>4): Rename to ...
(cbranch<GPI:mode>4): ...here, and emit CMPBR if possible.
(cbranch<SHORT:mode>4): New expand rule.
(aarch64_cb<INT_CMP:code><GPI:mode>): New insn rule.
(aarch64_cb<INT_CMP:code><SHORT:mode>): Likewise.
* config/aarch64/constraints.md (Uc0): New constraint.
(Uc1): Likewise.
(Uc2): Likewise.
* config/aarch64/iterators.md (cmpbr_suffix): New mode attr.
(INT_CMP): New code iterator.
(cmpbr_imm_constraint): New code attr.
* config/aarch64/predicates.md (const_0_to_63_operand): New predicate.
(aarch64_cb_immediate): Likewise.
(aarch64_cb_operand): Likewise.
(aarch64_cb_short_operand): Likewise.
gcc/testsuite/ChangeLog:
* gcc.target/aarch64/cmpbr.c:
---
gcc/config/aarch64/aarch64-protos.h | 2 +
gcc/config/aarch64/aarch64.cc | 33 ++
gcc/config/aarch64/aarch64.md | 89 +++-
gcc/config/aarch64/constraints.md | 18 +
gcc/config/aarch64/iterators.md | 19 +
gcc/config/aarch64/predicates.md | 15 +
gcc/testsuite/gcc.target/aarch64/cmpbr.c | 586 ++++++++---------------
7 files changed, 376 insertions(+), 386 deletions(-)
diff --git a/gcc/config/aarch64/aarch64-protos.h
b/gcc/config/aarch64/aarch64-protos.h
index 31f2f5b8bd2..0f104d0641b 100644
--- a/gcc/config/aarch64/aarch64-protos.h
+++ b/gcc/config/aarch64/aarch64-protos.h
@@ -1135,6 +1135,8 @@ bool aarch64_general_check_builtin_call (location_t,
vec<location_t>,
unsigned int, tree, unsigned int,
tree *);
+bool aarch64_cb_rhs (rtx op, rtx rhs);
+
namespace aarch64 {
void report_non_ice (location_t, tree, unsigned int);
void report_out_of_range (location_t, tree, unsigned int, HOST_WIDE_INT,
diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc
index 667e42ba401..3dc139e9a72 100644
--- a/gcc/config/aarch64/aarch64.cc
+++ b/gcc/config/aarch64/aarch64.cc
@@ -959,6 +959,39 @@ svpattern_token (enum aarch64_svpattern pattern)
gcc_unreachable ();
}
+/* Return true if rhs is an operand suitable for a CB<cc> (immediate)
+ instruction. */
+bool
+aarch64_cb_rhs (rtx op, rtx rhs)
+{
+ if (!CONST_INT_P (rhs))
+ return REG_P (rhs);
+
+ HOST_WIDE_INT rhs_val = INTVAL (rhs);
+
+ switch (GET_CODE (op))
+ {
+ case EQ:
+ case NE:
+ case GT:
+ case GTU:
+ case LT:
+ case LTU:
+ return IN_RANGE (rhs_val, 0, 63);
+
+ case GE: /* CBGE: signed greater than or equal */
+ case GEU: /* CBHS: unsigned greater than or equal */
+ return IN_RANGE (rhs_val, 1, 64);
+
+ case LE: /* CBLE: signed less than or equal */
+ case LEU: /* CBLS: unsigned less than or equal */
+ return IN_RANGE (rhs_val, -1, 62);
+
+ default:
+ return false;
+ }
+}
+
/* Return the location of a piece that is known to be passed or returned
in registers. FIRST_ZR is the first unused vector argument register
and FIRST_PR is the first unused predicate argument register. */
diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md
index 0a378ab377d..23bce55f620 100644
--- a/gcc/config/aarch64/aarch64.md
+++ b/gcc/config/aarch64/aarch64.md
@@ -717,6 +717,10 @@ (define_constants
;; +/- 32KiB. Used by TBZ, TBNZ.
(BRANCH_LEN_P_32KiB 32764)
(BRANCH_LEN_N_32KiB -32768)
+
+ ;; +/- 1KiB. Used by CBB<cond>, CBH<cond>, CB<cond>.
+ (BRANCH_LEN_P_1Kib 1020)
+ (BRANCH_LEN_N_1Kib -1024)
]
)
@@ -724,18 +728,35 @@ (define_constants
;; Conditional jumps
;; -------------------------------------------------------------------
-(define_expand "cbranch<mode>4"
+(define_expand "cbranch<GPI:mode>4"
[(set (pc) (if_then_else (match_operator 0 "aarch64_comparison_operator"
[(match_operand:GPI 1 "register_operand")
(match_operand:GPI 2 "aarch64_plus_operand")])
(label_ref (match_operand 3))
(pc)))]
""
- "
- operands[1] = aarch64_gen_compare_reg (GET_CODE (operands[0]), operands[1],
- operands[2]);
- operands[2] = const0_rtx;
- "
+ {
+ if (TARGET_CMPBR && aarch64_cb_rhs(operands[0], operands[2]))
+ {
+ // Fall-through to `aarch64_cbranch`
+ }
+ else
+ {
+ operands[1] = aarch64_gen_compare_reg (GET_CODE (operands[0]),
+ operands[1], operands[2]);
+ operands[2] = const0_rtx;
+ }
+ }
+)
+
+(define_expand "cbranch<SHORT:mode>4"
+ [(set (pc) (if_then_else (match_operator 0 "aarch64_comparison_operator"
+ [(match_operand:SHORT 1 "register_operand")
+ (match_operand:SHORT 2
"aarch64_cb_short_operand")])
+ (label_ref (match_operand 3))
+ (pc)))]
+ "TARGET_CMPBR"
+ ""
)
(define_expand "cbranch<mode>4"
@@ -762,6 +783,62 @@ (define_expand "cbranchcc4"
""
)
+;; Emit a `CB<cond> (register)` or `CB<cond> (immediate)` instruction.
+;; Only immediates in the range 0-63 are supported.
+;; Comparisons against immediates outside this range fall back to
+;; CMP + B<cond>.
+(define_insn "aarch64_cb<INT_CMP:code><GPI:mode>"
+ [(set (pc) (if_then_else (INT_CMP
+ (match_operand:GPI 0 "register_operand" "r")
+ (match_operand:GPI 1 "aarch64_cb_operand"
+ "r<INT_CMP:cmpbr_imm_constraint>"))
+ (label_ref (match_operand 2))
+ (pc)))]
+ "TARGET_CMPBR"
+ "cb<INT_CMP:cmp_op>\\t%<w>0, %<w>1, %l2";
+ [(set_attr "type" "branch")
+ (set (attr "length")
+ (if_then_else (and (ge (minus (match_dup 2) (pc))
+ (const_int BRANCH_LEN_N_1Kib))
+ (lt (minus (match_dup 2) (pc))
+ (const_int BRANCH_LEN_P_1Kib)))
+ (const_int 4)
+ (const_int 8)))
+ (set (attr "far_branch")
+ (if_then_else (and (ge (minus (match_dup 2) (pc))
+ (const_int BRANCH_LEN_N_1Kib))
+ (lt (minus (match_dup 2) (pc))
+ (const_int BRANCH_LEN_P_1Kib)))
+ (const_string "no")
+ (const_string "yes")))]
+)
+
+;; Emit a `CBB<cond> (register)` or `CBH<cond> (register)` instruction.
+(define_insn "aarch64_cb<INT_CMP:code><SHORT:mode>"
+ [(set (pc) (if_then_else (INT_CMP
+ (match_operand:SHORT 0 "register_operand" "r")
+ (match_operand:SHORT 1 "aarch64_cb_short_operand"
"rZ"))
+ (label_ref (match_operand 2))
+ (pc)))]
+ "TARGET_CMPBR"
+ "cb<SHORT:cmpbr_suffix><INT_CMP:cmp_op>\\t%<w>0, %<w>1, %l2"
+ [(set_attr "type" "branch")
+ (set (attr "length")
+ (if_then_else (and (ge (minus (match_dup 2) (pc))
+ (const_int BRANCH_LEN_N_1Kib))
+ (lt (minus (match_dup 2) (pc))
+ (const_int BRANCH_LEN_P_1Kib)))
+ (const_int 4)
+ (const_int 8)))
+ (set (attr "far_branch")
+ (if_then_else (and (ge (minus (match_dup 2) (pc))
+ (const_int BRANCH_LEN_N_1Kib))
+ (lt (minus (match_dup 2) (pc))
+ (const_int BRANCH_LEN_P_1Kib)))
+ (const_string "no")
+ (const_string "yes")))]
+)
+
;; Emit `B<cond>`, assuming that the condition is already in the CC register.
(define_insn "aarch64_bcond"
[(set (pc) (if_then_else (match_operator 0 "aarch64_comparison_operator"
diff --git a/gcc/config/aarch64/constraints.md
b/gcc/config/aarch64/constraints.md
index e9f69f823a6..dc1925dfb6c 100644
--- a/gcc/config/aarch64/constraints.md
+++ b/gcc/config/aarch64/constraints.md
@@ -304,6 +304,24 @@ (define_constraint "Ui7"
(and (match_code "const_int")
(match_test "(unsigned HOST_WIDE_INT) ival <= 7")))
+(define_constraint "Uc0"
+ "@internal
+ A constraint that matches the integers 0...63."
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, 0, 63)")))
+
+(define_constraint "Uc1"
+ "@internal
+ A constraint that matches the integers 1...64."
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, 1, 64)")))
+
+(define_constraint "Uc2"
+ "@internal
+ A constraint that matches the integers -1...62."
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (ival, -1, 62)")))
+
(define_constraint "Up3"
"@internal
A constraint that matches the integers 2^(0...4)."
diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md
index a8957681357..9d3dcb00001 100644
--- a/gcc/config/aarch64/iterators.md
+++ b/gcc/config/aarch64/iterators.md
@@ -2961,6 +2961,25 @@ (define_code_attr cmp_op [(lt "lt")
(geu "hs")
(gtu "hi")])
+(define_mode_attr cmpbr_suffix [(QI "b") (HI "h")])
+
+(define_code_iterator INT_CMP [lt le eq ne ge gt ltu leu geu gtu])
+
+(define_code_attr cmpbr_imm_constraint [
+ (eq "Uc0")
+ (ne "Uc0")
+ (gt "Uc0")
+ (gtu "Uc0")
+ (lt "Uc0")
+ (ltu "Uc0")
+
+ (ge "Uc1")
+ (geu "Uc1")
+
+ (le "Uc2")
+ (leu "Uc2")
+])
+
(define_code_attr fix_trunc_optab [(fix "fix_trunc")
(unsigned_fix "fixuns_trunc")])
diff --git a/gcc/config/aarch64/predicates.md b/gcc/config/aarch64/predicates.md
index d8e9725a1b6..f4595de5682 100644
--- a/gcc/config/aarch64/predicates.md
+++ b/gcc/config/aarch64/predicates.md
@@ -50,6 +50,10 @@ (define_predicate "const_0_to_7_operand"
(and (match_code "const_int")
(match_test "IN_RANGE (INTVAL (op), 0, 7)")))
+(define_predicate "const_0_to_63_operand"
+ (and (match_code "const_int")
+ (match_test "IN_RANGE (INTVAL (op), 0, 63)")))
+
(define_predicate "const_0_to_4_step_4_operand"
(and (match_code "const_int")
(match_test "IN_RANGE (INTVAL (op), 0, 4)")
@@ -131,6 +135,17 @@ (define_predicate "aarch64_reg_or_xor_imm"
(and (match_code "const_vector")
(match_test "aarch64_simd_valid_xor_imm (op)"))))
+(define_predicate "aarch64_cb_immediate"
+ (match_operand 0 "const_0_to_63_operand"))
+
+(define_predicate "aarch64_cb_operand"
+ (ior (match_operand 0 "register_operand")
+ (match_operand 0 "aarch64_cb_immediate")))
+
+(define_predicate "aarch64_cb_short_operand"
+ (ior (match_operand 0 "register_operand")
+ (match_operand 0 "const0_operand")))
+
(define_predicate "aarch64_fp_compare_operand"
(ior (match_operand 0 "register_operand")
(and (match_code "const_double")
diff --git a/gcc/testsuite/gcc.target/aarch64/cmpbr.c
b/gcc/testsuite/gcc.target/aarch64/cmpbr.c
index b8925f14433..74e546ec0b7 100644
--- a/gcc/testsuite/gcc.target/aarch64/cmpbr.c
+++ b/gcc/testsuite/gcc.target/aarch64/cmpbr.c
@@ -86,9 +86,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_eq_x1:
-** and w1, w1, 255
-** cmp w1, w0, uxtb
-** beq .L4
+** cbbeq w1, w0, .L4
** b not_taken
** .L4:
** b taken
@@ -96,9 +94,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ne_x1:
-** and w1, w1, 255
-** cmp w1, w0, uxtb
-** beq .L6
+** cbbeq w1, w0, .L6
** b taken
** .L6:
** b not_taken
@@ -106,9 +102,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ult_x1:
-** and w1, w1, 255
-** cmp w1, w0, uxtb
-** bls .L8
+** cbbls w1, w0, .L8
** b taken
** .L8:
** b not_taken
@@ -116,9 +110,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ule_x1:
-** and w1, w1, 255
-** cmp w1, w0, uxtb
-** bcc .L10
+** cbblo w1, w0, .L10
** b taken
** .L10:
** b not_taken
@@ -126,9 +118,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ugt_x1:
-** and w1, w1, 255
-** cmp w1, w0, uxtb
-** bcs .L12
+** cbbhs w1, w0, .L12
** b taken
** .L12:
** b not_taken
@@ -136,9 +126,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_uge_x1:
-** and w1, w1, 255
-** cmp w1, w0, uxtb
-** bhi .L14
+** cbbhi w1, w0, .L14
** b taken
** .L14:
** b not_taken
@@ -146,9 +134,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_slt_x1:
-** sxtb w1, w1
-** cmp w1, w0, sxtb
-** ble .L16
+** cbble w1, w0, .L16
** b taken
** .L16:
** b not_taken
@@ -156,9 +142,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_sle_x1:
-** sxtb w1, w1
-** cmp w1, w0, sxtb
-** blt .L18
+** cbblt w1, w0, .L18
** b taken
** .L18:
** b not_taken
@@ -166,9 +150,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_sgt_x1:
-** sxtb w1, w1
-** cmp w1, w0, sxtb
-** bge .L20
+** cbbge w1, w0, .L20
** b taken
** .L20:
** b not_taken
@@ -176,9 +158,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_sge_x1:
-** sxtb w1, w1
-** cmp w1, w0, sxtb
-** bgt .L22
+** cbbgt w1, w0, .L22
** b taken
** .L22:
** b not_taken
@@ -186,9 +166,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_eq_x1:
-** and w1, w1, 65535
-** cmp w1, w0, uxth
-** beq .L25
+** cbheq w1, w0, .L25
** b not_taken
** .L25:
** b taken
@@ -196,9 +174,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ne_x1:
-** and w1, w1, 65535
-** cmp w1, w0, uxth
-** beq .L27
+** cbheq w1, w0, .L27
** b taken
** .L27:
** b not_taken
@@ -206,9 +182,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ult_x1:
-** and w1, w1, 65535
-** cmp w1, w0, uxth
-** bls .L29
+** cbhls w1, w0, .L29
** b taken
** .L29:
** b not_taken
@@ -216,9 +190,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ule_x1:
-** and w1, w1, 65535
-** cmp w1, w0, uxth
-** bcc .L31
+** cbhlo w1, w0, .L31
** b taken
** .L31:
** b not_taken
@@ -226,9 +198,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ugt_x1:
-** and w1, w1, 65535
-** cmp w1, w0, uxth
-** bcs .L33
+** cbhhs w1, w0, .L33
** b taken
** .L33:
** b not_taken
@@ -236,9 +206,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_uge_x1:
-** and w1, w1, 65535
-** cmp w1, w0, uxth
-** bhi .L35
+** cbhhi w1, w0, .L35
** b taken
** .L35:
** b not_taken
@@ -246,9 +214,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_slt_x1:
-** sxth w1, w1
-** cmp w1, w0, sxth
-** ble .L37
+** cbhle w1, w0, .L37
** b taken
** .L37:
** b not_taken
@@ -256,9 +222,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sle_x1:
-** sxth w1, w1
-** cmp w1, w0, sxth
-** blt .L39
+** cbhlt w1, w0, .L39
** b taken
** .L39:
** b not_taken
@@ -266,9 +230,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sgt_x1:
-** sxth w1, w1
-** cmp w1, w0, sxth
-** bge .L41
+** cbhge w1, w0, .L41
** b taken
** .L41:
** b not_taken
@@ -276,9 +238,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sge_x1:
-** sxth w1, w1
-** cmp w1, w0, sxth
-** bgt .L43
+** cbhgt w1, w0, .L43
** b taken
** .L43:
** b not_taken
@@ -286,8 +246,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_eq_x1:
-** cmp w0, w1
-** beq .L46
+** cbeq w0, w1, .L46
** b not_taken
** .L46:
** b taken
@@ -295,8 +254,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ne_x1:
-** cmp w0, w1
-** beq .L48
+** cbeq w0, w1, .L48
** b taken
** .L48:
** b not_taken
@@ -304,8 +262,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ult_x1:
-** cmp w0, w1
-** bcs .L50
+** cbhs w0, w1, .L50
** b taken
** .L50:
** b not_taken
@@ -313,8 +270,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ule_x1:
-** cmp w0, w1
-** bhi .L52
+** cbhi w0, w1, .L52
** b taken
** .L52:
** b not_taken
@@ -322,8 +278,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ugt_x1:
-** cmp w0, w1
-** bls .L54
+** cbls w0, w1, .L54
** b taken
** .L54:
** b not_taken
@@ -331,8 +286,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_uge_x1:
-** cmp w0, w1
-** bcc .L56
+** cblo w0, w1, .L56
** b taken
** .L56:
** b not_taken
@@ -340,8 +294,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_slt_x1:
-** cmp w0, w1
-** bge .L58
+** cbge w0, w1, .L58
** b taken
** .L58:
** b not_taken
@@ -349,8 +302,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_sle_x1:
-** cmp w0, w1
-** bgt .L60
+** cbgt w0, w1, .L60
** b taken
** .L60:
** b not_taken
@@ -358,8 +310,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_sgt_x1:
-** cmp w0, w1
-** ble .L62
+** cble w0, w1, .L62
** b taken
** .L62:
** b not_taken
@@ -367,8 +318,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_sge_x1:
-** cmp w0, w1
-** blt .L64
+** cblt w0, w1, .L64
** b taken
** .L64:
** b not_taken
@@ -376,8 +326,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_eq_x1:
-** cmp x0, x1
-** beq .L67
+** cbeq x0, x1, .L67
** b not_taken
** .L67:
** b taken
@@ -385,8 +334,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ne_x1:
-** cmp x0, x1
-** beq .L69
+** cbeq x0, x1, .L69
** b taken
** .L69:
** b not_taken
@@ -394,8 +342,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ult_x1:
-** cmp x0, x1
-** bcs .L71
+** cbhs x0, x1, .L71
** b taken
** .L71:
** b not_taken
@@ -403,8 +350,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ule_x1:
-** cmp x0, x1
-** bhi .L73
+** cbhi x0, x1, .L73
** b taken
** .L73:
** b not_taken
@@ -412,8 +358,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ugt_x1:
-** cmp x0, x1
-** bls .L75
+** cbls x0, x1, .L75
** b taken
** .L75:
** b not_taken
@@ -421,8 +366,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_uge_x1:
-** cmp x0, x1
-** bcc .L77
+** cblo x0, x1, .L77
** b taken
** .L77:
** b not_taken
@@ -430,8 +374,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_slt_x1:
-** cmp x0, x1
-** bge .L79
+** cbge x0, x1, .L79
** b taken
** .L79:
** b not_taken
@@ -439,8 +382,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_sle_x1:
-** cmp x0, x1
-** bgt .L81
+** cbgt x0, x1, .L81
** b taken
** .L81:
** b not_taken
@@ -448,8 +390,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_sgt_x1:
-** cmp x0, x1
-** ble .L83
+** cble x0, x1, .L83
** b taken
** .L83:
** b not_taken
@@ -457,8 +398,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_sge_x1:
-** cmp x0, x1
-** blt .L85
+** cblt x0, x1, .L85
** b taken
** .L85:
** b not_taken
@@ -466,8 +406,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_eq_42:
-** cmp w0, 42
-** beq .L88
+** cbeq w0, 42, .L88
** b not_taken
** .L88:
** b taken
@@ -475,8 +414,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ne_42:
-** cmp w0, 42
-** beq .L90
+** cbeq w0, 42, .L90
** b taken
** .L90:
** b not_taken
@@ -484,8 +422,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ult_42:
-** cmp w0, 41
-** bhi .L92
+** cbhi w0, 41, .L92
** b taken
** .L92:
** b not_taken
@@ -493,8 +430,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ule_42:
-** cmp w0, 42
-** bhi .L94
+** cbhi w0, 42, .L94
** b taken
** .L94:
** b not_taken
@@ -502,8 +438,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ugt_42:
-** cmp w0, 42
-** bls .L96
+** cbls w0, 42, .L96
** b taken
** .L96:
** b not_taken
@@ -511,8 +446,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_uge_42:
-** cmp w0, 41
-** bls .L98
+** cbls w0, 41, .L98
** b taken
** .L98:
** b not_taken
@@ -520,8 +454,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_slt_42:
-** cmp w0, 41
-** bgt .L100
+** cbgt w0, 41, .L100
** b taken
** .L100:
** b not_taken
@@ -529,8 +462,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_sle_42:
-** cmp w0, 42
-** bgt .L102
+** cbgt w0, 42, .L102
** b taken
** .L102:
** b not_taken
@@ -538,8 +470,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_sgt_42:
-** cmp w0, 42
-** ble .L104
+** cble w0, 42, .L104
** b taken
** .L104:
** b not_taken
@@ -547,8 +478,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_sge_42:
-** cmp w0, 41
-** ble .L106
+** cble w0, 41, .L106
** b taken
** .L106:
** b not_taken
@@ -556,8 +486,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_eq_42:
-** cmp x0, 42
-** beq .L109
+** cbeq x0, 42, .L109
** b not_taken
** .L109:
** b taken
@@ -565,8 +494,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ne_42:
-** cmp x0, 42
-** beq .L111
+** cbeq x0, 42, .L111
** b taken
** .L111:
** b not_taken
@@ -574,8 +502,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ult_42:
-** cmp x0, 41
-** bhi .L113
+** cbhi x0, 41, .L113
** b taken
** .L113:
** b not_taken
@@ -583,8 +510,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ule_42:
-** cmp x0, 42
-** bhi .L115
+** cbhi x0, 42, .L115
** b taken
** .L115:
** b not_taken
@@ -592,8 +518,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ugt_42:
-** cmp x0, 42
-** bls .L117
+** cbls x0, 42, .L117
** b taken
** .L117:
** b not_taken
@@ -601,8 +526,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_uge_42:
-** cmp x0, 41
-** bls .L119
+** cbls x0, 41, .L119
** b taken
** .L119:
** b not_taken
@@ -610,8 +534,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_slt_42:
-** cmp x0, 41
-** bgt .L121
+** cbgt x0, 41, .L121
** b taken
** .L121:
** b not_taken
@@ -619,8 +542,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_sle_42:
-** cmp x0, 42
-** bgt .L123
+** cbgt x0, 42, .L123
** b taken
** .L123:
** b not_taken
@@ -628,8 +550,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_sgt_42:
-** cmp x0, 42
-** ble .L125
+** cble x0, 42, .L125
** b taken
** .L125:
** b not_taken
@@ -637,8 +558,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_sge_42:
-** cmp x0, 41
-** ble .L127
+** cble x0, 41, .L127
** b taken
** .L127:
** b not_taken
@@ -646,8 +566,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_eq_0:
-** tst w0, 255
-** bne .L129
+** cbbne w0, wzr, .L129
** b taken
** .L129:
** b not_taken
@@ -655,8 +574,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ne_0:
-** tst w0, 255
-** beq .L131
+** cbbeq w0, wzr, .L131
** b taken
** .L131:
** b not_taken
@@ -669,8 +587,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ule_0:
-** tst w0, 255
-** bne .L134
+** cbbne w0, wzr, .L134
** b taken
** .L134:
** b not_taken
@@ -678,8 +595,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ugt_0:
-** tst w0, 255
-** beq .L136
+** cbbeq w0, wzr, .L136
** b taken
** .L136:
** b not_taken
@@ -692,7 +608,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_slt_0:
-** tbnz w0, 7, .L140
+** cbblt w0, wzr, .L140
** b not_taken
** .L140:
** b taken
@@ -700,9 +616,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_sle_0:
-** sxtb w0, w0
-** cmp w0, 0
-** ble .L143
+** cbble w0, wzr, .L143
** b not_taken
** .L143:
** b taken
@@ -710,9 +624,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_sgt_0:
-** sxtb w0, w0
-** cmp w0, 0
-** ble .L145
+** cbble w0, wzr, .L145
** b taken
** .L145:
** b not_taken
@@ -720,7 +632,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_sge_0:
-** tbnz w0, 7, .L147
+** cbblt w0, wzr, .L147
** b taken
** .L147:
** b not_taken
@@ -728,8 +640,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_eq_0:
-** tst w0, 65535
-** bne .L149
+** cbhne w0, wzr, .L149
** b taken
** .L149:
** b not_taken
@@ -737,8 +648,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ne_0:
-** tst w0, 65535
-** beq .L151
+** cbheq w0, wzr, .L151
** b taken
** .L151:
** b not_taken
@@ -751,8 +661,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ule_0:
-** tst w0, 65535
-** bne .L154
+** cbhne w0, wzr, .L154
** b taken
** .L154:
** b not_taken
@@ -760,8 +669,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ugt_0:
-** tst w0, 65535
-** beq .L156
+** cbheq w0, wzr, .L156
** b taken
** .L156:
** b not_taken
@@ -774,7 +682,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_slt_0:
-** tbnz w0, 15, .L160
+** cbhlt w0, wzr, .L160
** b not_taken
** .L160:
** b taken
@@ -782,9 +690,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sle_0:
-** sxth w0, w0
-** cmp w0, 0
-** ble .L163
+** cbhle w0, wzr, .L163
** b not_taken
** .L163:
** b taken
@@ -792,9 +698,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sgt_0:
-** sxth w0, w0
-** cmp w0, 0
-** ble .L165
+** cbhle w0, wzr, .L165
** b taken
** .L165:
** b not_taken
@@ -802,7 +706,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sge_0:
-** tbnz w0, 15, .L167
+** cbhlt w0, wzr, .L167
** b taken
** .L167:
** b not_taken
@@ -810,7 +714,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_eq_0:
-** cbnz w0, .L169
+** cbne w0, wzr, .L169
** b taken
** .L169:
** b not_taken
@@ -818,7 +722,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ne_0:
-** cbz w0, .L171
+** cbeq w0, wzr, .L171
** b taken
** .L171:
** b not_taken
@@ -831,7 +735,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ule_0:
-** cbnz w0, .L174
+** cbne w0, wzr, .L174
** b taken
** .L174:
** b not_taken
@@ -839,7 +743,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ugt_0:
-** cbz w0, .L176
+** cbeq w0, wzr, .L176
** b taken
** .L176:
** b not_taken
@@ -852,7 +756,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_slt_0:
-** tbnz w0, #31, .L180
+** cblt w0, wzr, .L180
** b not_taken
** .L180:
** b taken
@@ -860,8 +764,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_sle_0:
-** cmp w0, 0
-** ble .L183
+** cble w0, wzr, .L183
** b not_taken
** .L183:
** b taken
@@ -869,8 +772,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_sgt_0:
-** cmp w0, 0
-** ble .L185
+** cble w0, wzr, .L185
** b taken
** .L185:
** b not_taken
@@ -878,7 +780,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_sge_0:
-** tbnz w0, #31, .L187
+** cblt w0, wzr, .L187
** b taken
** .L187:
** b not_taken
@@ -886,7 +788,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_eq_0:
-** cbnz x0, .L189
+** cbne x0, xzr, .L189
** b taken
** .L189:
** b not_taken
@@ -894,7 +796,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ne_0:
-** cbz x0, .L191
+** cbeq x0, xzr, .L191
** b taken
** .L191:
** b not_taken
@@ -907,7 +809,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ule_0:
-** cbnz x0, .L194
+** cbne x0, xzr, .L194
** b taken
** .L194:
** b not_taken
@@ -915,7 +817,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ugt_0:
-** cbz x0, .L196
+** cbeq x0, xzr, .L196
** b taken
** .L196:
** b not_taken
@@ -928,7 +830,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_slt_0:
-** tbnz x0, #63, .L200
+** cblt x0, xzr, .L200
** b not_taken
** .L200:
** b taken
@@ -936,8 +838,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_sle_0:
-** cmp x0, 0
-** ble .L203
+** cble x0, xzr, .L203
** b not_taken
** .L203:
** b taken
@@ -945,8 +846,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_sgt_0:
-** cmp x0, 0
-** ble .L205
+** cble x0, xzr, .L205
** b taken
** .L205:
** b not_taken
@@ -954,7 +854,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_sge_0:
-** tbnz x0, #63, .L207
+** cblt x0, xzr, .L207
** b taken
** .L207:
** b not_taken
@@ -962,9 +862,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_eq_42:
-** and w0, w0, 255
-** cmp w0, 42
-** beq .L210
+** mov w1, 42
+** cbbeq w0, w1, .L210
** b not_taken
** .L210:
** b taken
@@ -972,9 +871,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ne_42:
-** and w0, w0, 255
-** cmp w0, 42
-** beq .L212
+** mov w1, 42
+** cbbeq w0, w1, .L212
** b taken
** .L212:
** b not_taken
@@ -982,9 +880,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ult_42:
-** and w0, w0, 255
-** cmp w0, 41
-** bhi .L214
+** mov w1, 41
+** cbbhi w0, w1, .L214
** b taken
** .L214:
** b not_taken
@@ -992,9 +889,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ule_42:
-** and w0, w0, 255
-** cmp w0, 42
-** bhi .L216
+** mov w1, 42
+** cbbhi w0, w1, .L216
** b taken
** .L216:
** b not_taken
@@ -1002,9 +898,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ugt_42:
-** and w0, w0, 255
-** cmp w0, 42
-** bls .L218
+** mov w1, 42
+** cbbls w0, w1, .L218
** b taken
** .L218:
** b not_taken
@@ -1012,9 +907,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_uge_42:
-** and w0, w0, 255
-** cmp w0, 41
-** bls .L220
+** mov w1, 41
+** cbbls w0, w1, .L220
** b taken
** .L220:
** b not_taken
@@ -1022,9 +916,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_slt_42:
-** sxtb w0, w0
-** cmp w0, 41
-** bgt .L222
+** mov w1, 41
+** cbbgt w0, w1, .L222
** b taken
** .L222:
** b not_taken
@@ -1032,9 +925,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_sle_42:
-** sxtb w0, w0
-** cmp w0, 42
-** bgt .L224
+** mov w1, 42
+** cbbgt w0, w1, .L224
** b taken
** .L224:
** b not_taken
@@ -1042,9 +934,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_sgt_42:
-** sxtb w0, w0
-** cmp w0, 42
-** ble .L226
+** mov w1, 42
+** cbble w0, w1, .L226
** b taken
** .L226:
** b not_taken
@@ -1052,9 +943,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_sge_42:
-** sxtb w0, w0
-** cmp w0, 41
-** ble .L228
+** mov w1, 41
+** cbble w0, w1, .L228
** b taken
** .L228:
** b not_taken
@@ -1062,9 +952,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_eq_42:
-** and w0, w0, 65535
-** cmp w0, 42
-** beq .L231
+** mov w1, 42
+** cbheq w0, w1, .L231
** b not_taken
** .L231:
** b taken
@@ -1072,9 +961,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ne_42:
-** and w0, w0, 65535
-** cmp w0, 42
-** beq .L233
+** mov w1, 42
+** cbheq w0, w1, .L233
** b taken
** .L233:
** b not_taken
@@ -1082,9 +970,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ult_42:
-** and w0, w0, 65535
-** cmp w0, 41
-** bhi .L235
+** mov w1, 41
+** cbhhi w0, w1, .L235
** b taken
** .L235:
** b not_taken
@@ -1092,9 +979,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ule_42:
-** and w0, w0, 65535
-** cmp w0, 42
-** bhi .L237
+** mov w1, 42
+** cbhhi w0, w1, .L237
** b taken
** .L237:
** b not_taken
@@ -1102,9 +988,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ugt_42:
-** and w0, w0, 65535
-** cmp w0, 42
-** bls .L239
+** mov w1, 42
+** cbhls w0, w1, .L239
** b taken
** .L239:
** b not_taken
@@ -1112,9 +997,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_uge_42:
-** and w0, w0, 65535
-** cmp w0, 41
-** bls .L241
+** mov w1, 41
+** cbhls w0, w1, .L241
** b taken
** .L241:
** b not_taken
@@ -1122,9 +1006,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_slt_42:
-** sxth w0, w0
-** cmp w0, 41
-** bgt .L243
+** mov w1, 41
+** cbhgt w0, w1, .L243
** b taken
** .L243:
** b not_taken
@@ -1132,9 +1015,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sle_42:
-** sxth w0, w0
-** cmp w0, 42
-** bgt .L245
+** mov w1, 42
+** cbhgt w0, w1, .L245
** b taken
** .L245:
** b not_taken
@@ -1142,9 +1024,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sgt_42:
-** sxth w0, w0
-** cmp w0, 42
-** ble .L247
+** mov w1, 42
+** cbhle w0, w1, .L247
** b taken
** .L247:
** b not_taken
@@ -1152,9 +1033,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sge_42:
-** sxth w0, w0
-** cmp w0, 41
-** ble .L249
+** mov w1, 41
+** cbhle w0, w1, .L249
** b taken
** .L249:
** b not_taken
@@ -1162,9 +1042,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_eq_64:
-** and w0, w0, 255
-** cmp w0, 64
-** beq .L252
+** mov w1, 64
+** cbbeq w0, w1, .L252
** b not_taken
** .L252:
** b taken
@@ -1172,9 +1051,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ne_64:
-** and w0, w0, 255
-** cmp w0, 64
-** beq .L254
+** mov w1, 64
+** cbbeq w0, w1, .L254
** b taken
** .L254:
** b not_taken
@@ -1182,9 +1060,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ult_64:
-** and w0, w0, 255
-** cmp w0, 63
-** bhi .L256
+** mov w1, 63
+** cbbhi w0, w1, .L256
** b taken
** .L256:
** b not_taken
@@ -1192,9 +1069,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ule_64:
-** and w0, w0, 255
-** cmp w0, 64
-** bhi .L258
+** mov w1, 64
+** cbbhi w0, w1, .L258
** b taken
** .L258:
** b not_taken
@@ -1202,9 +1078,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_ugt_64:
-** and w0, w0, 255
-** cmp w0, 64
-** bls .L260
+** mov w1, 64
+** cbbls w0, w1, .L260
** b taken
** .L260:
** b not_taken
@@ -1212,9 +1087,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u8_x0_uge_64:
-** and w0, w0, 255
-** cmp w0, 63
-** bls .L262
+** mov w1, 63
+** cbbls w0, w1, .L262
** b taken
** .L262:
** b not_taken
@@ -1222,9 +1096,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_slt_64:
-** sxtb w0, w0
-** cmp w0, 63
-** bgt .L264
+** mov w1, 63
+** cbbgt w0, w1, .L264
** b taken
** .L264:
** b not_taken
@@ -1232,9 +1105,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_sle_64:
-** sxtb w0, w0
-** cmp w0, 64
-** bgt .L266
+** mov w1, 64
+** cbbgt w0, w1, .L266
** b taken
** .L266:
** b not_taken
@@ -1242,9 +1114,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_sgt_64:
-** sxtb w0, w0
-** cmp w0, 64
-** ble .L268
+** mov w1, 64
+** cbble w0, w1, .L268
** b taken
** .L268:
** b not_taken
@@ -1252,9 +1123,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i8_x0_sge_64:
-** sxtb w0, w0
-** cmp w0, 63
-** ble .L270
+** mov w1, 63
+** cbble w0, w1, .L270
** b taken
** .L270:
** b not_taken
@@ -1262,9 +1132,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_eq_64:
-** and w0, w0, 65535
-** cmp w0, 64
-** beq .L273
+** mov w1, 64
+** cbheq w0, w1, .L273
** b not_taken
** .L273:
** b taken
@@ -1272,9 +1141,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ne_64:
-** and w0, w0, 65535
-** cmp w0, 64
-** beq .L275
+** mov w1, 64
+** cbheq w0, w1, .L275
** b taken
** .L275:
** b not_taken
@@ -1282,9 +1150,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ult_64:
-** and w0, w0, 65535
-** cmp w0, 63
-** bhi .L277
+** mov w1, 63
+** cbhhi w0, w1, .L277
** b taken
** .L277:
** b not_taken
@@ -1292,9 +1159,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ule_64:
-** and w0, w0, 65535
-** cmp w0, 64
-** bhi .L279
+** mov w1, 64
+** cbhhi w0, w1, .L279
** b taken
** .L279:
** b not_taken
@@ -1302,9 +1168,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ugt_64:
-** and w0, w0, 65535
-** cmp w0, 64
-** bls .L281
+** mov w1, 64
+** cbhls w0, w1, .L281
** b taken
** .L281:
** b not_taken
@@ -1312,9 +1177,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_uge_64:
-** and w0, w0, 65535
-** cmp w0, 63
-** bls .L283
+** mov w1, 63
+** cbhls w0, w1, .L283
** b taken
** .L283:
** b not_taken
@@ -1322,9 +1186,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_slt_64:
-** sxth w0, w0
-** cmp w0, 63
-** bgt .L285
+** mov w1, 63
+** cbhgt w0, w1, .L285
** b taken
** .L285:
** b not_taken
@@ -1332,9 +1195,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sle_64:
-** sxth w0, w0
-** cmp w0, 64
-** bgt .L287
+** mov w1, 64
+** cbhgt w0, w1, .L287
** b taken
** .L287:
** b not_taken
@@ -1342,9 +1204,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sgt_64:
-** sxth w0, w0
-** cmp w0, 64
-** ble .L289
+** mov w1, 64
+** cbhle w0, w1, .L289
** b taken
** .L289:
** b not_taken
@@ -1352,9 +1213,8 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sge_64:
-** sxth w0, w0
-** cmp w0, 63
-** ble .L291
+** mov w1, 63
+** cbhle w0, w1, .L291
** b taken
** .L291:
** b not_taken
@@ -1380,8 +1240,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ult_64:
-** cmp w0, 63
-** bhi .L298
+** cbhi w0, 63, .L298
** b taken
** .L298:
** b not_taken
@@ -1416,8 +1275,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_slt_64:
-** cmp w0, 63
-** bgt .L306
+** cbgt w0, 63, .L306
** b taken
** .L306:
** b not_taken
@@ -1470,8 +1328,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ult_64:
-** cmp x0, 63
-** bhi .L319
+** cbhi x0, 63, .L319
** b taken
** .L319:
** b not_taken
@@ -1506,8 +1363,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_slt_64:
-** cmp x0, 63
-** bgt .L327
+** cbgt x0, 63, .L327
** b taken
** .L327:
** b not_taken
@@ -1543,8 +1399,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_eq_4098:
** mov w1, 4098
-** cmp w1, w0, uxth
-** beq .L336
+** cbheq w0, w1, .L336
** b not_taken
** .L336:
** b taken
@@ -1553,8 +1408,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ne_4098:
** mov w1, 4098
-** cmp w1, w0, uxth
-** beq .L338
+** cbheq w0, w1, .L338
** b taken
** .L338:
** b not_taken
@@ -1563,8 +1417,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ult_4098:
** mov w1, 4097
-** cmp w1, w0, uxth
-** bcc .L340
+** cbhhi w0, w1, .L340
** b taken
** .L340:
** b not_taken
@@ -1573,8 +1426,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ule_4098:
** mov w1, 4098
-** cmp w1, w0, uxth
-** bcc .L342
+** cbhhi w0, w1, .L342
** b taken
** .L342:
** b not_taken
@@ -1583,8 +1435,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_ugt_4098:
** mov w1, 4098
-** cmp w1, w0, uxth
-** bcs .L344
+** cbhls w0, w1, .L344
** b taken
** .L344:
** b not_taken
@@ -1593,8 +1444,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u16_x0_uge_4098:
** mov w1, 4097
-** cmp w1, w0, uxth
-** bcs .L346
+** cbhls w0, w1, .L346
** b taken
** .L346:
** b not_taken
@@ -1603,8 +1453,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_slt_4098:
** mov w1, 4097
-** cmp w1, w0, sxth
-** blt .L348
+** cbhgt w0, w1, .L348
** b taken
** .L348:
** b not_taken
@@ -1613,8 +1462,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sle_4098:
** mov w1, 4098
-** cmp w1, w0, sxth
-** blt .L350
+** cbhgt w0, w1, .L350
** b taken
** .L350:
** b not_taken
@@ -1623,8 +1471,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sgt_4098:
** mov w1, 4098
-** cmp w1, w0, sxth
-** bge .L352
+** cbhle w0, w1, .L352
** b taken
** .L352:
** b not_taken
@@ -1633,8 +1480,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i16_x0_sge_4098:
** mov w1, 4097
-** cmp w1, w0, sxth
-** bge .L354
+** cbhle w0, w1, .L354
** b taken
** .L354:
** b not_taken
@@ -1643,8 +1489,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_eq_4098:
** mov w1, 4098
-** cmp w0, w1
-** beq .L357
+** cbeq w0, w1, .L357
** b not_taken
** .L357:
** b taken
@@ -1653,8 +1498,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ne_4098:
** mov w1, 4098
-** cmp w0, w1
-** beq .L359
+** cbeq w0, w1, .L359
** b taken
** .L359:
** b not_taken
@@ -1663,8 +1507,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ult_4098:
** mov w1, 4097
-** cmp w0, w1
-** bhi .L361
+** cbhi w0, w1, .L361
** b taken
** .L361:
** b not_taken
@@ -1673,8 +1516,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ule_4098:
** mov w1, 4098
-** cmp w0, w1
-** bhi .L363
+** cbhi w0, w1, .L363
** b taken
** .L363:
** b not_taken
@@ -1683,8 +1525,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_ugt_4098:
** mov w1, 4098
-** cmp w0, w1
-** bls .L365
+** cbls w0, w1, .L365
** b taken
** .L365:
** b not_taken
@@ -1693,8 +1534,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u32_x0_uge_4098:
** mov w1, 4097
-** cmp w0, w1
-** bls .L367
+** cbls w0, w1, .L367
** b taken
** .L367:
** b not_taken
@@ -1703,8 +1543,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_slt_4098:
** mov w1, 4097
-** cmp w0, w1
-** bgt .L369
+** cbgt w0, w1, .L369
** b taken
** .L369:
** b not_taken
@@ -1713,8 +1552,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_sle_4098:
** mov w1, 4098
-** cmp w0, w1
-** bgt .L371
+** cbgt w0, w1, .L371
** b taken
** .L371:
** b not_taken
@@ -1723,8 +1561,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_sgt_4098:
** mov w1, 4098
-** cmp w0, w1
-** ble .L373
+** cble w0, w1, .L373
** b taken
** .L373:
** b not_taken
@@ -1733,8 +1570,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i32_x0_sge_4098:
** mov w1, 4097
-** cmp w0, w1
-** ble .L375
+** cble w0, w1, .L375
** b taken
** .L375:
** b not_taken
@@ -1743,8 +1579,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_eq_4098:
** mov x1, 4098
-** cmp x0, x1
-** beq .L378
+** cbeq x0, x1, .L378
** b not_taken
** .L378:
** b taken
@@ -1753,8 +1588,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ne_4098:
** mov x1, 4098
-** cmp x0, x1
-** beq .L380
+** cbeq x0, x1, .L380
** b taken
** .L380:
** b not_taken
@@ -1763,8 +1597,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ult_4098:
** mov x1, 4097
-** cmp x0, x1
-** bhi .L382
+** cbhi x0, x1, .L382
** b taken
** .L382:
** b not_taken
@@ -1773,8 +1606,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ule_4098:
** mov x1, 4098
-** cmp x0, x1
-** bhi .L384
+** cbhi x0, x1, .L384
** b taken
** .L384:
** b not_taken
@@ -1783,8 +1615,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_ugt_4098:
** mov x1, 4098
-** cmp x0, x1
-** bls .L386
+** cbls x0, x1, .L386
** b taken
** .L386:
** b not_taken
@@ -1793,8 +1624,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** u64_x0_uge_4098:
** mov x1, 4097
-** cmp x0, x1
-** bls .L388
+** cbls x0, x1, .L388
** b taken
** .L388:
** b not_taken
@@ -1803,8 +1633,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_slt_4098:
** mov x1, 4097
-** cmp x0, x1
-** bgt .L390
+** cbgt x0, x1, .L390
** b taken
** .L390:
** b not_taken
@@ -1813,8 +1642,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_sle_4098:
** mov x1, 4098
-** cmp x0, x1
-** bgt .L392
+** cbgt x0, x1, .L392
** b taken
** .L392:
** b not_taken
@@ -1823,8 +1651,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_sgt_4098:
** mov x1, 4098
-** cmp x0, x1
-** ble .L394
+** cble x0, x1, .L394
** b taken
** .L394:
** b not_taken
@@ -1833,8 +1660,7 @@ COMPARE_ALL(u64, i64, 4098);
/*
** i64_x0_sge_4098:
** mov x1, 4097
-** cmp x0, x1
-** ble .L396
+** cble x0, x1, .L396
** b taken
** .L396:
** b not_taken
--
2.45.2