diff --git a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp --- a/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp @@ -22665,8 +22665,8 @@ static SDValue combineShuffleToZeroExtendVectorInReg(ShuffleVectorSDNode *SVN, SelectionDAG &DAG, const TargetLowering &TLI, + bool LegalTypes, bool LegalOperations) { - bool LegalTypes = true; EVT VT = SVN->getValueType(0); assert(!VT.isScalableVector() && "Encountered scalable shuffle?"); unsigned NumElts = VT.getVectorNumElements(); @@ -23759,8 +23759,8 @@ // Perform this really late, because it could eliminate knowledge // of undef elements created by this shuffle. if (Level < AfterLegalizeTypes) - if (SDValue V = combineShuffleToZeroExtendVectorInReg(SVN, DAG, TLI, - LegalOperations)) + if (SDValue V = combineShuffleToZeroExtendVectorInReg( + SVN, DAG, TLI, LegalTypes, LegalOperations)) return V; return SDValue(); diff --git a/llvm/test/CodeGen/AArch64/fp-conversion-to-tbl.ll b/llvm/test/CodeGen/AArch64/fp-conversion-to-tbl.ll --- a/llvm/test/CodeGen/AArch64/fp-conversion-to-tbl.ll +++ b/llvm/test/CodeGen/AArch64/fp-conversion-to-tbl.ll @@ -1,5 +1,5 @@ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py -; RUN: llc -o - %s | FileCheck %s +; RUN: llc -o - %s | FileCheck --implicit-check-not=LCPI --implicit-check-not=lCPI %s target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" target triple = "arm64-apple-ios" @@ -438,69 +438,28 @@ ret void } -; CHECK-LABEL: lCPI8_0: -; CHECK-NEXT: .byte 4 ; 0x4 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 5 ; 0x5 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 6 ; 0x6 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 7 ; 0x7 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: lCPI8_1: -; CHECK-NEXT: .byte 0 ; 0x0 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 1 ; 0x1 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 2 ; 0x2 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 3 ; 0x3 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff - define void @uitofp_v8i8_to_v8f32(ptr %src, ptr %dst) { ; CHECK-LABEL: uitofp_v8i8_to_v8f32: ; CHECK: ; %bb.0: ; %entry -; CHECK-NEXT: Lloh10: -; CHECK-NEXT: adrp x9, lCPI8_0@PAGE -; CHECK-NEXT: Lloh11: -; CHECK-NEXT: adrp x10, lCPI8_1@PAGE +; CHECK-NEXT: movi.2d v0, #0000000000000000 ; CHECK-NEXT: mov x8, xzr -; CHECK-NEXT: Lloh12: -; CHECK-NEXT: ldr q0, [x9, lCPI8_0@PAGEOFF] -; CHECK-NEXT: Lloh13: -; CHECK-NEXT: ldr q1, [x10, lCPI8_1@PAGEOFF] ; CHECK-NEXT: LBB8_1: ; %loop ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldr d2, [x0, x8, lsl #3] +; CHECK-NEXT: ldr d1, [x0, x8, lsl #3] ; CHECK-NEXT: add x9, x1, x8, lsl #5 ; CHECK-NEXT: add x8, x8, #1 ; CHECK-NEXT: cmp x8, #1000 -; CHECK-NEXT: tbl.16b v3, { v2 }, v0 -; CHECK-NEXT: tbl.16b v2, { v2 }, v1 -; CHECK-NEXT: ucvtf.4s v3, v3 +; CHECK-NEXT: dup.2s v2, v1[1] +; CHECK-NEXT: zip1.16b v1, v1, v0 +; CHECK-NEXT: zip1.16b v2, v2, v0 +; CHECK-NEXT: zip1.8h v1, v1, v0 +; CHECK-NEXT: zip1.8h v2, v2, v0 +; CHECK-NEXT: ucvtf.4s v1, v1 ; CHECK-NEXT: ucvtf.4s v2, v2 -; CHECK-NEXT: stp q2, q3, [x9] +; CHECK-NEXT: stp q1, q2, [x9] ; CHECK-NEXT: b.eq LBB8_1 ; CHECK-NEXT: ; %bb.2: ; %exit ; CHECK-NEXT: ret -; CHECK-NEXT: .loh AdrpLdr Lloh11, Lloh13 -; CHECK-NEXT: .loh AdrpLdr Lloh10, Lloh12 entry: br label %loop @@ -519,118 +478,37 @@ ret void } -; CHECK-LABEL: lCPI9_0: -; CHECK-NEXT: .byte 12 ; 0xc -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 13 ; 0xd -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 14 ; 0xe -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 15 ; 0xf -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: lCPI9_1: -; CHECK-NEXT: .byte 8 ; 0x8 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 9 ; 0x9 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 10 ; 0xa -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 11 ; 0xb -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: lCPI9_2: -; CHECK-NEXT: .byte 4 ; 0x4 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 5 ; 0x5 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 6 ; 0x6 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 7 ; 0x7 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: lCPI9_3: -; CHECK-NEXT: .byte 0 ; 0x0 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 1 ; 0x1 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 2 ; 0x2 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 3 ; 0x3 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff - define void @uitofp_v16i8_to_v16f32(ptr %src, ptr %dst) { ; CHECK-LABEL: uitofp_v16i8_to_v16f32: ; CHECK: ; %bb.0: ; %entry -; CHECK-NEXT: Lloh14: -; CHECK-NEXT: adrp x9, lCPI9_0@PAGE -; CHECK-NEXT: Lloh15: -; CHECK-NEXT: adrp x10, lCPI9_1@PAGE -; CHECK-NEXT: Lloh16: -; CHECK-NEXT: adrp x11, lCPI9_2@PAGE -; CHECK-NEXT: Lloh17: -; CHECK-NEXT: adrp x12, lCPI9_3@PAGE +; CHECK-NEXT: movi.2d v0, #0000000000000000 ; CHECK-NEXT: mov x8, xzr -; CHECK-NEXT: Lloh18: -; CHECK-NEXT: ldr q0, [x9, lCPI9_0@PAGEOFF] -; CHECK-NEXT: Lloh19: -; CHECK-NEXT: ldr q1, [x10, lCPI9_1@PAGEOFF] -; CHECK-NEXT: Lloh20: -; CHECK-NEXT: ldr q2, [x11, lCPI9_2@PAGEOFF] -; CHECK-NEXT: Lloh21: -; CHECK-NEXT: ldr q3, [x12, lCPI9_3@PAGEOFF] ; CHECK-NEXT: LBB9_1: ; %loop ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldr q4, [x0, x8, lsl #4] +; CHECK-NEXT: ldr q1, [x0, x8, lsl #4] ; CHECK-NEXT: add x9, x1, x8, lsl #6 ; CHECK-NEXT: add x8, x8, #1 ; CHECK-NEXT: cmp x8, #1000 -; CHECK-NEXT: tbl.16b v5, { v4 }, v0 -; CHECK-NEXT: tbl.16b v6, { v4 }, v1 -; CHECK-NEXT: tbl.16b v7, { v4 }, v2 -; CHECK-NEXT: tbl.16b v4, { v4 }, v3 -; CHECK-NEXT: ucvtf.4s v5, v5 -; CHECK-NEXT: ucvtf.4s v6, v6 -; CHECK-NEXT: ucvtf.4s v7, v7 +; CHECK-NEXT: zip1.16b v2, v1, v0 +; CHECK-NEXT: dup.4s v3, v1[1] +; CHECK-NEXT: dup.2d v1, v1[1] +; CHECK-NEXT: zip1.16b v3, v3, v0 +; CHECK-NEXT: dup.4s v4, v1[1] +; CHECK-NEXT: zip1.16b v1, v1, v0 +; CHECK-NEXT: zip1.16b v4, v4, v0 +; CHECK-NEXT: zip1.8h v2, v2, v0 +; CHECK-NEXT: zip1.8h v3, v3, v0 +; CHECK-NEXT: zip1.8h v1, v1, v0 +; CHECK-NEXT: zip1.8h v4, v4, v0 +; CHECK-NEXT: ucvtf.4s v2, v2 +; CHECK-NEXT: ucvtf.4s v3, v3 +; CHECK-NEXT: ucvtf.4s v1, v1 ; CHECK-NEXT: ucvtf.4s v4, v4 -; CHECK-NEXT: stp q6, q5, [x9, #32] -; CHECK-NEXT: stp q4, q7, [x9] +; CHECK-NEXT: stp q2, q3, [x9] +; CHECK-NEXT: stp q1, q4, [x9, #32] ; CHECK-NEXT: b.eq LBB9_1 ; CHECK-NEXT: ; %bb.2: ; %exit ; CHECK-NEXT: ret -; CHECK-NEXT: .loh AdrpLdr Lloh17, Lloh21 -; CHECK-NEXT: .loh AdrpLdr Lloh16, Lloh20 -; CHECK-NEXT: .loh AdrpLdr Lloh15, Lloh19 -; CHECK-NEXT: .loh AdrpLdr Lloh14, Lloh18 entry: br label %loop diff --git a/llvm/test/CodeGen/AArch64/vselect-ext.ll b/llvm/test/CodeGen/AArch64/vselect-ext.ll --- a/llvm/test/CodeGen/AArch64/vselect-ext.ll +++ b/llvm/test/CodeGen/AArch64/vselect-ext.ll @@ -573,53 +573,41 @@ define void @extension_in_loop_v16i8_to_v16i32(ptr %src, ptr %dst) { ; CHECK-LABEL: extension_in_loop_v16i8_to_v16i32: ; CHECK: ; %bb.0: ; %entry -; CHECK-NEXT: Lloh2: -; CHECK-NEXT: adrp x9, lCPI24_0@PAGE -; CHECK-NEXT: Lloh3: -; CHECK-NEXT: adrp x10, lCPI24_1@PAGE -; CHECK-NEXT: Lloh4: -; CHECK-NEXT: adrp x11, lCPI24_2@PAGE -; CHECK-NEXT: Lloh5: -; CHECK-NEXT: adrp x12, lCPI24_3@PAGE -; CHECK-NEXT: movi.2d v2, #0xffffffffffffffff +; CHECK-NEXT: movi.2d v0, #0xffffffffffffffff ; CHECK-NEXT: mov x8, xzr -; CHECK-NEXT: Lloh6: -; CHECK-NEXT: ldr q0, [x9, lCPI24_0@PAGEOFF] -; CHECK-NEXT: Lloh7: -; CHECK-NEXT: ldr q1, [x10, lCPI24_1@PAGEOFF] -; CHECK-NEXT: Lloh8: -; CHECK-NEXT: ldr q3, [x11, lCPI24_2@PAGEOFF] -; CHECK-NEXT: Lloh9: -; CHECK-NEXT: ldr q4, [x12, lCPI24_3@PAGEOFF] +; CHECK-NEXT: movi.2d v1, #0000000000000000 ; CHECK-NEXT: LBB24_1: ; %loop ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldr q5, [x0, x8] +; CHECK-NEXT: ldr q2, [x0, x8] ; CHECK-NEXT: add x8, x8, #16 ; CHECK-NEXT: cmp x8, #128 -; CHECK-NEXT: cmgt.16b v6, v5, v2 -; CHECK-NEXT: tbl.16b v7, { v5 }, v0 -; CHECK-NEXT: tbl.16b v16, { v5 }, v1 -; CHECK-NEXT: sshll2.8h v18, v6, #0 -; CHECK-NEXT: tbl.16b v17, { v5 }, v3 -; CHECK-NEXT: sshll2.4s v19, v18, #0 -; CHECK-NEXT: sshll.4s v18, v18, #0 -; CHECK-NEXT: tbl.16b v5, { v5 }, v4 -; CHECK-NEXT: sshll.8h v6, v6, #0 -; CHECK-NEXT: and.16b v7, v7, v19 -; CHECK-NEXT: and.16b v16, v16, v18 -; CHECK-NEXT: stp q16, q7, [x1, #32] -; CHECK-NEXT: sshll2.4s v7, v6, #0 +; CHECK-NEXT: dup.2d v4, v2[1] +; CHECK-NEXT: cmgt.16b v3, v2, v0 +; CHECK-NEXT: zip1.16b v5, v2, v1 +; CHECK-NEXT: dup.4s v2, v2[1] +; CHECK-NEXT: dup.4s v7, v4[1] +; CHECK-NEXT: zip1.16b v4, v4, v1 +; CHECK-NEXT: zip1.16b v7, v7, v1 +; CHECK-NEXT: zip1.16b v2, v2, v1 +; CHECK-NEXT: sshll2.8h v6, v3, #0 +; CHECK-NEXT: zip1.8h v4, v4, v1 +; CHECK-NEXT: sshll.8h v3, v3, #0 +; CHECK-NEXT: sshll2.4s v16, v6, #0 ; CHECK-NEXT: sshll.4s v6, v6, #0 -; CHECK-NEXT: and.16b v7, v17, v7 -; CHECK-NEXT: and.16b v5, v5, v6 -; CHECK-NEXT: stp q5, q7, [x1], #64 +; CHECK-NEXT: zip1.8h v7, v7, v1 +; CHECK-NEXT: zip1.8h v5, v5, v1 +; CHECK-NEXT: zip1.8h v2, v2, v1 +; CHECK-NEXT: and.16b v4, v4, v6 +; CHECK-NEXT: sshll2.4s v6, v3, #0 +; CHECK-NEXT: sshll.4s v3, v3, #0 +; CHECK-NEXT: and.16b v7, v7, v16 +; CHECK-NEXT: and.16b v2, v2, v6 +; CHECK-NEXT: stp q4, q7, [x1, #32] +; CHECK-NEXT: and.16b v3, v5, v3 +; CHECK-NEXT: stp q3, q2, [x1], #64 ; CHECK-NEXT: b.ne LBB24_1 ; CHECK-NEXT: ; %bb.2: ; %exit ; CHECK-NEXT: ret -; CHECK-NEXT: .loh AdrpLdr Lloh5, Lloh9 -; CHECK-NEXT: .loh AdrpLdr Lloh4, Lloh8 -; CHECK-NEXT: .loh AdrpLdr Lloh3, Lloh7 -; CHECK-NEXT: .loh AdrpLdr Lloh2, Lloh6 entry: br label %loop @@ -643,23 +631,23 @@ define void @extension_in_loop_as_shuffle_v16i8_to_v16i32(ptr %src, ptr %dst) { ; CHECK-LABEL: extension_in_loop_as_shuffle_v16i8_to_v16i32: ; CHECK: ; %bb.0: ; %entry -; CHECK-NEXT: Lloh10: +; CHECK-NEXT: Lloh2: ; CHECK-NEXT: adrp x9, lCPI25_0@PAGE -; CHECK-NEXT: Lloh11: +; CHECK-NEXT: Lloh3: ; CHECK-NEXT: adrp x10, lCPI25_1@PAGE -; CHECK-NEXT: Lloh12: +; CHECK-NEXT: Lloh4: ; CHECK-NEXT: adrp x11, lCPI25_2@PAGE -; CHECK-NEXT: Lloh13: +; CHECK-NEXT: Lloh5: ; CHECK-NEXT: adrp x12, lCPI25_3@PAGE ; CHECK-NEXT: movi.2d v2, #0xffffffffffffffff ; CHECK-NEXT: mov x8, xzr -; CHECK-NEXT: Lloh14: +; CHECK-NEXT: Lloh6: ; CHECK-NEXT: ldr q0, [x9, lCPI25_0@PAGEOFF] -; CHECK-NEXT: Lloh15: +; CHECK-NEXT: Lloh7: ; CHECK-NEXT: ldr q1, [x10, lCPI25_1@PAGEOFF] -; CHECK-NEXT: Lloh16: +; CHECK-NEXT: Lloh8: ; CHECK-NEXT: ldr q3, [x11, lCPI25_2@PAGEOFF] -; CHECK-NEXT: Lloh17: +; CHECK-NEXT: Lloh9: ; CHECK-NEXT: ldr q4, [x12, lCPI25_3@PAGEOFF] ; CHECK-NEXT: LBB25_1: ; %loop ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1 @@ -686,10 +674,10 @@ ; CHECK-NEXT: b.ne LBB25_1 ; CHECK-NEXT: ; %bb.2: ; %exit ; CHECK-NEXT: ret -; CHECK-NEXT: .loh AdrpLdr Lloh13, Lloh17 -; CHECK-NEXT: .loh AdrpLdr Lloh12, Lloh16 -; CHECK-NEXT: .loh AdrpLdr Lloh11, Lloh15 -; CHECK-NEXT: .loh AdrpLdr Lloh10, Lloh14 +; CHECK-NEXT: .loh AdrpLdr Lloh5, Lloh9 +; CHECK-NEXT: .loh AdrpLdr Lloh4, Lloh8 +; CHECK-NEXT: .loh AdrpLdr Lloh3, Lloh7 +; CHECK-NEXT: .loh AdrpLdr Lloh2, Lloh6 entry: br label %loop @@ -714,23 +702,23 @@ define void @shuffle_in_loop_is_no_extend_v16i8_to_v16i32(ptr %src, ptr %dst) { ; CHECK-LABEL: shuffle_in_loop_is_no_extend_v16i8_to_v16i32: ; CHECK: ; %bb.0: ; %entry -; CHECK-NEXT: Lloh18: +; CHECK-NEXT: Lloh10: ; CHECK-NEXT: adrp x9, lCPI26_0@PAGE -; CHECK-NEXT: Lloh19: +; CHECK-NEXT: Lloh11: ; CHECK-NEXT: adrp x10, lCPI26_1@PAGE -; CHECK-NEXT: Lloh20: +; CHECK-NEXT: Lloh12: ; CHECK-NEXT: adrp x11, lCPI26_2@PAGE -; CHECK-NEXT: Lloh21: +; CHECK-NEXT: Lloh13: ; CHECK-NEXT: adrp x12, lCPI26_3@PAGE ; CHECK-NEXT: movi.2d v2, #0xffffffffffffffff ; CHECK-NEXT: mov x8, xzr -; CHECK-NEXT: Lloh22: +; CHECK-NEXT: Lloh14: ; CHECK-NEXT: ldr q0, [x9, lCPI26_0@PAGEOFF] -; CHECK-NEXT: Lloh23: +; CHECK-NEXT: Lloh15: ; CHECK-NEXT: ldr q1, [x10, lCPI26_1@PAGEOFF] -; CHECK-NEXT: Lloh24: +; CHECK-NEXT: Lloh16: ; CHECK-NEXT: ldr q3, [x11, lCPI26_2@PAGEOFF] -; CHECK-NEXT: Lloh25: +; CHECK-NEXT: Lloh17: ; CHECK-NEXT: ldr q4, [x12, lCPI26_3@PAGEOFF] ; CHECK-NEXT: LBB26_1: ; %loop ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1 @@ -757,10 +745,10 @@ ; CHECK-NEXT: b.ne LBB26_1 ; CHECK-NEXT: ; %bb.2: ; %exit ; CHECK-NEXT: ret -; CHECK-NEXT: .loh AdrpLdr Lloh21, Lloh25 -; CHECK-NEXT: .loh AdrpLdr Lloh20, Lloh24 -; CHECK-NEXT: .loh AdrpLdr Lloh19, Lloh23 -; CHECK-NEXT: .loh AdrpLdr Lloh18, Lloh22 +; CHECK-NEXT: .loh AdrpLdr Lloh13, Lloh17 +; CHECK-NEXT: .loh AdrpLdr Lloh12, Lloh16 +; CHECK-NEXT: .loh AdrpLdr Lloh11, Lloh15 +; CHECK-NEXT: .loh AdrpLdr Lloh10, Lloh14 entry: br label %loop diff --git a/llvm/test/CodeGen/AArch64/zext-to-tbl.ll b/llvm/test/CodeGen/AArch64/zext-to-tbl.ll --- a/llvm/test/CodeGen/AArch64/zext-to-tbl.ll +++ b/llvm/test/CodeGen/AArch64/zext-to-tbl.ll @@ -4,75 +4,6 @@ ; RUN: llc -mtriple=arm64-apple-ios -mattr=+global-isel -mattr=+sve -o - %s | FileCheck --implicit-check-not=LCPI --implicit-check-not=lCPI %s ; RUN: llc -mtriple=aarch64_be-unknown-linux -mattr=+global-isel -mattr=+sve -o - %s | FileCheck --implicit-check-not=LCPI --implicit-check-not=lCPI --check-prefix=CHECK-BE %s -; CHECK-LABEL: lCPI0_0: -; CHECK-NEXT: .byte 0 ; 0x0 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 1 ; 0x1 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 2 ; 0x2 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 3 ; 0x3 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT:lCPI0_1: -; CHECK-NEXT: .byte 4 ; 0x4 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 5 ; 0x5 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 6 ; 0x6 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 7 ; 0x7 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT:lCPI0_2: -; CHECK-NEXT: .byte 8 ; 0x8 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 9 ; 0x9 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 10 ; 0xa -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 11 ; 0xb -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT:lCPI0_3: -; CHECK-NEXT: .byte 12 ; 0xc -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 13 ; 0xd -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 14 ; 0xe -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 15 ; 0xf -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff - ; CHECK-BE: .LCPI0_0: ; CHECK-BE-NEXT: .byte 255 // 0xff ; CHECK-BE-NEXT: .byte 255 // 0xff @@ -147,41 +78,30 @@ define void @zext_v16i8_to_v16i32_in_loop(ptr %src, ptr %dst) { ; CHECK-LABEL: zext_v16i8_to_v16i32_in_loop: ; CHECK: ; %bb.0: ; %entry -; CHECK-NEXT: Lloh0: -; CHECK-NEXT: adrp x9, lCPI0_0@PAGE -; CHECK-NEXT: Lloh1: -; CHECK-NEXT: adrp x10, lCPI0_1@PAGE -; CHECK-NEXT: Lloh2: -; CHECK-NEXT: adrp x11, lCPI0_2@PAGE -; CHECK-NEXT: Lloh3: -; CHECK-NEXT: adrp x12, lCPI0_3@PAGE +; CHECK-NEXT: movi.2d v0, #0000000000000000 ; CHECK-NEXT: mov x8, xzr -; CHECK-NEXT: Lloh4: -; CHECK-NEXT: ldr q0, [x9, lCPI0_0@PAGEOFF] -; CHECK-NEXT: Lloh5: -; CHECK-NEXT: ldr q1, [x10, lCPI0_1@PAGEOFF] -; CHECK-NEXT: Lloh6: -; CHECK-NEXT: ldr q2, [x11, lCPI0_2@PAGEOFF] -; CHECK-NEXT: Lloh7: -; CHECK-NEXT: ldr q3, [x12, lCPI0_3@PAGEOFF] ; CHECK-NEXT: LBB0_1: ; %loop ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldr q4, [x0, x8] +; CHECK-NEXT: ldr q1, [x0, x8] ; CHECK-NEXT: add x8, x8, #16 ; CHECK-NEXT: cmp x8, #128 -; CHECK-NEXT: tbl.16b v5, { v4 }, v3 -; CHECK-NEXT: tbl.16b v6, { v4 }, v2 -; CHECK-NEXT: tbl.16b v7, { v4 }, v1 -; CHECK-NEXT: tbl.16b v4, { v4 }, v0 -; CHECK-NEXT: stp q6, q5, [x1, #32] -; CHECK-NEXT: stp q4, q7, [x1], #64 +; CHECK-NEXT: dup.2d v2, v1[1] +; CHECK-NEXT: dup.4s v3, v1[1] +; CHECK-NEXT: zip1.16b v1, v1, v0 +; CHECK-NEXT: dup.4s v4, v2[1] +; CHECK-NEXT: zip1.16b v3, v3, v0 +; CHECK-NEXT: zip1.16b v2, v2, v0 +; CHECK-NEXT: zip1.16b v4, v4, v0 +; CHECK-NEXT: zip1.8h v1, v1, v0 +; CHECK-NEXT: zip1.8h v3, v3, v0 +; CHECK-NEXT: zip1.8h v2, v2, v0 +; CHECK-NEXT: zip1.8h v4, v4, v0 +; CHECK-NEXT: stp q1, q3, [x1] +; CHECK-NEXT: stp q2, q4, [x1, #32] +; CHECK-NEXT: add x1, x1, #64 ; CHECK-NEXT: b.ne LBB0_1 ; CHECK-NEXT: ; %bb.2: ; %exit ; CHECK-NEXT: ret -; CHECK-NEXT: .loh AdrpLdr Lloh3, Lloh7 -; CHECK-NEXT: .loh AdrpLdr Lloh2, Lloh6 -; CHECK-NEXT: .loh AdrpLdr Lloh1, Lloh5 -; CHECK-NEXT: .loh AdrpLdr Lloh0, Lloh4 ; ; CHECK-BE-LABEL: zext_v16i8_to_v16i32_in_loop: ; CHECK-BE: // %bb.0: // %entry @@ -549,41 +469,6 @@ ret void } -; CHECK-LABEL: lCPI6_0: -; CHECK-NEXT: .byte 0 ; 0x0 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 1 ; 0x1 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 2 ; 0x2 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 3 ; 0x3 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: lCPI6_1: -; CHECK-NEXT: .byte 4 ; 0x4 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 5 ; 0x5 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 6 ; 0x6 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 7 ; 0x7 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff - ; CHECK-BE: .LCPI6_0: ; CHECK-BE-NEXT: .byte 255 // 0xff ; CHECK-BE-NEXT: .byte 255 // 0xff @@ -622,28 +507,22 @@ define void @zext_v8i8_to_v8i32_in_loop(ptr %src, ptr %dst) { ; CHECK-LABEL: zext_v8i8_to_v8i32_in_loop: ; CHECK: ; %bb.0: ; %entry -; CHECK-NEXT: Lloh8: -; CHECK-NEXT: adrp x9, lCPI6_0@PAGE -; CHECK-NEXT: Lloh9: -; CHECK-NEXT: adrp x10, lCPI6_1@PAGE +; CHECK-NEXT: movi.2d v0, #0000000000000000 ; CHECK-NEXT: mov x8, xzr -; CHECK-NEXT: Lloh10: -; CHECK-NEXT: ldr q0, [x9, lCPI6_0@PAGEOFF] -; CHECK-NEXT: Lloh11: -; CHECK-NEXT: ldr q1, [x10, lCPI6_1@PAGEOFF] ; CHECK-NEXT: LBB6_1: ; %loop ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldr d2, [x0, x8] +; CHECK-NEXT: ldr d1, [x0, x8] ; CHECK-NEXT: add x8, x8, #16 ; CHECK-NEXT: cmp x8, #128 -; CHECK-NEXT: tbl.16b v3, { v2 }, v1 -; CHECK-NEXT: tbl.16b v2, { v2 }, v0 -; CHECK-NEXT: stp q2, q3, [x1], #64 +; CHECK-NEXT: dup.2s v2, v1[1] +; CHECK-NEXT: zip1.16b v1, v1, v0 +; CHECK-NEXT: zip1.16b v2, v2, v0 +; CHECK-NEXT: zip1.8h v1, v1, v0 +; CHECK-NEXT: zip1.8h v2, v2, v0 +; CHECK-NEXT: stp q1, q2, [x1], #64 ; CHECK-NEXT: b.ne LBB6_1 ; CHECK-NEXT: ; %bb.2: ; %exit ; CHECK-NEXT: ret -; CHECK-NEXT: .loh AdrpLdr Lloh9, Lloh11 -; CHECK-NEXT: .loh AdrpLdr Lloh8, Lloh10 ; ; CHECK-BE-LABEL: zext_v8i8_to_v8i32_in_loop: ; CHECK-BE: // %bb.0: // %entry @@ -1066,58 +945,6 @@ ret void } -; CHECK-LABEL: lCPI12_0: -; CHECK-NEXT: .byte 0 ; 0x0 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 1 ; 0x1 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 2 ; 0x2 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 3 ; 0x3 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: lCPI12_1: -; CHECK-NEXT: .byte 4 ; 0x4 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 5 ; 0x5 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 6 ; 0x6 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 7 ; 0x7 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: lCPI12_2: -; CHECK-NEXT: .byte 8 ; 0x8 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 9 ; 0x9 -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 10 ; 0xa -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 11 ; 0xb -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff -; CHECK-NEXT: .byte 255 ; 0xff - ; CHECK-BE-LABEL: .LCPI12_0: ; CHECK-BE-NEXT: .byte 255 // 0xff ; CHECK-BE-NEXT: .byte 255 // 0xff @@ -1173,35 +1000,26 @@ define void @zext_v12i8_to_v12i32_in_loop(ptr %src, ptr %dst) { ; CHECK-LABEL: zext_v12i8_to_v12i32_in_loop: ; CHECK: ; %bb.0: ; %entry -; CHECK-NEXT: Lloh12: -; CHECK-NEXT: adrp x9, lCPI12_0@PAGE -; CHECK-NEXT: Lloh13: -; CHECK-NEXT: adrp x10, lCPI12_1@PAGE -; CHECK-NEXT: Lloh14: -; CHECK-NEXT: adrp x11, lCPI12_2@PAGE +; CHECK-NEXT: movi.2d v0, #0000000000000000 ; CHECK-NEXT: mov x8, xzr -; CHECK-NEXT: Lloh15: -; CHECK-NEXT: ldr q0, [x9, lCPI12_0@PAGEOFF] -; CHECK-NEXT: Lloh16: -; CHECK-NEXT: ldr q1, [x10, lCPI12_1@PAGEOFF] -; CHECK-NEXT: Lloh17: -; CHECK-NEXT: ldr q2, [x11, lCPI12_2@PAGEOFF] ; CHECK-NEXT: LBB12_1: ; %loop ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1 -; CHECK-NEXT: ldr q3, [x0, x8] +; CHECK-NEXT: ldr q1, [x0, x8] ; CHECK-NEXT: add x8, x8, #16 ; CHECK-NEXT: cmp x8, #128 -; CHECK-NEXT: tbl.16b v4, { v3 }, v2 -; CHECK-NEXT: tbl.16b v5, { v3 }, v1 -; CHECK-NEXT: tbl.16b v3, { v3 }, v0 -; CHECK-NEXT: stp q5, q4, [x1, #16] -; CHECK-NEXT: str q3, [x1], #64 +; CHECK-NEXT: dup.2d v2, v1[1] +; CHECK-NEXT: dup.4s v3, v1[1] +; CHECK-NEXT: zip1.16b v1, v1, v0 +; CHECK-NEXT: zip1.16b v2, v2, v0 +; CHECK-NEXT: zip1.16b v3, v3, v0 +; CHECK-NEXT: zip1.8h v1, v1, v0 +; CHECK-NEXT: zip1.8h v2, v2, v0 +; CHECK-NEXT: zip1.8h v3, v3, v0 +; CHECK-NEXT: stp q3, q2, [x1, #16] +; CHECK-NEXT: str q1, [x1], #64 ; CHECK-NEXT: b.ne LBB12_1 ; CHECK-NEXT: ; %bb.2: ; %exit ; CHECK-NEXT: ret -; CHECK-NEXT: .loh AdrpLdr Lloh14, Lloh17 -; CHECK-NEXT: .loh AdrpLdr Lloh13, Lloh16 -; CHECK-NEXT: .loh AdrpLdr Lloh12, Lloh15 ; ; CHECK-BE-LABEL: zext_v12i8_to_v12i32_in_loop: ; CHECK-BE: // %bb.0: // %entry @@ -2171,22 +1989,22 @@ define void @zext_v20i8_to_v20i24_in_loop(ptr %src, ptr %dst) { ; CHECK-LABEL: zext_v20i8_to_v20i24_in_loop: ; CHECK: ; %bb.0: ; %entry -; CHECK-NEXT: Lloh18: +; CHECK-NEXT: Lloh0: ; CHECK-NEXT: adrp x9, lCPI20_0@PAGE -; CHECK-NEXT: Lloh19: +; CHECK-NEXT: Lloh1: ; CHECK-NEXT: adrp x10, lCPI20_1@PAGE -; CHECK-NEXT: Lloh20: +; CHECK-NEXT: Lloh2: ; CHECK-NEXT: adrp x11, lCPI20_2@PAGE -; CHECK-NEXT: Lloh21: +; CHECK-NEXT: Lloh3: ; CHECK-NEXT: adrp x12, lCPI20_3@PAGE ; CHECK-NEXT: mov x8, xzr -; CHECK-NEXT: Lloh22: +; CHECK-NEXT: Lloh4: ; CHECK-NEXT: ldr q0, [x9, lCPI20_0@PAGEOFF] -; CHECK-NEXT: Lloh23: +; CHECK-NEXT: Lloh5: ; CHECK-NEXT: ldr q1, [x10, lCPI20_1@PAGEOFF] -; CHECK-NEXT: Lloh24: +; CHECK-NEXT: Lloh6: ; CHECK-NEXT: ldr q2, [x11, lCPI20_2@PAGEOFF] -; CHECK-NEXT: Lloh25: +; CHECK-NEXT: Lloh7: ; CHECK-NEXT: ldr q3, [x12, lCPI20_3@PAGEOFF] ; CHECK-NEXT: LBB20_1: ; %loop ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1 @@ -2207,10 +2025,10 @@ ; CHECK-NEXT: b.ne LBB20_1 ; CHECK-NEXT: ; %bb.2: ; %exit ; CHECK-NEXT: ret -; CHECK-NEXT: .loh AdrpLdr Lloh21, Lloh25 -; CHECK-NEXT: .loh AdrpLdr Lloh20, Lloh24 -; CHECK-NEXT: .loh AdrpLdr Lloh19, Lloh23 -; CHECK-NEXT: .loh AdrpLdr Lloh18, Lloh22 +; CHECK-NEXT: .loh AdrpLdr Lloh3, Lloh7 +; CHECK-NEXT: .loh AdrpLdr Lloh2, Lloh6 +; CHECK-NEXT: .loh AdrpLdr Lloh1, Lloh5 +; CHECK-NEXT: .loh AdrpLdr Lloh0, Lloh4 ; ; CHECK-BE-LABEL: zext_v20i8_to_v20i24_in_loop: ; CHECK-BE: // %bb.0: // %entry @@ -2498,30 +2316,30 @@ define void @zext_v23i8_to_v23i48_in_loop(ptr %src, ptr %dst) { ; CHECK-LABEL: zext_v23i8_to_v23i48_in_loop: ; CHECK: ; %bb.0: ; %entry -; CHECK-NEXT: Lloh26: +; CHECK-NEXT: Lloh8: ; CHECK-NEXT: adrp x9, lCPI21_0@PAGE -; CHECK-NEXT: Lloh27: +; CHECK-NEXT: Lloh9: ; CHECK-NEXT: adrp x10, lCPI21_1@PAGE -; CHECK-NEXT: Lloh28: +; CHECK-NEXT: Lloh10: ; CHECK-NEXT: adrp x11, lCPI21_2@PAGE ; CHECK-NEXT: mov x8, xzr -; CHECK-NEXT: Lloh29: +; CHECK-NEXT: Lloh11: ; CHECK-NEXT: ldr q0, [x9, lCPI21_0@PAGEOFF] -; CHECK-NEXT: Lloh30: +; CHECK-NEXT: Lloh12: ; CHECK-NEXT: adrp x9, lCPI21_3@PAGE -; CHECK-NEXT: Lloh31: +; CHECK-NEXT: Lloh13: ; CHECK-NEXT: ldr q1, [x10, lCPI21_1@PAGEOFF] -; CHECK-NEXT: Lloh32: +; CHECK-NEXT: Lloh14: ; CHECK-NEXT: adrp x10, lCPI21_4@PAGE -; CHECK-NEXT: Lloh33: +; CHECK-NEXT: Lloh15: ; CHECK-NEXT: ldr q2, [x11, lCPI21_2@PAGEOFF] -; CHECK-NEXT: Lloh34: +; CHECK-NEXT: Lloh16: ; CHECK-NEXT: adrp x11, lCPI21_5@PAGE -; CHECK-NEXT: Lloh35: +; CHECK-NEXT: Lloh17: ; CHECK-NEXT: ldr q3, [x9, lCPI21_3@PAGEOFF] -; CHECK-NEXT: Lloh36: +; CHECK-NEXT: Lloh18: ; CHECK-NEXT: ldr q4, [x10, lCPI21_4@PAGEOFF] -; CHECK-NEXT: Lloh37: +; CHECK-NEXT: Lloh19: ; CHECK-NEXT: ldr q5, [x11, lCPI21_5@PAGEOFF] ; CHECK-NEXT: LBB21_1: ; %loop ; CHECK-NEXT: ; =>This Inner Loop Header: Depth=1 @@ -2549,15 +2367,15 @@ ; CHECK-NEXT: b.ne LBB21_1 ; CHECK-NEXT: ; %bb.2: ; %exit ; CHECK-NEXT: ret -; CHECK-NEXT: .loh AdrpLdr Lloh34, Lloh37 -; CHECK-NEXT: .loh AdrpLdr Lloh32, Lloh36 -; CHECK-NEXT: .loh AdrpLdr Lloh30, Lloh35 -; CHECK-NEXT: .loh AdrpAdrp Lloh28, Lloh34 -; CHECK-NEXT: .loh AdrpLdr Lloh28, Lloh33 -; CHECK-NEXT: .loh AdrpAdrp Lloh27, Lloh32 -; CHECK-NEXT: .loh AdrpLdr Lloh27, Lloh31 -; CHECK-NEXT: .loh AdrpAdrp Lloh26, Lloh30 -; CHECK-NEXT: .loh AdrpLdr Lloh26, Lloh29 +; CHECK-NEXT: .loh AdrpLdr Lloh16, Lloh19 +; CHECK-NEXT: .loh AdrpLdr Lloh14, Lloh18 +; CHECK-NEXT: .loh AdrpLdr Lloh12, Lloh17 +; CHECK-NEXT: .loh AdrpAdrp Lloh10, Lloh16 +; CHECK-NEXT: .loh AdrpLdr Lloh10, Lloh15 +; CHECK-NEXT: .loh AdrpAdrp Lloh9, Lloh14 +; CHECK-NEXT: .loh AdrpLdr Lloh9, Lloh13 +; CHECK-NEXT: .loh AdrpAdrp Lloh8, Lloh12 +; CHECK-NEXT: .loh AdrpLdr Lloh8, Lloh11 ; ; CHECK-BE-LABEL: zext_v23i8_to_v23i48_in_loop: ; CHECK-BE: // %bb.0: // %entry