> On 7 May 2025, at 12:27, Karl Meakin <karl.mea...@arm.com> wrote:
> 
> Commit the test file `cmpbr.c` before rules for generating the new
> instructions are added, so that the changes in codegen are more obvious
> in the next commit.

I guess that’s an LLVM best practice.
In GCC since we have the check-function-bodies mechanism we usually prefer to 
include the relevant test together with the patch that adds the optimization.
But this is not wrong either.


> 
> gcc/testsuite/ChangeLog:
> 
> * gcc.target/aarch64/cmpbr.c: New test.
> ---
> gcc/testsuite/gcc.target/aarch64/cmpbr.c | 1378 ++++++++++++++++++++++
> 1 file changed, 1378 insertions(+)
> create mode 100644 gcc/testsuite/gcc.target/aarch64/cmpbr.c
> 
> diff --git a/gcc/testsuite/gcc.target/aarch64/cmpbr.c 
> b/gcc/testsuite/gcc.target/aarch64/cmpbr.c
> new file mode 100644
> index 00000000000..728d6ead91c
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/aarch64/cmpbr.c
> @@ -0,0 +1,1378 @@
> +/* Test that the instructions added by FEAT_CMPBR are emitted */
> +/* { dg-do compile } */
> +/* { dg-options "-march=armv9.5-a+cmpbr -O2" } */
> +/* { dg-final { check-function-bodies "**" "" "" } } */

As you’ll be adding new instructions to the compiler it’d be good to have it a 
dg-do assemble test where possible.
For that you’ll need to create a new aarch64_asm_cmpbr_ok target and use it 
like so to fallback to dg-do compile when the assembler is too old:
/* { dg-do compile { target aarch64_asm_cmpbr_ok } } */
/* { dg-do compile { target { ! aarch64_asm_cmpbr_ok } } } */
Look in lib/target-supports.exp for “aarch64_asm” for how to define it.

Ok otherwise.
Thanks,
Kyrill

> +
> +#include <stdint.h>
> +
> +typedef uint8_t u8;
> +typedef int8_t i8;
> +
> +typedef uint16_t u16;
> +typedef int16_t i16;
> +
> +typedef uint32_t u32;
> +typedef int32_t i32;
> +
> +typedef uint64_t u64;
> +typedef int64_t i64;
> +
> +int taken();
> +int not_taken();
> +
> +#define COMPARE(ty, name, op, rhs)                                           
>   \
> +  int ty##_x0_##name##_##rhs(ty x0, ty x1) {                                 
>   \
> +    return (x0 op rhs) ? taken() : not_taken();                              
>   \
> +  }
> +
> +#define COMPARE_ALL(unsigned_ty, signed_ty, rhs)                             
>   \
> +  COMPARE(unsigned_ty, eq, ==, rhs);                                         
>   \
> +  COMPARE(unsigned_ty, ne, !=, rhs);                                         
>   \
> +                                                                             
>   \
> +  COMPARE(unsigned_ty, ult, <, rhs);                                         
>   \
> +  COMPARE(unsigned_ty, ule, <=, rhs);                                        
>   \
> +  COMPARE(unsigned_ty, ugt, >, rhs);                                         
>   \
> +  COMPARE(unsigned_ty, uge, >=, rhs);                                        
>   \
> +                                                                             
>   \
> +  COMPARE(signed_ty, slt, <, rhs);                                           
>   \
> +  COMPARE(signed_ty, sle, <=, rhs);                                          
>   \
> +  COMPARE(signed_ty, sgt, >, rhs);                                           
>   \
> +  COMPARE(signed_ty, sge, >=, rhs);
> +
> +// ==== CBB<cc> (register) ====
> +COMPARE_ALL(u8, i8, x1);
> +
> +// ==== CBH<cc> (register) ====
> +COMPARE_ALL(u16, i16, x1);
> +
> +// ==== CB<cc> (register) ====
> +COMPARE_ALL(u32, i32, x1);
> +COMPARE_ALL(u64, i64, x1);
> +
> +// ==== CB<cc> (immediate) ====
> +COMPARE_ALL(u32, i32, 42);
> +COMPARE_ALL(u64, i64, 42);
> +
> +// ==== Special cases ====
> +// CBB and CBH cannot have immediate operands. Instead we have to do a MOV+CB
> +COMPARE_ALL(u8, i8, 42);
> +COMPARE_ALL(u16, i16, 42);
> +
> +// 65 is out of the range for immediate operands (0 to 63).
> +// * For 8/16-bit types, use a MOV+CB as above.
> +// * For 32/64-bit types, use a CMP+B<cc> instead, because
> +//   B<cc> has a longer range than CB<cc>.
> +COMPARE_ALL(u8, i8, 65);
> +COMPARE_ALL(u16, i16, 65);
> +COMPARE_ALL(u32, i32, 65);
> +COMPARE_ALL(u64, i64, 65);
> +
> +// Comparisons against zero can use the wzr/xzr register.
> +COMPARE_ALL(u8, i8, 0);
> +COMPARE_ALL(u16, i16, 0);
> +COMPARE_ALL(u32, i32, 0);
> +COMPARE_ALL(u64, i64, 0);
> +
> +/*
> +** u8_x0_eq_x1:
> +** and w1, w1, 255
> +** cmp w1, w0, uxtb
> +** beq .L4
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** u8_x0_ne_x1:
> +** and w1, w1, 255
> +** cmp w1, w0, uxtb
> +** beq .L6
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_ult_x1:
> +** and w1, w1, 255
> +** cmp w1, w0, uxtb
> +** bls .L8
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_ule_x1:
> +** and w1, w1, 255
> +** cmp w1, w0, uxtb
> +** bcc .L10
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_ugt_x1:
> +** and w1, w1, 255
> +** cmp w1, w0, uxtb
> +** bcs .L12
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_uge_x1:
> +** and w1, w1, 255
> +** cmp w1, w0, uxtb
> +** bhi .L14
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i8_x0_slt_x1:
> +** sxtb w1, w1
> +** cmp w1, w0, sxtb
> +** ble .L16
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i8_x0_sle_x1:
> +** sxtb w1, w1
> +** cmp w1, w0, sxtb
> +** blt .L18
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i8_x0_sgt_x1:
> +** sxtb w1, w1
> +** cmp w1, w0, sxtb
> +** bge .L20
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i8_x0_sge_x1:
> +** sxtb w1, w1
> +** cmp w1, w0, sxtb
> +** bgt .L22
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_eq_x1:
> +** and w1, w1, 65535
> +** cmp w1, w0, uxth
> +** beq .L25
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** u16_x0_ne_x1:
> +** and w1, w1, 65535
> +** cmp w1, w0, uxth
> +** beq .L27
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_ult_x1:
> +** and w1, w1, 65535
> +** cmp w1, w0, uxth
> +** bls .L29
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_ule_x1:
> +** and w1, w1, 65535
> +** cmp w1, w0, uxth
> +** bcc .L31
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_ugt_x1:
> +** and w1, w1, 65535
> +** cmp w1, w0, uxth
> +** bcs .L33
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_uge_x1:
> +** and w1, w1, 65535
> +** cmp w1, w0, uxth
> +** bhi .L35
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i16_x0_slt_x1:
> +** sxth w1, w1
> +** cmp w1, w0, sxth
> +** ble .L37
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i16_x0_sle_x1:
> +** sxth w1, w1
> +** cmp w1, w0, sxth
> +** blt .L39
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i16_x0_sgt_x1:
> +** sxth w1, w1
> +** cmp w1, w0, sxth
> +** bge .L41
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i16_x0_sge_x1:
> +** sxth w1, w1
> +** cmp w1, w0, sxth
> +** bgt .L43
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_eq_x1:
> +** cmp w0, w1
> +** beq .L46
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** u32_x0_ne_x1:
> +** cmp w0, w1
> +** beq .L48
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_ult_x1:
> +** cmp w0, w1
> +** bcs .L50
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_ule_x1:
> +** cmp w0, w1
> +** bhi .L52
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_ugt_x1:
> +** cmp w0, w1
> +** bls .L54
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_uge_x1:
> +** cmp w0, w1
> +** bcc .L56
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i32_x0_slt_x1:
> +** cmp w0, w1
> +** bge .L58
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i32_x0_sle_x1:
> +** cmp w0, w1
> +** bgt .L60
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i32_x0_sgt_x1:
> +** cmp w0, w1
> +** ble .L62
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i32_x0_sge_x1:
> +** cmp w0, w1
> +** blt .L64
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_eq_x1:
> +** cmp x0, x1
> +** beq .L67
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** u64_x0_ne_x1:
> +** cmp x0, x1
> +** beq .L69
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_ult_x1:
> +** cmp x0, x1
> +** bcs .L71
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_ule_x1:
> +** cmp x0, x1
> +** bhi .L73
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_ugt_x1:
> +** cmp x0, x1
> +** bls .L75
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_uge_x1:
> +** cmp x0, x1
> +** bcc .L77
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i64_x0_slt_x1:
> +** cmp x0, x1
> +** bge .L79
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i64_x0_sle_x1:
> +** cmp x0, x1
> +** bgt .L81
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i64_x0_sgt_x1:
> +** cmp x0, x1
> +** ble .L83
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i64_x0_sge_x1:
> +** cmp x0, x1
> +** blt .L85
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_eq_42:
> +** cmp w0, 42
> +** beq .L88
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** u32_x0_ne_42:
> +** cmp w0, 42
> +** beq .L90
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_ult_42:
> +** cmp w0, 41
> +** bhi .L92
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_ule_42:
> +** cmp w0, 42
> +** bhi .L94
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_ugt_42:
> +** cmp w0, 42
> +** bls .L96
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_uge_42:
> +** cmp w0, 41
> +** bls .L98
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i32_x0_slt_42:
> +** cmp w0, 41
> +** bgt .L100
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i32_x0_sle_42:
> +** cmp w0, 42
> +** bgt .L102
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i32_x0_sgt_42:
> +** cmp w0, 42
> +** ble .L104
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i32_x0_sge_42:
> +** cmp w0, 41
> +** ble .L106
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_eq_42:
> +** cmp x0, 42
> +** beq .L109
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** u64_x0_ne_42:
> +** cmp x0, 42
> +** beq .L111
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_ult_42:
> +** cmp x0, 41
> +** bhi .L113
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_ule_42:
> +** cmp x0, 42
> +** bhi .L115
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_ugt_42:
> +** cmp x0, 42
> +** bls .L117
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_uge_42:
> +** cmp x0, 41
> +** bls .L119
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i64_x0_slt_42:
> +** cmp x0, 41
> +** bgt .L121
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i64_x0_sle_42:
> +** cmp x0, 42
> +** bgt .L123
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i64_x0_sgt_42:
> +** cmp x0, 42
> +** ble .L125
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i64_x0_sge_42:
> +** cmp x0, 41
> +** ble .L127
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_eq_42:
> +** and w0, w0, 255
> +** cmp w0, 42
> +** beq .L130
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** u8_x0_ne_42:
> +** and w0, w0, 255
> +** cmp w0, 42
> +** beq .L132
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_ult_42:
> +** and w0, w0, 255
> +** cmp w0, 41
> +** bhi .L134
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_ule_42:
> +** and w0, w0, 255
> +** cmp w0, 42
> +** bhi .L136
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_ugt_42:
> +** and w0, w0, 255
> +** cmp w0, 42
> +** bls .L138
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_uge_42:
> +** and w0, w0, 255
> +** cmp w0, 41
> +** bls .L140
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i8_x0_slt_42:
> +** sxtb w0, w0
> +** cmp w0, 41
> +** bgt .L142
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i8_x0_sle_42:
> +** sxtb w0, w0
> +** cmp w0, 42
> +** bgt .L144
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i8_x0_sgt_42:
> +** sxtb w0, w0
> +** cmp w0, 42
> +** ble .L146
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i8_x0_sge_42:
> +** sxtb w0, w0
> +** cmp w0, 41
> +** ble .L148
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_eq_42:
> +** and w0, w0, 65535
> +** cmp w0, 42
> +** beq .L151
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** u16_x0_ne_42:
> +** and w0, w0, 65535
> +** cmp w0, 42
> +** beq .L153
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_ult_42:
> +** and w0, w0, 65535
> +** cmp w0, 41
> +** bhi .L155
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_ule_42:
> +** and w0, w0, 65535
> +** cmp w0, 42
> +** bhi .L157
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_ugt_42:
> +** and w0, w0, 65535
> +** cmp w0, 42
> +** bls .L159
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_uge_42:
> +** and w0, w0, 65535
> +** cmp w0, 41
> +** bls .L161
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i16_x0_slt_42:
> +** sxth w0, w0
> +** cmp w0, 41
> +** bgt .L163
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i16_x0_sle_42:
> +** sxth w0, w0
> +** cmp w0, 42
> +** bgt .L165
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i16_x0_sgt_42:
> +** sxth w0, w0
> +** cmp w0, 42
> +** ble .L167
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i16_x0_sge_42:
> +** sxth w0, w0
> +** cmp w0, 41
> +** ble .L169
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_eq_65:
> +** and w0, w0, 255
> +** cmp w0, 65
> +** beq .L172
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** u8_x0_ne_65:
> +** and w0, w0, 255
> +** cmp w0, 65
> +** beq .L174
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_ult_65:
> +** and w0, w0, 255
> +** cmp w0, 64
> +** bhi .L176
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_ule_65:
> +** and w0, w0, 255
> +** cmp w0, 65
> +** bhi .L178
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_ugt_65:
> +** and w0, w0, 255
> +** cmp w0, 65
> +** bls .L180
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_uge_65:
> +** and w0, w0, 255
> +** cmp w0, 64
> +** bls .L182
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i8_x0_slt_65:
> +** sxtb w0, w0
> +** cmp w0, 64
> +** bgt .L184
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i8_x0_sle_65:
> +** sxtb w0, w0
> +** cmp w0, 65
> +** bgt .L186
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i8_x0_sgt_65:
> +** sxtb w0, w0
> +** cmp w0, 65
> +** ble .L188
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i8_x0_sge_65:
> +** sxtb w0, w0
> +** cmp w0, 64
> +** ble .L190
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_eq_65:
> +** and w0, w0, 65535
> +** cmp w0, 65
> +** beq .L193
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** u16_x0_ne_65:
> +** and w0, w0, 65535
> +** cmp w0, 65
> +** beq .L195
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_ult_65:
> +** and w0, w0, 65535
> +** cmp w0, 64
> +** bhi .L197
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_ule_65:
> +** and w0, w0, 65535
> +** cmp w0, 65
> +** bhi .L199
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_ugt_65:
> +** and w0, w0, 65535
> +** cmp w0, 65
> +** bls .L201
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_uge_65:
> +** and w0, w0, 65535
> +** cmp w0, 64
> +** bls .L203
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i16_x0_slt_65:
> +** sxth w0, w0
> +** cmp w0, 64
> +** bgt .L205
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i16_x0_sle_65:
> +** sxth w0, w0
> +** cmp w0, 65
> +** bgt .L207
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i16_x0_sgt_65:
> +** sxth w0, w0
> +** cmp w0, 65
> +** ble .L209
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i16_x0_sge_65:
> +** sxth w0, w0
> +** cmp w0, 64
> +** ble .L211
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_eq_65:
> +** cmp w0, 65
> +** beq .L214
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** u32_x0_ne_65:
> +** cmp w0, 65
> +** beq .L216
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_ult_65:
> +** cmp w0, 64
> +** bhi .L218
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_ule_65:
> +** cmp w0, 65
> +** bhi .L220
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_ugt_65:
> +** cmp w0, 65
> +** bls .L222
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_uge_65:
> +** cmp w0, 64
> +** bls .L224
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i32_x0_slt_65:
> +** cmp w0, 64
> +** bgt .L226
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i32_x0_sle_65:
> +** cmp w0, 65
> +** bgt .L228
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i32_x0_sgt_65:
> +** cmp w0, 65
> +** ble .L230
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i32_x0_sge_65:
> +** cmp w0, 64
> +** ble .L232
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_eq_65:
> +** cmp x0, 65
> +** beq .L235
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** u64_x0_ne_65:
> +** cmp x0, 65
> +** beq .L237
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_ult_65:
> +** cmp x0, 64
> +** bhi .L239
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_ule_65:
> +** cmp x0, 65
> +** bhi .L241
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_ugt_65:
> +** cmp x0, 65
> +** bls .L243
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_uge_65:
> +** cmp x0, 64
> +** bls .L245
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i64_x0_slt_65:
> +** cmp x0, 64
> +** bgt .L247
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i64_x0_sle_65:
> +** cmp x0, 65
> +** bgt .L249
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i64_x0_sgt_65:
> +** cmp x0, 65
> +** ble .L251
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i64_x0_sge_65:
> +** cmp x0, 64
> +** ble .L253
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_eq_0:
> +** tst w0, 255
> +** bne .L255
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_ne_0:
> +** tst w0, 255
> +** beq .L257
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_ult_0:
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_ule_0:
> +** tst w0, 255
> +** bne .L260
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_ugt_0:
> +** tst w0, 255
> +** beq .L262
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u8_x0_uge_0:
> +** b taken
> +*/
> +
> +/*
> +** i8_x0_slt_0:
> +** tbnz w0, 7, .L266
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** i8_x0_sle_0:
> +** sxtb w0, w0
> +** cmp w0, 0
> +** ble .L269
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** i8_x0_sgt_0:
> +** sxtb w0, w0
> +** cmp w0, 0
> +** ble .L271
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i8_x0_sge_0:
> +** tbnz w0, 7, .L273
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_eq_0:
> +** tst w0, 65535
> +** bne .L275
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_ne_0:
> +** tst w0, 65535
> +** beq .L277
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_ult_0:
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_ule_0:
> +** tst w0, 65535
> +** bne .L280
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_ugt_0:
> +** tst w0, 65535
> +** beq .L282
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u16_x0_uge_0:
> +** b taken
> +*/
> +
> +/*
> +** i16_x0_slt_0:
> +** tbnz w0, 15, .L286
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** i16_x0_sle_0:
> +** sxth w0, w0
> +** cmp w0, 0
> +** ble .L289
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** i16_x0_sgt_0:
> +** sxth w0, w0
> +** cmp w0, 0
> +** ble .L291
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i16_x0_sge_0:
> +** tbnz w0, 15, .L293
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_eq_0:
> +** cbnz w0, .L295
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_ne_0:
> +** cbz w0, .L297
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_ult_0:
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_ule_0:
> +** cbnz w0, .L300
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_ugt_0:
> +** cbz w0, .L302
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u32_x0_uge_0:
> +** b taken
> +*/
> +
> +/*
> +** i32_x0_slt_0:
> +** tbnz w0, #31, .L306
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** i32_x0_sle_0:
> +** cmp w0, 0
> +** ble .L309
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** i32_x0_sgt_0:
> +** cmp w0, 0
> +** ble .L311
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i32_x0_sge_0:
> +** tbnz w0, #31, .L313
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_eq_0:
> +** cbnz x0, .L315
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_ne_0:
> +** cbz x0, .L317
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_ult_0:
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_ule_0:
> +** cbnz x0, .L320
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_ugt_0:
> +** cbz x0, .L322
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** u64_x0_uge_0:
> +** b taken
> +*/
> +
> +/*
> +** i64_x0_slt_0:
> +** tbnz x0, #63, .L326
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** i64_x0_sle_0:
> +** cmp x0, 0
> +** ble .L329
> +** b not_taken
> +** b taken
> +*/
> +
> +/*
> +** i64_x0_sgt_0:
> +** cmp x0, 0
> +** ble .L331
> +** b taken
> +** b not_taken
> +*/
> +
> +/*
> +** i64_x0_sge_0:
> +** tbnz x0, #63, .L333
> +** b taken
> +** b not_taken
> +*/
> -- 
> 2.45.2
> 

Reply via email to