Skip to content

Commit c95c10a

Browse files
committed
[LoongArch][SystemZ]: Updated tests
1 parent de10f4a commit c95c10a

File tree

3 files changed

+136
-74
lines changed

3 files changed

+136
-74
lines changed

llvm/test/CodeGen/LoongArch/ctlz-cttz-ctpop.ll

Lines changed: 89 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,15 @@ define i8 @test_ctlz_i8(i8 %a) nounwind {
2121
; LA32R: # %bb.0:
2222
; LA32R-NEXT: andi $a1, $a0, 254
2323
; LA32R-NEXT: srli.w $a1, $a1, 1
24+
; LA32R-NEXT: nor $a2, $a0, $a1
2425
; LA32R-NEXT: or $a0, $a0, $a1
2526
; LA32R-NEXT: andi $a1, $a0, 252
2627
; LA32R-NEXT: srli.w $a1, $a1, 2
28+
; LA32R-NEXT: andn $a2, $a2, $a1
2729
; LA32R-NEXT: or $a0, $a0, $a1
28-
; LA32R-NEXT: andi $a1, $a0, 240
29-
; LA32R-NEXT: srli.w $a1, $a1, 4
30-
; LA32R-NEXT: nor $a0, $a0, $a1
30+
; LA32R-NEXT: andi $a0, $a0, 240
31+
; LA32R-NEXT: srli.w $a0, $a0, 4
32+
; LA32R-NEXT: andn $a0, $a2, $a0
3133
; LA32R-NEXT: srli.w $a1, $a0, 1
3234
; LA32R-NEXT: andi $a1, $a1, 85
3335
; LA32R-NEXT: sub.w $a0, $a0, $a1
@@ -60,23 +62,28 @@ define i8 @test_ctlz_i8(i8 %a) nounwind {
6062
define i16 @test_ctlz_i16(i16 %a) nounwind {
6163
; LA32R-LABEL: test_ctlz_i16:
6264
; LA32R: # %bb.0:
65+
; LA32R-NEXT: srli.w $a1, $a0, 1
66+
; LA32R-NEXT: lu12i.w $a2, 7
67+
; LA32R-NEXT: ori $a2, $a2, 4095
68+
; LA32R-NEXT: and $a1, $a1, $a2
69+
; LA32R-NEXT: nor $a2, $a0, $zero
70+
; LA32R-NEXT: andn $a2, $a2, $a1
71+
; LA32R-NEXT: or $a0, $a0, $a1
6372
; LA32R-NEXT: lu12i.w $a1, 15
64-
; LA32R-NEXT: ori $a2, $a1, 4094
65-
; LA32R-NEXT: and $a2, $a0, $a2
66-
; LA32R-NEXT: srli.w $a2, $a2, 1
67-
; LA32R-NEXT: or $a0, $a0, $a2
68-
; LA32R-NEXT: ori $a2, $a1, 4092
69-
; LA32R-NEXT: and $a2, $a0, $a2
70-
; LA32R-NEXT: srli.w $a2, $a2, 2
71-
; LA32R-NEXT: or $a0, $a0, $a2
72-
; LA32R-NEXT: ori $a2, $a1, 4080
73-
; LA32R-NEXT: and $a2, $a0, $a2
74-
; LA32R-NEXT: srli.w $a2, $a2, 4
75-
; LA32R-NEXT: or $a0, $a0, $a2
73+
; LA32R-NEXT: ori $a3, $a1, 4092
74+
; LA32R-NEXT: and $a3, $a0, $a3
75+
; LA32R-NEXT: srli.w $a3, $a3, 2
76+
; LA32R-NEXT: andn $a2, $a2, $a3
77+
; LA32R-NEXT: or $a0, $a0, $a3
78+
; LA32R-NEXT: ori $a3, $a1, 4080
79+
; LA32R-NEXT: and $a3, $a0, $a3
80+
; LA32R-NEXT: srli.w $a3, $a3, 4
81+
; LA32R-NEXT: andn $a2, $a2, $a3
82+
; LA32R-NEXT: or $a0, $a0, $a3
7683
; LA32R-NEXT: ori $a1, $a1, 3840
77-
; LA32R-NEXT: and $a1, $a0, $a1
78-
; LA32R-NEXT: srli.w $a1, $a1, 8
79-
; LA32R-NEXT: nor $a0, $a0, $a1
84+
; LA32R-NEXT: and $a0, $a0, $a1
85+
; LA32R-NEXT: srli.w $a0, $a0, 8
86+
; LA32R-NEXT: andn $a0, $a2, $a0
8087
; LA32R-NEXT: srli.w $a1, $a0, 1
8188
; LA32R-NEXT: lu12i.w $a2, 5
8289
; LA32R-NEXT: ori $a2, $a2, 1365
@@ -117,15 +124,19 @@ define i32 @test_ctlz_i32(i32 %a) nounwind {
117124
; LA32R-LABEL: test_ctlz_i32:
118125
; LA32R: # %bb.0:
119126
; LA32R-NEXT: srli.w $a1, $a0, 1
127+
; LA32R-NEXT: nor $a2, $a0, $a1
120128
; LA32R-NEXT: or $a0, $a0, $a1
121129
; LA32R-NEXT: srli.w $a1, $a0, 2
130+
; LA32R-NEXT: andn $a2, $a2, $a1
122131
; LA32R-NEXT: or $a0, $a0, $a1
123132
; LA32R-NEXT: srli.w $a1, $a0, 4
133+
; LA32R-NEXT: andn $a2, $a2, $a1
124134
; LA32R-NEXT: or $a0, $a0, $a1
125135
; LA32R-NEXT: srli.w $a1, $a0, 8
136+
; LA32R-NEXT: andn $a2, $a2, $a1
126137
; LA32R-NEXT: or $a0, $a0, $a1
127-
; LA32R-NEXT: srli.w $a1, $a0, 16
128-
; LA32R-NEXT: nor $a0, $a0, $a1
138+
; LA32R-NEXT: srli.w $a0, $a0, 16
139+
; LA32R-NEXT: andn $a0, $a2, $a0
129140
; LA32R-NEXT: srli.w $a1, $a0, 1
130141
; LA32R-NEXT: lu12i.w $a2, 349525
131142
; LA32R-NEXT: ori $a2, $a2, 1365
@@ -175,15 +186,19 @@ define i64 @test_ctlz_i64(i64 %a) nounwind {
175186
; LA32R-NEXT: bne $a1, $zero, .LBB3_2
176187
; LA32R-NEXT: # %bb.1:
177188
; LA32R-NEXT: srli.w $a1, $a0, 1
189+
; LA32R-NEXT: nor $a6, $a0, $a1
178190
; LA32R-NEXT: or $a0, $a0, $a1
179191
; LA32R-NEXT: srli.w $a1, $a0, 2
192+
; LA32R-NEXT: andn $a6, $a6, $a1
180193
; LA32R-NEXT: or $a0, $a0, $a1
181194
; LA32R-NEXT: srli.w $a1, $a0, 4
195+
; LA32R-NEXT: andn $a6, $a6, $a1
182196
; LA32R-NEXT: or $a0, $a0, $a1
183197
; LA32R-NEXT: srli.w $a1, $a0, 8
198+
; LA32R-NEXT: andn $a6, $a6, $a1
184199
; LA32R-NEXT: or $a0, $a0, $a1
185-
; LA32R-NEXT: srli.w $a1, $a0, 16
186-
; LA32R-NEXT: nor $a0, $a0, $a1
200+
; LA32R-NEXT: srli.w $a0, $a0, 16
201+
; LA32R-NEXT: andn $a0, $a6, $a0
187202
; LA32R-NEXT: srli.w $a1, $a0, 1
188203
; LA32R-NEXT: and $a1, $a1, $a5
189204
; LA32R-NEXT: sub.w $a0, $a0, $a1
@@ -201,15 +216,19 @@ define i64 @test_ctlz_i64(i64 %a) nounwind {
201216
; LA32R-NEXT: ret
202217
; LA32R-NEXT: .LBB3_2:
203218
; LA32R-NEXT: srli.w $a0, $a1, 1
219+
; LA32R-NEXT: nor $a6, $a1, $a0
204220
; LA32R-NEXT: or $a0, $a1, $a0
205221
; LA32R-NEXT: srli.w $a1, $a0, 2
222+
; LA32R-NEXT: andn $a6, $a6, $a1
206223
; LA32R-NEXT: or $a0, $a0, $a1
207224
; LA32R-NEXT: srli.w $a1, $a0, 4
225+
; LA32R-NEXT: andn $a6, $a6, $a1
208226
; LA32R-NEXT: or $a0, $a0, $a1
209227
; LA32R-NEXT: srli.w $a1, $a0, 8
228+
; LA32R-NEXT: andn $a6, $a6, $a1
210229
; LA32R-NEXT: or $a0, $a0, $a1
211-
; LA32R-NEXT: srli.w $a1, $a0, 16
212-
; LA32R-NEXT: nor $a0, $a0, $a1
230+
; LA32R-NEXT: srli.w $a0, $a0, 16
231+
; LA32R-NEXT: andn $a0, $a6, $a0
213232
; LA32R-NEXT: srli.w $a1, $a0, 1
214233
; LA32R-NEXT: and $a1, $a1, $a5
215234
; LA32R-NEXT: sub.w $a0, $a0, $a1
@@ -250,14 +269,17 @@ define i8 @test_not_ctlz_i8(i8 %a) nounwind {
250269
; LA32R: # %bb.0:
251270
; LA32R-NEXT: ori $a1, $zero, 254
252271
; LA32R-NEXT: andn $a1, $a1, $a0
272+
; LA32R-NEXT: nor $a2, $a0, $zero
253273
; LA32R-NEXT: srli.w $a1, $a1, 1
274+
; LA32R-NEXT: nor $a2, $a2, $a1
254275
; LA32R-NEXT: orn $a0, $a1, $a0
255276
; LA32R-NEXT: andi $a1, $a0, 252
256277
; LA32R-NEXT: srli.w $a1, $a1, 2
278+
; LA32R-NEXT: andn $a2, $a2, $a1
257279
; LA32R-NEXT: or $a0, $a0, $a1
258-
; LA32R-NEXT: andi $a1, $a0, 240
259-
; LA32R-NEXT: srli.w $a1, $a1, 4
260-
; LA32R-NEXT: nor $a0, $a0, $a1
280+
; LA32R-NEXT: andi $a0, $a0, 240
281+
; LA32R-NEXT: srli.w $a0, $a0, 4
282+
; LA32R-NEXT: andn $a0, $a2, $a0
261283
; LA32R-NEXT: srli.w $a1, $a0, 1
262284
; LA32R-NEXT: andi $a1, $a1, 85
263285
; LA32R-NEXT: sub.w $a0, $a0, $a1
@@ -293,19 +315,22 @@ define i16 @test_not_ctlz_i16(i16 %a) nounwind {
293315
; LA32R-NEXT: ori $a2, $a1, 4094
294316
; LA32R-NEXT: andn $a2, $a2, $a0
295317
; LA32R-NEXT: srli.w $a2, $a2, 1
318+
; LA32R-NEXT: andn $a3, $a0, $a2
296319
; LA32R-NEXT: orn $a0, $a2, $a0
297320
; LA32R-NEXT: ori $a2, $a1, 4092
298321
; LA32R-NEXT: and $a2, $a0, $a2
299322
; LA32R-NEXT: srli.w $a2, $a2, 2
323+
; LA32R-NEXT: andn $a3, $a3, $a2
300324
; LA32R-NEXT: or $a0, $a0, $a2
301325
; LA32R-NEXT: ori $a2, $a1, 4080
302326
; LA32R-NEXT: and $a2, $a0, $a2
303327
; LA32R-NEXT: srli.w $a2, $a2, 4
328+
; LA32R-NEXT: andn $a3, $a3, $a2
304329
; LA32R-NEXT: or $a0, $a0, $a2
305330
; LA32R-NEXT: ori $a1, $a1, 3840
306-
; LA32R-NEXT: and $a1, $a0, $a1
307-
; LA32R-NEXT: srli.w $a1, $a1, 8
308-
; LA32R-NEXT: nor $a0, $a0, $a1
331+
; LA32R-NEXT: and $a0, $a0, $a1
332+
; LA32R-NEXT: srli.w $a0, $a0, 8
333+
; LA32R-NEXT: andn $a0, $a3, $a0
309334
; LA32R-NEXT: srli.w $a1, $a0, 1
310335
; LA32R-NEXT: lu12i.w $a2, 5
311336
; LA32R-NEXT: ori $a2, $a2, 1365
@@ -345,16 +370,20 @@ define i32 @test_not_ctlz_i32(i32 %a) nounwind {
345370
; LA32R-LABEL: test_not_ctlz_i32:
346371
; LA32R: # %bb.0:
347372
; LA32R-NEXT: nor $a1, $a0, $zero
348-
; LA32R-NEXT: srli.w $a1, $a1, 1
349-
; LA32R-NEXT: orn $a0, $a1, $a0
350-
; LA32R-NEXT: srli.w $a1, $a0, 2
351-
; LA32R-NEXT: or $a0, $a0, $a1
352-
; LA32R-NEXT: srli.w $a1, $a0, 4
353-
; LA32R-NEXT: or $a0, $a0, $a1
354-
; LA32R-NEXT: srli.w $a1, $a0, 8
355-
; LA32R-NEXT: or $a0, $a0, $a1
356-
; LA32R-NEXT: srli.w $a1, $a0, 16
357-
; LA32R-NEXT: nor $a0, $a0, $a1
373+
; LA32R-NEXT: srli.w $a2, $a1, 1
374+
; LA32R-NEXT: nor $a1, $a1, $a2
375+
; LA32R-NEXT: orn $a0, $a2, $a0
376+
; LA32R-NEXT: srli.w $a2, $a0, 2
377+
; LA32R-NEXT: andn $a1, $a1, $a2
378+
; LA32R-NEXT: or $a0, $a0, $a2
379+
; LA32R-NEXT: srli.w $a2, $a0, 4
380+
; LA32R-NEXT: andn $a1, $a1, $a2
381+
; LA32R-NEXT: or $a0, $a0, $a2
382+
; LA32R-NEXT: srli.w $a2, $a0, 8
383+
; LA32R-NEXT: andn $a1, $a1, $a2
384+
; LA32R-NEXT: or $a0, $a0, $a2
385+
; LA32R-NEXT: srli.w $a0, $a0, 16
386+
; LA32R-NEXT: andn $a0, $a1, $a0
358387
; LA32R-NEXT: srli.w $a1, $a0, 1
359388
; LA32R-NEXT: lu12i.w $a2, 349525
360389
; LA32R-NEXT: ori $a2, $a2, 1365
@@ -406,16 +435,20 @@ define i64 @test_not_ctlz_i64(i64 %a) nounwind {
406435
; LA32R-NEXT: bne $a6, $zero, .LBB7_2
407436
; LA32R-NEXT: # %bb.1:
408437
; LA32R-NEXT: nor $a1, $a0, $zero
409-
; LA32R-NEXT: srli.w $a1, $a1, 1
410-
; LA32R-NEXT: orn $a0, $a1, $a0
411-
; LA32R-NEXT: srli.w $a1, $a0, 2
412-
; LA32R-NEXT: or $a0, $a0, $a1
413-
; LA32R-NEXT: srli.w $a1, $a0, 4
414-
; LA32R-NEXT: or $a0, $a0, $a1
415-
; LA32R-NEXT: srli.w $a1, $a0, 8
416-
; LA32R-NEXT: or $a0, $a0, $a1
417-
; LA32R-NEXT: srli.w $a1, $a0, 16
418-
; LA32R-NEXT: nor $a0, $a0, $a1
438+
; LA32R-NEXT: srli.w $a6, $a1, 1
439+
; LA32R-NEXT: nor $a1, $a1, $a6
440+
; LA32R-NEXT: orn $a0, $a6, $a0
441+
; LA32R-NEXT: srli.w $a6, $a0, 2
442+
; LA32R-NEXT: andn $a1, $a1, $a6
443+
; LA32R-NEXT: or $a0, $a0, $a6
444+
; LA32R-NEXT: srli.w $a6, $a0, 4
445+
; LA32R-NEXT: andn $a1, $a1, $a6
446+
; LA32R-NEXT: or $a0, $a0, $a6
447+
; LA32R-NEXT: srli.w $a6, $a0, 8
448+
; LA32R-NEXT: andn $a1, $a1, $a6
449+
; LA32R-NEXT: or $a0, $a0, $a6
450+
; LA32R-NEXT: srli.w $a0, $a0, 16
451+
; LA32R-NEXT: andn $a0, $a1, $a0
419452
; LA32R-NEXT: srli.w $a1, $a0, 1
420453
; LA32R-NEXT: and $a1, $a1, $a5
421454
; LA32R-NEXT: sub.w $a0, $a0, $a1
@@ -433,15 +466,19 @@ define i64 @test_not_ctlz_i64(i64 %a) nounwind {
433466
; LA32R-NEXT: ret
434467
; LA32R-NEXT: .LBB7_2:
435468
; LA32R-NEXT: srli.w $a0, $a6, 1
469+
; LA32R-NEXT: nor $a6, $a6, $a0
436470
; LA32R-NEXT: orn $a0, $a0, $a1
437471
; LA32R-NEXT: srli.w $a1, $a0, 2
472+
; LA32R-NEXT: andn $a6, $a6, $a1
438473
; LA32R-NEXT: or $a0, $a0, $a1
439474
; LA32R-NEXT: srli.w $a1, $a0, 4
475+
; LA32R-NEXT: andn $a6, $a6, $a1
440476
; LA32R-NEXT: or $a0, $a0, $a1
441477
; LA32R-NEXT: srli.w $a1, $a0, 8
478+
; LA32R-NEXT: andn $a6, $a6, $a1
442479
; LA32R-NEXT: or $a0, $a0, $a1
443-
; LA32R-NEXT: srli.w $a1, $a0, 16
444-
; LA32R-NEXT: nor $a0, $a0, $a1
480+
; LA32R-NEXT: srli.w $a0, $a0, 16
481+
; LA32R-NEXT: andn $a0, $a6, $a0
445482
; LA32R-NEXT: srli.w $a1, $a0, 1
446483
; LA32R-NEXT: and $a1, $a1, $a5
447484
; LA32R-NEXT: sub.w $a0, $a0, $a1

llvm/test/CodeGen/SystemZ/scalar-ctlz-02.ll

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,25 +11,31 @@ define i128 @f1(i128 %a) {
1111
; CHECK-NEXT: vl %v0, 0(%r3), 3
1212
; CHECK-NEXT: vrepib %v1, 1
1313
; CHECK-NEXT: vsrl %v1, %v0, %v1
14+
; CHECK-NEXT: vno %v2, %v0, %v1
1415
; CHECK-NEXT: vo %v0, %v0, %v1
1516
; CHECK-NEXT: vrepib %v1, 2
1617
; CHECK-NEXT: vsrl %v1, %v0, %v1
18+
; CHECK-NEXT: vnc %v2, %v2, %v1
1719
; CHECK-NEXT: vo %v0, %v0, %v1
1820
; CHECK-NEXT: vrepib %v1, 4
1921
; CHECK-NEXT: vsrl %v1, %v0, %v1
22+
; CHECK-NEXT: vnc %v2, %v2, %v1
2023
; CHECK-NEXT: vo %v0, %v0, %v1
2124
; CHECK-NEXT: vrepib %v1, 8
2225
; CHECK-NEXT: vsrlb %v1, %v0, %v1
26+
; CHECK-NEXT: vnc %v2, %v2, %v1
2327
; CHECK-NEXT: vo %v0, %v0, %v1
2428
; CHECK-NEXT: vrepib %v1, 16
2529
; CHECK-NEXT: vsrlb %v1, %v0, %v1
30+
; CHECK-NEXT: vnc %v2, %v2, %v1
2631
; CHECK-NEXT: vo %v0, %v0, %v1
2732
; CHECK-NEXT: vrepib %v1, 32
2833
; CHECK-NEXT: vsrlb %v1, %v0, %v1
34+
; CHECK-NEXT: vnc %v2, %v2, %v1
2935
; CHECK-NEXT: vo %v0, %v0, %v1
3036
; CHECK-NEXT: vrepib %v1, 64
31-
; CHECK-NEXT: vsrlb %v1, %v0, %v1
32-
; CHECK-NEXT: vno %v0, %v0, %v1
37+
; CHECK-NEXT: vsrlb %v0, %v0, %v1
38+
; CHECK-NEXT: vnc %v0, %v2, %v0
3339
; CHECK-NEXT: vpopct %v0, %v0, 0
3440
; CHECK-NEXT: vgbm %v1, 0
3541
; CHECK-NEXT: vsumb %v0, %v0, %v1
@@ -47,25 +53,31 @@ define i128 @f2(i128 %a) {
4753
; CHECK-NEXT: vl %v0, 0(%r3), 3
4854
; CHECK-NEXT: vrepib %v1, 1
4955
; CHECK-NEXT: vsrl %v1, %v0, %v1
56+
; CHECK-NEXT: vno %v2, %v0, %v1
5057
; CHECK-NEXT: vo %v0, %v0, %v1
5158
; CHECK-NEXT: vrepib %v1, 2
5259
; CHECK-NEXT: vsrl %v1, %v0, %v1
60+
; CHECK-NEXT: vnc %v2, %v2, %v1
5361
; CHECK-NEXT: vo %v0, %v0, %v1
5462
; CHECK-NEXT: vrepib %v1, 4
5563
; CHECK-NEXT: vsrl %v1, %v0, %v1
64+
; CHECK-NEXT: vnc %v2, %v2, %v1
5665
; CHECK-NEXT: vo %v0, %v0, %v1
5766
; CHECK-NEXT: vrepib %v1, 8
5867
; CHECK-NEXT: vsrlb %v1, %v0, %v1
68+
; CHECK-NEXT: vnc %v2, %v2, %v1
5969
; CHECK-NEXT: vo %v0, %v0, %v1
6070
; CHECK-NEXT: vrepib %v1, 16
6171
; CHECK-NEXT: vsrlb %v1, %v0, %v1
72+
; CHECK-NEXT: vnc %v2, %v2, %v1
6273
; CHECK-NEXT: vo %v0, %v0, %v1
6374
; CHECK-NEXT: vrepib %v1, 32
6475
; CHECK-NEXT: vsrlb %v1, %v0, %v1
76+
; CHECK-NEXT: vnc %v2, %v2, %v1
6577
; CHECK-NEXT: vo %v0, %v0, %v1
6678
; CHECK-NEXT: vrepib %v1, 64
67-
; CHECK-NEXT: vsrlb %v1, %v0, %v1
68-
; CHECK-NEXT: vno %v0, %v0, %v1
79+
; CHECK-NEXT: vsrlb %v0, %v0, %v1
80+
; CHECK-NEXT: vnc %v0, %v2, %v0
6981
; CHECK-NEXT: vpopct %v0, %v0, 0
7082
; CHECK-NEXT: vgbm %v1, 0
7183
; CHECK-NEXT: vsumb %v0, %v0, %v1

0 commit comments

Comments
 (0)