[clang][modules] Don't prevent translation of FW_Private includes when explicitly...
[llvm-project.git] / llvm / test / Transforms / InstSimplify / ConstProp / ARM / mve-vctp.ll
blob979fb2e84ba92471357b48062a16fb5265635f21
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt -passes=instsimplify -S -o - %s | FileCheck %s
4 target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
6 define <16 x i1> @vctp8_0() {
7 ; CHECK-LABEL: @vctp8_0(
8 ; CHECK-NEXT:  entry:
9 ; CHECK-NEXT:    ret <16 x i1> zeroinitializer
11 entry:
12   %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 0)
13   ret <16 x i1> %int
16 define <16 x i1> @vctp8_1() {
17 ; CHECK-LABEL: @vctp8_1(
18 ; CHECK-NEXT:  entry:
19 ; CHECK-NEXT:    ret <16 x i1> <i1 true, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false>
21 entry:
22   %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 1)
23   ret <16 x i1> %int
26 define <16 x i1> @vctp8_8() {
27 ; CHECK-LABEL: @vctp8_8(
28 ; CHECK-NEXT:  entry:
29 ; CHECK-NEXT:    ret <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false>
31 entry:
32   %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 8)
33   ret <16 x i1> %int
36 define <16 x i1> @vctp8_15() {
37 ; CHECK-LABEL: @vctp8_15(
38 ; CHECK-NEXT:  entry:
39 ; CHECK-NEXT:    ret <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 false>
41 entry:
42   %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 15)
43   ret <16 x i1> %int
46 define <16 x i1> @vctp8_16() {
47 ; CHECK-LABEL: @vctp8_16(
48 ; CHECK-NEXT:  entry:
49 ; CHECK-NEXT:    ret <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
51 entry:
52   %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 16)
53   ret <16 x i1> %int
56 define <16 x i1> @vctp8_100() {
57 ; CHECK-LABEL: @vctp8_100(
58 ; CHECK-NEXT:  entry:
59 ; CHECK-NEXT:    ret <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
61 entry:
62   %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 100)
63   ret <16 x i1> %int
66 define <16 x i1> @vctp8_m1() {
67 ; CHECK-LABEL: @vctp8_m1(
68 ; CHECK-NEXT:  entry:
69 ; CHECK-NEXT:    ret <16 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
71 entry:
72   %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 -1)
73   ret <16 x i1> %int
78 define <8 x i1> @vctp16_0() {
79 ; CHECK-LABEL: @vctp16_0(
80 ; CHECK-NEXT:  entry:
81 ; CHECK-NEXT:    ret <8 x i1> zeroinitializer
83 entry:
84   %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 0)
85   ret <8 x i1> %int
88 define <8 x i1> @vctp16_1() {
89 ; CHECK-LABEL: @vctp16_1(
90 ; CHECK-NEXT:  entry:
91 ; CHECK-NEXT:    ret <8 x i1> <i1 true, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false, i1 false>
93 entry:
94   %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 1)
95   ret <8 x i1> %int
98 define <8 x i1> @vctp16_4() {
99 ; CHECK-LABEL: @vctp16_4(
100 ; CHECK-NEXT:  entry:
101 ; CHECK-NEXT:    ret <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 false, i1 false, i1 false, i1 false>
103 entry:
104   %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 4)
105   ret <8 x i1> %int
108 define <8 x i1> @vctp16_7() {
109 ; CHECK-LABEL: @vctp16_7(
110 ; CHECK-NEXT:  entry:
111 ; CHECK-NEXT:    ret <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 false>
113 entry:
114   %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 7)
115   ret <8 x i1> %int
118 define <8 x i1> @vctp16_8() {
119 ; CHECK-LABEL: @vctp16_8(
120 ; CHECK-NEXT:  entry:
121 ; CHECK-NEXT:    ret <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
123 entry:
124   %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 8)
125   ret <8 x i1> %int
128 define <8 x i1> @vctp16_100() {
129 ; CHECK-LABEL: @vctp16_100(
130 ; CHECK-NEXT:  entry:
131 ; CHECK-NEXT:    ret <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
133 entry:
134   %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 100)
135   ret <8 x i1> %int
138 define <8 x i1> @vctp16_m1() {
139 ; CHECK-LABEL: @vctp16_m1(
140 ; CHECK-NEXT:  entry:
141 ; CHECK-NEXT:    ret <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>
143 entry:
144   %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 -1)
145   ret <8 x i1> %int
150 define <4 x i1> @vctp32_0() {
151 ; CHECK-LABEL: @vctp32_0(
152 ; CHECK-NEXT:  entry:
153 ; CHECK-NEXT:    ret <4 x i1> zeroinitializer
155 entry:
156   %int = call <4 x i1> @llvm.arm.mve.vctp32(i32 0)
157   ret <4 x i1> %int
160 define <4 x i1> @vctp32_1() {
161 ; CHECK-LABEL: @vctp32_1(
162 ; CHECK-NEXT:  entry:
163 ; CHECK-NEXT:    ret <4 x i1> <i1 true, i1 false, i1 false, i1 false>
165 entry:
166   %int = call <4 x i1> @llvm.arm.mve.vctp32(i32 1)
167   ret <4 x i1> %int
170 define <4 x i1> @vctp32_3() {
171 ; CHECK-LABEL: @vctp32_3(
172 ; CHECK-NEXT:  entry:
173 ; CHECK-NEXT:    ret <4 x i1> <i1 true, i1 true, i1 true, i1 false>
175 entry:
176   %int = call <4 x i1> @llvm.arm.mve.vctp32(i32 3)
177   ret <4 x i1> %int
180 define <4 x i1> @vctp32_4() {
181 ; CHECK-LABEL: @vctp32_4(
182 ; CHECK-NEXT:  entry:
183 ; CHECK-NEXT:    ret <4 x i1> <i1 true, i1 true, i1 true, i1 true>
185 entry:
186   %int = call <4 x i1> @llvm.arm.mve.vctp32(i32 4)
187   ret <4 x i1> %int
190 define <4 x i1> @vctp32_100() {
191 ; CHECK-LABEL: @vctp32_100(
192 ; CHECK-NEXT:  entry:
193 ; CHECK-NEXT:    ret <4 x i1> <i1 true, i1 true, i1 true, i1 true>
195 entry:
196   %int = call <4 x i1> @llvm.arm.mve.vctp32(i32 100)
197   ret <4 x i1> %int
200 define <4 x i1> @vctp32_m1() {
201 ; CHECK-LABEL: @vctp32_m1(
202 ; CHECK-NEXT:  entry:
203 ; CHECK-NEXT:    ret <4 x i1> <i1 true, i1 true, i1 true, i1 true>
205 entry:
206   %int = call <4 x i1> @llvm.arm.mve.vctp32(i32 -1)
207   ret <4 x i1> %int
212 define <2 x i1> @vctp64_0() {
213 ; CHECK-LABEL: @vctp64_0(
214 ; CHECK-NEXT:  entry:
215 ; CHECK-NEXT:    ret <2 x i1> zeroinitializer
217 entry:
218   %int = call <2 x i1> @llvm.arm.mve.vctp64(i32 0)
219   ret <2 x i1> %int
222 define <2 x i1> @vctp64_1() {
223 ; CHECK-LABEL: @vctp64_1(
224 ; CHECK-NEXT:  entry:
225 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 false>
227 entry:
228   %int = call <2 x i1> @llvm.arm.mve.vctp64(i32 1)
229   ret <2 x i1> %int
232 define <2 x i1> @vctp64_2() {
233 ; CHECK-LABEL: @vctp64_2(
234 ; CHECK-NEXT:  entry:
235 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
237 entry:
238   %int = call <2 x i1> @llvm.arm.mve.vctp64(i32 2)
239   ret <2 x i1> %int
242 define <2 x i1> @vctp64_100() {
243 ; CHECK-LABEL: @vctp64_100(
244 ; CHECK-NEXT:  entry:
245 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
247 entry:
248   %int = call <2 x i1> @llvm.arm.mve.vctp64(i32 100)
249   ret <2 x i1> %int
252 define <2 x i1> @vctp64_m1() {
253 ; CHECK-LABEL: @vctp64_m1(
254 ; CHECK-NEXT:  entry:
255 ; CHECK-NEXT:    ret <2 x i1> <i1 true, i1 true>
257 entry:
258   %int = call <2 x i1> @llvm.arm.mve.vctp64(i32 -1)
259   ret <2 x i1> %int
262 define <4 x float> @poisonc(<4 x float> %a) {
263 entry:
264   %new0 = shl i1 0, 1
265   %last = zext i1 %new0 to i32
266   %var27 = call <4 x i1> @llvm.arm.mve.vctp32(i32 %last)
267   %var33 = select <4 x i1> %var27, <4 x float> %a, <4 x float> zeroinitializer
268   ret <4 x float> %var33
271 declare <2 x i1> @llvm.arm.mve.vctp64(i32)
272 declare <4 x i1> @llvm.arm.mve.vctp32(i32)
273 declare <8 x i1> @llvm.arm.mve.vctp16(i32)
274 declare <16 x i1> @llvm.arm.mve.vctp8(i32)