summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/riscv/rvv/base/pr108185-1.c
blob: c3d0b10271a403b03013068f7b83cfd52493fd87 (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
58
59
60
61
62
63
64
65
66
67
68
/* { dg-do compile } */
/* { dg-options "-march=rv64gcv -mabi=lp64 -O3" } */

#include "riscv_vector.h"

void
test_vbool1_then_vbool2(int8_t * restrict in, int8_t * restrict out) {
    vbool1_t v1 = *(vbool1_t*)in;
    vbool2_t v2 = *(vbool2_t*)in;

    *(vbool1_t*)(out + 100) = v1;
    *(vbool2_t*)(out + 200) = v2;
}

void
test_vbool1_then_vbool4(int8_t * restrict in, int8_t * restrict out) {
    vbool1_t v1 = *(vbool1_t*)in;
    vbool4_t v2 = *(vbool4_t*)in;

    *(vbool1_t*)(out + 100) = v1;
    *(vbool4_t*)(out + 200) = v2;
}

void
test_vbool1_then_vbool8(int8_t * restrict in, int8_t * restrict out) {
    vbool1_t v1 = *(vbool1_t*)in;
    vbool8_t v2 = *(vbool8_t*)in;

    *(vbool1_t*)(out + 100) = v1;
    *(vbool8_t*)(out + 200) = v2;
}

void
test_vbool1_then_vbool16(int8_t * restrict in, int8_t * restrict out) {
    vbool1_t v1 = *(vbool1_t*)in;
    vbool16_t v2 = *(vbool16_t*)in;

    *(vbool1_t*)(out + 100) = v1;
    *(vbool16_t*)(out + 200) = v2;
}

void
test_vbool1_then_vbool32(int8_t * restrict in, int8_t * restrict out) {
    vbool1_t v1 = *(vbool1_t*)in;
    vbool32_t v2 = *(vbool32_t*)in;

    *(vbool1_t*)(out + 100) = v1;
    *(vbool32_t*)(out + 200) = v2;
}

void
test_vbool1_then_vbool64(int8_t * restrict in, int8_t * restrict out) {
    vbool1_t v1 = *(vbool1_t*)in;
    vbool64_t v2 = *(vbool64_t*)in;

    *(vbool1_t*)(out + 100) = v1;
    *(vbool64_t*)(out + 200) = v2;
}

/* { dg-final { scan-assembler-times {vsetvli\s+[a-x][0-9]+,\s*zero,\s*e8,\s*m8,\s*ta,\s*ma} 6 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+[a-x][0-9]+,\s*zero,\s*e8,\s*m4,\s*ta,\s*ma} 1 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+[a-x][0-9]+,\s*zero,\s*e8,\s*m2,\s*ta,\s*ma} 1 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+[a-x][0-9]+,\s*zero,\s*e8,\s*m1,\s*ta,\s*ma} 1 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+[a-x][0-9]+,\s*zero,\s*e8,\s*mf2,\s*ta,\s*ma} 1 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+[a-x][0-9]+,\s*zero,\s*e8,\s*mf4,\s*ta,\s*ma} 1 } } */
/* { dg-final { scan-assembler-times {vsetvli\s+[a-x][0-9]+,\s*zero,\s*e8,\s*mf8,\s*ta,\s*ma} 1 } } */
/* { dg-final { scan-assembler-times {vlm\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 12 } } */
/* { dg-final { scan-assembler-times {vsm\.v\s+v[0-9]+,\s*0\([a-x][0-9]+\)} 12 } } */