@@ -257,35 +257,53 @@ entry:
257
257
define void @extension_in_loop_v16i8_to_v16i32 (i8* %src , i32* %dst ) {
258
258
; CHECK-LABEL: extension_in_loop_v16i8_to_v16i32:
259
259
; CHECK: ; %bb.0: ; %entry
260
- ; CHECK-NEXT: movi.2d v0, #0xffffffffffffffff
260
+ ; CHECK-NEXT: Lloh0:
261
+ ; CHECK-NEXT: adrp x9, lCPI8_0@PAGE
262
+ ; CHECK-NEXT: Lloh1:
263
+ ; CHECK-NEXT: adrp x10, lCPI8_1@PAGE
264
+ ; CHECK-NEXT: Lloh2:
265
+ ; CHECK-NEXT: adrp x11, lCPI8_2@PAGE
266
+ ; CHECK-NEXT: Lloh3:
267
+ ; CHECK-NEXT: adrp x12, lCPI8_3@PAGE
268
+ ; CHECK-NEXT: movi.2d v2, #0xffffffffffffffff
261
269
; CHECK-NEXT: mov x8, xzr
270
+ ; CHECK-NEXT: Lloh4:
271
+ ; CHECK-NEXT: ldr q0, [x9, lCPI8_0@PAGEOFF]
272
+ ; CHECK-NEXT: Lloh5:
273
+ ; CHECK-NEXT: ldr q1, [x10, lCPI8_1@PAGEOFF]
274
+ ; CHECK-NEXT: Lloh6:
275
+ ; CHECK-NEXT: ldr q3, [x11, lCPI8_2@PAGEOFF]
276
+ ; CHECK-NEXT: Lloh7:
277
+ ; CHECK-NEXT: ldr q4, [x12, lCPI8_3@PAGEOFF]
262
278
; CHECK-NEXT: LBB8_1: ; %loop
263
279
; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
264
- ; CHECK-NEXT: ldr q1 , [x0, x8]
280
+ ; CHECK-NEXT: ldr q5 , [x0, x8]
265
281
; CHECK-NEXT: add x8, x8, #16
266
282
; CHECK-NEXT: cmp x8, #128
267
- ; CHECK-NEXT: cmgt.16b v2, v1, v0
268
- ; CHECK-NEXT: ushll2.8h v3, v1, #0
269
- ; CHECK-NEXT: sshll2.8h v4, v2, #0
270
- ; CHECK-NEXT: ushll2.4s v5, v3, #0
271
- ; CHECK-NEXT: ushll.4s v3, v3, #0
272
- ; CHECK-NEXT: sshll2.4s v6, v4, #0
273
- ; CHECK-NEXT: sshll.4s v4, v4, #0
274
- ; CHECK-NEXT: ushll.8h v1, v1, #0
275
- ; CHECK-NEXT: sshll.8h v2, v2, #0
283
+ ; CHECK-NEXT: cmgt.16b v6, v5, v2
284
+ ; CHECK-NEXT: tbl.16b v7, { v5 }, v0
285
+ ; CHECK-NEXT: tbl.16b v16, { v5 }, v1
286
+ ; CHECK-NEXT: sshll2.8h v18, v6, #0
287
+ ; CHECK-NEXT: tbl.16b v17, { v5 }, v3
288
+ ; CHECK-NEXT: sshll2.4s v19, v18, #0
289
+ ; CHECK-NEXT: sshll.4s v18, v18, #0
290
+ ; CHECK-NEXT: tbl.16b v5, { v5 }, v4
291
+ ; CHECK-NEXT: sshll.8h v6, v6, #0
292
+ ; CHECK-NEXT: and.16b v7, v7, v19
293
+ ; CHECK-NEXT: and.16b v16, v16, v18
294
+ ; CHECK-NEXT: stp q16, q7, [x1, #32]
295
+ ; CHECK-NEXT: sshll2.4s v7, v6, #0
296
+ ; CHECK-NEXT: sshll.4s v6, v6, #0
297
+ ; CHECK-NEXT: and.16b v7, v17, v7
276
298
; CHECK-NEXT: and.16b v5, v5, v6
277
- ; CHECK-NEXT: and.16b v3, v3, v4
278
- ; CHECK-NEXT: stp q3, q5, [x1, #32]
279
- ; CHECK-NEXT: sshll2.4s v4, v2, #0
280
- ; CHECK-NEXT: sshll.4s v2, v2, #0
281
- ; CHECK-NEXT: ushll2.4s v3, v1, #0
282
- ; CHECK-NEXT: ushll.4s v1, v1, #0
283
- ; CHECK-NEXT: and.16b v3, v3, v4
284
- ; CHECK-NEXT: and.16b v1, v1, v2
285
- ; CHECK-NEXT: stp q1, q3, [x1], #64
299
+ ; CHECK-NEXT: stp q5, q7, [x1], #64
286
300
; CHECK-NEXT: b.ne LBB8_1
287
301
; CHECK-NEXT: ; %bb.2: ; %exit
288
302
; CHECK-NEXT: ret
303
+ ; CHECK-NEXT: .loh AdrpLdr Lloh3, Lloh7
304
+ ; CHECK-NEXT: .loh AdrpLdr Lloh2, Lloh6
305
+ ; CHECK-NEXT: .loh AdrpLdr Lloh1, Lloh5
306
+ ; CHECK-NEXT: .loh AdrpLdr Lloh0, Lloh4
289
307
entry:
290
308
br label %loop
291
309
@@ -311,23 +329,23 @@ exit:
311
329
define void @extension_in_loop_as_shuffle_v16i8_to_v16i32 (i8* %src , i32* %dst ) {
312
330
; CHECK-LABEL: extension_in_loop_as_shuffle_v16i8_to_v16i32:
313
331
; CHECK: ; %bb.0: ; %entry
314
- ; CHECK-NEXT: Lloh0 :
332
+ ; CHECK-NEXT: Lloh8 :
315
333
; CHECK-NEXT: adrp x9, lCPI9_0@PAGE
316
- ; CHECK-NEXT: Lloh1 :
334
+ ; CHECK-NEXT: Lloh9 :
317
335
; CHECK-NEXT: adrp x10, lCPI9_1@PAGE
318
- ; CHECK-NEXT: Lloh2 :
336
+ ; CHECK-NEXT: Lloh10 :
319
337
; CHECK-NEXT: adrp x11, lCPI9_2@PAGE
320
- ; CHECK-NEXT: Lloh3 :
338
+ ; CHECK-NEXT: Lloh11 :
321
339
; CHECK-NEXT: adrp x12, lCPI9_3@PAGE
322
340
; CHECK-NEXT: movi.2d v2, #0xffffffffffffffff
323
341
; CHECK-NEXT: mov x8, xzr
324
- ; CHECK-NEXT: Lloh4 :
342
+ ; CHECK-NEXT: Lloh12 :
325
343
; CHECK-NEXT: ldr q0, [x9, lCPI9_0@PAGEOFF]
326
- ; CHECK-NEXT: Lloh5 :
344
+ ; CHECK-NEXT: Lloh13 :
327
345
; CHECK-NEXT: ldr q1, [x10, lCPI9_1@PAGEOFF]
328
- ; CHECK-NEXT: Lloh6 :
346
+ ; CHECK-NEXT: Lloh14 :
329
347
; CHECK-NEXT: ldr q3, [x11, lCPI9_2@PAGEOFF]
330
- ; CHECK-NEXT: Lloh7 :
348
+ ; CHECK-NEXT: Lloh15 :
331
349
; CHECK-NEXT: ldr q4, [x12, lCPI9_3@PAGEOFF]
332
350
; CHECK-NEXT: LBB9_1: ; %loop
333
351
; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
@@ -354,10 +372,10 @@ define void @extension_in_loop_as_shuffle_v16i8_to_v16i32(i8* %src, i32* %dst) {
354
372
; CHECK-NEXT: b.ne LBB9_1
355
373
; CHECK-NEXT: ; %bb.2: ; %exit
356
374
; CHECK-NEXT: ret
357
- ; CHECK-NEXT: .loh AdrpLdr Lloh3, Lloh7
358
- ; CHECK-NEXT: .loh AdrpLdr Lloh2, Lloh6
359
- ; CHECK-NEXT: .loh AdrpLdr Lloh1, Lloh5
360
- ; CHECK-NEXT: .loh AdrpLdr Lloh0, Lloh4
375
+ ; CHECK-NEXT: .loh AdrpLdr Lloh11, Lloh15
376
+ ; CHECK-NEXT: .loh AdrpLdr Lloh10, Lloh14
377
+ ; CHECK-NEXT: .loh AdrpLdr Lloh9, Lloh13
378
+ ; CHECK-NEXT: .loh AdrpLdr Lloh8, Lloh12
361
379
entry:
362
380
br label %loop
363
381
@@ -384,23 +402,23 @@ exit:
384
402
define void @shuffle_in_loop_is_no_extend_v16i8_to_v16i32 (i8* %src , i32* %dst ) {
385
403
; CHECK-LABEL: shuffle_in_loop_is_no_extend_v16i8_to_v16i32:
386
404
; CHECK: ; %bb.0: ; %entry
387
- ; CHECK-NEXT: Lloh8 :
405
+ ; CHECK-NEXT: Lloh16 :
388
406
; CHECK-NEXT: adrp x9, lCPI10_0@PAGE
389
- ; CHECK-NEXT: Lloh9 :
407
+ ; CHECK-NEXT: Lloh17 :
390
408
; CHECK-NEXT: adrp x10, lCPI10_1@PAGE
391
- ; CHECK-NEXT: Lloh10 :
409
+ ; CHECK-NEXT: Lloh18 :
392
410
; CHECK-NEXT: adrp x11, lCPI10_2@PAGE
393
- ; CHECK-NEXT: Lloh11 :
411
+ ; CHECK-NEXT: Lloh19 :
394
412
; CHECK-NEXT: adrp x12, lCPI10_3@PAGE
395
413
; CHECK-NEXT: movi.2d v2, #0xffffffffffffffff
396
414
; CHECK-NEXT: mov x8, xzr
397
- ; CHECK-NEXT: Lloh12 :
415
+ ; CHECK-NEXT: Lloh20 :
398
416
; CHECK-NEXT: ldr q0, [x9, lCPI10_0@PAGEOFF]
399
- ; CHECK-NEXT: Lloh13 :
417
+ ; CHECK-NEXT: Lloh21 :
400
418
; CHECK-NEXT: ldr q1, [x10, lCPI10_1@PAGEOFF]
401
- ; CHECK-NEXT: Lloh14 :
419
+ ; CHECK-NEXT: Lloh22 :
402
420
; CHECK-NEXT: ldr q3, [x11, lCPI10_2@PAGEOFF]
403
- ; CHECK-NEXT: Lloh15 :
421
+ ; CHECK-NEXT: Lloh23 :
404
422
; CHECK-NEXT: ldr q4, [x12, lCPI10_3@PAGEOFF]
405
423
; CHECK-NEXT: LBB10_1: ; %loop
406
424
; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1
@@ -427,10 +445,10 @@ define void @shuffle_in_loop_is_no_extend_v16i8_to_v16i32(i8* %src, i32* %dst) {
427
445
; CHECK-NEXT: b.ne LBB10_1
428
446
; CHECK-NEXT: ; %bb.2: ; %exit
429
447
; CHECK-NEXT: ret
430
- ; CHECK-NEXT: .loh AdrpLdr Lloh11, Lloh15
431
- ; CHECK-NEXT: .loh AdrpLdr Lloh10, Lloh14
432
- ; CHECK-NEXT: .loh AdrpLdr Lloh9, Lloh13
433
- ; CHECK-NEXT: .loh AdrpLdr Lloh8, Lloh12
448
+ ; CHECK-NEXT: .loh AdrpLdr Lloh19, Lloh23
449
+ ; CHECK-NEXT: .loh AdrpLdr Lloh18, Lloh22
450
+ ; CHECK-NEXT: .loh AdrpLdr Lloh17, Lloh21
451
+ ; CHECK-NEXT: .loh AdrpLdr Lloh16, Lloh20
434
452
entry:
435
453
br label %loop
436
454
0 commit comments