Kyrylo Tkachov <ktkac...@nvidia.com> writes:
>> 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.

Agreed FWIW, but:

> 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 assemble for this one :)

Thanks,
Richard

> /* { 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