summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/riscv/rvv/autovec/vmv-imm-run.c
blob: 309a296b686d6ea880793841ed5131773dbf5061 (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
55
56
57
/* { dg-do run { target { riscv_vector } } } */
/* { dg-additional-options "-std=c99 -fno-vect-cost-model --param=riscv-autovec-preference=scalable -fno-builtin" } */

#include "vmv-imm-template.h"

#include <stdint.h>
#include <assert.h>

#define SZ 512

#define TEST_POS(TYPE,VAL)		\
  TYPE a##TYPE##VAL[SZ];	  	\
  vmv_##VAL (a##TYPE##VAL, SZ);	  	\
  for (int i = 0; i < SZ; i++)	  	\
    assert (a##TYPE##VAL[i] == VAL);

#define TEST_NEG(TYPE,VAL)		\
  TYPE am##TYPE##VAL[SZ];	  	\
  vmv_m##VAL (am##TYPE##VAL, SZ); 	\
  for (int i = 0; i < SZ; i++)	  	\
    assert (am##TYPE##VAL[i] == -VAL);

int main ()
{
  TEST_NEG(int8_t, 16)
  TEST_NEG(int8_t, 15)
  TEST_NEG(int8_t, 14)
  TEST_NEG(int8_t, 13)
  TEST_NEG(int16_t, 12)
  TEST_NEG(int16_t, 11)
  TEST_NEG(int16_t, 10)
  TEST_NEG(int16_t, 9)
  TEST_NEG(int32_t, 8)
  TEST_NEG(int32_t, 7)
  TEST_NEG(int32_t, 6)
  TEST_NEG(int32_t, 5)
  TEST_NEG(int64_t, 4)
  TEST_NEG(int64_t, 3)
  TEST_NEG(int64_t, 2)
  TEST_NEG(int64_t, 1)
  TEST_POS(uint8_t, 0)
  TEST_POS(uint8_t, 1)
  TEST_POS(uint8_t, 2)
  TEST_POS(uint8_t, 3)
  TEST_POS(uint16_t, 4)
  TEST_POS(uint16_t, 5)
  TEST_POS(uint16_t, 6)
  TEST_POS(uint16_t, 7)
  TEST_POS(uint32_t, 8)
  TEST_POS(uint32_t, 9)
  TEST_POS(uint32_t, 10)
  TEST_POS(uint32_t, 11)
  TEST_POS(uint64_t, 12)
  TEST_POS(uint64_t, 13)
  TEST_POS(uint64_t, 14)
  TEST_POS(uint64_t, 15)
}