diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2025-08-08 01:01:26 +0000 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2025-08-11 23:25:10 +0000 |
commit | bc11cbff9e648fdda2798bfa2d7151d5cd164b87 (patch) | |
tree | 15a332ec9b35d24ab2d376283f84f7031ce7734e /gcc/testsuite | |
parent | afd6aa80b373fdf4de6bd3ac3c5f099634ac26e2 (diff) | |
download | gcc-master.zip gcc-master.tar.gz gcc-master.tar.bz2 |
Reject QI/HImode conditions, which would require extension in
order to compare. Fixes
z.c:10:1: error: unrecognizable insn:
10 | }
| ^
(insn 23 22 24 2 (set (reg:CC 66 cc)
(compare:CC (reg:HI 128)
(reg:HI 127))) "z.c":6:6 -1
(nil))
during RTL pass: vregs
gcc:
* config/aarch64/aarch64.md (mov<ALLI>cc): Accept MODE_CC
conditions directly; reject QI/HImode conditions.
gcc/testsuite:
* gcc.target/aarch64/cmpbr-3.c: New.
* gcc.target/aarch64/ifcvt_multiple_sets_rewire.c: Simplify
test for csel by ignoring the actual registers used.
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/cmpbr-3.c | 15 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/ifcvt_multiple_sets_rewire.c | 4 |
2 files changed, 16 insertions, 3 deletions
diff --git a/gcc/testsuite/gcc.target/aarch64/cmpbr-3.c b/gcc/testsuite/gcc.target/aarch64/cmpbr-3.c new file mode 100644 index 0000000..a4f12de --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/cmpbr-3.c @@ -0,0 +1,15 @@ +/* { dg-do assemble } */ +/* { dg-options "-O2" } */ + +#pragma GCC target "+cmpbr" + +long aarch64_fallback_frame_state_tpidr2_0; +unsigned short aarch64_fallback_frame_state_tpidr2_1, aarch64_fallback_frame_state_za_ctx_0; +void aarch64_fallback_frame_state_za_buffer() +{ + long num_slices = aarch64_fallback_frame_state_tpidr2_1; + if (aarch64_fallback_frame_state_tpidr2_1 > aarch64_fallback_frame_state_za_ctx_0) + num_slices = aarch64_fallback_frame_state_za_ctx_0; + __builtin_memcpy((void *)aarch64_fallback_frame_state_tpidr2_0, + aarch64_fallback_frame_state_za_buffer, num_slices); +} diff --git a/gcc/testsuite/gcc.target/aarch64/ifcvt_multiple_sets_rewire.c b/gcc/testsuite/gcc.target/aarch64/ifcvt_multiple_sets_rewire.c index 448425f..2f28756 100644 --- a/gcc/testsuite/gcc.target/aarch64/ifcvt_multiple_sets_rewire.c +++ b/gcc/testsuite/gcc.target/aarch64/ifcvt_multiple_sets_rewire.c @@ -14,7 +14,5 @@ void cond1(int cond, int x, int y, int z) sink2(x, y); } -/* { dg-final { scan-assembler-times "csel\tw0, w0, w1" 1 } } */ -/* { dg-final { scan-assembler-times "csel\tw1, w3, w2" 1 } } */ - +/* { dg-final { scan-assembler-times "csel" 2 } } */ /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_convert_multiple_sets" 1 "ce1" } } */ |