summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.target/riscv/rvv/base/bug-18.C
blob: 868ec1ef90fe70b8b57282dc229ea47c55ecd836 (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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/* { dg-do compile { target { riscv_vector } } } */

#include <iostream>
#include "riscv_vector.h"
using std::cerr;
using std::endl;
template < class , class b > int c(b val) {
  return val;
}
auto &f32(c< float, uint32_t >);
template < class d >
bool check(d , d , size_t );
int main() {
  size_t e ;
  int16_t f[] {};
  size_t g  ;
  int32_t i[] {4784};
  size_t aa = 4;
  int16_t ab[] {2313};
  int16_t j[] {7114 };
  int16_t k[] {7696 };
  uint32_t l[] {9951 };
  int32_t m[] {2659 };
  uint16_t n[] {7537 };
  int32_t o[] {05733}
    ;
  uint32_t p[] {7010090 };
  uint32_t q[] {21060 };
  uint32_t r[] {2273 };
  uint32_t s[] {4094366 };
  int16_t ac[] {11880 };
  int16_t t[] {10988};
  int16_t ad[] {30376};
  int8_t u[] {};
  int8_t ae[] {7};
  int8_t v[] {40};
  int8_t af[] {6};
  int16_t w[]  {4077 };
  int16_t x[]  {7932 };
  int8_t y[] {3};
  int8_t z[] {4};
  uint16_t ag[] {2831};
  int16_t ah[] {10412 };
  int16_t ai[] {6823};
  int32_t aj[] {8572 };
  int32_t ak[] {9999 };
  uint32_t al[] {50166962 };
  uint32_t am[] {9781 };
  int8_t an[] {9, 35};
  float ao[] {222.65, 22.79};
  float ap[] {126.10, 13.92};
  int64_t aq[] {508727, 5556};
  int16_t ar[] {2861 };
  int16_t as[] {21420};
  int16_t at[] {4706 };
  uint32_t au ;
  uint32_t av = 600295662;
  size_t aw ;
  int16_t ax = 13015;
  uint32_t ay ;
  uint16_t az = 10652;
  int32_t ba ;
  int8_t bb ;
  int64_t bc = 40183771683589512;

asm volatile ("ttt":::"memory");
  vint16mf4_t bd = __riscv_vle16_v_i16mf4(j, 2);
  vuint32mf2_t be = __riscv_vle32_v_u32mf2(l, 2);
  vint32mf2_t bf = __riscv_vle32_v_i32mf2(m, 2);
  vuint16mf4_t bg = __riscv_vle16_v_u16mf4(n, 2);
  vint8mf4_t bh ;
  vuint32m2_t bi = __riscv_vle32_v_u32m2(p, 2);
  vuint32m2_t bj = __riscv_vle32_v_u32m2(q, 2);
  vuint32m2_t bk = __riscv_vle32_v_u32m2(r, 2);
  vuint32m2_t bl = __riscv_vle32_v_u32m2(s, 2);
  vint16m1_t bm = __riscv_vle16_v_i16m1(ac, 2);
  vint16m1_t bn = __riscv_vle16_v_i16m1(t, 2);
  vint8mf2_t bo = __riscv_vle8_v_i8mf2(u, 1);
  vint8mf2_t bp = __riscv_vle8_v_i8mf2(ae, 1);
  vint8mf8_t bq = __riscv_vle8_v_i8mf8(af, 1);
  vint16mf4_t br = __riscv_vle16_v_i16mf4(w, 2);
  vint16mf4_t bs = __riscv_vle16_v_i16mf4(x, 2);
  vint8mf8_t bt = __riscv_vle8_v_i8mf8(y, 1);
  vint8mf8_t bu = __riscv_vle8_v_i8mf8(z, 1);
  vuint16mf4_t bv = __riscv_vle16_v_u16mf4(ag, 1);
  vint16mf4_t bw = __riscv_vle16_v_i16mf4(ah, 2);
  vint16mf4_t bx = __riscv_vle16_v_i16mf4(ai, 2);
  vint32mf2_t by = __riscv_vle32_v_i32mf2(aj, 2);
  vint32mf2_t bz = __riscv_vle32_v_i32mf2(ak, 2);
  vuint32mf2_t ca = __riscv_vle32_v_u32mf2(al, 2);
  vuint32mf2_t cb = __riscv_vle32_v_u32mf2(am, 2);
  vint8mf8_t cc = __riscv_vle8_v_i8mf8(an, 2);
  vfloat32mf2_t cd = __riscv_vle32_v_f32mf2(ao, 2);
  vfloat32mf2_t ce = __riscv_vle32_v_f32mf2(ap, 2);
  vint64m1_t cf = __riscv_vle64_v_i64m1(aq, 2);
  vint16mf4_t cg = __riscv_vle16_v_i16mf4(ar, 2);
  vint16mf4_t ch = __riscv_vle16_v_i16mf4(as, 2);
  vint16mf4_t var_62 = __riscv_vle16_v_i16mf4(at, 2);
  vbool64_t var_20 = __riscv_vmadc_vx_u32mf2_b64(be, ay, 2);
  int8_t var_17 = __riscv_vmv_x_s_i8mf4_i8(bh);
  vbool16_t var_28 = __riscv_vmsltu_vv_u32m2_b16(bk, bl, 2);
  vint8mf2_t var_14 = __riscv_vadd_vv_i8mf2(bo, bp, 1);
  vbool64_t var_8 = __riscv_vmseq_vv_i16mf4_b64(br, bs, 2);
  vbool64_t var_42 = __riscv_vmsbc_vx_u16mf4_b64(bv, az, 1);
  vbool64_t var_46 = __riscv_vmsge_vx_i32mf2_b64(by, ba, 2);
  vint16mf4_t var_4 = __riscv_vncvt_x_x_w_i16mf4(bz, 2);
  vbool64_t var_51 = __riscv_vmsgt_vx_i8mf8_b64(cc, bb, 2);
  vbool64_t var_56 = __riscv_vmfne_vv_f32mf2_b64(cd, ce, 2);
  vbool64_t var_55 = __riscv_vmseq_vx_i64m1_b64(cf, bc, 2);
  vuint32m2_t var_16 = __riscv_vslideup_vx_u32m2_mu(var_28, bi, bj, aw, 2);
  vint8mf2_t var_12 = __riscv_vmulh_vv_i8mf2(var_14, var_14, 1);
  vint16mf4_t var_0 = __riscv_vdiv_vv_i16mf4_mu(var_8, var_4, ch, var_62, 2);
  vuint32m2_t var_13 = __riscv_vsub_vx_u32m2(var_16, av, 2);
  int8_t var_9 = __riscv_vmv_x_s_i8mf2_i8(var_12);
  vint16mf4_t var_19 = __riscv_vor_vx_i16mf4_mu(var_20, var_0, bd, ax, 2);
  uint32_t var_10 = __riscv_vmv_x_s_u32m2_u32(var_13);
  vint8mf8_t var_7 = __riscv_vmadd_vx_i8mf8_mu(var_42, bt, var_9, bu, 1);
  __riscv_vse16_v_i16mf4(k, var_19, 2);
  vuint32mf2_t var_3 =
      __riscv_vslide1down_vx_u32mf2_mu(var_51, ca, cb, var_10, 2);
  if (check(k, ab, aa))
    cerr << "check 8 fails" << endl;
  vbool64_t var_2 = __riscv_vmsne_vx_u32mf2_b64_mu(var_55, var_56, var_3, au, 2);
  vint16mf4_t var_1 = __riscv_vssub_vv_i16mf4_mu(var_2, var_0, var_4, cg, 2);
  vint16mf4_t var_5 = __riscv_vxor_vv_i16mf4_mu(var_46, var_1, bw, bx, 2);
  vint32mf2_t var_18 = __riscv_vwmaccsu_vv_i32mf2(bf, var_1, bg, 2);
  vint8mf8_t var_6 = __riscv_vncvt_x_x_w_i8mf8_mu(var_8, var_7, var_5, 1);
  vint16m1_t var_15 = __riscv_vredand_vs_i16mf4_i16m1_tu(bm, var_5, bn, 2);
  __riscv_vse32_v_i32mf2(o, var_18, 2);
  vbool64_t var_11 = __riscv_vmsge_vx_i8mf8_b64(var_6, var_17, 1);
  __riscv_vse16_v_i16m1(ad, var_15, 1);
  if (check(o, i, g))
    cerr << "check 1 fails" << endl;
  __riscv_vse8_v_i8mf8_m(var_11, v, bq, 1);
  if (check(ad, f, e))
    cerr << "check 4 fails" << endl;
  cerr << "check 7 fails" << endl;
  return 0;
}