RISC-V: Allow vector constants in riscv_const_insns.
[official-gcc.git] / gcc / testsuite / gcc.target / riscv / rvv / autovec / vmv-imm-template.h
blob93ba5204c2e976dbddc2146aca17b7b4ff00c73b
1 #include <stdint.h>
2 #include <assert.h>
4 #define VMV_POS(TYPE,VAL) \
5 __attribute__ ((noipa)) \
6 void vmv_##VAL (TYPE dst[], int n) \
7 { \
8 for (int i = 0; i < n; i++) \
9 dst[i] = VAL; \
12 #define VMV_NEG(TYPE,VAL) \
13 __attribute__ ((noipa)) \
14 void vmv_m##VAL (TYPE dst[], int n) \
15 { \
16 for (int i = 0; i < n; i++) \
17 dst[i] = -VAL; \
20 #define TEST_ALL() \
21 VMV_NEG(int8_t,16) \
22 VMV_NEG(int8_t,15) \
23 VMV_NEG(int8_t,14) \
24 VMV_NEG(int8_t,13) \
25 VMV_NEG(int16_t,12) \
26 VMV_NEG(int16_t,11) \
27 VMV_NEG(int16_t,10) \
28 VMV_NEG(int16_t,9) \
29 VMV_NEG(int32_t,8) \
30 VMV_NEG(int32_t,7) \
31 VMV_NEG(int32_t,6) \
32 VMV_NEG(int32_t,5) \
33 VMV_NEG(int64_t,4) \
34 VMV_NEG(int64_t,3) \
35 VMV_NEG(int64_t,2) \
36 VMV_NEG(int64_t,1) \
37 VMV_POS(uint8_t,0) \
38 VMV_POS(uint8_t,1) \
39 VMV_POS(uint8_t,2) \
40 VMV_POS(uint8_t,3) \
41 VMV_POS(uint16_t,4) \
42 VMV_POS(uint16_t,5) \
43 VMV_POS(uint16_t,6) \
44 VMV_POS(uint16_t,7) \
45 VMV_POS(uint32_t,8) \
46 VMV_POS(uint32_t,9) \
47 VMV_POS(uint32_t,10) \
48 VMV_POS(uint32_t,11) \
49 VMV_POS(uint64_t,12) \
50 VMV_POS(uint64_t,13) \
51 VMV_POS(uint64_t,14) \
52 VMV_POS(uint64_t,15)
54 TEST_ALL()