[llvm] [NFC] [PowerPC] Auto-generate check-zero-vector.ll (PR #151991)

via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 4 08:47:22 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-powerpc

Author: Guy David (guy-david)

<details>
<summary>Changes</summary>

Should make it easier to update the test and highlight the diff against incoming patches, as seen in this PR: https://github.com/llvm/llvm-project/pull/146806.

---

Patch is 29.73 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/151991.diff


1 Files Affected:

- (modified) llvm/test/CodeGen/PowerPC/check-zero-vector.ll (+625-73) 


``````````diff
diff --git a/llvm/test/CodeGen/PowerPC/check-zero-vector.ll b/llvm/test/CodeGen/PowerPC/check-zero-vector.ll
index 59173e22edf26..e6367e65d7200 100644
--- a/llvm/test/CodeGen/PowerPC/check-zero-vector.ll
+++ b/llvm/test/CodeGen/PowerPC/check-zero-vector.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
 ; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu \
 ; RUN:    < %s | FileCheck %s --check-prefix=POWERPC_64LE
 
@@ -10,96 +11,647 @@
 define i32 @test_Greater_than(ptr %colauths, i32 signext %ncols) {
 ; This testcase is manually reduced to isolate the critical code blocks.
 ; It is designed to check for vector comparison specifically for zero vectors.
-; In the vector.body section, we are expecting a comparison instruction (vcmpequh), 
-; merge instructions (vmrghh and vmrglh) which use exactly 2 vectors. 
-; The output of the merge instruction is being used by xxland and finally 
+; In the vector.body section, we are expecting a comparison instruction (vcmpequh),
+; merge instructions (vmrghh and vmrglh) which use exactly 2 vectors.
+; The output of the merge instruction is being used by xxland and finally
 ; accumulated by vadduwm instruction.
-
 ; POWERPC_64LE-LABEL: test_Greater_than:
-; POWERPC_64LE:  .LBB0_6: # %vector.body
+; POWERPC_64LE:       # %bb.0: # %entry
+; POWERPC_64LE-NEXT:    cmpwi 4, 0
+; POWERPC_64LE-NEXT:    ble 0, .LBB0_3
+; POWERPC_64LE-NEXT:  # %bb.1: # %iter.check
+; POWERPC_64LE-NEXT:    clrldi 5, 4, 32
+; POWERPC_64LE-NEXT:    cmplwi 4, 7
+; POWERPC_64LE-NEXT:    bgt 0, .LBB0_4
+; POWERPC_64LE-NEXT:  # %bb.2:
+; POWERPC_64LE-NEXT:    li 4, 0
+; POWERPC_64LE-NEXT:    li 6, 0
+; POWERPC_64LE-NEXT:    b .LBB0_12
+; POWERPC_64LE-NEXT:  .LBB0_3:
+; POWERPC_64LE-NEXT:    li 4, 0
+; POWERPC_64LE-NEXT:    mr 3, 4
+; POWERPC_64LE-NEXT:    blr
+; POWERPC_64LE-NEXT:  .LBB0_4: # %vector.main.loop.iter.check
+; POWERPC_64LE-NEXT:    vspltisw 2, 1
+; POWERPC_64LE-NEXT:    li 7, 0
+; POWERPC_64LE-NEXT:    li 6, 0
+; POWERPC_64LE-NEXT:    cmplwi 4, 64
+; POWERPC_64LE-NEXT:    li 4, 0
+; POWERPC_64LE-NEXT:    blt 0, .LBB0_9
+; POWERPC_64LE-NEXT:  # %bb.5: # %vector.ph
+; POWERPC_64LE-NEXT:    rlwinm 6, 5, 0, 1, 25
+; POWERPC_64LE-NEXT:    addi 4, 3, 64
+; POWERPC_64LE-NEXT:    xxlxor 35, 35, 35
+; POWERPC_64LE-NEXT:    addi 8, 6, -64
+; POWERPC_64LE-NEXT:    xxlxor 36, 36, 36
+; POWERPC_64LE-NEXT:    rldicl 8, 8, 58, 6
+; POWERPC_64LE-NEXT:    xxlxor 37, 37, 37
+; POWERPC_64LE-NEXT:    xxlxor 32, 32, 32
+; POWERPC_64LE-NEXT:    xxlxor 39, 39, 39
+; POWERPC_64LE-NEXT:    xxlxor 33, 33, 33
+; POWERPC_64LE-NEXT:    xxlxor 42, 42, 42
+; POWERPC_64LE-NEXT:    xxlxor 40, 40, 40
+; POWERPC_64LE-NEXT:    addi 8, 8, 1
+; POWERPC_64LE-NEXT:    xxlxor 41, 41, 41
+; POWERPC_64LE-NEXT:    mtctr 8
+; POWERPC_64LE-NEXT:    xxlxor 38, 38, 38
+; POWERPC_64LE-NEXT:    xxlxor 46, 46, 46
+; POWERPC_64LE-NEXT:    xxlxor 43, 43, 43
+; POWERPC_64LE-NEXT:    xxlxor 44, 44, 44
+; POWERPC_64LE-NEXT:    xxlxor 45, 45, 45
+; POWERPC_64LE-NEXT:    xxlxor 49, 49, 49
+; POWERPC_64LE-NEXT:    xxlxor 47, 47, 47
+; POWERPC_64LE-NEXT:    xxlxor 48, 48, 48
+; POWERPC_64LE-NEXT:    .p2align 4
+; POWERPC_64LE-NEXT:  .LBB0_6: # %vector.body
 ; POWERPC_64LE-NEXT:    #
-; POWERPC_64LE-NEXT:    lxv [[R1:[0-9]+]], -64(4)
-; POWERPC_64LE-NEXT:    vcmpequh [[R2:[0-9]+]], [[R2]], [[R3:[0-9]+]]
-; POWERPC_64LE-NEXT:    xxlnor [[R1]], [[R1]], [[R1]]
-; POWERPC_64LE-NEXT:    vmrghh [[R4:[0-9]+]], [[R2]], [[R2]]
-; POWERPC_64LE-NEXT:    vmrglh [[R2]], [[R2]], [[R2]]
-; POWERPC_64LE-NEXT:    xxland [[R5:[0-9]+]], [[R5]], [[R6:[0-9]+]]
-; POWERPC_64LE-NEXT:    xxland [[R1]], [[R1]], [[R6]]
-; POWERPC_64LE-NEXT:    vadduwm [[R7:[0-9]+]], [[R7]], [[R4]]
-; POWERPC_64LE:  .LBB0_10: # %vec.epilog.vector.body
+; POWERPC_64LE-NEXT:    lxv 50, -64(4)
+; POWERPC_64LE-NEXT:    vcmpequh 18, 18, 3
+; POWERPC_64LE-NEXT:    xxlnor 50, 50, 50
+; POWERPC_64LE-NEXT:    vmrghh 19, 18, 18
+; POWERPC_64LE-NEXT:    vmrglh 18, 18, 18
+; POWERPC_64LE-NEXT:    xxland 51, 51, 34
+; POWERPC_64LE-NEXT:    xxland 50, 50, 34
+; POWERPC_64LE-NEXT:    vadduwm 5, 5, 19
+; POWERPC_64LE-NEXT:    lxv 51, -48(4)
+; POWERPC_64LE-NEXT:    vadduwm 4, 4, 18
+; POWERPC_64LE-NEXT:    vcmpequh 19, 19, 3
+; POWERPC_64LE-NEXT:    xxlnor 51, 51, 51
+; POWERPC_64LE-NEXT:    vmrghh 18, 19, 19
+; POWERPC_64LE-NEXT:    vmrglh 19, 19, 19
+; POWERPC_64LE-NEXT:    xxland 50, 50, 34
+; POWERPC_64LE-NEXT:    xxland 51, 51, 34
+; POWERPC_64LE-NEXT:    vadduwm 7, 7, 18
+; POWERPC_64LE-NEXT:    lxv 50, -32(4)
+; POWERPC_64LE-NEXT:    vadduwm 0, 0, 19
+; POWERPC_64LE-NEXT:    vcmpequh 18, 18, 3
+; POWERPC_64LE-NEXT:    xxlnor 50, 50, 50
+; POWERPC_64LE-NEXT:    vmrghh 19, 18, 18
+; POWERPC_64LE-NEXT:    vmrglh 18, 18, 18
+; POWERPC_64LE-NEXT:    xxland 51, 51, 34
+; POWERPC_64LE-NEXT:    xxland 50, 50, 34
+; POWERPC_64LE-NEXT:    vadduwm 10, 10, 19
+; POWERPC_64LE-NEXT:    lxv 51, -16(4)
+; POWERPC_64LE-NEXT:    vadduwm 1, 1, 18
+; POWERPC_64LE-NEXT:    vcmpequh 19, 19, 3
+; POWERPC_64LE-NEXT:    xxlnor 51, 51, 51
+; POWERPC_64LE-NEXT:    vmrghh 18, 19, 19
+; POWERPC_64LE-NEXT:    vmrglh 19, 19, 19
+; POWERPC_64LE-NEXT:    xxland 50, 50, 34
+; POWERPC_64LE-NEXT:    xxland 51, 51, 34
+; POWERPC_64LE-NEXT:    vadduwm 9, 9, 18
+; POWERPC_64LE-NEXT:    lxv 50, 0(4)
+; POWERPC_64LE-NEXT:    vadduwm 8, 8, 19
+; POWERPC_64LE-NEXT:    vcmpequh 18, 18, 3
+; POWERPC_64LE-NEXT:    xxlnor 50, 50, 50
+; POWERPC_64LE-NEXT:    vmrghh 19, 18, 18
+; POWERPC_64LE-NEXT:    vmrglh 18, 18, 18
+; POWERPC_64LE-NEXT:    xxland 51, 51, 34
+; POWERPC_64LE-NEXT:    xxland 50, 50, 34
+; POWERPC_64LE-NEXT:    vadduwm 14, 14, 19
+; POWERPC_64LE-NEXT:    lxv 51, 16(4)
+; POWERPC_64LE-NEXT:    vadduwm 6, 6, 18
+; POWERPC_64LE-NEXT:    vcmpequh 19, 19, 3
+; POWERPC_64LE-NEXT:    xxlnor 51, 51, 51
+; POWERPC_64LE-NEXT:    vmrghh 18, 19, 19
+; POWERPC_64LE-NEXT:    vmrglh 19, 19, 19
+; POWERPC_64LE-NEXT:    xxland 50, 50, 34
+; POWERPC_64LE-NEXT:    xxland 51, 51, 34
+; POWERPC_64LE-NEXT:    vadduwm 12, 12, 18
+; POWERPC_64LE-NEXT:    lxv 50, 32(4)
+; POWERPC_64LE-NEXT:    vadduwm 11, 11, 19
+; POWERPC_64LE-NEXT:    vcmpequh 18, 18, 3
+; POWERPC_64LE-NEXT:    xxlnor 50, 50, 50
+; POWERPC_64LE-NEXT:    vmrghh 19, 18, 18
+; POWERPC_64LE-NEXT:    vmrglh 18, 18, 18
+; POWERPC_64LE-NEXT:    xxland 51, 51, 34
+; POWERPC_64LE-NEXT:    xxland 50, 50, 34
+; POWERPC_64LE-NEXT:    vadduwm 17, 17, 19
+; POWERPC_64LE-NEXT:    lxv 51, 48(4)
+; POWERPC_64LE-NEXT:    addi 4, 4, 128
+; POWERPC_64LE-NEXT:    vadduwm 13, 13, 18
+; POWERPC_64LE-NEXT:    vcmpequh 19, 19, 3
+; POWERPC_64LE-NEXT:    xxlnor 51, 51, 51
+; POWERPC_64LE-NEXT:    vmrghh 18, 19, 19
+; POWERPC_64LE-NEXT:    xxland 50, 50, 34
+; POWERPC_64LE-NEXT:    vadduwm 16, 16, 18
+; POWERPC_64LE-NEXT:    vmrglh 18, 19, 19
+; POWERPC_64LE-NEXT:    xxland 50, 50, 34
+; POWERPC_64LE-NEXT:    vadduwm 15, 15, 18
+; POWERPC_64LE-NEXT:    bdnz .LBB0_6
+; POWERPC_64LE-NEXT:  # %bb.7: # %middle.block
+; POWERPC_64LE-NEXT:    vadduwm 3, 0, 4
+; POWERPC_64LE-NEXT:    vadduwm 4, 7, 5
+; POWERPC_64LE-NEXT:    li 4, 0
+; POWERPC_64LE-NEXT:    cmpld 6, 5
+; POWERPC_64LE-NEXT:    vadduwm 4, 10, 4
+; POWERPC_64LE-NEXT:    vadduwm 3, 1, 3
+; POWERPC_64LE-NEXT:    vadduwm 3, 8, 3
+; POWERPC_64LE-NEXT:    vadduwm 4, 9, 4
+; POWERPC_64LE-NEXT:    vadduwm 4, 14, 4
+; POWERPC_64LE-NEXT:    vadduwm 3, 6, 3
+; POWERPC_64LE-NEXT:    vadduwm 3, 11, 3
+; POWERPC_64LE-NEXT:    vadduwm 4, 12, 4
+; POWERPC_64LE-NEXT:    vadduwm 4, 17, 4
+; POWERPC_64LE-NEXT:    vadduwm 3, 13, 3
+; POWERPC_64LE-NEXT:    vadduwm 3, 15, 3
+; POWERPC_64LE-NEXT:    vadduwm 4, 16, 4
+; POWERPC_64LE-NEXT:    vadduwm 3, 3, 4
+; POWERPC_64LE-NEXT:    xxswapd 36, 35
+; POWERPC_64LE-NEXT:    vadduwm 3, 3, 4
+; POWERPC_64LE-NEXT:    xxspltw 36, 35, 2
+; POWERPC_64LE-NEXT:    vadduwm 3, 3, 4
+; POWERPC_64LE-NEXT:    vextuwrx 4, 4, 3
+; POWERPC_64LE-NEXT:    beq 0, .LBB0_14
+; POWERPC_64LE-NEXT:  # %bb.8: # %vec.epilog.iter.check
+; POWERPC_64LE-NEXT:    andi. 8, 5, 56
+; POWERPC_64LE-NEXT:    beq 0, .LBB0_12
+; POWERPC_64LE-NEXT:  .LBB0_9: # %vec.epilog.ph
+; POWERPC_64LE-NEXT:    mr 8, 6
+; POWERPC_64LE-NEXT:    rlwinm 6, 5, 0, 1, 28
+; POWERPC_64LE-NEXT:    rldimi 4, 7, 32, 0
+; POWERPC_64LE-NEXT:    xxlxor 36, 36, 36
+; POWERPC_64LE-NEXT:    xxlxor 37, 37, 37
+; POWERPC_64LE-NEXT:    rldimi 7, 7, 32, 0
+; POWERPC_64LE-NEXT:    mtvsrdd 35, 7, 4
+; POWERPC_64LE-NEXT:    sub 7, 6, 8
+; POWERPC_64LE-NEXT:    sldi 4, 8, 1
+; POWERPC_64LE-NEXT:    addi 7, 7, -8
+; POWERPC_64LE-NEXT:    add 4, 3, 4
+; POWERPC_64LE-NEXT:    rldicl 7, 7, 61, 3
+; POWERPC_64LE-NEXT:    addi 7, 7, 1
+; POWERPC_64LE-NEXT:    mtctr 7
+; POWERPC_64LE-NEXT:    .p2align 4
+; POWERPC_64LE-NEXT:  .LBB0_10: # %vec.epilog.vector.body
 ; POWERPC_64LE-NEXT:    #
-; POWERPC_64LE-NEXT:    lxv [[R8:[0-9]+]], 0(4)
+; POWERPC_64LE-NEXT:    lxv 32, 0(4)
 ; POWERPC_64LE-NEXT:    addi 4, 4, 16
-; POWERPC_64LE-NEXT:    vcmpequh [[R9:[0-9]+]], [[R9]], [[R10:[0-9]+]]
-; POWERPC_64LE-NEXT:    xxlnor [[R8]], [[R8]], [[R8]]
-; POWERPC_64LE-NEXT:    vmrglh [[R11:[0-9]+]], [[R9]], [[R9]]
-; POWERPC_64LE-NEXT:    vmrghh [[R9]], [[R9]], [[R9]]
-; POWERPC_64LE-NEXT:    xxland [[R12:[0-9]+]], [[R12]], [[R6]]
-; POWERPC_64LE-NEXT:    xxland [[R8]], [[R8]], [[R6]]
-; POWERPC_64LE-NEXT:    vadduwm [[R7]], [[R7]], [[R9]]
-; POWERPC_64LE-NEXT:    vadduwm [[R3]], [[R3]], [[R11]]
+; POWERPC_64LE-NEXT:    vcmpequh 0, 0, 4
+; POWERPC_64LE-NEXT:    xxlnor 32, 32, 32
+; POWERPC_64LE-NEXT:    vmrglh 1, 0, 0
+; POWERPC_64LE-NEXT:    vmrghh 0, 0, 0
+; POWERPC_64LE-NEXT:    xxland 33, 33, 34
+; POWERPC_64LE-NEXT:    xxland 32, 32, 34
+; POWERPC_64LE-NEXT:    vadduwm 5, 5, 0
+; POWERPC_64LE-NEXT:    vadduwm 3, 3, 1
 ; POWERPC_64LE-NEXT:    bdnz .LBB0_10
-; POWERPC_64LE:    blr
+; POWERPC_64LE-NEXT:  # %bb.11: # %vec.epilog.middle.block
+; POWERPC_64LE-NEXT:    vadduwm 2, 3, 5
+; POWERPC_64LE-NEXT:    li 4, 0
+; POWERPC_64LE-NEXT:    cmpld 6, 5
+; POWERPC_64LE-NEXT:    xxswapd 35, 34
+; POWERPC_64LE-NEXT:    vadduwm 2, 2, 3
+; POWERPC_64LE-NEXT:    xxspltw 35, 34, 2
+; POWERPC_64LE-NEXT:    vadduwm 2, 2, 3
+; POWERPC_64LE-NEXT:    vextuwrx 4, 4, 2
+; POWERPC_64LE-NEXT:    beq 0, .LBB0_14
+; POWERPC_64LE-NEXT:  .LBB0_12: # %for.body.preheader
+; POWERPC_64LE-NEXT:    sldi 7, 6, 1
+; POWERPC_64LE-NEXT:    sub 5, 5, 6
+; POWERPC_64LE-NEXT:    add 3, 7, 3
+; POWERPC_64LE-NEXT:    mtctr 5
+; POWERPC_64LE-NEXT:    addi 3, 3, -2
+; POWERPC_64LE-NEXT:    .p2align 5
+; POWERPC_64LE-NEXT:  .LBB0_13: # %for.body
+; POWERPC_64LE-NEXT:    #
+; POWERPC_64LE-NEXT:    lhzu 5, 2(3)
+; POWERPC_64LE-NEXT:    cntlzw 5, 5
+; POWERPC_64LE-NEXT:    srwi 5, 5, 5
+; POWERPC_64LE-NEXT:    xori 5, 5, 1
+; POWERPC_64LE-NEXT:    add 4, 4, 5
+; POWERPC_64LE-NEXT:    bdnz .LBB0_13
+; POWERPC_64LE-NEXT:  .LBB0_14: # %for.cond.cleanup
+; POWERPC_64LE-NEXT:    mr 3, 4
+; POWERPC_64LE-NEXT:    blr
 ;
 ; POWERPC_64-LABEL: test_Greater_than:
-; POWERPC_64:  L..BB0_6: # %vector.body
+; POWERPC_64:       # %bb.0: # %entry
+; POWERPC_64-NEXT:    cmpwi 4, 1
+; POWERPC_64-NEXT:    blt 0, L..BB0_3
+; POWERPC_64-NEXT:  # %bb.1: # %iter.check
+; POWERPC_64-NEXT:    clrldi 5, 4, 32
+; POWERPC_64-NEXT:    cmplwi 4, 7
+; POWERPC_64-NEXT:    bgt 0, L..BB0_4
+; POWERPC_64-NEXT:  # %bb.2:
+; POWERPC_64-NEXT:    li 4, 0
+; POWERPC_64-NEXT:    li 6, 0
+; POWERPC_64-NEXT:    b L..BB0_12
+; POWERPC_64-NEXT:  L..BB0_3:
+; POWERPC_64-NEXT:    li 4, 0
+; POWERPC_64-NEXT:    mr 3, 4
+; POWERPC_64-NEXT:    blr
+; POWERPC_64-NEXT:  L..BB0_4: # %vector.main.loop.iter.check
+; POWERPC_64-NEXT:    vspltisw 2, 1
+; POWERPC_64-NEXT:    li 7, 0
+; POWERPC_64-NEXT:    li 6, 0
+; POWERPC_64-NEXT:    cmplwi 4, 64
+; POWERPC_64-NEXT:    li 4, 0
+; POWERPC_64-NEXT:    blt 0, L..BB0_9
+; POWERPC_64-NEXT:  # %bb.5: # %vector.ph
+; POWERPC_64-NEXT:    rlwinm 6, 5, 0, 1, 25
+; POWERPC_64-NEXT:    addi 4, 3, 64
+; POWERPC_64-NEXT:    xxlxor 35, 35, 35
+; POWERPC_64-NEXT:    addi 8, 6, -64
+; POWERPC_64-NEXT:    xxlxor 36, 36, 36
+; POWERPC_64-NEXT:    rldicl 8, 8, 58, 6
+; POWERPC_64-NEXT:    xxlxor 37, 37, 37
+; POWERPC_64-NEXT:    xxlxor 32, 32, 32
+; POWERPC_64-NEXT:    xxlxor 39, 39, 39
+; POWERPC_64-NEXT:    xxlxor 33, 33, 33
+; POWERPC_64-NEXT:    xxlxor 42, 42, 42
+; POWERPC_64-NEXT:    xxlxor 40, 40, 40
+; POWERPC_64-NEXT:    addi 8, 8, 1
+; POWERPC_64-NEXT:    xxlxor 41, 41, 41
+; POWERPC_64-NEXT:    mtctr 8
+; POWERPC_64-NEXT:    xxlxor 38, 38, 38
+; POWERPC_64-NEXT:    xxlxor 46, 46, 46
+; POWERPC_64-NEXT:    xxlxor 43, 43, 43
+; POWERPC_64-NEXT:    xxlxor 44, 44, 44
+; POWERPC_64-NEXT:    xxlxor 45, 45, 45
+; POWERPC_64-NEXT:    xxlxor 49, 49, 49
+; POWERPC_64-NEXT:    xxlxor 47, 47, 47
+; POWERPC_64-NEXT:    xxlxor 48, 48, 48
+; POWERPC_64-NEXT:    .align 4
+; POWERPC_64-NEXT:  L..BB0_6: # %vector.body
 ; POWERPC_64-NEXT:    #
-; POWERPC_64-NEXT:    lxv [[R1:[0-9]+]], -64(4)
-; POWERPC_64-NEXT:    vcmpequh [[R2:[0-9]+]], [[R2]], [[R3:[0-9]+]]
-; POWERPC_64-NEXT:    xxlnor [[R1]], [[R1]], [[R1]]
-; POWERPC_64-NEXT:    vmrglh [[R4:[0-9]+]], [[R2]], [[R2]]
-; POWERPC_64-NEXT:    vmrghh [[R2]], [[R2]], [[R2]]
-; POWERPC_64-NEXT:    xxland [[R5:[0-9]+]], [[R5]], [[R6:[0-9]+]]
-; POWERPC_64-NEXT:    xxland [[R1]], [[R1]], [[R6]]
-; POWERPC_64-NEXT:    vadduwm [[R7:[0-9]+]], [[R7]], [[R4]]
-; POWERPC_64:  L..BB0_10: # %vec.epilog.vector.body
+; POWERPC_64-NEXT:    lxv 50, -64(4)
+; POWERPC_64-NEXT:    vcmpequh 18, 18, 3
+; POWERPC_64-NEXT:    xxlnor 50, 50, 50
+; POWERPC_64-NEXT:    vmrglh 19, 18, 18
+; POWERPC_64-NEXT:    vmrghh 18, 18, 18
+; POWERPC_64-NEXT:    xxland 51, 51, 34
+; POWERPC_64-NEXT:    xxland 50, 50, 34
+; POWERPC_64-NEXT:    vadduwm 5, 5, 19
+; POWERPC_64-NEXT:    lxv 51, -48(4)
+; POWERPC_64-NEXT:    vadduwm 4, 4, 18
+; POWERPC_64-NEXT:    vcmpequh 19, 19, 3
+; POWERPC_64-NEXT:    xxlnor 51, 51, 51
+; POWERPC_64-NEXT:    vmrglh 18, 19, 19
+; POWERPC_64-NEXT:    vmrghh 19, 19, 19
+; POWERPC_64-NEXT:    xxland 50, 50, 34
+; POWERPC_64-NEXT:    xxland 51, 51, 34
+; POWERPC_64-NEXT:    vadduwm 7, 7, 18
+; POWERPC_64-NEXT:    lxv 50, -32(4)
+; POWERPC_64-NEXT:    vadduwm 0, 0, 19
+; POWERPC_64-NEXT:    vcmpequh 18, 18, 3
+; POWERPC_64-NEXT:    xxlnor 50, 50, 50
+; POWERPC_64-NEXT:    vmrglh 19, 18, 18
+; POWERPC_64-NEXT:    vmrghh 18, 18, 18
+; POWERPC_64-NEXT:    xxland 51, 51, 34
+; POWERPC_64-NEXT:    xxland 50, 50, 34
+; POWERPC_64-NEXT:    vadduwm 10, 10, 19
+; POWERPC_64-NEXT:    lxv 51, -16(4)
+; POWERPC_64-NEXT:    vadduwm 1, 1, 18
+; POWERPC_64-NEXT:    vcmpequh 19, 19, 3
+; POWERPC_64-NEXT:    xxlnor 51, 51, 51
+; POWERPC_64-NEXT:    vmrglh 18, 19, 19
+; POWERPC_64-NEXT:    vmrghh 19, 19, 19
+; POWERPC_64-NEXT:    xxland 50, 50, 34
+; POWERPC_64-NEXT:    xxland 51, 51, 34
+; POWERPC_64-NEXT:    vadduwm 9, 9, 18
+; POWERPC_64-NEXT:    lxv 50, 0(4)
+; POWERPC_64-NEXT:    vadduwm 8, 8, 19
+; POWERPC_64-NEXT:    vcmpequh 18, 18, 3
+; POWERPC_64-NEXT:    xxlnor 50, 50, 50
+; POWERPC_64-NEXT:    vmrglh 19, 18, 18
+; POWERPC_64-NEXT:    vmrghh 18, 18, 18
+; POWERPC_64-NEXT:    xxland 51, 51, 34
+; POWERPC_64-NEXT:    xxland 50, 50, 34
+; POWERPC_64-NEXT:    vadduwm 14, 14, 19
+; POWERPC_64-NEXT:    lxv 51, 16(4)
+; POWERPC_64-NEXT:    vadduwm 6, 6, 18
+; POWERPC_64-NEXT:    vcmpequh 19, 19, 3
+; POWERPC_64-NEXT:    xxlnor 51, 51, 51
+; POWERPC_64-NEXT:    vmrglh 18, 19, 19
+; POWERPC_64-NEXT:    vmrghh 19, 19, 19
+; POWERPC_64-NEXT:    xxland 50, 50, 34
+; POWERPC_64-NEXT:    xxland 51, 51, 34
+; POWERPC_64-NEXT:    vadduwm 12, 12, 18
+; POWERPC_64-NEXT:    lxv 50, 32(4)
+; POWERPC_64-NEXT:    vadduwm 11, 11, 19
+; POWERPC_64-NEXT:    vcmpequh 18, 18, 3
+; POWERPC_64-NEXT:    xxlnor 50, 50, 50
+; POWERPC_64-NEXT:    vmrglh 19, 18, 18
+; POWERPC_64-NEXT:    vmrghh 18, 18, 18
+; POWERPC_64-NEXT:    xxland 51, 51, 34
+; POWERPC_64-NEXT:    xxland 50, 50, 34
+; POWERPC_64-NEXT:    vadduwm 17, 17, 19
+; POWERPC_64-NEXT:    lxv 51, 48(4)
+; POWERPC_64-NEXT:    addi 4, 4, 128
+; POWERPC_64-NEXT:    vadduwm 13, 13, 18
+; POWERPC_64-NEXT:    vcmpequh 19, 19, 3
+; POWERPC_64-NEXT:    xxlnor 51, 51, 51
+; POWERPC_64-NEXT:    vmrglh 18, 19, 19
+; POWERPC_64-NEXT:    xxland 50, 50, 34
+; POWERPC_64-NEXT:    vadduwm 16, 16, 18
+; POWERPC_64-NEXT:    vmrghh 18, 19, 19
+; POWERPC_64-NEXT:    xxland 50, 50, 34
+; POWERPC_64-NEXT:    vadduwm 15, 15, 18
+; POWERPC_64-NEXT:    bdnz L..BB0_6
+; POWERPC_64-NEXT:  # %bb.7: # %middle.block
+; POWERPC_64-NEXT:    vadduwm 3, 0, 4
+; POWERPC_64-NEXT:    vadduwm 4, 7, 5
+; POWERPC_64-NEXT:    li 4, 0
+; POWERPC_64-NEXT:    cmpld 6, 5
+; POWERPC_64-NEXT:    vadduwm 4, 10, 4
+; POWERPC_64-NEXT:    vadduwm 3, 1, 3
+; POWERPC_64-NEXT:    vadduwm 3, 8, 3
+; POWERPC_64-NEXT:    vadduwm 4, 9, 4
+; POWERPC_64-NEXT:    vadduwm 4, 14, 4
+; POWERPC_64-NEXT:    vadduwm 3, 6, 3
+; POWERPC_64-NEXT:    vadduwm 3, 11, 3
+; POWERPC_64-NEXT:    vadduwm 4, 12, 4
+; POWERPC_64-NEXT:    vadduwm 4, 17, 4
+; POWERPC_64-NEXT:    vadduwm 3, 13, 3
+; POWERPC_64-NEXT:    vadduwm 3, 15, 3
+; POWERPC_64-NEXT:    vadduwm 4, 16, 4
+; POWERPC_64-NEXT:    vadduwm 3, 3, 4
+; POWERPC_64-NEXT:    xxswapd 36, 35
+; POWERPC_64-NEXT:    vadduwm 3, 3, 4
+; POWERPC_64-NEXT:    xxspltw 36, 35, 1
+; POWERPC_64-NEXT:    vadduwm 3, 3, 4
+; POWERPC_64-NEXT:    vextuwlx 4, 4, 3
+; POWERPC_64-NEXT:    beq 0, L..BB0_14
+; POWERPC_64-NEXT:  # %bb.8: # %vec.epilog.iter.check
+; POWERPC_64-NEXT:    andi. 8, 5, 56
+; POWERPC_64-NEXT:    beq 0, L..BB0_12
+; POWERPC_64-NEXT:  L..BB0_9: # %vec.epilog.ph
+; POWERPC_64-NEXT:    li 9, 0
+; POWERPC_64-NEXT:    mr 8, 6
+; POWERPC_64-NEXT:    rlwinm 6, 5, 0, 1, 28
+; POWERPC_64-NEXT:    rldimi 7, 7, 32, 0
+; POWERPC_64-NEXT:    xxlxor 36, 36, 36
+; POWERPC_64-NEXT:    rldimi 9, 4, 32, 0
+; POWERPC_64-NEXT:    sldi 4, 8, 1
+; POWERPC_64-NEXT:    xxlxor 37, 37, 37
+; POWERPC_64-NEXT:    mtvsrdd 35, 9, 7
+; POWERPC_64-NEXT:    sub 7, 6, 8
+; POWERPC_64-NEXT:    add 4, 3, 4
+; POWERPC_64-NEXT:    addi 7, 7, -8
+; POWERPC_64-NEXT:    rldicl 7, 7, 61, 3
+; POWERPC_64-NEXT:    addi 7, 7, 1
+; POWERPC_64-NEXT:    mtctr 7
+; POWERPC_64-NEXT:    .align 4
+; POWERPC_64-NEXT:  L..BB0_10: # %vec.epilog.vector.body
 ; POWERPC_64-NEXT:    #
-; POWERPC_64-NEXT:    lxv [[R8:[0-9]+]], 0(4)
+; POWERPC_64-NEXT:    lxv 32, 0(4)
 ; POWERPC_64-NEXT:    addi 4, 4, 16
-; POWERPC_64-NEXT:    vcmpequh [[R9:[0-9]+]], [[R9]], [[R10:[0-9]+]]
-; POWERPC_64-NEXT:    xxlnor [[R8]], [[R8]], [[R8]]
-; POWERPC_64-NEXT:    vmrghh [[R11:[0-9]+]], [[R9]], [[R9]]
-; POWERPC_64-NEXT:    vmrglh [[R9]], [[R9]], [[R9]]
-; POWERPC_64-NEXT:    xxland [[R12:[0-9]+]], [[R12]], [[R6]]
-; POWERPC_64-NEXT:    xxland [[R8]], [[R8]], [[R6]]
-; POWERPC_64-NEXT:    vadduwm [[R7]], [[R7]], [[R9]]
-; POWERPC_64-NEXT:    vadduwm [[R3]], [[R3]], [[R11]]
+; POWERPC_64-NEXT:    vcmpequh 0, 0, 4
+; POWERPC_64-NEXT:    xxlnor 32, 32, 32
+; POWERPC_64-NEXT:    vmrghh 1, 0, 0
+; POWERPC_64-NEXT:    vmrglh 0, 0, 0
+; POWERPC_64-NEXT:    xxland 33, 33, 34
+; POWERPC_64-NEXT:    xxland 32, 32, 34
+; POWERPC_64-NEXT:    vadduwm 5, 5, 0
+; POWERPC_64-NEXT:    vadduwm 3, 3, 1
 ; POWERPC_64-NEXT:    bdnz L..BB0_10
-; POWERPC_64:    blr
+; POWERPC_64-NEXT:  # %bb.11: # %vec.epilog.middle.block
+; POWERPC_64-NEXT:    vadduwm 2, 3, 5
+; POWERPC_64-NEXT:    li 4, 0
+; POWERPC_64-NEXT:    cmpld 6, 5
+; POWERPC_64-NEXT:    xxswapd 35, 34
+; POWERPC_64-NEXT:    vadduwm 2, 2, 3
+; POWERPC_64-NEXT:    xxspltw 35, 34, 1
+; POWERPC_64-NEXT:    vadduwm 2, 2, 3
+; POWERPC_64-NEXT:    vextuwlx 4, 4, 2
+; POWERPC_64-NEXT:    beq 0, L..BB0_14
+; POWERPC_64-NEXT:  L..BB0_12: # %for.body.preheader
+; POWERPC_64-NEXT:    sldi 7, 6, 1
+; POWERPC_64-NEXT:    sub 5, 5, 6
+; POWERPC_64-NEXT:    add 3, 7, 3
+; POWERPC_64-NEXT:    mtctr 5
+; POWERPC_64-NEXT:    addi 3, 3, -2
+; POWERPC_64-NEXT:    .align 5
+; POWERPC_64-NEXT:  L..BB0_13: # %for.body
+; POWERPC_64-NEXT:    #
+; POWERPC_64-NEXT:    lhzu 5, 2(3)
+; POWERPC_64-NEXT:    cntlzw 5, 5
+; POWERPC_64-NEXT:    srwi 5, 5, 5
+; POWERPC_64-NEXT:    xori 5, 5, 1
+; POWERPC_64-NEXT:    add 4, 4, 5
+; POWERPC_64-NEXT:    bdnz L..BB0_13
+; POWERPC_64-NEXT:  L..BB0_14: # %for.cond.cleanup
+; POWERPC_64-NEXT:    mr 3, 4
+; POWERPC_64-NEXT:    blr
 ;
 ; POWERPC_32-LABEL: test_Greater_than:
-; POWERPC_32:  L..BB0_7: # %vector.body
+; POWERPC_32:       # %bb.0: # %entry
+; POWERPC_32-NEXT:    cmpwi 4, 0
+; POWERPC_32-NEXT:    ble 0, L..BB0_3
+; POWERPC_32-NEXT:  # %bb.1: # %iter.check
+; POWER...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/151991


More information about the llvm-commits mailing list