|
1 |
| -// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py |
| 1 | +// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 2 |
2 | 2 | // REQUIRES: riscv-registered-target
|
3 | 3 | // RUN: %clang_cc1 -triple riscv64 -target-feature +v -target-feature +zfh \
|
4 | 4 | // RUN: -target-feature +experimental-zvfh -disable-O0-optnone \
|
|
7 | 7 |
|
8 | 8 | #include <riscv_vector.h>
|
9 | 9 |
|
10 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b1( |
| 10 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b1 |
| 11 | +// CHECK-RV64-SAME: (<vscale x 64 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0:[0-9]+]] { |
11 | 12 | // CHECK-RV64-NEXT: entry:
|
12 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv64i1.i64(<vscale x 64 x i1> [[OP1:%.*]], i64 [[VL:%.*]]) |
| 13 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv64i1.i64(<vscale x 64 x i1> [[OP1]], i64 [[VL]]) |
13 | 14 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
14 | 15 | //
|
15 | 16 | unsigned long test_vcpop_m_b1(vbool1_t op1, size_t vl) {
|
16 | 17 | return __riscv_vcpop_m_b1(op1, vl);
|
17 | 18 | }
|
18 | 19 |
|
19 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b2( |
| 20 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b2 |
| 21 | +// CHECK-RV64-SAME: (<vscale x 32 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
20 | 22 | // CHECK-RV64-NEXT: entry:
|
21 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv32i1.i64(<vscale x 32 x i1> [[OP1:%.*]], i64 [[VL:%.*]]) |
| 23 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv32i1.i64(<vscale x 32 x i1> [[OP1]], i64 [[VL]]) |
22 | 24 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
23 | 25 | //
|
24 | 26 | unsigned long test_vcpop_m_b2(vbool2_t op1, size_t vl) {
|
25 | 27 | return __riscv_vcpop_m_b2(op1, vl);
|
26 | 28 | }
|
27 | 29 |
|
28 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b4( |
| 30 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b4 |
| 31 | +// CHECK-RV64-SAME: (<vscale x 16 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
29 | 32 | // CHECK-RV64-NEXT: entry:
|
30 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv16i1.i64(<vscale x 16 x i1> [[OP1:%.*]], i64 [[VL:%.*]]) |
| 33 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv16i1.i64(<vscale x 16 x i1> [[OP1]], i64 [[VL]]) |
31 | 34 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
32 | 35 | //
|
33 | 36 | unsigned long test_vcpop_m_b4(vbool4_t op1, size_t vl) {
|
34 | 37 | return __riscv_vcpop_m_b4(op1, vl);
|
35 | 38 | }
|
36 | 39 |
|
37 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b8( |
| 40 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b8 |
| 41 | +// CHECK-RV64-SAME: (<vscale x 8 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
38 | 42 | // CHECK-RV64-NEXT: entry:
|
39 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv8i1.i64(<vscale x 8 x i1> [[OP1:%.*]], i64 [[VL:%.*]]) |
| 43 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv8i1.i64(<vscale x 8 x i1> [[OP1]], i64 [[VL]]) |
40 | 44 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
41 | 45 | //
|
42 | 46 | unsigned long test_vcpop_m_b8(vbool8_t op1, size_t vl) {
|
43 | 47 | return __riscv_vcpop_m_b8(op1, vl);
|
44 | 48 | }
|
45 | 49 |
|
46 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b16( |
| 50 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b16 |
| 51 | +// CHECK-RV64-SAME: (<vscale x 4 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
47 | 52 | // CHECK-RV64-NEXT: entry:
|
48 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv4i1.i64(<vscale x 4 x i1> [[OP1:%.*]], i64 [[VL:%.*]]) |
| 53 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv4i1.i64(<vscale x 4 x i1> [[OP1]], i64 [[VL]]) |
49 | 54 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
50 | 55 | //
|
51 | 56 | unsigned long test_vcpop_m_b16(vbool16_t op1, size_t vl) {
|
52 | 57 | return __riscv_vcpop_m_b16(op1, vl);
|
53 | 58 | }
|
54 | 59 |
|
55 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b32( |
| 60 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b32 |
| 61 | +// CHECK-RV64-SAME: (<vscale x 2 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
56 | 62 | // CHECK-RV64-NEXT: entry:
|
57 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv2i1.i64(<vscale x 2 x i1> [[OP1:%.*]], i64 [[VL:%.*]]) |
| 63 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv2i1.i64(<vscale x 2 x i1> [[OP1]], i64 [[VL]]) |
58 | 64 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
59 | 65 | //
|
60 | 66 | unsigned long test_vcpop_m_b32(vbool32_t op1, size_t vl) {
|
61 | 67 | return __riscv_vcpop_m_b32(op1, vl);
|
62 | 68 | }
|
63 | 69 |
|
64 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b64( |
| 70 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b64 |
| 71 | +// CHECK-RV64-SAME: (<vscale x 1 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
65 | 72 | // CHECK-RV64-NEXT: entry:
|
66 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv1i1.i64(<vscale x 1 x i1> [[OP1:%.*]], i64 [[VL:%.*]]) |
| 73 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.nxv1i1.i64(<vscale x 1 x i1> [[OP1]], i64 [[VL]]) |
67 | 74 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
68 | 75 | //
|
69 | 76 | unsigned long test_vcpop_m_b64(vbool64_t op1, size_t vl) {
|
70 | 77 | return __riscv_vcpop_m_b64(op1, vl);
|
71 | 78 | }
|
72 | 79 |
|
73 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b1_m( |
| 80 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b1_m |
| 81 | +// CHECK-RV64-SAME: (<vscale x 64 x i1> [[MASK:%.*]], <vscale x 64 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
74 | 82 | // CHECK-RV64-NEXT: entry:
|
75 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv64i1.i64(<vscale x 64 x i1> [[OP1:%.*]], <vscale x 64 x i1> [[MASK:%.*]], i64 [[VL:%.*]]) |
| 83 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv64i1.i64(<vscale x 64 x i1> [[OP1]], <vscale x 64 x i1> [[MASK]], i64 [[VL]]) |
76 | 84 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
77 | 85 | //
|
78 | 86 | unsigned long test_vcpop_m_b1_m(vbool1_t mask, vbool1_t op1, size_t vl) {
|
79 | 87 | return __riscv_vcpop_m_b1_m(mask, op1, vl);
|
80 | 88 | }
|
81 | 89 |
|
82 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b2_m( |
| 90 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b2_m |
| 91 | +// CHECK-RV64-SAME: (<vscale x 32 x i1> [[MASK:%.*]], <vscale x 32 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
83 | 92 | // CHECK-RV64-NEXT: entry:
|
84 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv32i1.i64(<vscale x 32 x i1> [[OP1:%.*]], <vscale x 32 x i1> [[MASK:%.*]], i64 [[VL:%.*]]) |
| 93 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv32i1.i64(<vscale x 32 x i1> [[OP1]], <vscale x 32 x i1> [[MASK]], i64 [[VL]]) |
85 | 94 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
86 | 95 | //
|
87 | 96 | unsigned long test_vcpop_m_b2_m(vbool2_t mask, vbool2_t op1, size_t vl) {
|
88 | 97 | return __riscv_vcpop_m_b2_m(mask, op1, vl);
|
89 | 98 | }
|
90 | 99 |
|
91 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b4_m( |
| 100 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b4_m |
| 101 | +// CHECK-RV64-SAME: (<vscale x 16 x i1> [[MASK:%.*]], <vscale x 16 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
92 | 102 | // CHECK-RV64-NEXT: entry:
|
93 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv16i1.i64(<vscale x 16 x i1> [[OP1:%.*]], <vscale x 16 x i1> [[MASK:%.*]], i64 [[VL:%.*]]) |
| 103 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv16i1.i64(<vscale x 16 x i1> [[OP1]], <vscale x 16 x i1> [[MASK]], i64 [[VL]]) |
94 | 104 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
95 | 105 | //
|
96 | 106 | unsigned long test_vcpop_m_b4_m(vbool4_t mask, vbool4_t op1, size_t vl) {
|
97 | 107 | return __riscv_vcpop_m_b4_m(mask, op1, vl);
|
98 | 108 | }
|
99 | 109 |
|
100 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b8_m( |
| 110 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b8_m |
| 111 | +// CHECK-RV64-SAME: (<vscale x 8 x i1> [[MASK:%.*]], <vscale x 8 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
101 | 112 | // CHECK-RV64-NEXT: entry:
|
102 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv8i1.i64(<vscale x 8 x i1> [[OP1:%.*]], <vscale x 8 x i1> [[MASK:%.*]], i64 [[VL:%.*]]) |
| 113 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv8i1.i64(<vscale x 8 x i1> [[OP1]], <vscale x 8 x i1> [[MASK]], i64 [[VL]]) |
103 | 114 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
104 | 115 | //
|
105 | 116 | unsigned long test_vcpop_m_b8_m(vbool8_t mask, vbool8_t op1, size_t vl) {
|
106 | 117 | return __riscv_vcpop_m_b8_m(mask, op1, vl);
|
107 | 118 | }
|
108 | 119 |
|
109 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b16_m( |
| 120 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b16_m |
| 121 | +// CHECK-RV64-SAME: (<vscale x 4 x i1> [[MASK:%.*]], <vscale x 4 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
110 | 122 | // CHECK-RV64-NEXT: entry:
|
111 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv4i1.i64(<vscale x 4 x i1> [[OP1:%.*]], <vscale x 4 x i1> [[MASK:%.*]], i64 [[VL:%.*]]) |
| 123 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv4i1.i64(<vscale x 4 x i1> [[OP1]], <vscale x 4 x i1> [[MASK]], i64 [[VL]]) |
112 | 124 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
113 | 125 | //
|
114 | 126 | unsigned long test_vcpop_m_b16_m(vbool16_t mask, vbool16_t op1, size_t vl) {
|
115 | 127 | return __riscv_vcpop_m_b16_m(mask, op1, vl);
|
116 | 128 | }
|
117 | 129 |
|
118 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b32_m( |
| 130 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b32_m |
| 131 | +// CHECK-RV64-SAME: (<vscale x 2 x i1> [[MASK:%.*]], <vscale x 2 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
119 | 132 | // CHECK-RV64-NEXT: entry:
|
120 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv2i1.i64(<vscale x 2 x i1> [[OP1:%.*]], <vscale x 2 x i1> [[MASK:%.*]], i64 [[VL:%.*]]) |
| 133 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv2i1.i64(<vscale x 2 x i1> [[OP1]], <vscale x 2 x i1> [[MASK]], i64 [[VL]]) |
121 | 134 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
122 | 135 | //
|
123 | 136 | unsigned long test_vcpop_m_b32_m(vbool32_t mask, vbool32_t op1, size_t vl) {
|
124 | 137 | return __riscv_vcpop_m_b32_m(mask, op1, vl);
|
125 | 138 | }
|
126 | 139 |
|
127 |
| -// CHECK-RV64-LABEL: @test_vcpop_m_b64_m( |
| 140 | +// CHECK-RV64-LABEL: define dso_local i64 @test_vcpop_m_b64_m |
| 141 | +// CHECK-RV64-SAME: (<vscale x 1 x i1> [[MASK:%.*]], <vscale x 1 x i1> [[OP1:%.*]], i64 noundef [[VL:%.*]]) #[[ATTR0]] { |
128 | 142 | // CHECK-RV64-NEXT: entry:
|
129 |
| -// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv1i1.i64(<vscale x 1 x i1> [[OP1:%.*]], <vscale x 1 x i1> [[MASK:%.*]], i64 [[VL:%.*]]) |
| 143 | +// CHECK-RV64-NEXT: [[TMP0:%.*]] = call i64 @llvm.riscv.vcpop.mask.nxv1i1.i64(<vscale x 1 x i1> [[OP1]], <vscale x 1 x i1> [[MASK]], i64 [[VL]]) |
130 | 144 | // CHECK-RV64-NEXT: ret i64 [[TMP0]]
|
131 | 145 | //
|
132 | 146 | unsigned long test_vcpop_m_b64_m(vbool64_t mask, vbool64_t op1, size_t vl) {
|
|
0 commit comments