diff options
author | Guy David <guyda96@gmail.com> | 2025-08-04 18:41:40 +0300 |
---|---|---|
committer | Guy David <guyda96@gmail.com> | 2025-08-04 18:43:28 +0300 |
commit | 5d6d051eb61c23aaab94add7d91a788afd11bb62 (patch) | |
tree | e19ceb2358a636fc8d80f7ea1e76c8d51fdcf104 | |
parent | cd834449a6d551cace6afad798ffad318f4ff325 (diff) | |
download | llvm-users/guy-david/powerpc-auto-generate-check-zero-vector.ll.zip llvm-users/guy-david/powerpc-auto-generate-check-zero-vector.ll.tar.gz llvm-users/guy-david/powerpc-auto-generate-check-zero-vector.ll.tar.bz2 |
[NFC] [PowerPC] Auto-generate check-zero-vector.llusers/guy-david/powerpc-auto-generate-check-zero-vector.ll
Should make it easier to update the test and highlight the diff against
incoming patches.
-rw-r--r-- | llvm/test/CodeGen/PowerPC/check-zero-vector.ll | 698 |
1 files changed, 625 insertions, 73 deletions
diff --git a/llvm/test/CodeGen/PowerPC/check-zero-vector.ll b/llvm/test/CodeGen/PowerPC/check-zero-vector.ll index 59173e2..e6367e6 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 +; POWERPC_32-NEXT: cmplwi 4, 7 +; POWERPC_32-NEXT: bgt 0, L..BB0_4 +; POWERPC_32-NEXT: # %bb.2: +; POWERPC_32-NEXT: li 7, 0 +; POWERPC_32-NEXT: li 6, 0 +; POWERPC_32-NEXT: li 5, 0 +; POWERPC_32-NEXT: b L..BB0_13 +; POWERPC_32-NEXT: L..BB0_3: +; POWERPC_32-NEXT: li 5, 0 +; POWERPC_32-NEXT: mr 3, 5 +; POWERPC_32-NEXT: blr +; POWERPC_32-NEXT: L..BB0_4: # %vector.main.loop.iter.check +; POWERPC_32-NEXT: lis 6, 32767 +; POWERPC_32-NEXT: vspltisw 2, 1 +; POWERPC_32-NEXT: li 5, 0 +; POWERPC_32-NEXT: cmplwi 4, 64 +; POWERPC_32-NEXT: ori 8, 6, 65472 +; POWERPC_32-NEXT: bge 0, L..BB0_6 +; POWERPC_32-NEXT: # %bb.5: +; POWERPC_32-NEXT: li 7, 0 +; POWERPC_32-NEXT: li 6, 0 +; POWERPC_32-NEXT: b L..BB0_10 +; POWERPC_32-NEXT: L..BB0_6: # %vector.ph +; POWERPC_32-NEXT: and 6, 4, 8 +; POWERPC_32-NEXT: xxlxor 35, 35, 35 +; POWERPC_32-NEXT: li 7, 0 +; POWERPC_32-NEXT: li 9, 0 +; POWERPC_32-NEXT: mr 10, 3 +; POWERPC_32-NEXT: xxlxor 36, 36, 36 +; POWERPC_32-NEXT: xxlxor 37, 37, 37 +; POWERPC_32-NEXT: xxlxor 39, 39, 39 +; POWERPC_32-NEXT: xxlxor 40, 40, 40 +; POWERPC_32-NEXT: xxlxor 32, 32, 32 +; POWERPC_32-NEXT: xxlxor 45, 45, 45 +; POWERPC_32-NEXT: xxlxor 41, 41, 41 +; POWERPC_32-NEXT: xxlxor 42, 42, 42 +; POWERPC_32-NEXT: xxlxor 33, 33, 33 +; POWERPC_32-NEXT: xxlxor 46, 46, 46 +; POWERPC_32-NEXT: xxlxor 43, 43, 43 +; POWERPC_32-NEXT: xxlxor 44, 44, 44 +; POWERPC_32-NEXT: xxlxor 38, 38, 38 +; POWERPC_32-NEXT: xxlxor 48, 48, 48 +; POWERPC_32-NEXT: xxlxor 47, 47, 47 +; POWERPC_32-NEXT: xxlxor 49, 49, 49 +; POWERPC_32-NEXT: .align 4 +; POWERPC_32-NEXT: L..BB0_7: # %vector.body ; POWERPC_32-NEXT: # -; POWERPC_32-NEXT: lxv [[R1:[0-9]+]], 0(10) -; POWERPC_32-NEXT: addic [[R13:[0-9]+]], [[R13]], 64 -; POWERPC_32-NEXT: addze [[R14:[0-9]+]], [[R14]] -; POWERPC_32-NEXT: xor [[R15:[0-9]+]], [[R13]], [[R16:[0-9]+]] -; POWERPC_32-NEXT: or. [[R15]], [[R15]], [[R14]] -; POWERPC_32-NEXT: vcmpequh [[R2:[0-9]+]], [[R2]], [[R3:[0-9]+]] -; POWERPC_32-NEXT: xxlnor [[R1]], [[R1]], [[R1]] -; POWERPC_32-NEXT: vmrglh [[R4:[0-9]+]], [[R2]], [[R2]] -; POWERPC_32-NEXT: vmrghh [[R2]], [[R2]], [[R2]] -; POWERPC_32-NEXT: xxland [[R5:[0-9]+]], [[R5]], [[R6:[0-9]+]] -; POWERPC_32-NEXT: xxland [[R1]], [[R1]], [[R6]] -; POWERPC_32-NEXT: vadduwm [[R7:[0-9]+]], [[R7]], [[R4]] -; POWERPC_32: L..BB0_11: # %vec.epilog.vector.body +; POWERPC_32-NEXT: lxv 50, 0(10) +; POWERPC_32-NEXT: addic 9, 9, 64 +; POWERPC_32-NEXT: addze 5, 5 +; POWERPC_32-NEXT: xor 11, 9, 6 +; POWERPC_32-NEXT: or. 11, 11, 5 +; POWERPC_32-NEXT: vcmpequh 18, 18, 3 +; POWERPC_32-NEXT: xxlnor 50, 50, 50 +; POWERPC_32-NEXT: vmrglh 19, 18, 18 +; POWERPC_32-NEXT: vmrghh 18, 18, 18 +; POWERPC_32-NEXT: xxland 51, 51, 34 +; POWERPC_32-NEXT: xxland 50, 50, 34 +; POWERPC_32-NEXT: vadduwm 5, 5, 19 +; POWERPC_32-NEXT: lxv 51, 16(10) +; POWERPC_32-NEXT: vadduwm 4, 4, 18 +; POWERPC_32-NEXT: vcmpequh 19, 19, 3 +; POWERPC_32-NEXT: xxlnor 51, 51, 51 +; POWERPC_32-NEXT: vmrglh 18, 19, 19 +; POWERPC_32-NEXT: vmrghh 19, 19, 19 +; POWERPC_32-NEXT: xxland 50, 50, 34 +; POWERPC_32-NEXT: xxland 51, 51, 34 +; POWERPC_32-NEXT: vadduwm 8, 8, 18 +; POWERPC_32-NEXT: lxv 50, 32(10) +; POWERPC_32-NEXT: vadduwm 7, 7, 19 +; POWERPC_32-NEXT: vcmpequh 18, 18, 3 +; POWERPC_32-NEXT: xxlnor 50, 50, 50 +; POWERPC_32-NEXT: vmrglh 19, 18, 18 +; POWERPC_32-NEXT: vmrghh 18, 18, 18 +; POWERPC_32-NEXT: xxland 51, 51, 34 +; POWERPC_32-NEXT: xxland 50, 50, 34 +; POWERPC_32-NEXT: vadduwm 13, 13, 19 +; POWERPC_32-NEXT: lxv 51, 48(10) +; POWERPC_32-NEXT: vadduwm 0, 0, 18 +; POWERPC_32-NEXT: vcmpequh 19, 19, 3 +; POWERPC_32-NEXT: xxlnor 51, 51, 51 +; POWERPC_32-NEXT: vmrglh 18, 19, 19 +; POWERPC_32-NEXT: vmrghh 19, 19, 19 +; POWERPC_32-NEXT: xxland 50, 50, 34 +; POWERPC_32-NEXT: xxland 51, 51, 34 +; POWERPC_32-NEXT: vadduwm 10, 10, 18 +; POWERPC_32-NEXT: lxv 50, 64(10) +; POWERPC_32-NEXT: vadduwm 9, 9, 19 +; POWERPC_32-NEXT: vcmpequh 18, 18, 3 +; POWERPC_32-NEXT: xxlnor 50, 50, 50 +; POWERPC_32-NEXT: vmrglh 19, 18, 18 +; POWERPC_32-NEXT: vmrghh 18, 18, 18 +; POWERPC_32-NEXT: xxland 51, 51, 34 +; POWERPC_32-NEXT: xxland 50, 50, 34 +; POWERPC_32-NEXT: vadduwm 14, 14, 19 +; POWERPC_32-NEXT: lxv 51, 80(10) +; POWERPC_32-NEXT: vadduwm 1, 1, 18 +; POWERPC_32-NEXT: vcmpequh 19, 19, 3 +; POWERPC_32-NEXT: xxlnor 51, 51, 51 +; POWERPC_32-NEXT: vmrglh 18, 19, 19 +; POWERPC_32-NEXT: vmrghh 19, 19, 19 +; POWERPC_32-NEXT: xxland 50, 50, 34 +; POWERPC_32-NEXT: xxland 51, 51, 34 +; POWERPC_32-NEXT: vadduwm 12, 12, 18 +; POWERPC_32-NEXT: lxv 50, 96(10) +; POWERPC_32-NEXT: vadduwm 11, 11, 19 +; POWERPC_32-NEXT: vcmpequh 18, 18, 3 +; POWERPC_32-NEXT: xxlnor 50, 50, 50 +; POWERPC_32-NEXT: vmrglh 19, 18, 18 +; POWERPC_32-NEXT: vmrghh 18, 18, 18 +; POWERPC_32-NEXT: xxland 51, 51, 34 +; POWERPC_32-NEXT: xxland 50, 50, 34 +; POWERPC_32-NEXT: vadduwm 16, 16, 19 +; POWERPC_32-NEXT: lxv 51, 112(10) +; POWERPC_32-NEXT: vadduwm 6, 6, 18 +; POWERPC_32-NEXT: addi 10, 10, 128 +; POWERPC_32-NEXT: vcmpequh 19, 19, 3 +; POWERPC_32-NEXT: xxlnor 51, 51, 51 +; POWERPC_32-NEXT: vmrglh 18, 19, 19 +; POWERPC_32-NEXT: xxland 50, 50, 34 +; POWERPC_32-NEXT: vadduwm 17, 17, 18 +; POWERPC_32-NEXT: vmrghh 18, 19, 19 +; POWERPC_32-NEXT: xxland 50, 50, 34 +; POWERPC_32-NEXT: vadduwm 15, 15, 18 +; POWERPC_32-NEXT: bne 0, L..BB0_7 +; POWERPC_32-NEXT: # %bb.8: # %middle.block +; POWERPC_32-NEXT: vadduwm 3, 7, 4 +; POWERPC_32-NEXT: vadduwm 4, 8, 5 +; POWERPC_32-NEXT: xor. 9, 6, 4 +; POWERPC_32-NEXT: vadduwm 4, 13, 4 +; POWERPC_32-NEXT: vadduwm 3, 0, 3 +; POWERPC_32-NEXT: vadduwm 3, 9, 3 +; POWERPC_32-NEXT: vadduwm 4, 10, 4 +; POWERPC_32-NEXT: vadduwm 4, 14, 4 +; POWERPC_32-NEXT: vadduwm 3, 1, 3 +; POWERPC_32-NEXT: vadduwm 3, 11, 3 +; POWERPC_32-NEXT: vadduwm 4, 12, 4 +; POWERPC_32-NEXT: vadduwm 4, 16, 4 +; POWERPC_32-NEXT: vadduwm 3, 6, 3 +; POWERPC_32-NEXT: vadduwm 3, 15, 3 +; POWERPC_32-NEXT: vadduwm 4, 17, 4 +; POWERPC_32-NEXT: vadduwm 3, 3, 4 +; POWERPC_32-NEXT: xxswapd 36, 35 +; POWERPC_32-NEXT: vadduwm 3, 3, 4 +; POWERPC_32-NEXT: xxspltw 36, 35, 1 +; POWERPC_32-NEXT: vadduwm 3, 3, 4 +; POWERPC_32-NEXT: stxv 35, -16(1) +; POWERPC_32-NEXT: lwz 5, -16(1) +; POWERPC_32-NEXT: beq 0, L..BB0_15 +; POWERPC_32-NEXT: # %bb.9: # %vec.epilog.iter.check +; POWERPC_32-NEXT: andi. 9, 4, 56 +; POWERPC_32-NEXT: beq 0, L..BB0_13 +; POWERPC_32-NEXT: L..BB0_10: # %vec.epilog.ph +; POWERPC_32-NEXT: stw 5, -32(1) +; POWERPC_32-NEXT: lwz 5, L..C0(2) # %const.0 +; POWERPC_32-NEXT: xxlxor 36, 36, 36 +; POWERPC_32-NEXT: mr 9, 6 +; POWERPC_32-NEXT: lxv 1, -32(1) +; POWERPC_32-NEXT: addi 6, 8, 56 +; POWERPC_32-NEXT: and 6, 4, 6 +; POWERPC_32-NEXT: xxlxor 35, 35, 35 +; POWERPC_32-NEXT: xxlxor 37, 37, 37 +; POWERPC_32-NEXT: lxv 0, 0(5) +; POWERPC_32-NEXT: xxperm 36, 1, 0 +; POWERPC_32-NEXT: .align 4 +; POWERPC_32-NEXT: L..BB0_11: # %vec.epilog.vector.body ; POWERPC_32-NEXT: # -; POWERPC_32-NEXT: slwi [[R14]], [[R13]], 1 -; POWERPC_32-NEXT: addic [[R13]], [[R13]], 8 -; POWERPC_32-NEXT: addze [[R17:[0-9]+]], [[R17]] -; POWERPC_32-NEXT: lxvx [[R8:[0-9]+]], [[R18:[0-9]+]], [[R14]] -; POWERPC_32-NEXT: xor [[R14]], [[R13]], [[R16]] -; POWERPC_32-NEXT: or. [[R14]], [[R14]], [[R17]] -; POWERPC_32-NEXT: vcmpequh [[R9:[0-9]+]], [[R9]], [[R3]] -; POWERPC_32-NEXT: xxlnor [[R8]], [[R8]], [[R8]] -; POWERPC_32-NEXT: vmrghh [[R11:[0-9]+]], [[R9]], [[R9]] -; POWERPC_32-NEXT: vmrglh [[R9]], [[R9]], [[R9]] -; POWERPC_32-NEXT: xxland [[R12:[0-9]+]], [[R12]], [[R6]] -; POWERPC_32-NEXT: xxland [[R8]], [[R8]], [[R6]] -; POWERPC_32-NEXT: vadduwm [[R7]], [[R7]], [[R9]] -; POWERPC_32-NEXT: vadduwm [[R19:[0-9]+]], [[R19]], [[R11]] +; POWERPC_32-NEXT: slwi 5, 9, 1 +; POWERPC_32-NEXT: addic 9, 9, 8 +; POWERPC_32-NEXT: addze 7, 7 +; POWERPC_32-NEXT: lxvx 32, 3, 5 +; POWERPC_32-NEXT: xor 5, 9, 6 +; POWERPC_32-NEXT: or. 5, 5, 7 +; POWERPC_32-NEXT: vcmpequh 0, 0, 3 +; POWERPC_32-NEXT: xxlnor 32, 32, 32 +; POWERPC_32-NEXT: vmrghh 1, 0, 0 +; POWERPC_32-NEXT: vmrglh 0, 0, 0 +; POWERPC_32-NEXT: xxland 33, 33, 34 +; POWERPC_32-NEXT: xxland 32, 32, 34 +; POWERPC_32-NEXT: vadduwm 5, 5, 0 +; POWERPC_32-NEXT: vadduwm 4, 4, 1 ; POWERPC_32-NEXT: bne 0, L..BB0_11 -; POWERPC_32: blr +; POWERPC_32-NEXT: # %bb.12: # %vec.epilog.middle.block +; POWERPC_32-NEXT: vadduwm 2, 4, 5 +; POWERPC_32-NEXT: xor. 7, 6, 4 +; POWERPC_32-NEXT: li 7, 0 +; POWERPC_32-NEXT: xxswapd 35, 34 +; POWERPC_32-NEXT: vadduwm 2, 2, 3 +; POWERPC_32-NEXT: xxspltw 35, 34, 1 +; POWERPC_32-NEXT: vadduwm 2, 2, 3 +; POWERPC_32-NEXT: stxv 34, -48(1) +; POWERPC_32-NEXT: lwz 5, -48(1) +; POWERPC_32-NEXT: beq 0, L..BB0_15 +; POWERPC_32-NEXT: L..BB0_13: # %for.body.preheader +; POWERPC_32-NEXT: slwi 8, 6, 1 +; POWERPC_32-NEXT: add 3, 8, 3 +; POWERPC_32-NEXT: addi 3, 3, -2 +; POWERPC_32-NEXT: .align 4 +; POWERPC_32-NEXT: L..BB0_14: # %for.body +; POWERPC_32-NEXT: # +; POWERPC_32-NEXT: lhzu 8, 2(3) +; POWERPC_32-NEXT: addic 6, 6, 1 +; POWERPC_32-NEXT: addze 7, 7 +; POWERPC_32-NEXT: cntlzw 8, 8 +; POWERPC_32-NEXT: not 8, 8 +; POWERPC_32-NEXT: rlwinm 8, 8, 27, 31, 31 +; POWERPC_32-NEXT: add 5, 5, 8 +; POWERPC_32-NEXT: xor 8, 6, 4 +; POWERPC_32-NEXT: or. 8, 8, 7 +; POWERPC_32-NEXT: bne 0, L..BB0_14 +; POWERPC_32-NEXT: L..BB0_15: # %for.cond.cleanup +; POWERPC_32-NEXT: mr 3, 5 +; POWERPC_32-NEXT: blr entry: %cmp5 = icmp sgt i32 %ncols, 0 br i1 %cmp5, label %iter.check, label %for.cond.cleanup |