• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -instsimplify -S -o - %s | FileCheck %s
3
4target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
5
6define <16 x i1> @vctp8_0() {
7; CHECK-LABEL: @vctp8_0(
8; CHECK-NEXT:  entry:
9; CHECK-NEXT:    ret <16 x i1> zeroinitializer
10;
11entry:
12  %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 0)
13  ret <16 x i1> %int
14}
15
16define <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>
20;
21entry:
22  %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 1)
23  ret <16 x i1> %int
24}
25
26define <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>
30;
31entry:
32  %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 8)
33  ret <16 x i1> %int
34}
35
36define <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>
40;
41entry:
42  %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 15)
43  ret <16 x i1> %int
44}
45
46define <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>
50;
51entry:
52  %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 16)
53  ret <16 x i1> %int
54}
55
56define <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>
60;
61entry:
62  %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 100)
63  ret <16 x i1> %int
64}
65
66define <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>
70;
71entry:
72  %int = call <16 x i1> @llvm.arm.mve.vctp8(i32 -1)
73  ret <16 x i1> %int
74}
75
76
77
78define <8 x i1> @vctp16_0() {
79; CHECK-LABEL: @vctp16_0(
80; CHECK-NEXT:  entry:
81; CHECK-NEXT:    ret <8 x i1> zeroinitializer
82;
83entry:
84  %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 0)
85  ret <8 x i1> %int
86}
87
88define <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>
92;
93entry:
94  %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 1)
95  ret <8 x i1> %int
96}
97
98define <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>
102;
103entry:
104  %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 4)
105  ret <8 x i1> %int
106}
107
108define <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>
112;
113entry:
114  %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 7)
115  ret <8 x i1> %int
116}
117
118define <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>
122;
123entry:
124  %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 8)
125  ret <8 x i1> %int
126}
127
128define <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>
132;
133entry:
134  %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 100)
135  ret <8 x i1> %int
136}
137
138define <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>
142;
143entry:
144  %int = call <8 x i1> @llvm.arm.mve.vctp16(i32 -1)
145  ret <8 x i1> %int
146}
147
148
149
150define <4 x i1> @vctp32_0() {
151; CHECK-LABEL: @vctp32_0(
152; CHECK-NEXT:  entry:
153; CHECK-NEXT:    ret <4 x i1> zeroinitializer
154;
155entry:
156  %int = call <4 x i1> @llvm.arm.mve.vctp32(i32 0)
157  ret <4 x i1> %int
158}
159
160define <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>
164;
165entry:
166  %int = call <4 x i1> @llvm.arm.mve.vctp32(i32 1)
167  ret <4 x i1> %int
168}
169
170define <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>
174;
175entry:
176  %int = call <4 x i1> @llvm.arm.mve.vctp32(i32 3)
177  ret <4 x i1> %int
178}
179
180define <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>
184;
185entry:
186  %int = call <4 x i1> @llvm.arm.mve.vctp32(i32 4)
187  ret <4 x i1> %int
188}
189
190define <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>
194;
195entry:
196  %int = call <4 x i1> @llvm.arm.mve.vctp32(i32 100)
197  ret <4 x i1> %int
198}
199
200define <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>
204;
205entry:
206  %int = call <4 x i1> @llvm.arm.mve.vctp32(i32 -1)
207  ret <4 x i1> %int
208}
209
210
211
212define <4 x i1> @vctp64_0() {
213; CHECK-LABEL: @vctp64_0(
214; CHECK-NEXT:  entry:
215; CHECK-NEXT:    ret <4 x i1> zeroinitializer
216;
217entry:
218  %int = call <4 x i1> @llvm.arm.mve.vctp64(i32 0)
219  ret <4 x i1> %int
220}
221
222define <4 x i1> @vctp64_1() {
223; CHECK-LABEL: @vctp64_1(
224; CHECK-NEXT:  entry:
225; CHECK-NEXT:    ret <4 x i1> <i1 true, i1 true, i1 false, i1 false>
226;
227entry:
228  %int = call <4 x i1> @llvm.arm.mve.vctp64(i32 1)
229  ret <4 x i1> %int
230}
231
232define <4 x i1> @vctp64_2() {
233; CHECK-LABEL: @vctp64_2(
234; CHECK-NEXT:  entry:
235; CHECK-NEXT:    ret <4 x i1> <i1 true, i1 true, i1 true, i1 true>
236;
237entry:
238  %int = call <4 x i1> @llvm.arm.mve.vctp64(i32 2)
239  ret <4 x i1> %int
240}
241
242define <4 x i1> @vctp64_100() {
243; CHECK-LABEL: @vctp64_100(
244; CHECK-NEXT:  entry:
245; CHECK-NEXT:    ret <4 x i1> <i1 true, i1 true, i1 true, i1 true>
246;
247entry:
248  %int = call <4 x i1> @llvm.arm.mve.vctp64(i32 100)
249  ret <4 x i1> %int
250}
251
252define <4 x i1> @vctp64_m1() {
253; CHECK-LABEL: @vctp64_m1(
254; CHECK-NEXT:  entry:
255; CHECK-NEXT:    ret <4 x i1> <i1 true, i1 true, i1 true, i1 true>
256;
257entry:
258  %int = call <4 x i1> @llvm.arm.mve.vctp64(i32 -1)
259  ret <4 x i1> %int
260}
261
262
263
264declare <4 x i1> @llvm.arm.mve.vctp64(i32)
265declare <4 x i1> @llvm.arm.mve.vctp32(i32)
266declare <8 x i1> @llvm.arm.mve.vctp16(i32)
267declare <16 x i1> @llvm.arm.mve.vctp8(i32)
268