summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/riscv/rvv/autovec/vmv-imm-template.h
blob: 93ba5204c2e976dbddc2146aca17b7b4ff00c73b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <stdint.h>
#include <assert.h>

#define VMV_POS(TYPE,VAL)				\
  __attribute__ ((noipa))                               \
  void vmv_##VAL (TYPE dst[], int n)			\
  {                                                     \
    for (int i = 0; i < n; i++)                         \
      dst[i] = VAL;					\
  }

#define VMV_NEG(TYPE,VAL)				\
  __attribute__ ((noipa))                               \
  void vmv_m##VAL (TYPE dst[], int n)			\
  {                                                     \
    for (int i = 0; i < n; i++)                         \
      dst[i] = -VAL;					\
  }

#define TEST_ALL()	\
VMV_NEG(int8_t,16)	\
VMV_NEG(int8_t,15)    	\
VMV_NEG(int8_t,14)    	\
VMV_NEG(int8_t,13)    	\
VMV_NEG(int16_t,12)     \
VMV_NEG(int16_t,11)     \
VMV_NEG(int16_t,10)     \
VMV_NEG(int16_t,9)	\
VMV_NEG(int32_t,8)	\
VMV_NEG(int32_t,7)	\
VMV_NEG(int32_t,6)	\
VMV_NEG(int32_t,5)	\
VMV_NEG(int64_t,4)	\
VMV_NEG(int64_t,3)	\
VMV_NEG(int64_t,2)	\
VMV_NEG(int64_t,1)	\
VMV_POS(uint8_t,0)	\
VMV_POS(uint8_t,1)	\
VMV_POS(uint8_t,2)	\
VMV_POS(uint8_t,3)	\
VMV_POS(uint16_t,4)	\
VMV_POS(uint16_t,5)	\
VMV_POS(uint16_t,6)	\
VMV_POS(uint16_t,7)	\
VMV_POS(uint32_t,8)	\
VMV_POS(uint32_t,9)	\
VMV_POS(uint32_t,10)	\
VMV_POS(uint32_t,11)	\
VMV_POS(uint64_t,12)	\
VMV_POS(uint64_t,13)	\
VMV_POS(uint64_t,14)	\
VMV_POS(uint64_t,15)

TEST_ALL()