Skip to content

Commit fb7fbe4

Browse files
committed
[NFC][SVE] Precommit tests for adr instruction
Change-Id: I8148481a5ce3b721113327cc9b684f091cae5a8d
1 parent 368af75 commit fb7fbe4

File tree

1 file changed

+128
-4
lines changed

1 file changed

+128
-4
lines changed

llvm/test/CodeGen/AArch64/sve-gep.ll

Lines changed: 128 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ define <vscale x 2 x i8*> @scalable_of_fixed_2(<vscale x 2 x i8*> %base) {
7474
ret <vscale x 2 x i8*> %d
7575
}
7676

77-
define <vscale x 2 x i8*> @scalable_of_fixed_3(i8* %base, <vscale x 2 x i64> %idx) {
78-
; CHECK-LABEL: scalable_of_fixed_3:
77+
define <vscale x 2 x i8*> @scalable_of_fixed_3_i8(i8* %base, <vscale x 2 x i64> %idx) {
78+
; CHECK-LABEL: scalable_of_fixed_3_i8:
7979
; CHECK: // %bb.0:
8080
; CHECK-NEXT: mov z1.d, x0
8181
; CHECK-NEXT: add z0.d, z1.d, z0.d
@@ -84,8 +84,41 @@ define <vscale x 2 x i8*> @scalable_of_fixed_3(i8* %base, <vscale x 2 x i64> %id
8484
ret <vscale x 2 x i8*> %d
8585
}
8686

87-
define <vscale x 2 x i8*> @scalable_of_fixed_4(i8* %base, <vscale x 2 x i32> %idx) {
88-
; CHECK-LABEL: scalable_of_fixed_4:
87+
define <vscale x 2 x i16*> @scalable_of_fixed_3_i16(i16* %base, <vscale x 2 x i64> %idx) {
88+
; CHECK-LABEL: scalable_of_fixed_3_i16:
89+
; CHECK: // %bb.0:
90+
; CHECK-NEXT: lsl z0.d, z0.d, #1
91+
; CHECK-NEXT: mov z1.d, x0
92+
; CHECK-NEXT: add z0.d, z1.d, z0.d
93+
; CHECK-NEXT: ret
94+
%d = getelementptr i16, i16* %base, <vscale x 2 x i64> %idx
95+
ret <vscale x 2 x i16*> %d
96+
}
97+
98+
define <vscale x 2 x i32*> @scalable_of_fixed_3_i32(i32* %base, <vscale x 2 x i64> %idx) {
99+
; CHECK-LABEL: scalable_of_fixed_3_i32:
100+
; CHECK: // %bb.0:
101+
; CHECK-NEXT: lsl z0.d, z0.d, #2
102+
; CHECK-NEXT: mov z1.d, x0
103+
; CHECK-NEXT: add z0.d, z1.d, z0.d
104+
; CHECK-NEXT: ret
105+
%d = getelementptr i32, i32* %base, <vscale x 2 x i64> %idx
106+
ret <vscale x 2 x i32*> %d
107+
}
108+
109+
define <vscale x 2 x i64*> @scalable_of_fixed_3_i64(i64* %base, <vscale x 2 x i64> %idx) {
110+
; CHECK-LABEL: scalable_of_fixed_3_i64:
111+
; CHECK: // %bb.0:
112+
; CHECK-NEXT: lsl z0.d, z0.d, #3
113+
; CHECK-NEXT: mov z1.d, x0
114+
; CHECK-NEXT: add z0.d, z1.d, z0.d
115+
; CHECK-NEXT: ret
116+
%d = getelementptr i64, i64* %base, <vscale x 2 x i64> %idx
117+
ret <vscale x 2 x i64*> %d
118+
}
119+
120+
define <vscale x 2 x i8*> @scalable_of_fixed_4_i8(i8* %base, <vscale x 2 x i32> %idx) {
121+
; CHECK-LABEL: scalable_of_fixed_4_i8:
89122
; CHECK: // %bb.0:
90123
; CHECK-NEXT: ptrue p0.d
91124
; CHECK-NEXT: sxtw z0.d, p0/m, z0.d
@@ -96,6 +129,97 @@ define <vscale x 2 x i8*> @scalable_of_fixed_4(i8* %base, <vscale x 2 x i32> %id
96129
ret <vscale x 2 x i8*> %d
97130
}
98131

132+
define <vscale x 2 x i16*> @scalable_of_fixed_4_i16(i16* %base, <vscale x 2 x i32> %idx) {
133+
; CHECK-LABEL: scalable_of_fixed_4_i16:
134+
; CHECK: // %bb.0:
135+
; CHECK-NEXT: ptrue p0.d
136+
; CHECK-NEXT: sxtw z0.d, p0/m, z0.d
137+
; CHECK-NEXT: lsl z0.d, z0.d, #1
138+
; CHECK-NEXT: mov z1.d, x0
139+
; CHECK-NEXT: add z0.d, z1.d, z0.d
140+
; CHECK-NEXT: ret
141+
%d = getelementptr i16, i16* %base, <vscale x 2 x i32> %idx
142+
ret <vscale x 2 x i16*> %d
143+
}
144+
145+
define <vscale x 2 x i32*> @scalable_of_fixed_4_i32(i32* %base, <vscale x 2 x i32> %idx) {
146+
; CHECK-LABEL: scalable_of_fixed_4_i32:
147+
; CHECK: // %bb.0:
148+
; CHECK-NEXT: ptrue p0.d
149+
; CHECK-NEXT: sxtw z0.d, p0/m, z0.d
150+
; CHECK-NEXT: lsl z0.d, z0.d, #2
151+
; CHECK-NEXT: mov z1.d, x0
152+
; CHECK-NEXT: add z0.d, z1.d, z0.d
153+
; CHECK-NEXT: ret
154+
%d = getelementptr i32, i32* %base, <vscale x 2 x i32> %idx
155+
ret <vscale x 2 x i32*> %d
156+
}
157+
158+
define <vscale x 2 x i64*> @scalable_of_fixed_4_i64(i64* %base, <vscale x 2 x i32> %idx) {
159+
; CHECK-LABEL: scalable_of_fixed_4_i64:
160+
; CHECK: // %bb.0:
161+
; CHECK-NEXT: ptrue p0.d
162+
; CHECK-NEXT: sxtw z0.d, p0/m, z0.d
163+
; CHECK-NEXT: lsl z0.d, z0.d, #3
164+
; CHECK-NEXT: mov z1.d, x0
165+
; CHECK-NEXT: add z0.d, z1.d, z0.d
166+
; CHECK-NEXT: ret
167+
%d = getelementptr i64, i64* %base, <vscale x 2 x i32> %idx
168+
ret <vscale x 2 x i64*> %d
169+
}
170+
171+
define <vscale x 2 x i8*> @scalable_of_fixed_5(i8* %base, <vscale x 2 x i32> %idx) {
172+
; CHECK-LABEL: scalable_of_fixed_5:
173+
; CHECK: // %bb.0:
174+
; CHECK-NEXT: mov z1.d, x0
175+
; CHECK-NEXT: and z0.d, z0.d, #0xffffffff
176+
; CHECK-NEXT: add z0.d, z1.d, z0.d
177+
; CHECK-NEXT: ret
178+
%idxZext = zext <vscale x 2 x i32> %idx to <vscale x 2 x i64>
179+
%d = getelementptr i8, i8* %base, <vscale x 2 x i64> %idxZext
180+
ret <vscale x 2 x i8*> %d
181+
}
182+
183+
define <vscale x 2 x i16*> @scalable_of_fixed_5_i16(i16* %base, <vscale x 2 x i32> %idx) {
184+
; CHECK-LABEL: scalable_of_fixed_5_i16:
185+
; CHECK: // %bb.0:
186+
; CHECK-NEXT: and z0.d, z0.d, #0xffffffff
187+
; CHECK-NEXT: mov z1.d, x0
188+
; CHECK-NEXT: lsl z0.d, z0.d, #1
189+
; CHECK-NEXT: add z0.d, z1.d, z0.d
190+
; CHECK-NEXT: ret
191+
%idxZext = zext <vscale x 2 x i32> %idx to <vscale x 2 x i64>
192+
%d = getelementptr i16, i16* %base, <vscale x 2 x i64> %idxZext
193+
ret <vscale x 2 x i16*> %d
194+
}
195+
196+
define <vscale x 2 x i32*> @scalable_of_fixed_5_i32(i32* %base, <vscale x 2 x i32> %idx) {
197+
; CHECK-LABEL: scalable_of_fixed_5_i32:
198+
; CHECK: // %bb.0:
199+
; CHECK-NEXT: and z0.d, z0.d, #0xffffffff
200+
; CHECK-NEXT: mov z1.d, x0
201+
; CHECK-NEXT: lsl z0.d, z0.d, #2
202+
; CHECK-NEXT: add z0.d, z1.d, z0.d
203+
; CHECK-NEXT: ret
204+
%idxZext = zext <vscale x 2 x i32> %idx to <vscale x 2 x i64>
205+
%d = getelementptr i32, i32* %base, <vscale x 2 x i64> %idxZext
206+
ret <vscale x 2 x i32*> %d
207+
}
208+
209+
210+
define <vscale x 2 x i64*> @scalable_of_fixed_5_i64(i64* %base, <vscale x 2 x i32> %idx) {
211+
; CHECK-LABEL: scalable_of_fixed_5_i64:
212+
; CHECK: // %bb.0:
213+
; CHECK-NEXT: and z0.d, z0.d, #0xffffffff
214+
; CHECK-NEXT: mov z1.d, x0
215+
; CHECK-NEXT: lsl z0.d, z0.d, #3
216+
; CHECK-NEXT: add z0.d, z1.d, z0.d
217+
; CHECK-NEXT: ret
218+
%idxZext = zext <vscale x 2 x i32> %idx to <vscale x 2 x i64>
219+
%d = getelementptr i64, i64* %base, <vscale x 2 x i64> %idxZext
220+
ret <vscale x 2 x i64*> %d
221+
}
222+
99223
define <vscale x 2 x <vscale x 2 x i64>*> @scalable_of_scalable_1(<vscale x 2 x i64>* %base) {
100224
; CHECK-LABEL: scalable_of_scalable_1:
101225
; CHECK: // %bb.0:

0 commit comments

Comments
 (0)