[AArch64] Fix SVE testsuite failures for ILP32 (PR 83846)
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / sve / ld1r_2.c
blob2e6b59ab458bb731a82173179d743d834bf6cc14
1 /* { dg-do compile } */
2 /* { dg-options "-O3 -fno-tree-loop-distribute-patterns" } */
4 #include <stdint.h>
6 #define NUM_ELEMS(TYPE) (1024 / sizeof (TYPE))
8 #define DEF_LOAD_BROADCAST(TYPE) \
9 void __attribute__ ((noinline, noclone)) \
10 set_##TYPE (TYPE *restrict a, TYPE *restrict b) \
11 { \
12 for (int i = 0; i < NUM_ELEMS (TYPE); i++) \
13 a[i] = *b; \
16 #define DEF_LOAD_BROADCAST_IMM(TYPE, IMM, SUFFIX) \
17 void __attribute__ ((noinline, noclone)) \
18 set_##TYPE##_##SUFFIX (TYPE *a) \
19 { \
20 for (int i = 0; i < NUM_ELEMS (TYPE); i++) \
21 a[i] = IMM; \
24 #define FOR_EACH_LOAD_BROADCAST(T) \
25 T (int8_t) \
26 T (int16_t) \
27 T (int32_t) \
28 T (int64_t)
30 #define FOR_EACH_LOAD_BROADCAST_IMM(T) \
31 T (int16_t, 129, imm_129) \
32 T (int32_t, 129, imm_129) \
33 T (int64_t, 129, imm_129) \
35 T (int16_t, -130, imm_m130) \
36 T (int32_t, -130, imm_m130) \
37 T (int64_t, -130, imm_m130) \
39 T (int16_t, 0x1234, imm_0x1234) \
40 T (int32_t, 0x1234, imm_0x1234) \
41 T (int64_t, 0x1234, imm_0x1234) \
43 T (int16_t, 0xFEDC, imm_0xFEDC) \
44 T (int32_t, 0xFEDC, imm_0xFEDC) \
45 T (int64_t, 0xFEDC, imm_0xFEDC) \
47 T (int32_t, 0x12345678, imm_0x12345678) \
48 T (int64_t, 0x12345678, imm_0x12345678) \
50 T (int32_t, 0xF2345678, imm_0xF2345678) \
51 T (int64_t, 0xF2345678, imm_0xF2345678) \
53 T (int64_t, (int64_t) 0xFEBA716B12371765, imm_FEBA716B12371765)
55 FOR_EACH_LOAD_BROADCAST (DEF_LOAD_BROADCAST)
56 FOR_EACH_LOAD_BROADCAST_IMM (DEF_LOAD_BROADCAST_IMM)
58 /* { dg-final { scan-assembler-times {\tld1rb\tz[0-9]+\.b, p[0-7]/z, } 1 } } */
59 /* { dg-final { scan-assembler-times {\tld1rh\tz[0-9]+\.h, p[0-7]/z, } 5 } } */
60 /* { dg-final { scan-assembler-times {\tld1rw\tz[0-9]+\.s, p[0-7]/z, } 7 } } */
61 /* { dg-final { scan-assembler-times {\tld1rd\tz[0-9]+\.d, p[0-7]/z, } 8 } } */