Add rules for lowering `cbranch<mode>4` to CBB<cond>/CBH<cond>/CB<cond> when CMPBR extension is enabled.
gcc/ChangeLog: * config/aarch64/aarch64.md (BRANCH_LEN_P_1Kib): New constant. (BRANCH_LEN_N_1Kib): Likewise. (cbranch<GPI:mode>4): Emit CMPBR instructions if possible. (cbranch<SHORT:mode>4): New expand rule. (*aarch64_cb<GPI:mode>): Likewise. (*aarch64_cb<SHORT:mode>): Likewise. * config/aarch64/aarch64.cc (aarch64_cb_rhs): New function. * config/aarch64/aarch64-protos.h (aarch64_cb_rhs): Likewise. * config/aarch64/iterators.md (cmpbr_suffix): New mode 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: update tests. --- gcc/config/aarch64/aarch64-protos.h | 2 + gcc/config/aarch64/aarch64.cc | 34 ++ gcc/config/aarch64/aarch64.md | 93 +++- gcc/config/aarch64/iterators.md | 5 + gcc/config/aarch64/predicates.md | 15 + gcc/testsuite/gcc.target/aarch64/cmpbr.c | 586 ++++++++--------------- 6 files changed, 346 insertions(+), 389 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 9e45a31f159..262a681e933 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -966,6 +966,40 @@ 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); + rtx_code code = GET_CODE (op); + + switch (code) + { + 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..11a7b9fb6d2 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,37 @@ (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])) + { + emit_jump_insn (gen_aarch64_cb<mode> (operands[0], operands[1], + operands[2], operands[3])); + DONE; + } + 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 +785,58 @@ (define_expand "cbranchcc4" "" ) +;; Emit a `CB<cond> (register)` or `CB<cond> (immediate)` instruction. +(define_insn "aarch64_cb<GPI:mode>" + [(set (pc) (if_then_else (match_operator 0 "aarch64_comparison_operator" + [(match_operand:GPI 1 "register_operand" "r") + (match_operand:GPI 2 "aarch64_cb_operand" "ri")]) + (label_ref (match_operand 3)) + (pc)))] + "TARGET_CMPBR" + "cb%j0\\t%<w>1, %<w>2, %l3"; + [(set_attr "type" "branch") + (set (attr "length") + (if_then_else (and (ge (minus (match_dup 3) (pc)) + (const_int BRANCH_LEN_N_1Kib)) + (lt (minus (match_dup 3) (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 3) (pc)) + (const_int BRANCH_LEN_N_1Kib)) + (lt (minus (match_dup 3) (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<SHORT:mode>" + [(set (pc) (if_then_else (match_operator 0 "aarch64_comparison_operator" + [(match_operand:SHORT 1 "register_operand" "r") + (match_operand:SHORT 2 "aarch64_cb_short_operand" "rZ")]) + (label_ref (match_operand 3)) + (pc)))] + "TARGET_CMPBR" + "cb<SHORT:cmpbr_suffix>%j0\\t%<w>1, %<w>2, %l3" + [(set_attr "type" "branch") + (set (attr "length") + (if_then_else (and (ge (minus (match_dup 3) (pc)) + (const_int BRANCH_LEN_N_1Kib)) + (lt (minus (match_dup 3) (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 3) (pc)) + (const_int BRANCH_LEN_N_1Kib)) + (lt (minus (match_dup 3) (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" @@ -2995,8 +3070,8 @@ (define_insn "*subs_<optab><ALLX:mode>_<GPI:mode>" (define_insn "*adds_<optab><ALLX:mode>_shift_<GPI:mode>" [(set (reg:CC_NZ CC_REGNUM) (compare:CC_NZ - (plus:GPI (ashift:GPI - (ANY_EXTEND:GPI + (plus:GPI (ashift:GPI + (ANY_EXTEND:GPI (match_operand:ALLX 1 "register_operand" "r")) (match_operand 2 "aarch64_imm3" "Ui3")) (match_operand:GPI 3 "register_operand" "rk")) @@ -3014,7 +3089,7 @@ (define_insn "*subs_<optab><ALLX:mode>_shift_<GPI:mode>" [(set (reg:CC_NZ CC_REGNUM) (compare:CC_NZ (minus:GPI (match_operand:GPI 1 "register_operand" "rk") - (ashift:GPI + (ashift:GPI (ANY_EXTEND:GPI (match_operand:ALLX 2 "register_operand" "r")) (match_operand 3 "aarch64_imm3" "Ui3"))) diff --git a/gcc/config/aarch64/iterators.md b/gcc/config/aarch64/iterators.md index a8957681357..0c89f1e8589 100644 --- a/gcc/config/aarch64/iterators.md +++ b/gcc/config/aarch64/iterators.md @@ -2961,6 +2961,11 @@ (define_code_attr cmp_op [(lt "lt") (geu "hs") (gtu "hi")]) +(define_mode_attr cmpbr_suffix [(QI "b") + (HI "h") + (SI "") + (DI "")]) + (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