llvm-for-llvmta/test/CodeGen/PowerPC/vector-popcnt-128-ult-ugt.ll

28431 lines
823 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr5 < %s | FileCheck %s --check-prefix=PWR5
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr6 < %s | FileCheck %s --check-prefix=PWR6
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 < %s | FileCheck %s --check-prefix=PWR7
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s --check-prefix=PWR8
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr9 < %s | FileCheck %s --check-prefix=PWR9
define <16 x i8> @ugt_1_v16i8(<16 x i8> %0) {
; PWR5-LABEL: ugt_1_v16i8:
; PWR5: # %bb.0:
; PWR5-NEXT: vspltisb 3, -1
; PWR5-NEXT: vaddubm 3, 2, 3
; PWR5-NEXT: vand 2, 2, 3
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: vcmpequb 2, 2, 3
; PWR5-NEXT: vnot 2, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_1_v16i8:
; PWR6: # %bb.0:
; PWR6-NEXT: vspltisb 3, -1
; PWR6-NEXT: vaddubm 3, 2, 3
; PWR6-NEXT: vand 2, 2, 3
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: vcmpequb 2, 2, 3
; PWR6-NEXT: vnot 2, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_1_v16i8:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, -1
; PWR7-NEXT: vaddubm 3, 2, 3
; PWR7-NEXT: xxland 34, 34, 35
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: vcmpequb 2, 2, 3
; PWR7-NEXT: xxlnor 34, 34, 34
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_1_v16i8:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisb 3, 1
; PWR8-NEXT: vpopcntb 2, 2
; PWR8-NEXT: vcmpgtub 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_1_v16i8:
; PWR9: # %bb.0:
; PWR9-NEXT: xxspltib 35, 1
; PWR9-NEXT: vpopcntb 2, 2
; PWR9-NEXT: vcmpgtub 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
%3 = icmp ugt <16 x i8> %2, <i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1>
%4 = sext <16 x i1> %3 to <16 x i8>
ret <16 x i8> %4
}
define <16 x i8> @ult_2_v16i8(<16 x i8> %0) {
; PWR5-LABEL: ult_2_v16i8:
; PWR5: # %bb.0:
; PWR5-NEXT: vspltisb 3, -1
; PWR5-NEXT: vaddubm 3, 2, 3
; PWR5-NEXT: vand 2, 2, 3
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: vcmpequb 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_2_v16i8:
; PWR6: # %bb.0:
; PWR6-NEXT: vspltisb 3, -1
; PWR6-NEXT: vaddubm 3, 2, 3
; PWR6-NEXT: vand 2, 2, 3
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: vcmpequb 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_2_v16i8:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, -1
; PWR7-NEXT: vaddubm 3, 2, 3
; PWR7-NEXT: xxland 34, 34, 35
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: vcmpequb 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_2_v16i8:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisb 3, 2
; PWR8-NEXT: vpopcntb 2, 2
; PWR8-NEXT: vcmpgtub 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_2_v16i8:
; PWR9: # %bb.0:
; PWR9-NEXT: xxspltib 35, 2
; PWR9-NEXT: vpopcntb 2, 2
; PWR9-NEXT: vcmpgtub 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
%3 = icmp ult <16 x i8> %2, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
%4 = sext <16 x i1> %3 to <16 x i8>
ret <16 x i8> %4
}
define <16 x i8> @ugt_2_v16i8(<16 x i8> %0) {
; PWR5-LABEL: ugt_2_v16i8:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI2_0@toc@ha
; PWR5-NEXT: vspltisb 3, 1
; PWR5-NEXT: addi 3, 3, .LCPI2_0@toc@l
; PWR5-NEXT: vsrb 3, 2, 3
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI2_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI2_1@toc@l
; PWR5-NEXT: vspltisb 5, 2
; PWR5-NEXT: vand 3, 3, 4
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: vsububm 2, 2, 3
; PWR5-NEXT: vand 3, 2, 4
; PWR5-NEXT: vsrb 2, 2, 5
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vspltisb 4, 4
; PWR5-NEXT: vaddubm 2, 3, 2
; PWR5-NEXT: vsrb 3, 2, 4
; PWR5-NEXT: vspltisb 4, 15
; PWR5-NEXT: vaddubm 2, 2, 3
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vcmpgtub 2, 2, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_2_v16i8:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI2_0@toc@ha
; PWR6-NEXT: vspltisb 3, 1
; PWR6-NEXT: addi 3, 3, .LCPI2_0@toc@l
; PWR6-NEXT: vsrb 3, 2, 3
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI2_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI2_1@toc@l
; PWR6-NEXT: vspltisb 5, 2
; PWR6-NEXT: vand 3, 3, 4
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: vsububm 2, 2, 3
; PWR6-NEXT: vand 3, 2, 4
; PWR6-NEXT: vsrb 2, 2, 5
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vspltisb 4, 4
; PWR6-NEXT: vaddubm 2, 3, 2
; PWR6-NEXT: vsrb 3, 2, 4
; PWR6-NEXT: vspltisb 4, 15
; PWR6-NEXT: vaddubm 2, 2, 3
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vcmpgtub 2, 2, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_2_v16i8:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI2_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI2_0@toc@l
; PWR7-NEXT: vspltisb 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI2_1@toc@ha
; PWR7-NEXT: vspltisb 5, 4
; PWR7-NEXT: vsrb 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI2_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsububm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 5
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vcmpgtub 2, 2, 4
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_2_v16i8:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisb 3, 2
; PWR8-NEXT: vpopcntb 2, 2
; PWR8-NEXT: vcmpgtub 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_2_v16i8:
; PWR9: # %bb.0:
; PWR9-NEXT: xxspltib 35, 2
; PWR9-NEXT: vpopcntb 2, 2
; PWR9-NEXT: vcmpgtub 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
%3 = icmp ugt <16 x i8> %2, <i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2>
%4 = sext <16 x i1> %3 to <16 x i8>
ret <16 x i8> %4
}
define <16 x i8> @ult_3_v16i8(<16 x i8> %0) {
; PWR5-LABEL: ult_3_v16i8:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI3_0@toc@ha
; PWR5-NEXT: vspltisb 3, 1
; PWR5-NEXT: addi 3, 3, .LCPI3_0@toc@l
; PWR5-NEXT: vsrb 3, 2, 3
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI3_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI3_1@toc@l
; PWR5-NEXT: vspltisb 5, 2
; PWR5-NEXT: vand 3, 3, 4
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: vsububm 2, 2, 3
; PWR5-NEXT: vand 3, 2, 4
; PWR5-NEXT: vsrb 2, 2, 5
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vspltisb 4, 4
; PWR5-NEXT: vaddubm 2, 3, 2
; PWR5-NEXT: vsrb 3, 2, 4
; PWR5-NEXT: vspltisb 4, 15
; PWR5-NEXT: vaddubm 2, 2, 3
; PWR5-NEXT: vspltisb 3, 3
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vcmpgtub 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_3_v16i8:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI3_0@toc@ha
; PWR6-NEXT: vspltisb 3, 1
; PWR6-NEXT: addi 3, 3, .LCPI3_0@toc@l
; PWR6-NEXT: vsrb 3, 2, 3
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI3_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI3_1@toc@l
; PWR6-NEXT: vspltisb 5, 2
; PWR6-NEXT: vand 3, 3, 4
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: vsububm 2, 2, 3
; PWR6-NEXT: vand 3, 2, 4
; PWR6-NEXT: vsrb 2, 2, 5
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vspltisb 4, 4
; PWR6-NEXT: vaddubm 2, 3, 2
; PWR6-NEXT: vsrb 3, 2, 4
; PWR6-NEXT: vspltisb 4, 15
; PWR6-NEXT: vaddubm 2, 2, 3
; PWR6-NEXT: vspltisb 3, 3
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vcmpgtub 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_3_v16i8:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI3_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI3_0@toc@l
; PWR7-NEXT: vspltisb 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI3_1@toc@ha
; PWR7-NEXT: vsrb 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI3_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsububm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisb 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: vspltisb 4, 15
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 3
; PWR7-NEXT: xxland 34, 34, 36
; PWR7-NEXT: vcmpgtub 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_3_v16i8:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisb 3, 3
; PWR8-NEXT: vpopcntb 2, 2
; PWR8-NEXT: vcmpgtub 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_3_v16i8:
; PWR9: # %bb.0:
; PWR9-NEXT: xxspltib 35, 3
; PWR9-NEXT: vpopcntb 2, 2
; PWR9-NEXT: vcmpgtub 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
%3 = icmp ult <16 x i8> %2, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
%4 = sext <16 x i1> %3 to <16 x i8>
ret <16 x i8> %4
}
define <16 x i8> @ugt_3_v16i8(<16 x i8> %0) {
; PWR5-LABEL: ugt_3_v16i8:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI4_0@toc@ha
; PWR5-NEXT: vspltisb 3, 1
; PWR5-NEXT: addi 3, 3, .LCPI4_0@toc@l
; PWR5-NEXT: vsrb 3, 2, 3
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI4_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI4_1@toc@l
; PWR5-NEXT: vspltisb 5, 2
; PWR5-NEXT: vand 3, 3, 4
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: vsububm 2, 2, 3
; PWR5-NEXT: vand 3, 2, 4
; PWR5-NEXT: vsrb 2, 2, 5
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vspltisb 4, 4
; PWR5-NEXT: vaddubm 2, 3, 2
; PWR5-NEXT: vsrb 3, 2, 4
; PWR5-NEXT: vspltisb 4, 15
; PWR5-NEXT: vaddubm 2, 2, 3
; PWR5-NEXT: vspltisb 3, 3
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vcmpgtub 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_3_v16i8:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI4_0@toc@ha
; PWR6-NEXT: vspltisb 3, 1
; PWR6-NEXT: addi 3, 3, .LCPI4_0@toc@l
; PWR6-NEXT: vsrb 3, 2, 3
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI4_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI4_1@toc@l
; PWR6-NEXT: vspltisb 5, 2
; PWR6-NEXT: vand 3, 3, 4
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: vsububm 2, 2, 3
; PWR6-NEXT: vand 3, 2, 4
; PWR6-NEXT: vsrb 2, 2, 5
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vspltisb 4, 4
; PWR6-NEXT: vaddubm 2, 3, 2
; PWR6-NEXT: vsrb 3, 2, 4
; PWR6-NEXT: vspltisb 4, 15
; PWR6-NEXT: vaddubm 2, 2, 3
; PWR6-NEXT: vspltisb 3, 3
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vcmpgtub 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_3_v16i8:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI4_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI4_0@toc@l
; PWR7-NEXT: vspltisb 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI4_1@toc@ha
; PWR7-NEXT: vsrb 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI4_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsububm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisb 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: vspltisb 4, 15
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 3
; PWR7-NEXT: xxland 34, 34, 36
; PWR7-NEXT: vcmpgtub 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_3_v16i8:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisb 3, 3
; PWR8-NEXT: vpopcntb 2, 2
; PWR8-NEXT: vcmpgtub 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_3_v16i8:
; PWR9: # %bb.0:
; PWR9-NEXT: xxspltib 35, 3
; PWR9-NEXT: vpopcntb 2, 2
; PWR9-NEXT: vcmpgtub 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
%3 = icmp ugt <16 x i8> %2, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
%4 = sext <16 x i1> %3 to <16 x i8>
ret <16 x i8> %4
}
define <16 x i8> @ult_4_v16i8(<16 x i8> %0) {
; PWR5-LABEL: ult_4_v16i8:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI5_0@toc@ha
; PWR5-NEXT: vspltisb 3, 1
; PWR5-NEXT: addi 3, 3, .LCPI5_0@toc@l
; PWR5-NEXT: vsrb 3, 2, 3
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI5_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI5_1@toc@l
; PWR5-NEXT: vspltisb 5, 2
; PWR5-NEXT: vand 3, 3, 4
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: vsububm 2, 2, 3
; PWR5-NEXT: vand 3, 2, 4
; PWR5-NEXT: vsrb 2, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vspltisb 4, 4
; PWR5-NEXT: vaddubm 2, 3, 2
; PWR5-NEXT: vsrb 3, 2, 4
; PWR5-NEXT: vaddubm 2, 2, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vcmpgtub 2, 4, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_4_v16i8:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI5_0@toc@ha
; PWR6-NEXT: vspltisb 3, 1
; PWR6-NEXT: addi 3, 3, .LCPI5_0@toc@l
; PWR6-NEXT: vsrb 3, 2, 3
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI5_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI5_1@toc@l
; PWR6-NEXT: vspltisb 5, 2
; PWR6-NEXT: vand 3, 3, 4
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: vsububm 2, 2, 3
; PWR6-NEXT: vand 3, 2, 4
; PWR6-NEXT: vsrb 2, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vspltisb 4, 4
; PWR6-NEXT: vaddubm 2, 3, 2
; PWR6-NEXT: vsrb 3, 2, 4
; PWR6-NEXT: vaddubm 2, 2, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vcmpgtub 2, 4, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_4_v16i8:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI5_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI5_0@toc@l
; PWR7-NEXT: vspltisb 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI5_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrb 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI5_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsububm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisb 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vcmpgtub 2, 4, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_4_v16i8:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisb 3, 4
; PWR8-NEXT: vpopcntb 2, 2
; PWR8-NEXT: vcmpgtub 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_4_v16i8:
; PWR9: # %bb.0:
; PWR9-NEXT: xxspltib 35, 4
; PWR9-NEXT: vpopcntb 2, 2
; PWR9-NEXT: vcmpgtub 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
%3 = icmp ult <16 x i8> %2, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>
%4 = sext <16 x i1> %3 to <16 x i8>
ret <16 x i8> %4
}
define <16 x i8> @ugt_4_v16i8(<16 x i8> %0) {
; PWR5-LABEL: ugt_4_v16i8:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI6_0@toc@ha
; PWR5-NEXT: vspltisb 3, 1
; PWR5-NEXT: addi 3, 3, .LCPI6_0@toc@l
; PWR5-NEXT: vsrb 3, 2, 3
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI6_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI6_1@toc@l
; PWR5-NEXT: vspltisb 5, 2
; PWR5-NEXT: vand 3, 3, 4
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: vsububm 2, 2, 3
; PWR5-NEXT: vand 3, 2, 4
; PWR5-NEXT: vsrb 2, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vspltisb 4, 4
; PWR5-NEXT: vaddubm 2, 3, 2
; PWR5-NEXT: vsrb 3, 2, 4
; PWR5-NEXT: vaddubm 2, 2, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vcmpgtub 2, 2, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_4_v16i8:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI6_0@toc@ha
; PWR6-NEXT: vspltisb 3, 1
; PWR6-NEXT: addi 3, 3, .LCPI6_0@toc@l
; PWR6-NEXT: vsrb 3, 2, 3
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI6_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI6_1@toc@l
; PWR6-NEXT: vspltisb 5, 2
; PWR6-NEXT: vand 3, 3, 4
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: vsububm 2, 2, 3
; PWR6-NEXT: vand 3, 2, 4
; PWR6-NEXT: vsrb 2, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vspltisb 4, 4
; PWR6-NEXT: vaddubm 2, 3, 2
; PWR6-NEXT: vsrb 3, 2, 4
; PWR6-NEXT: vaddubm 2, 2, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vcmpgtub 2, 2, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_4_v16i8:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI6_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI6_0@toc@l
; PWR7-NEXT: vspltisb 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI6_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrb 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI6_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsububm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisb 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vcmpgtub 2, 2, 4
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_4_v16i8:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisb 3, 4
; PWR8-NEXT: vpopcntb 2, 2
; PWR8-NEXT: vcmpgtub 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_4_v16i8:
; PWR9: # %bb.0:
; PWR9-NEXT: xxspltib 35, 4
; PWR9-NEXT: vpopcntb 2, 2
; PWR9-NEXT: vcmpgtub 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
%3 = icmp ugt <16 x i8> %2, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>
%4 = sext <16 x i1> %3 to <16 x i8>
ret <16 x i8> %4
}
define <16 x i8> @ult_5_v16i8(<16 x i8> %0) {
; PWR5-LABEL: ult_5_v16i8:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI7_0@toc@ha
; PWR5-NEXT: vspltisb 3, 1
; PWR5-NEXT: addi 3, 3, .LCPI7_0@toc@l
; PWR5-NEXT: vsrb 3, 2, 3
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI7_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI7_1@toc@l
; PWR5-NEXT: vspltisb 5, 2
; PWR5-NEXT: vand 3, 3, 4
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: vsububm 2, 2, 3
; PWR5-NEXT: vand 3, 2, 4
; PWR5-NEXT: vsrb 2, 2, 5
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vspltisb 4, 4
; PWR5-NEXT: vaddubm 2, 3, 2
; PWR5-NEXT: vsrb 3, 2, 4
; PWR5-NEXT: vspltisb 4, 15
; PWR5-NEXT: vaddubm 2, 2, 3
; PWR5-NEXT: vspltisb 3, 5
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vcmpgtub 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_5_v16i8:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI7_0@toc@ha
; PWR6-NEXT: vspltisb 3, 1
; PWR6-NEXT: addi 3, 3, .LCPI7_0@toc@l
; PWR6-NEXT: vsrb 3, 2, 3
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI7_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI7_1@toc@l
; PWR6-NEXT: vspltisb 5, 2
; PWR6-NEXT: vand 3, 3, 4
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: vsububm 2, 2, 3
; PWR6-NEXT: vand 3, 2, 4
; PWR6-NEXT: vsrb 2, 2, 5
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vspltisb 4, 4
; PWR6-NEXT: vaddubm 2, 3, 2
; PWR6-NEXT: vsrb 3, 2, 4
; PWR6-NEXT: vspltisb 4, 15
; PWR6-NEXT: vaddubm 2, 2, 3
; PWR6-NEXT: vspltisb 3, 5
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vcmpgtub 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_5_v16i8:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI7_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI7_0@toc@l
; PWR7-NEXT: vspltisb 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI7_1@toc@ha
; PWR7-NEXT: vsrb 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI7_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsububm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisb 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: vspltisb 4, 15
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 5
; PWR7-NEXT: xxland 34, 34, 36
; PWR7-NEXT: vcmpgtub 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_5_v16i8:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisb 3, 5
; PWR8-NEXT: vpopcntb 2, 2
; PWR8-NEXT: vcmpgtub 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_5_v16i8:
; PWR9: # %bb.0:
; PWR9-NEXT: xxspltib 35, 5
; PWR9-NEXT: vpopcntb 2, 2
; PWR9-NEXT: vcmpgtub 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
%3 = icmp ult <16 x i8> %2, <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5>
%4 = sext <16 x i1> %3 to <16 x i8>
ret <16 x i8> %4
}
define <16 x i8> @ugt_5_v16i8(<16 x i8> %0) {
; PWR5-LABEL: ugt_5_v16i8:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI8_0@toc@ha
; PWR5-NEXT: vspltisb 3, 1
; PWR5-NEXT: addi 3, 3, .LCPI8_0@toc@l
; PWR5-NEXT: vsrb 3, 2, 3
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI8_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI8_1@toc@l
; PWR5-NEXT: vspltisb 5, 2
; PWR5-NEXT: vand 3, 3, 4
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: vsububm 2, 2, 3
; PWR5-NEXT: vand 3, 2, 4
; PWR5-NEXT: vsrb 2, 2, 5
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vspltisb 4, 4
; PWR5-NEXT: vaddubm 2, 3, 2
; PWR5-NEXT: vsrb 3, 2, 4
; PWR5-NEXT: vspltisb 4, 15
; PWR5-NEXT: vaddubm 2, 2, 3
; PWR5-NEXT: vspltisb 3, 5
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vcmpgtub 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_5_v16i8:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI8_0@toc@ha
; PWR6-NEXT: vspltisb 3, 1
; PWR6-NEXT: addi 3, 3, .LCPI8_0@toc@l
; PWR6-NEXT: vsrb 3, 2, 3
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI8_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI8_1@toc@l
; PWR6-NEXT: vspltisb 5, 2
; PWR6-NEXT: vand 3, 3, 4
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: vsububm 2, 2, 3
; PWR6-NEXT: vand 3, 2, 4
; PWR6-NEXT: vsrb 2, 2, 5
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vspltisb 4, 4
; PWR6-NEXT: vaddubm 2, 3, 2
; PWR6-NEXT: vsrb 3, 2, 4
; PWR6-NEXT: vspltisb 4, 15
; PWR6-NEXT: vaddubm 2, 2, 3
; PWR6-NEXT: vspltisb 3, 5
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vcmpgtub 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_5_v16i8:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI8_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI8_0@toc@l
; PWR7-NEXT: vspltisb 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI8_1@toc@ha
; PWR7-NEXT: vsrb 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI8_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsububm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisb 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: vspltisb 4, 15
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 5
; PWR7-NEXT: xxland 34, 34, 36
; PWR7-NEXT: vcmpgtub 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_5_v16i8:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisb 3, 5
; PWR8-NEXT: vpopcntb 2, 2
; PWR8-NEXT: vcmpgtub 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_5_v16i8:
; PWR9: # %bb.0:
; PWR9-NEXT: xxspltib 35, 5
; PWR9-NEXT: vpopcntb 2, 2
; PWR9-NEXT: vcmpgtub 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
%3 = icmp ugt <16 x i8> %2, <i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5, i8 5>
%4 = sext <16 x i1> %3 to <16 x i8>
ret <16 x i8> %4
}
define <16 x i8> @ult_6_v16i8(<16 x i8> %0) {
; PWR5-LABEL: ult_6_v16i8:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI9_0@toc@ha
; PWR5-NEXT: vspltisb 3, 1
; PWR5-NEXT: addi 3, 3, .LCPI9_0@toc@l
; PWR5-NEXT: vsrb 3, 2, 3
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI9_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI9_1@toc@l
; PWR5-NEXT: vspltisb 5, 2
; PWR5-NEXT: vand 3, 3, 4
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: vsububm 2, 2, 3
; PWR5-NEXT: vand 3, 2, 4
; PWR5-NEXT: vsrb 2, 2, 5
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vspltisb 4, 4
; PWR5-NEXT: vaddubm 2, 3, 2
; PWR5-NEXT: vsrb 3, 2, 4
; PWR5-NEXT: vspltisb 4, 15
; PWR5-NEXT: vaddubm 2, 2, 3
; PWR5-NEXT: vspltisb 3, 6
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vcmpgtub 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_6_v16i8:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI9_0@toc@ha
; PWR6-NEXT: vspltisb 3, 1
; PWR6-NEXT: addi 3, 3, .LCPI9_0@toc@l
; PWR6-NEXT: vsrb 3, 2, 3
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI9_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI9_1@toc@l
; PWR6-NEXT: vspltisb 5, 2
; PWR6-NEXT: vand 3, 3, 4
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: vsububm 2, 2, 3
; PWR6-NEXT: vand 3, 2, 4
; PWR6-NEXT: vsrb 2, 2, 5
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vspltisb 4, 4
; PWR6-NEXT: vaddubm 2, 3, 2
; PWR6-NEXT: vsrb 3, 2, 4
; PWR6-NEXT: vspltisb 4, 15
; PWR6-NEXT: vaddubm 2, 2, 3
; PWR6-NEXT: vspltisb 3, 6
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vcmpgtub 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_6_v16i8:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI9_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI9_0@toc@l
; PWR7-NEXT: vspltisb 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI9_1@toc@ha
; PWR7-NEXT: vsrb 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI9_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsububm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisb 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: vspltisb 4, 15
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 6
; PWR7-NEXT: xxland 34, 34, 36
; PWR7-NEXT: vcmpgtub 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_6_v16i8:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisb 3, 6
; PWR8-NEXT: vpopcntb 2, 2
; PWR8-NEXT: vcmpgtub 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_6_v16i8:
; PWR9: # %bb.0:
; PWR9-NEXT: xxspltib 35, 6
; PWR9-NEXT: vpopcntb 2, 2
; PWR9-NEXT: vcmpgtub 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
%3 = icmp ult <16 x i8> %2, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6>
%4 = sext <16 x i1> %3 to <16 x i8>
ret <16 x i8> %4
}
define <16 x i8> @ugt_6_v16i8(<16 x i8> %0) {
; PWR5-LABEL: ugt_6_v16i8:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI10_0@toc@ha
; PWR5-NEXT: vspltisb 3, 1
; PWR5-NEXT: addi 3, 3, .LCPI10_0@toc@l
; PWR5-NEXT: vsrb 3, 2, 3
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI10_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI10_1@toc@l
; PWR5-NEXT: vspltisb 5, 2
; PWR5-NEXT: vand 3, 3, 4
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: vsububm 2, 2, 3
; PWR5-NEXT: vand 3, 2, 4
; PWR5-NEXT: vsrb 2, 2, 5
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vspltisb 4, 4
; PWR5-NEXT: vaddubm 2, 3, 2
; PWR5-NEXT: vsrb 3, 2, 4
; PWR5-NEXT: vspltisb 4, 15
; PWR5-NEXT: vaddubm 2, 2, 3
; PWR5-NEXT: vspltisb 3, 6
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vcmpgtub 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_6_v16i8:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI10_0@toc@ha
; PWR6-NEXT: vspltisb 3, 1
; PWR6-NEXT: addi 3, 3, .LCPI10_0@toc@l
; PWR6-NEXT: vsrb 3, 2, 3
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI10_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI10_1@toc@l
; PWR6-NEXT: vspltisb 5, 2
; PWR6-NEXT: vand 3, 3, 4
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: vsububm 2, 2, 3
; PWR6-NEXT: vand 3, 2, 4
; PWR6-NEXT: vsrb 2, 2, 5
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vspltisb 4, 4
; PWR6-NEXT: vaddubm 2, 3, 2
; PWR6-NEXT: vsrb 3, 2, 4
; PWR6-NEXT: vspltisb 4, 15
; PWR6-NEXT: vaddubm 2, 2, 3
; PWR6-NEXT: vspltisb 3, 6
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vcmpgtub 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_6_v16i8:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI10_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI10_0@toc@l
; PWR7-NEXT: vspltisb 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI10_1@toc@ha
; PWR7-NEXT: vsrb 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI10_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsububm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisb 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: vspltisb 4, 15
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 6
; PWR7-NEXT: xxland 34, 34, 36
; PWR7-NEXT: vcmpgtub 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_6_v16i8:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisb 3, 6
; PWR8-NEXT: vpopcntb 2, 2
; PWR8-NEXT: vcmpgtub 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_6_v16i8:
; PWR9: # %bb.0:
; PWR9-NEXT: xxspltib 35, 6
; PWR9-NEXT: vpopcntb 2, 2
; PWR9-NEXT: vcmpgtub 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
%3 = icmp ugt <16 x i8> %2, <i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6, i8 6>
%4 = sext <16 x i1> %3 to <16 x i8>
ret <16 x i8> %4
}
define <16 x i8> @ult_7_v16i8(<16 x i8> %0) {
; PWR5-LABEL: ult_7_v16i8:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI11_0@toc@ha
; PWR5-NEXT: vspltisb 3, 1
; PWR5-NEXT: addi 3, 3, .LCPI11_0@toc@l
; PWR5-NEXT: vsrb 3, 2, 3
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI11_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI11_1@toc@l
; PWR5-NEXT: vspltisb 5, 2
; PWR5-NEXT: vand 3, 3, 4
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: vsububm 2, 2, 3
; PWR5-NEXT: vand 3, 2, 4
; PWR5-NEXT: vsrb 2, 2, 5
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vspltisb 4, 4
; PWR5-NEXT: vaddubm 2, 3, 2
; PWR5-NEXT: vsrb 3, 2, 4
; PWR5-NEXT: vspltisb 4, 15
; PWR5-NEXT: vaddubm 2, 2, 3
; PWR5-NEXT: vspltisb 3, 7
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vcmpgtub 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_7_v16i8:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI11_0@toc@ha
; PWR6-NEXT: vspltisb 3, 1
; PWR6-NEXT: addi 3, 3, .LCPI11_0@toc@l
; PWR6-NEXT: vsrb 3, 2, 3
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI11_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI11_1@toc@l
; PWR6-NEXT: vspltisb 5, 2
; PWR6-NEXT: vand 3, 3, 4
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: vsububm 2, 2, 3
; PWR6-NEXT: vand 3, 2, 4
; PWR6-NEXT: vsrb 2, 2, 5
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vspltisb 4, 4
; PWR6-NEXT: vaddubm 2, 3, 2
; PWR6-NEXT: vsrb 3, 2, 4
; PWR6-NEXT: vspltisb 4, 15
; PWR6-NEXT: vaddubm 2, 2, 3
; PWR6-NEXT: vspltisb 3, 7
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vcmpgtub 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_7_v16i8:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI11_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI11_0@toc@l
; PWR7-NEXT: vspltisb 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI11_1@toc@ha
; PWR7-NEXT: vsrb 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI11_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsububm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisb 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vsrb 3, 2, 4
; PWR7-NEXT: vspltisb 4, 15
; PWR7-NEXT: vaddubm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 7
; PWR7-NEXT: xxland 34, 34, 36
; PWR7-NEXT: vcmpgtub 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_7_v16i8:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisb 3, 7
; PWR8-NEXT: vpopcntb 2, 2
; PWR8-NEXT: vcmpgtub 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_7_v16i8:
; PWR9: # %bb.0:
; PWR9-NEXT: xxspltib 35, 7
; PWR9-NEXT: vpopcntb 2, 2
; PWR9-NEXT: vcmpgtub 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <16 x i8> @llvm.ctpop.v16i8(<16 x i8> %0)
%3 = icmp ult <16 x i8> %2, <i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7, i8 7>
%4 = sext <16 x i1> %3 to <16 x i8>
ret <16 x i8> %4
}
define <8 x i16> @ugt_1_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_1_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: vspltisb 3, -1
; PWR5-NEXT: vadduhm 3, 2, 3
; PWR5-NEXT: vand 2, 2, 3
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: vcmpequh 2, 2, 3
; PWR5-NEXT: vnot 2, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_1_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: vspltisb 3, -1
; PWR6-NEXT: vadduhm 3, 2, 3
; PWR6-NEXT: vand 2, 2, 3
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: vcmpequh 2, 2, 3
; PWR6-NEXT: vnot 2, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_1_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, -1
; PWR7-NEXT: vadduhm 3, 2, 3
; PWR7-NEXT: xxland 34, 34, 35
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: vcmpequh 2, 2, 3
; PWR7-NEXT: xxlnor 34, 34, 34
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_1_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 1
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_1_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 1
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1, i16 1>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_2_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_2_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: vspltisb 3, -1
; PWR5-NEXT: vadduhm 3, 2, 3
; PWR5-NEXT: vand 2, 2, 3
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: vcmpequh 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_2_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: vspltisb 3, -1
; PWR6-NEXT: vadduhm 3, 2, 3
; PWR6-NEXT: vand 2, 2, 3
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: vcmpequh 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_2_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, -1
; PWR7-NEXT: vadduhm 3, 2, 3
; PWR7-NEXT: xxland 34, 34, 35
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: vcmpequh 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_2_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 2
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_2_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 2
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ugt_2_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_2_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI14_0@toc@ha
; PWR5-NEXT: vspltish 3, 1
; PWR5-NEXT: addi 3, 3, .LCPI14_0@toc@l
; PWR5-NEXT: vsrh 3, 2, 3
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI14_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI14_1@toc@l
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vand 3, 3, 4
; PWR5-NEXT: lvx 4, 0, 3
; PWR5-NEXT: vsubuhm 2, 2, 3
; PWR5-NEXT: vand 3, 2, 4
; PWR5-NEXT: vsrh 2, 2, 5
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vadduhm 2, 3, 2
; PWR5-NEXT: vspltish 3, 4
; PWR5-NEXT: vsrh 3, 2, 3
; PWR5-NEXT: vadduhm 2, 2, 3
; PWR5-NEXT: vspltisb 3, 15
; PWR5-NEXT: vxor 4, 4, 4
; PWR5-NEXT: vand 2, 2, 3
; PWR5-NEXT: vspltisb 3, 1
; PWR5-NEXT: vmladduhm 2, 2, 3, 4
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vcmpgtuh 2, 2, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_2_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI14_0@toc@ha
; PWR6-NEXT: vspltish 3, 1
; PWR6-NEXT: addi 3, 3, .LCPI14_0@toc@l
; PWR6-NEXT: vsrh 3, 2, 3
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI14_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI14_1@toc@l
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vand 3, 3, 4
; PWR6-NEXT: lvx 4, 0, 3
; PWR6-NEXT: vsubuhm 2, 2, 3
; PWR6-NEXT: vand 3, 2, 4
; PWR6-NEXT: vsrh 2, 2, 5
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vadduhm 2, 3, 2
; PWR6-NEXT: vspltish 3, 4
; PWR6-NEXT: vsrh 3, 2, 3
; PWR6-NEXT: vadduhm 2, 2, 3
; PWR6-NEXT: vspltisb 3, 15
; PWR6-NEXT: vxor 4, 4, 4
; PWR6-NEXT: vand 2, 2, 3
; PWR6-NEXT: vspltisb 3, 1
; PWR6-NEXT: vmladduhm 2, 2, 3, 4
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vcmpgtuh 2, 2, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_2_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI14_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI14_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI14_1@toc@ha
; PWR7-NEXT: vspltish 5, 4
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI14_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 5
; PWR7-NEXT: vxor 5, 5, 5
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmladduhm 2, 2, 3, 5
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vcmpgtuh 2, 2, 4
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_2_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 2
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_2_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 2
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2, i16 2>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_3_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_3_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI15_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI15_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI15_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI15_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 3
; PWR5-NEXT: vcmpgtuh 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_3_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI15_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI15_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI15_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI15_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 3
; PWR6-NEXT: vcmpgtuh 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_3_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI15_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI15_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI15_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI15_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 3
; PWR7-NEXT: vcmpgtuh 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_3_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 3
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_3_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 3
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ugt_3_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_3_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI16_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI16_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI16_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI16_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 3
; PWR5-NEXT: vcmpgtuh 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_3_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI16_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI16_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI16_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI16_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 3
; PWR6-NEXT: vcmpgtuh 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_3_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI16_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI16_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI16_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI16_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 3
; PWR7-NEXT: vcmpgtuh 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_3_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 3
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_3_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 3
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_4_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_4_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI17_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI17_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI17_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI17_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 15
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vcmpgtuh 2, 5, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_4_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI17_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI17_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI17_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI17_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 15
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vcmpgtuh 2, 5, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_4_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI17_0@toc@ha
; PWR7-NEXT: vxor 5, 5, 5
; PWR7-NEXT: addi 3, 3, .LCPI17_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI17_1@toc@ha
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI17_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmladduhm 2, 2, 3, 5
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vcmpgtuh 2, 4, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_4_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 4
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_4_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 4
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ugt_4_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_4_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI18_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI18_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI18_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI18_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 15
; PWR5-NEXT: vand 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vcmpgtuh 2, 2, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_4_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI18_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI18_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI18_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI18_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 15
; PWR6-NEXT: vand 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vcmpgtuh 2, 2, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_4_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI18_0@toc@ha
; PWR7-NEXT: vxor 5, 5, 5
; PWR7-NEXT: addi 3, 3, .LCPI18_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI18_1@toc@ha
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI18_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmladduhm 2, 2, 3, 5
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vcmpgtuh 2, 2, 4
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_4_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 4
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_4_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 4
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4, i16 4>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_5_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_5_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI19_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI19_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI19_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI19_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 5
; PWR5-NEXT: vcmpgtuh 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_5_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI19_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI19_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI19_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI19_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 5
; PWR6-NEXT: vcmpgtuh 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_5_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI19_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI19_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI19_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI19_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 5
; PWR7-NEXT: vcmpgtuh 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_5_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 5
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_5_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 5
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ugt_5_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_5_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI20_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI20_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI20_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI20_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 5
; PWR5-NEXT: vcmpgtuh 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_5_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI20_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI20_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI20_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI20_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 5
; PWR6-NEXT: vcmpgtuh 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_5_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI20_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI20_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI20_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI20_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 5
; PWR7-NEXT: vcmpgtuh 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_5_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 5
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_5_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 5
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5, i16 5>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_6_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_6_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI21_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI21_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI21_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI21_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 6
; PWR5-NEXT: vcmpgtuh 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_6_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI21_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI21_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI21_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI21_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 6
; PWR6-NEXT: vcmpgtuh 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_6_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI21_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI21_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI21_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI21_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 6
; PWR7-NEXT: vcmpgtuh 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_6_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 6
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_6_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 6
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ugt_6_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_6_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI22_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI22_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI22_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI22_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 6
; PWR5-NEXT: vcmpgtuh 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_6_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI22_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI22_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI22_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI22_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 6
; PWR6-NEXT: vcmpgtuh 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_6_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI22_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI22_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI22_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI22_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 6
; PWR7-NEXT: vcmpgtuh 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_6_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 6
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_6_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 6
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6, i16 6>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_7_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_7_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI23_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI23_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI23_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI23_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 7
; PWR5-NEXT: vcmpgtuh 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_7_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI23_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI23_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI23_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI23_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 7
; PWR6-NEXT: vcmpgtuh 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_7_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI23_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI23_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI23_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI23_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 7
; PWR7-NEXT: vcmpgtuh 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_7_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 7
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_7_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 7
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ugt_7_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_7_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI24_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI24_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI24_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI24_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 7
; PWR5-NEXT: vcmpgtuh 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_7_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI24_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI24_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI24_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI24_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 7
; PWR6-NEXT: vcmpgtuh 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_7_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI24_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI24_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI24_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI24_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 7
; PWR7-NEXT: vcmpgtuh 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_7_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 7
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_7_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 7
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7, i16 7>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_8_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_8_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI25_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI25_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI25_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI25_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vcmpgtuh 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_8_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI25_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI25_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI25_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI25_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vcmpgtuh 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_8_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI25_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI25_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI25_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI25_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vcmpgtuh 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_8_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 8
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_8_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 8
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ugt_8_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_8_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI26_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI26_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI26_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI26_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vcmpgtuh 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_8_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI26_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI26_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI26_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI26_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vcmpgtuh 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_8_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI26_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI26_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI26_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI26_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vcmpgtuh 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_8_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 8
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_8_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 8
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_9_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_9_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI27_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI27_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI27_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI27_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 9
; PWR5-NEXT: vcmpgtuh 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_9_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI27_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI27_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI27_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI27_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 9
; PWR6-NEXT: vcmpgtuh 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_9_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI27_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI27_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI27_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI27_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 9
; PWR7-NEXT: vcmpgtuh 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_9_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 9
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_9_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 9
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ugt_9_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_9_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI28_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI28_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI28_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI28_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 9
; PWR5-NEXT: vcmpgtuh 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_9_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI28_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI28_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI28_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI28_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 9
; PWR6-NEXT: vcmpgtuh 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_9_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI28_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI28_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI28_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI28_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 9
; PWR7-NEXT: vcmpgtuh 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_9_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 9
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_9_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 9
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9, i16 9>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_10_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_10_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI29_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI29_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI29_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI29_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 10
; PWR5-NEXT: vcmpgtuh 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_10_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI29_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI29_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI29_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI29_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 10
; PWR6-NEXT: vcmpgtuh 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_10_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI29_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI29_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI29_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI29_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 10
; PWR7-NEXT: vcmpgtuh 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_10_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 10
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_10_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 10
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ugt_10_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_10_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI30_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI30_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI30_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI30_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 10
; PWR5-NEXT: vcmpgtuh 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_10_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI30_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI30_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI30_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI30_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 10
; PWR6-NEXT: vcmpgtuh 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_10_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI30_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI30_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI30_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI30_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 10
; PWR7-NEXT: vcmpgtuh 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_10_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 10
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_10_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 10
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10, i16 10>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_11_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_11_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI31_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI31_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI31_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI31_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 11
; PWR5-NEXT: vcmpgtuh 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_11_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI31_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI31_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI31_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI31_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 11
; PWR6-NEXT: vcmpgtuh 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_11_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI31_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI31_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI31_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI31_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 11
; PWR7-NEXT: vcmpgtuh 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_11_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 11
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_11_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 11
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ugt_11_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_11_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI32_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI32_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI32_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI32_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 11
; PWR5-NEXT: vcmpgtuh 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_11_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI32_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI32_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI32_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI32_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 11
; PWR6-NEXT: vcmpgtuh 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_11_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI32_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI32_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI32_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI32_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 11
; PWR7-NEXT: vcmpgtuh 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_11_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 11
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_11_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 11
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11, i16 11>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_12_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_12_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI33_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI33_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI33_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI33_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 12
; PWR5-NEXT: vcmpgtuh 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_12_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI33_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI33_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI33_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI33_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 12
; PWR6-NEXT: vcmpgtuh 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_12_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI33_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI33_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI33_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI33_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 12
; PWR7-NEXT: vcmpgtuh 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_12_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 12
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_12_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 12
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ugt_12_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_12_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI34_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI34_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI34_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI34_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 12
; PWR5-NEXT: vcmpgtuh 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_12_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI34_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI34_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI34_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI34_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 12
; PWR6-NEXT: vcmpgtuh 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_12_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI34_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI34_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI34_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI34_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 12
; PWR7-NEXT: vcmpgtuh 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_12_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 12
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_12_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 12
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12, i16 12>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_13_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_13_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI35_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI35_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI35_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI35_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 13
; PWR5-NEXT: vcmpgtuh 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_13_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI35_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI35_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI35_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI35_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 13
; PWR6-NEXT: vcmpgtuh 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_13_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI35_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI35_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI35_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI35_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 13
; PWR7-NEXT: vcmpgtuh 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_13_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 13
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_13_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 13
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ugt_13_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_13_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI36_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI36_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI36_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI36_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 13
; PWR5-NEXT: vcmpgtuh 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_13_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI36_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI36_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI36_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI36_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 13
; PWR6-NEXT: vcmpgtuh 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_13_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI36_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI36_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI36_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI36_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 13
; PWR7-NEXT: vcmpgtuh 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_13_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 13
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_13_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 13
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13, i16 13>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_14_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_14_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI37_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI37_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI37_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI37_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 14
; PWR5-NEXT: vcmpgtuh 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_14_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI37_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI37_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI37_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI37_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 14
; PWR6-NEXT: vcmpgtuh 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_14_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI37_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI37_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI37_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI37_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 14
; PWR7-NEXT: vcmpgtuh 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_14_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 14
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_14_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 14
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ugt_14_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ugt_14_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI38_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI38_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI38_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI38_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 14
; PWR5-NEXT: vcmpgtuh 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_14_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI38_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI38_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI38_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI38_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 14
; PWR6-NEXT: vcmpgtuh 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_14_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI38_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI38_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI38_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI38_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 14
; PWR7-NEXT: vcmpgtuh 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_14_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 14
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_14_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 14
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ugt <8 x i16> %2, <i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14, i16 14>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <8 x i16> @ult_15_v8i16(<8 x i16> %0) {
; PWR5-LABEL: ult_15_v8i16:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI39_0@toc@ha
; PWR5-NEXT: vspltish 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI39_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI39_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI39_1@toc@l
; PWR5-NEXT: vsrh 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 2
; PWR5-NEXT: vsubuhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: vspltish 5, 4
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vsrh 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduhm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vmladduhm 2, 2, 4, 3
; PWR5-NEXT: vspltish 3, 8
; PWR5-NEXT: vsrh 2, 2, 3
; PWR5-NEXT: vspltish 3, 15
; PWR5-NEXT: vcmpgtuh 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_15_v8i16:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI39_0@toc@ha
; PWR6-NEXT: vspltish 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI39_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI39_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI39_1@toc@l
; PWR6-NEXT: vsrh 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 2
; PWR6-NEXT: vsubuhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: vspltish 5, 4
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vsrh 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduhm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vmladduhm 2, 2, 4, 3
; PWR6-NEXT: vspltish 3, 8
; PWR6-NEXT: vsrh 2, 2, 3
; PWR6-NEXT: vspltish 3, 15
; PWR6-NEXT: vcmpgtuh 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_15_v8i16:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltish 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI39_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI39_0@toc@l
; PWR7-NEXT: vspltish 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI39_1@toc@ha
; PWR7-NEXT: vspltisb 5, 15
; PWR7-NEXT: vsrh 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI39_1@toc@l
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltish 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vsrh 3, 2, 4
; PWR7-NEXT: vxor 4, 4, 4
; PWR7-NEXT: vadduhm 2, 2, 3
; PWR7-NEXT: vspltisb 3, 1
; PWR7-NEXT: xxland 34, 34, 37
; PWR7-NEXT: vmladduhm 2, 2, 3, 4
; PWR7-NEXT: vspltish 3, 8
; PWR7-NEXT: vsrh 2, 2, 3
; PWR7-NEXT: vspltish 3, 15
; PWR7-NEXT: vcmpgtuh 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_15_v8i16:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltish 3, 15
; PWR8-NEXT: vpopcnth 2, 2
; PWR8-NEXT: vcmpgtuh 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_15_v8i16:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltish 3, 15
; PWR9-NEXT: vpopcnth 2, 2
; PWR9-NEXT: vcmpgtuh 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <8 x i16> @llvm.ctpop.v8i16(<8 x i16> %0)
%3 = icmp ult <8 x i16> %2, <i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15, i16 15>
%4 = sext <8 x i1> %3 to <8 x i16>
ret <8 x i16> %4
}
define <4 x i32> @ugt_1_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_1_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: vspltisb 3, -1
; PWR5-NEXT: vadduwm 3, 2, 3
; PWR5-NEXT: vand 2, 2, 3
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: vcmpequw 2, 2, 3
; PWR5-NEXT: vnot 2, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_1_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: vspltisb 3, -1
; PWR6-NEXT: vadduwm 3, 2, 3
; PWR6-NEXT: vand 2, 2, 3
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: vcmpequw 2, 2, 3
; PWR6-NEXT: vnot 2, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_1_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, -1
; PWR7-NEXT: vadduwm 3, 2, 3
; PWR7-NEXT: xxland 34, 34, 35
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: vcmpequw 2, 2, 3
; PWR7-NEXT: xxlnor 34, 34, 34
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_1_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 1
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_1_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 1
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 1, i32 1, i32 1, i32 1>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_2_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_2_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: vspltisb 3, -1
; PWR5-NEXT: vadduwm 3, 2, 3
; PWR5-NEXT: vand 2, 2, 3
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: vcmpequw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_2_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: vspltisb 3, -1
; PWR6-NEXT: vadduwm 3, 2, 3
; PWR6-NEXT: vand 2, 2, 3
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: vcmpequw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_2_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisb 3, -1
; PWR7-NEXT: vadduwm 3, 2, 3
; PWR7-NEXT: xxland 34, 34, 35
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: vcmpequw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_2_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 2
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_2_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 2
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 2, i32 2, i32 2, i32 2>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_2_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_2_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI42_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI42_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI42_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI42_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 1, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 1, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vcmpgtuw 2, 2, 0
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_2_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI42_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI42_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI42_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI42_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 1, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 1, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vcmpgtuw 2, 2, 0
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_2_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI42_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI42_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI42_1@toc@ha
; PWR7-NEXT: vspltisw 5, 4
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI42_1@toc@l
; PWR7-NEXT: vspltisw 0, -16
; PWR7-NEXT: vspltisb 1, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 5
; PWR7-NEXT: vspltisb 5, 1
; PWR7-NEXT: vrlw 6, 5, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 33
; PWR7-NEXT: vmsumuhm 3, 2, 6, 3
; PWR7-NEXT: vmulouh 2, 2, 5
; PWR7-NEXT: vspltisw 5, 12
; PWR7-NEXT: vslw 3, 3, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 5, 5
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vcmpgtuw 2, 2, 4
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_2_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 2
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_2_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 2
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 2, i32 2, i32 2, i32 2>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_3_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_3_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI43_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI43_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI43_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI43_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 3
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_3_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI43_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI43_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI43_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI43_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 3
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_3_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI43_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI43_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI43_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI43_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 3
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_3_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 3
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_3_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 3, i32 3, i32 3, i32 3>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_3_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_3_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI44_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI44_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI44_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI44_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 3
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_3_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI44_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI44_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI44_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI44_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 3
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_3_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI44_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI44_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI44_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI44_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 3
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_3_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 3
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_3_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 3, i32 3, i32 3, i32 3>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_4_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_4_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI45_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI45_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI45_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI45_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vspltisb 0, 15
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 0
; PWR5-NEXT: vspltisw 0, -16
; PWR5-NEXT: vrlw 1, 4, 0
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 1, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 0
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vcmpgtuw 2, 5, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_4_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI45_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI45_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI45_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI45_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vspltisb 0, 15
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 0
; PWR6-NEXT: vspltisw 0, -16
; PWR6-NEXT: vrlw 1, 4, 0
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 1, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 0
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vcmpgtuw 2, 5, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_4_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI45_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI45_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI45_1@toc@ha
; PWR7-NEXT: vspltisb 5, 1
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI45_1@toc@l
; PWR7-NEXT: vspltisw 0, -16
; PWR7-NEXT: vspltisb 1, 15
; PWR7-NEXT: vrlw 6, 5, 0
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 33
; PWR7-NEXT: vmsumuhm 3, 2, 6, 3
; PWR7-NEXT: vmulouh 2, 2, 5
; PWR7-NEXT: vspltisw 5, 12
; PWR7-NEXT: vslw 3, 3, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 5, 5
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vcmpgtuw 2, 4, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_4_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 4
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_4_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 4
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 4, i32 4, i32 4, i32 4>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_4_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_4_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI46_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI46_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI46_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI46_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vspltisb 0, 15
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 0
; PWR5-NEXT: vspltisw 0, -16
; PWR5-NEXT: vrlw 1, 4, 0
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 1, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 0
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vcmpgtuw 2, 2, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_4_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI46_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI46_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI46_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI46_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vspltisb 0, 15
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 0
; PWR6-NEXT: vspltisw 0, -16
; PWR6-NEXT: vrlw 1, 4, 0
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 1, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 0
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vcmpgtuw 2, 2, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_4_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI46_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI46_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI46_1@toc@ha
; PWR7-NEXT: vspltisb 5, 1
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI46_1@toc@l
; PWR7-NEXT: vspltisw 0, -16
; PWR7-NEXT: vspltisb 1, 15
; PWR7-NEXT: vrlw 6, 5, 0
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 33
; PWR7-NEXT: vmsumuhm 3, 2, 6, 3
; PWR7-NEXT: vmulouh 2, 2, 5
; PWR7-NEXT: vspltisw 5, 12
; PWR7-NEXT: vslw 3, 3, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 5, 5
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vcmpgtuw 2, 2, 4
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_4_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 4
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_4_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 4
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 4, i32 4, i32 4, i32 4>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_5_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_5_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI47_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI47_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI47_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI47_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 5
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_5_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI47_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI47_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI47_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI47_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 5
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_5_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI47_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI47_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI47_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI47_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 5
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_5_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 5
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_5_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 5
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 5, i32 5, i32 5, i32 5>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_5_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_5_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI48_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI48_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI48_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI48_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 5
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_5_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI48_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI48_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI48_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI48_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 5
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_5_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI48_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI48_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI48_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI48_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 5
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_5_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 5
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_5_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 5
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 5, i32 5, i32 5, i32 5>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_6_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_6_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI49_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI49_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI49_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI49_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 6
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_6_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI49_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI49_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI49_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI49_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 6
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_6_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI49_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI49_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI49_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI49_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 6
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_6_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 6
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_6_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 6
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 6, i32 6, i32 6, i32 6>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_6_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_6_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI50_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI50_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI50_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI50_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 6
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_6_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI50_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI50_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI50_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI50_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 6
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_6_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI50_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI50_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI50_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI50_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 6
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_6_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 6
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_6_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 6
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 6, i32 6, i32 6, i32 6>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_7_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_7_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI51_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI51_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI51_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI51_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 7
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_7_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI51_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI51_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI51_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI51_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 7
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_7_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI51_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI51_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI51_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI51_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 7
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_7_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 7
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_7_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 7
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 7, i32 7, i32 7, i32 7>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_7_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_7_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI52_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI52_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI52_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI52_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 7
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_7_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI52_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI52_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI52_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI52_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 7
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_7_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI52_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI52_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI52_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI52_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 7
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_7_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 7
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_7_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 7
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 7, i32 7, i32 7, i32 7>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_8_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_8_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI53_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI53_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI53_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI53_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 8
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_8_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI53_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI53_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI53_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI53_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 8
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_8_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI53_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI53_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI53_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI53_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 8
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_8_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 8
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_8_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 8
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 8, i32 8, i32 8, i32 8>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_8_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_8_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI54_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI54_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI54_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI54_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 8
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_8_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI54_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI54_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI54_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI54_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 8
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_8_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI54_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI54_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI54_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI54_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 8
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_8_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 8
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_8_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 8
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 8, i32 8, i32 8, i32 8>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_9_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_9_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI55_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI55_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI55_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI55_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 9
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_9_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI55_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI55_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI55_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI55_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 9
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_9_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI55_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI55_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI55_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI55_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 9
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_9_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 9
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_9_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 9
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 9, i32 9, i32 9, i32 9>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_9_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_9_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI56_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI56_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI56_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI56_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 9
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_9_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI56_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI56_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI56_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI56_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 9
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_9_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI56_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI56_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI56_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI56_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 9
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_9_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 9
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_9_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 9
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 9, i32 9, i32 9, i32 9>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_10_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_10_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI57_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI57_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI57_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI57_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 10
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_10_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI57_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI57_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI57_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI57_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 10
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_10_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI57_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI57_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI57_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI57_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 10
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_10_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 10
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_10_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 10
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 10, i32 10, i32 10, i32 10>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_10_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_10_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI58_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI58_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI58_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI58_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 10
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_10_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI58_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI58_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI58_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI58_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 10
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_10_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI58_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI58_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI58_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI58_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 10
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_10_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 10
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_10_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 10
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 10, i32 10, i32 10, i32 10>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_11_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_11_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI59_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI59_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI59_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI59_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 11
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_11_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI59_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI59_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI59_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI59_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 11
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_11_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI59_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI59_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI59_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI59_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 11
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_11_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 11
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_11_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 11
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 11, i32 11, i32 11, i32 11>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_11_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_11_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI60_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI60_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI60_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI60_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 11
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_11_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI60_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI60_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI60_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI60_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 11
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_11_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI60_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI60_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI60_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI60_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 11
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_11_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 11
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_11_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 11
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 11, i32 11, i32 11, i32 11>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_12_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_12_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI61_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI61_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI61_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI61_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 5, 3, 3
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 5
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_12_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI61_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI61_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI61_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI61_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 5, 3, 3
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 5
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_12_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI61_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI61_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI61_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI61_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vcmpgtuw 2, 4, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_12_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 12
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_12_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 12
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 12, i32 12, i32 12, i32 12>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_12_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_12_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI62_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI62_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI62_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI62_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 5, 3, 3
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 5
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_12_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI62_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI62_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI62_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI62_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 5, 3, 3
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 5
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_12_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI62_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI62_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI62_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI62_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vcmpgtuw 2, 2, 4
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_12_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 12
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_12_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 12
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 12, i32 12, i32 12, i32 12>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_13_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_13_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI63_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI63_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI63_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI63_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 13
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_13_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI63_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI63_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI63_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI63_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 13
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_13_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI63_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI63_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI63_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI63_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 13
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_13_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 13
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_13_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 13
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 13, i32 13, i32 13, i32 13>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_13_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_13_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI64_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI64_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI64_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI64_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 13
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_13_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI64_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI64_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI64_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI64_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 13
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_13_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI64_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI64_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI64_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI64_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 13
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_13_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 13
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_13_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 13
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 13, i32 13, i32 13, i32 13>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_14_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_14_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI65_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI65_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI65_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI65_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 14
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_14_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI65_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI65_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI65_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI65_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 14
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_14_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI65_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI65_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI65_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI65_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 14
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_14_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 14
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_14_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 14
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 14, i32 14, i32 14, i32 14>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_14_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_14_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI66_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI66_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI66_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI66_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 14
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_14_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI66_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI66_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI66_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI66_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 14
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_14_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI66_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI66_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI66_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI66_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 14
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_14_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 14
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_14_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 14
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 14, i32 14, i32 14, i32 14>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_15_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_15_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI67_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI67_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI67_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI67_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 15
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_15_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI67_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI67_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI67_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI67_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 15
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_15_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI67_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI67_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI67_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI67_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 15
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_15_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 15
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_15_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 15
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 15, i32 15, i32 15, i32 15>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_15_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_15_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI68_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI68_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI68_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI68_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 15
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_15_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI68_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI68_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI68_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI68_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 15
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_15_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI68_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI68_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI68_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI68_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 15
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_15_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 15
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_15_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vspltisw 3, 15
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 15, i32 15, i32 15, i32 15>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_16_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_16_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI69_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI69_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI69_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI69_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 8
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_16_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI69_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI69_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI69_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI69_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 8
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_16_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI69_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI69_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI69_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI69_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 8
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_16_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 8
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_16_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 8
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 16, i32 16, i32 16, i32 16>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_16_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_16_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI70_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI70_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI70_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI70_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 8
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_16_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI70_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI70_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI70_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI70_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 8
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_16_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI70_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI70_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI70_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI70_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 8
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_16_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 8
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_16_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 8
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 16, i32 16, i32 16, i32 16>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_17_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_17_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI71_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI71_0@toc@l
; PWR5-NEXT: lvx 0, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI71_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI71_1@toc@l
; PWR5-NEXT: vspltisw 1, 2
; PWR5-NEXT: vsrw 5, 2, 4
; PWR5-NEXT: vand 5, 5, 0
; PWR5-NEXT: lvx 0, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 5
; PWR5-NEXT: vand 5, 2, 0
; PWR5-NEXT: vsrw 2, 2, 1
; PWR5-NEXT: vand 2, 2, 0
; PWR5-NEXT: vspltisw 0, 4
; PWR5-NEXT: vadduwm 2, 5, 2
; PWR5-NEXT: vsrw 5, 2, 0
; PWR5-NEXT: vspltisb 0, 15
; PWR5-NEXT: vadduwm 2, 2, 5
; PWR5-NEXT: vspltisb 5, 1
; PWR5-NEXT: vand 2, 2, 0
; PWR5-NEXT: vspltisw 0, -16
; PWR5-NEXT: vrlw 1, 5, 0
; PWR5-NEXT: vmulouh 5, 2, 5
; PWR5-NEXT: vmsumuhm 2, 2, 1, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 0
; PWR5-NEXT: vadduwm 2, 5, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vsubuwm 3, 4, 0
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_17_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI71_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI71_0@toc@l
; PWR6-NEXT: lvx 0, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI71_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI71_1@toc@l
; PWR6-NEXT: vspltisw 1, 2
; PWR6-NEXT: vsrw 5, 2, 4
; PWR6-NEXT: vand 5, 5, 0
; PWR6-NEXT: lvx 0, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 5
; PWR6-NEXT: vand 5, 2, 0
; PWR6-NEXT: vsrw 2, 2, 1
; PWR6-NEXT: vand 2, 2, 0
; PWR6-NEXT: vspltisw 0, 4
; PWR6-NEXT: vadduwm 2, 5, 2
; PWR6-NEXT: vsrw 5, 2, 0
; PWR6-NEXT: vspltisb 0, 15
; PWR6-NEXT: vadduwm 2, 2, 5
; PWR6-NEXT: vspltisb 5, 1
; PWR6-NEXT: vand 2, 2, 0
; PWR6-NEXT: vspltisw 0, -16
; PWR6-NEXT: vrlw 1, 5, 0
; PWR6-NEXT: vmulouh 5, 2, 5
; PWR6-NEXT: vmsumuhm 2, 2, 1, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 0
; PWR6-NEXT: vadduwm 2, 5, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vsubuwm 3, 4, 0
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_17_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI71_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI71_0@toc@l
; PWR7-NEXT: vspltisw 5, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI71_1@toc@ha
; PWR7-NEXT: vspltisw 0, -16
; PWR7-NEXT: vsrw 4, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI71_1@toc@l
; PWR7-NEXT: vspltisb 1, 15
; PWR7-NEXT: vsubuwm 3, 3, 0
; PWR7-NEXT: xxland 36, 36, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 4
; PWR7-NEXT: vsrw 4, 2, 5
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 5, 4
; PWR7-NEXT: xxland 36, 36, 0
; PWR7-NEXT: vadduwm 2, 2, 4
; PWR7-NEXT: vsrw 4, 2, 5
; PWR7-NEXT: vspltisb 5, 1
; PWR7-NEXT: vrlw 6, 5, 0
; PWR7-NEXT: vadduwm 2, 2, 4
; PWR7-NEXT: xxlxor 36, 36, 36
; PWR7-NEXT: xxland 34, 34, 33
; PWR7-NEXT: vmsumuhm 4, 2, 6, 4
; PWR7-NEXT: vmulouh 2, 2, 5
; PWR7-NEXT: vspltisw 5, 12
; PWR7-NEXT: vslw 4, 4, 0
; PWR7-NEXT: vadduwm 2, 2, 4
; PWR7-NEXT: vadduwm 4, 5, 5
; PWR7-NEXT: vsrw 2, 2, 4
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_17_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 1
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_17_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 1
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 17, i32 17, i32 17, i32 17>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_17_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_17_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI72_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI72_0@toc@l
; PWR5-NEXT: lvx 0, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI72_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI72_1@toc@l
; PWR5-NEXT: vspltisw 1, 2
; PWR5-NEXT: vsrw 5, 2, 4
; PWR5-NEXT: vand 5, 5, 0
; PWR5-NEXT: lvx 0, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 5
; PWR5-NEXT: vand 5, 2, 0
; PWR5-NEXT: vsrw 2, 2, 1
; PWR5-NEXT: vand 2, 2, 0
; PWR5-NEXT: vspltisw 0, 4
; PWR5-NEXT: vadduwm 2, 5, 2
; PWR5-NEXT: vsrw 5, 2, 0
; PWR5-NEXT: vspltisb 0, 15
; PWR5-NEXT: vadduwm 2, 2, 5
; PWR5-NEXT: vspltisb 5, 1
; PWR5-NEXT: vand 2, 2, 0
; PWR5-NEXT: vspltisw 0, -16
; PWR5-NEXT: vrlw 1, 5, 0
; PWR5-NEXT: vmulouh 5, 2, 5
; PWR5-NEXT: vmsumuhm 2, 2, 1, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 0
; PWR5-NEXT: vadduwm 2, 5, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vsubuwm 3, 4, 0
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_17_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI72_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI72_0@toc@l
; PWR6-NEXT: lvx 0, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI72_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI72_1@toc@l
; PWR6-NEXT: vspltisw 1, 2
; PWR6-NEXT: vsrw 5, 2, 4
; PWR6-NEXT: vand 5, 5, 0
; PWR6-NEXT: lvx 0, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 5
; PWR6-NEXT: vand 5, 2, 0
; PWR6-NEXT: vsrw 2, 2, 1
; PWR6-NEXT: vand 2, 2, 0
; PWR6-NEXT: vspltisw 0, 4
; PWR6-NEXT: vadduwm 2, 5, 2
; PWR6-NEXT: vsrw 5, 2, 0
; PWR6-NEXT: vspltisb 0, 15
; PWR6-NEXT: vadduwm 2, 2, 5
; PWR6-NEXT: vspltisb 5, 1
; PWR6-NEXT: vand 2, 2, 0
; PWR6-NEXT: vspltisw 0, -16
; PWR6-NEXT: vrlw 1, 5, 0
; PWR6-NEXT: vmulouh 5, 2, 5
; PWR6-NEXT: vmsumuhm 2, 2, 1, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 0
; PWR6-NEXT: vadduwm 2, 5, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vsubuwm 3, 4, 0
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_17_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI72_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI72_0@toc@l
; PWR7-NEXT: vspltisw 5, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI72_1@toc@ha
; PWR7-NEXT: vspltisw 0, -16
; PWR7-NEXT: vsrw 4, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI72_1@toc@l
; PWR7-NEXT: vspltisb 1, 15
; PWR7-NEXT: vsubuwm 3, 3, 0
; PWR7-NEXT: xxland 36, 36, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 4
; PWR7-NEXT: vsrw 4, 2, 5
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 5, 4
; PWR7-NEXT: xxland 36, 36, 0
; PWR7-NEXT: vadduwm 2, 2, 4
; PWR7-NEXT: vsrw 4, 2, 5
; PWR7-NEXT: vspltisb 5, 1
; PWR7-NEXT: vrlw 6, 5, 0
; PWR7-NEXT: vadduwm 2, 2, 4
; PWR7-NEXT: xxlxor 36, 36, 36
; PWR7-NEXT: xxland 34, 34, 33
; PWR7-NEXT: vmsumuhm 4, 2, 6, 4
; PWR7-NEXT: vmulouh 2, 2, 5
; PWR7-NEXT: vspltisw 5, 12
; PWR7-NEXT: vslw 4, 4, 0
; PWR7-NEXT: vadduwm 2, 2, 4
; PWR7-NEXT: vadduwm 4, 5, 5
; PWR7-NEXT: vsrw 2, 2, 4
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_17_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 1
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_17_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 1
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 17, i32 17, i32 17, i32 17>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_18_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_18_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI73_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI73_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI73_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI73_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 9
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_18_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI73_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI73_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI73_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI73_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 9
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_18_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI73_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI73_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI73_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI73_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 9
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_18_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 9
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_18_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 9
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 18, i32 18, i32 18, i32 18>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_18_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_18_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI74_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI74_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI74_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI74_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 9
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_18_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI74_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI74_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI74_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI74_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 9
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_18_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI74_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI74_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI74_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI74_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 9
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_18_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 9
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_18_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 9
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 18, i32 18, i32 18, i32 18>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_19_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_19_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI75_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI75_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI75_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI75_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 3
; PWR5-NEXT: vsubuwm 3, 3, 5
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_19_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI75_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI75_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI75_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI75_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 3
; PWR6-NEXT: vsubuwm 3, 3, 5
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_19_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI75_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI75_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI75_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI75_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 3
; PWR7-NEXT: vsubuwm 3, 3, 5
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_19_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 3
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_19_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 3
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 19, i32 19, i32 19, i32 19>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_19_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_19_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI76_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI76_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI76_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI76_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 3
; PWR5-NEXT: vsubuwm 3, 3, 5
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_19_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI76_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI76_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI76_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI76_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 3
; PWR6-NEXT: vsubuwm 3, 3, 5
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_19_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI76_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI76_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI76_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI76_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 3
; PWR7-NEXT: vsubuwm 3, 3, 5
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_19_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 3
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_19_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 3
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 19, i32 19, i32 19, i32 19>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_20_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_20_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI77_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI77_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI77_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI77_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 10
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_20_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI77_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI77_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI77_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI77_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 10
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_20_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI77_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI77_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI77_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI77_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 10
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_20_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 10
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_20_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 10
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 20, i32 20, i32 20, i32 20>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_20_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_20_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI78_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI78_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI78_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI78_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 10
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_20_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI78_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI78_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI78_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI78_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 10
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_20_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI78_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI78_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI78_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI78_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 10
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_20_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 10
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_20_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 10
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 20, i32 20, i32 20, i32 20>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_21_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_21_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI79_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI79_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI79_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI79_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 5
; PWR5-NEXT: vsubuwm 3, 3, 5
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_21_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI79_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI79_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI79_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI79_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 5
; PWR6-NEXT: vsubuwm 3, 3, 5
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_21_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI79_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI79_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI79_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI79_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 5
; PWR7-NEXT: vsubuwm 3, 3, 5
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_21_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 5
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_21_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 5
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 21, i32 21, i32 21, i32 21>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_21_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_21_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI80_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI80_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI80_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI80_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 5
; PWR5-NEXT: vsubuwm 3, 3, 5
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_21_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI80_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI80_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI80_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI80_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 5
; PWR6-NEXT: vsubuwm 3, 3, 5
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_21_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI80_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI80_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI80_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI80_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 5
; PWR7-NEXT: vsubuwm 3, 3, 5
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_21_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 5
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_21_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 5
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 21, i32 21, i32 21, i32 21>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_22_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_22_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI81_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI81_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI81_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI81_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 11
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_22_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI81_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI81_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI81_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI81_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 11
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_22_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI81_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI81_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI81_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI81_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 11
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_22_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 11
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_22_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 11
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 22, i32 22, i32 22, i32 22>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_22_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_22_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI82_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI82_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI82_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI82_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 11
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_22_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI82_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI82_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI82_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI82_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 11
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_22_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI82_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI82_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI82_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI82_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 11
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_22_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 11
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_22_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 11
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 22, i32 22, i32 22, i32 22>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_23_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_23_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI83_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI83_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI83_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI83_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 7
; PWR5-NEXT: vsubuwm 3, 3, 5
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_23_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI83_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI83_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI83_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI83_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 7
; PWR6-NEXT: vsubuwm 3, 3, 5
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_23_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI83_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI83_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI83_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI83_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 7
; PWR7-NEXT: vsubuwm 3, 3, 5
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_23_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 7
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_23_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 7
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 23, i32 23, i32 23, i32 23>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_23_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_23_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI84_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI84_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI84_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI84_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 7
; PWR5-NEXT: vsubuwm 3, 3, 5
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_23_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI84_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI84_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI84_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI84_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 7
; PWR6-NEXT: vsubuwm 3, 3, 5
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_23_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI84_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI84_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI84_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI84_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 7
; PWR7-NEXT: vsubuwm 3, 3, 5
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_23_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 7
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_23_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 7
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 23, i32 23, i32 23, i32 23>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_24_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_24_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI85_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI85_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI85_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI85_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_24_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI85_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI85_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI85_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI85_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_24_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI85_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI85_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI85_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI85_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_24_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 12
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_24_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 12
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 24, i32 24, i32 24, i32 24>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_24_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_24_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI86_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI86_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI86_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI86_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_24_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI86_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI86_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI86_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI86_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_24_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI86_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI86_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI86_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI86_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_24_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 12
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_24_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 12
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 24, i32 24, i32 24, i32 24>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_25_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_25_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI87_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI87_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI87_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI87_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 9
; PWR5-NEXT: vsubuwm 3, 3, 5
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_25_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI87_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI87_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI87_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI87_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 9
; PWR6-NEXT: vsubuwm 3, 3, 5
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_25_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI87_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI87_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI87_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI87_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 9
; PWR7-NEXT: vsubuwm 3, 3, 5
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_25_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 9
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_25_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 9
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 25, i32 25, i32 25, i32 25>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_25_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_25_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI88_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI88_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI88_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI88_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 9
; PWR5-NEXT: vsubuwm 3, 3, 5
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_25_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI88_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI88_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI88_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI88_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 9
; PWR6-NEXT: vsubuwm 3, 3, 5
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_25_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI88_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI88_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI88_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI88_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 9
; PWR7-NEXT: vsubuwm 3, 3, 5
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_25_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 9
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_25_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 9
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 25, i32 25, i32 25, i32 25>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_26_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_26_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI89_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI89_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI89_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI89_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 13
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_26_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI89_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI89_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI89_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI89_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 13
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_26_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI89_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI89_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI89_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI89_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 13
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_26_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 13
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_26_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 13
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 26, i32 26, i32 26, i32 26>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_26_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_26_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI90_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI90_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI90_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI90_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 13
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_26_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI90_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI90_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI90_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI90_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 13
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_26_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI90_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI90_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI90_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI90_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 13
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_26_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 13
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_26_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 13
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 26, i32 26, i32 26, i32 26>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_27_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_27_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI91_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI91_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI91_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI91_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 11
; PWR5-NEXT: vsubuwm 3, 3, 5
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_27_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI91_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI91_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI91_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI91_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 11
; PWR6-NEXT: vsubuwm 3, 3, 5
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_27_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI91_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI91_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI91_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI91_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 11
; PWR7-NEXT: vsubuwm 3, 3, 5
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_27_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 11
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_27_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 11
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 27, i32 27, i32 27, i32 27>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_27_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_27_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI92_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI92_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI92_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI92_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 11
; PWR5-NEXT: vsubuwm 3, 3, 5
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_27_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI92_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI92_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI92_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI92_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 11
; PWR6-NEXT: vsubuwm 3, 3, 5
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_27_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI92_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI92_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI92_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI92_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 11
; PWR7-NEXT: vsubuwm 3, 3, 5
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_27_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 11
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_27_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 11
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 27, i32 27, i32 27, i32 27>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_28_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_28_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI93_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI93_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI93_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI93_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 14
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_28_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI93_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI93_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI93_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI93_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 14
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_28_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI93_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI93_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI93_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI93_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 14
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_28_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 14
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_28_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 14
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 28, i32 28, i32 28, i32 28>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_28_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_28_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI94_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI94_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI94_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI94_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 14
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_28_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI94_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI94_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI94_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI94_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 14
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_28_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI94_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI94_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI94_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI94_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 14
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_28_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 14
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_28_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 14
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 28, i32 28, i32 28, i32 28>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_29_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_29_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI95_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI95_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI95_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI95_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 13
; PWR5-NEXT: vsubuwm 3, 3, 5
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_29_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI95_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI95_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI95_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI95_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 13
; PWR6-NEXT: vsubuwm 3, 3, 5
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_29_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI95_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI95_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI95_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI95_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 13
; PWR7-NEXT: vsubuwm 3, 3, 5
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_29_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 13
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_29_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 13
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 29, i32 29, i32 29, i32 29>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_29_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_29_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI96_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI96_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI96_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI96_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 13
; PWR5-NEXT: vsubuwm 3, 3, 5
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_29_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI96_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI96_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI96_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI96_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 13
; PWR6-NEXT: vsubuwm 3, 3, 5
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_29_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI96_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI96_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI96_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI96_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 13
; PWR7-NEXT: vsubuwm 3, 3, 5
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_29_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 13
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_29_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 13
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 29, i32 29, i32 29, i32 29>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_30_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_30_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI97_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI97_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI97_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI97_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 15
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_30_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI97_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI97_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI97_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI97_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 15
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_30_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI97_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI97_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI97_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI97_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 15
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_30_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 15
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_30_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 15
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 30, i32 30, i32 30, i32 30>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ugt_30_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ugt_30_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI98_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI98_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI98_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI98_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 15
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vcmpgtuw 2, 2, 3
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_30_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI98_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI98_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI98_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI98_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 15
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vcmpgtuw 2, 2, 3
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_30_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI98_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI98_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI98_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI98_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 15
; PWR7-NEXT: vadduwm 3, 3, 3
; PWR7-NEXT: vcmpgtuw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_30_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, 15
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vadduwm 3, 3, 3
; PWR8-NEXT: vcmpgtuw 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_30_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, 15
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vadduwm 3, 3, 3
; PWR9-NEXT: vcmpgtuw 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ugt <4 x i32> %2, <i32 30, i32 30, i32 30, i32 30>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <4 x i32> @ult_31_v4i32(<4 x i32> %0) {
; PWR5-LABEL: ult_31_v4i32:
; PWR5: # %bb.0:
; PWR5-NEXT: addis 3, 2, .LCPI99_0@toc@ha
; PWR5-NEXT: vspltisw 4, 1
; PWR5-NEXT: vxor 3, 3, 3
; PWR5-NEXT: addi 3, 3, .LCPI99_0@toc@l
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: addis 3, 2, .LCPI99_1@toc@ha
; PWR5-NEXT: addi 3, 3, .LCPI99_1@toc@l
; PWR5-NEXT: vspltisw 0, 2
; PWR5-NEXT: vsrw 4, 2, 4
; PWR5-NEXT: vand 4, 4, 5
; PWR5-NEXT: lvx 5, 0, 3
; PWR5-NEXT: vsubuwm 2, 2, 4
; PWR5-NEXT: vand 4, 2, 5
; PWR5-NEXT: vsrw 2, 2, 0
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, 4
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 4, 2, 5
; PWR5-NEXT: vspltisb 5, 15
; PWR5-NEXT: vadduwm 2, 2, 4
; PWR5-NEXT: vspltisb 4, 1
; PWR5-NEXT: vand 2, 2, 5
; PWR5-NEXT: vspltisw 5, -16
; PWR5-NEXT: vrlw 0, 4, 5
; PWR5-NEXT: vmulouh 4, 2, 4
; PWR5-NEXT: vmsumuhm 2, 2, 0, 3
; PWR5-NEXT: vspltisw 3, 12
; PWR5-NEXT: vadduwm 3, 3, 3
; PWR5-NEXT: vslw 2, 2, 5
; PWR5-NEXT: vadduwm 2, 4, 2
; PWR5-NEXT: vsrw 2, 2, 3
; PWR5-NEXT: vspltisw 3, 15
; PWR5-NEXT: vsubuwm 3, 3, 5
; PWR5-NEXT: vcmpgtuw 2, 3, 2
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_31_v4i32:
; PWR6: # %bb.0:
; PWR6-NEXT: addis 3, 2, .LCPI99_0@toc@ha
; PWR6-NEXT: vspltisw 4, 1
; PWR6-NEXT: vxor 3, 3, 3
; PWR6-NEXT: addi 3, 3, .LCPI99_0@toc@l
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: addis 3, 2, .LCPI99_1@toc@ha
; PWR6-NEXT: addi 3, 3, .LCPI99_1@toc@l
; PWR6-NEXT: vspltisw 0, 2
; PWR6-NEXT: vsrw 4, 2, 4
; PWR6-NEXT: vand 4, 4, 5
; PWR6-NEXT: lvx 5, 0, 3
; PWR6-NEXT: vsubuwm 2, 2, 4
; PWR6-NEXT: vand 4, 2, 5
; PWR6-NEXT: vsrw 2, 2, 0
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, 4
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 4, 2, 5
; PWR6-NEXT: vspltisb 5, 15
; PWR6-NEXT: vadduwm 2, 2, 4
; PWR6-NEXT: vspltisb 4, 1
; PWR6-NEXT: vand 2, 2, 5
; PWR6-NEXT: vspltisw 5, -16
; PWR6-NEXT: vrlw 0, 4, 5
; PWR6-NEXT: vmulouh 4, 2, 4
; PWR6-NEXT: vmsumuhm 2, 2, 0, 3
; PWR6-NEXT: vspltisw 3, 12
; PWR6-NEXT: vadduwm 3, 3, 3
; PWR6-NEXT: vslw 2, 2, 5
; PWR6-NEXT: vadduwm 2, 4, 2
; PWR6-NEXT: vsrw 2, 2, 3
; PWR6-NEXT: vspltisw 3, 15
; PWR6-NEXT: vsubuwm 3, 3, 5
; PWR6-NEXT: vcmpgtuw 2, 3, 2
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_31_v4i32:
; PWR7: # %bb.0:
; PWR7-NEXT: vspltisw 3, 1
; PWR7-NEXT: addis 3, 2, .LCPI99_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI99_0@toc@l
; PWR7-NEXT: vspltisw 4, 2
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI99_1@toc@ha
; PWR7-NEXT: vspltisw 5, -16
; PWR7-NEXT: vsrw 3, 2, 3
; PWR7-NEXT: addi 3, 3, .LCPI99_1@toc@l
; PWR7-NEXT: vspltisb 0, 15
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: vsubuwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vspltisw 4, 4
; PWR7-NEXT: xxland 35, 35, 0
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vsrw 3, 2, 4
; PWR7-NEXT: vspltisb 4, 1
; PWR7-NEXT: vrlw 1, 4, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: xxlxor 35, 35, 35
; PWR7-NEXT: xxland 34, 34, 32
; PWR7-NEXT: vmsumuhm 3, 2, 1, 3
; PWR7-NEXT: vmulouh 2, 2, 4
; PWR7-NEXT: vspltisw 4, 12
; PWR7-NEXT: vslw 3, 3, 5
; PWR7-NEXT: vadduwm 2, 2, 3
; PWR7-NEXT: vadduwm 3, 4, 4
; PWR7-NEXT: vsrw 2, 2, 3
; PWR7-NEXT: vspltisw 3, 15
; PWR7-NEXT: vsubuwm 3, 3, 5
; PWR7-NEXT: vcmpgtuw 2, 3, 2
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_31_v4i32:
; PWR8: # %bb.0:
; PWR8-NEXT: vspltisw 3, -16
; PWR8-NEXT: vspltisw 4, 15
; PWR8-NEXT: vpopcntw 2, 2
; PWR8-NEXT: vsubuwm 3, 4, 3
; PWR8-NEXT: vcmpgtuw 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_31_v4i32:
; PWR9: # %bb.0:
; PWR9-NEXT: vspltisw 3, -16
; PWR9-NEXT: vspltisw 4, 15
; PWR9-NEXT: vpopcntw 2, 2
; PWR9-NEXT: vsubuwm 3, 4, 3
; PWR9-NEXT: vcmpgtuw 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <4 x i32> @llvm.ctpop.v4i32(<4 x i32> %0)
%3 = icmp ult <4 x i32> %2, <i32 31, i32 31, i32 31, i32 31>
%4 = sext <4 x i1> %3 to <4 x i32>
ret <4 x i32> %4
}
define <2 x i64> @ugt_1_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_1_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: addi 5, 3, -1
; PWR5-NEXT: and 3, 3, 5
; PWR5-NEXT: addi 5, 4, -1
; PWR5-NEXT: subfic 3, 3, 0
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: and 4, 4, 5
; PWR5-NEXT: subfic 4, 4, 0
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_1_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: addi 5, 3, -1
; PWR6-NEXT: and 3, 3, 5
; PWR6-NEXT: addi 5, 4, -1
; PWR6-NEXT: subfic 3, 3, 0
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: and 4, 4, 5
; PWR6-NEXT: subfic 4, 4, 0
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_1_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: addi 3, 3, -1
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: ld 3, -32(1)
; PWR7-NEXT: addi 3, 3, -1
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI100_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI100_0@toc@l
; PWR7-NEXT: lxvw4x 35, 0, 3
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vcmpequw 2, 2, 3
; PWR7-NEXT: xxlnor 34, 34, 34
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_1_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI100_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI100_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_1_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI100_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI100_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 1, i64 1>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_2_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_2_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: addi 5, 3, -1
; PWR5-NEXT: and 3, 3, 5
; PWR5-NEXT: addi 5, 4, -1
; PWR5-NEXT: addic 3, 3, -1
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: and 4, 4, 5
; PWR5-NEXT: addic 4, 4, -1
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_2_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: addi 5, 3, -1
; PWR6-NEXT: and 3, 3, 5
; PWR6-NEXT: addi 5, 4, -1
; PWR6-NEXT: addic 3, 3, -1
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: and 4, 4, 5
; PWR6-NEXT: addic 4, 4, -1
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_2_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: addi 3, 3, -1
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: ld 3, -32(1)
; PWR7-NEXT: addi 3, 3, -1
; PWR7-NEXT: std 3, -16(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: lxvw4x 0, 0, 3
; PWR7-NEXT: addis 3, 2, .LCPI101_0@toc@ha
; PWR7-NEXT: addi 3, 3, .LCPI101_0@toc@l
; PWR7-NEXT: lxvw4x 35, 0, 3
; PWR7-NEXT: xxland 34, 34, 0
; PWR7-NEXT: vcmpequw 2, 2, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_2_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI101_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI101_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_2_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI101_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI101_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 2, i64 2>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_2_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_2_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 2
; PWR5-NEXT: subfic 3, 3, 2
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 2
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_2_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 2
; PWR6-NEXT: subfic 3, 3, 2
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 2
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_2_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 2
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 2
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_2_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI102_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI102_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_2_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI102_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI102_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 2, i64 2>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_3_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_3_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 3
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_3_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 3
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_3_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 3
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 3
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_3_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI103_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI103_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_3_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI103_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI103_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 3, i64 3>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_3_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_3_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 3
; PWR5-NEXT: subfic 3, 3, 3
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 3
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_3_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 3
; PWR6-NEXT: subfic 3, 3, 3
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 3
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_3_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 3
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 3
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_3_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI104_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI104_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_3_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI104_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI104_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 3, i64 3>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_4_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_4_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 4
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_4_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 4
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_4_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 4
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 4
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_4_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI105_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI105_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_4_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI105_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI105_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 4, i64 4>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_4_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_4_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 4
; PWR5-NEXT: subfic 3, 3, 4
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 4
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_4_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 4
; PWR6-NEXT: subfic 3, 3, 4
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 4
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_4_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 4
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 4
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_4_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI106_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI106_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_4_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI106_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI106_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 4, i64 4>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_5_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_5_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 5
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_5_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 5
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_5_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 5
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 5
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_5_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI107_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI107_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_5_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI107_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI107_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 5, i64 5>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_5_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_5_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 5
; PWR5-NEXT: subfic 3, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 5
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_5_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 5
; PWR6-NEXT: subfic 3, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 5
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_5_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 5
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 5
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_5_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI108_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI108_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_5_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI108_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI108_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 5, i64 5>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_6_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_6_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 6
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_6_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 6
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_6_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 6
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 6
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_6_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI109_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI109_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_6_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI109_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI109_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 6, i64 6>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_6_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_6_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 6
; PWR5-NEXT: subfic 3, 3, 6
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 6
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_6_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 6
; PWR6-NEXT: subfic 3, 3, 6
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 6
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_6_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 6
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 6
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_6_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI110_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI110_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_6_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI110_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI110_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 6, i64 6>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_7_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_7_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 7
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_7_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 7
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_7_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 7
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 7
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_7_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI111_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI111_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_7_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI111_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI111_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 7, i64 7>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_7_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_7_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 7
; PWR5-NEXT: subfic 3, 3, 7
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 7
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_7_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 7
; PWR6-NEXT: subfic 3, 3, 7
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 7
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_7_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 7
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 7
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_7_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI112_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI112_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_7_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI112_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI112_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 7, i64 7>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_8_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_8_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 8
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_8_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 8
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_8_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 8
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 8
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_8_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI113_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI113_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_8_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI113_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI113_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 8, i64 8>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_8_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_8_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 8
; PWR5-NEXT: subfic 3, 3, 8
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 8
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_8_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 8
; PWR6-NEXT: subfic 3, 3, 8
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 8
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_8_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 8
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 8
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_8_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI114_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI114_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_8_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI114_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI114_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 8, i64 8>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_9_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_9_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 9
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_9_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 9
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_9_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 9
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 9
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_9_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI115_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI115_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_9_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI115_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI115_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 9, i64 9>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_9_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_9_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 9
; PWR5-NEXT: subfic 3, 3, 9
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 9
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_9_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 9
; PWR6-NEXT: subfic 3, 3, 9
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 9
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_9_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 9
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 9
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_9_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI116_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI116_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_9_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI116_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI116_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 9, i64 9>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_10_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_10_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 10
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_10_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 10
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_10_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 10
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 10
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_10_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI117_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI117_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_10_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI117_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI117_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 10, i64 10>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_10_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_10_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 10
; PWR5-NEXT: subfic 3, 3, 10
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 10
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_10_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 10
; PWR6-NEXT: subfic 3, 3, 10
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 10
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_10_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 10
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 10
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_10_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI118_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI118_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_10_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI118_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI118_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 10, i64 10>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_11_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_11_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 11
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_11_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 11
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_11_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 11
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 11
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_11_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI119_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI119_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_11_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI119_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI119_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 11, i64 11>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_11_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_11_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 11
; PWR5-NEXT: subfic 3, 3, 11
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 11
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_11_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 11
; PWR6-NEXT: subfic 3, 3, 11
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 11
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_11_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 11
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 11
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_11_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI120_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI120_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_11_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI120_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI120_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 11, i64 11>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_12_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_12_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 12
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_12_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 12
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_12_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 12
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 12
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_12_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI121_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI121_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_12_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI121_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI121_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 12, i64 12>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_12_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_12_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 12
; PWR5-NEXT: subfic 3, 3, 12
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 12
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_12_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 12
; PWR6-NEXT: subfic 3, 3, 12
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 12
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_12_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 12
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 12
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_12_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI122_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI122_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_12_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI122_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI122_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 12, i64 12>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_13_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_13_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 13
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_13_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 13
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_13_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 13
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 13
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_13_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI123_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI123_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_13_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI123_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI123_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 13, i64 13>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_13_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_13_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 13
; PWR5-NEXT: subfic 3, 3, 13
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 13
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_13_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 13
; PWR6-NEXT: subfic 3, 3, 13
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 13
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_13_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 13
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 13
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_13_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI124_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI124_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_13_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI124_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI124_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 13, i64 13>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_14_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_14_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 14
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_14_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 14
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_14_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 14
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 14
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_14_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI125_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI125_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_14_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI125_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI125_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 14, i64 14>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_14_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_14_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 14
; PWR5-NEXT: subfic 3, 3, 14
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 14
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_14_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 14
; PWR6-NEXT: subfic 3, 3, 14
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 14
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_14_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 14
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 14
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_14_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI126_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI126_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_14_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI126_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI126_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 14, i64 14>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_15_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_15_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 15
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_15_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 15
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_15_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 15
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 15
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_15_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI127_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI127_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_15_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI127_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI127_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 15, i64 15>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_15_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_15_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 15
; PWR5-NEXT: subfic 3, 3, 15
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 15
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_15_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 15
; PWR6-NEXT: subfic 3, 3, 15
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 15
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_15_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 15
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 15
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_15_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI128_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI128_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_15_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI128_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI128_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 15, i64 15>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_16_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_16_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 16
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_16_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 16
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_16_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 16
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 16
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_16_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI129_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI129_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_16_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI129_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI129_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 16, i64 16>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_16_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_16_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 16
; PWR5-NEXT: subfic 3, 3, 16
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 16
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_16_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 16
; PWR6-NEXT: subfic 3, 3, 16
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 16
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_16_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 16
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 16
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_16_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI130_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI130_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_16_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI130_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI130_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 16, i64 16>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_17_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_17_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 17
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_17_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 17
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_17_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 17
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 17
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_17_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI131_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI131_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_17_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI131_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI131_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 17, i64 17>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_17_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_17_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 17
; PWR5-NEXT: subfic 3, 3, 17
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 17
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_17_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 17
; PWR6-NEXT: subfic 3, 3, 17
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 17
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_17_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 17
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 17
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_17_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI132_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI132_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_17_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI132_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI132_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 17, i64 17>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_18_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_18_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 18
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_18_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 18
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_18_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 18
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 18
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_18_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI133_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI133_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_18_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI133_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI133_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 18, i64 18>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_18_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_18_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 18
; PWR5-NEXT: subfic 3, 3, 18
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 18
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_18_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 18
; PWR6-NEXT: subfic 3, 3, 18
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 18
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_18_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 18
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 18
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_18_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI134_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI134_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_18_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI134_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI134_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 18, i64 18>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_19_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_19_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 19
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_19_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 19
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_19_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 19
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 19
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_19_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI135_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI135_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_19_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI135_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI135_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 19, i64 19>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_19_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_19_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 19
; PWR5-NEXT: subfic 3, 3, 19
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 19
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_19_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 19
; PWR6-NEXT: subfic 3, 3, 19
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 19
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_19_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 19
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 19
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_19_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI136_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI136_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_19_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI136_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI136_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 19, i64 19>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_20_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_20_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 20
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_20_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 20
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_20_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 20
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 20
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_20_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI137_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI137_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_20_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI137_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI137_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 20, i64 20>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_20_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_20_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 20
; PWR5-NEXT: subfic 3, 3, 20
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 20
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_20_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 20
; PWR6-NEXT: subfic 3, 3, 20
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 20
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_20_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 20
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 20
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_20_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI138_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI138_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_20_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI138_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI138_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 20, i64 20>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_21_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_21_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 21
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_21_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 21
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_21_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 21
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 21
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_21_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI139_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI139_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_21_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI139_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI139_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 21, i64 21>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_21_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_21_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 21
; PWR5-NEXT: subfic 3, 3, 21
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 21
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_21_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 21
; PWR6-NEXT: subfic 3, 3, 21
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 21
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_21_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 21
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 21
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_21_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI140_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI140_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_21_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI140_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI140_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 21, i64 21>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_22_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_22_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 22
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_22_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 22
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_22_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 22
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 22
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_22_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI141_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI141_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_22_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI141_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI141_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 22, i64 22>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_22_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_22_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 22
; PWR5-NEXT: subfic 3, 3, 22
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 22
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_22_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 22
; PWR6-NEXT: subfic 3, 3, 22
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 22
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_22_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 22
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 22
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_22_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI142_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI142_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_22_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI142_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI142_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 22, i64 22>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_23_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_23_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 23
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_23_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 23
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_23_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 23
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 23
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_23_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI143_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI143_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_23_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI143_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI143_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 23, i64 23>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_23_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_23_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 23
; PWR5-NEXT: subfic 3, 3, 23
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 23
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_23_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 23
; PWR6-NEXT: subfic 3, 3, 23
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 23
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_23_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 23
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 23
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_23_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI144_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI144_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_23_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI144_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI144_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 23, i64 23>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_24_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_24_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 24
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_24_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 24
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_24_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 24
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 24
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_24_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI145_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI145_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_24_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI145_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI145_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 24, i64 24>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_24_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_24_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 24
; PWR5-NEXT: subfic 3, 3, 24
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 24
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_24_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 24
; PWR6-NEXT: subfic 3, 3, 24
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 24
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_24_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 24
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 24
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_24_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI146_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI146_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_24_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI146_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI146_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 24, i64 24>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_25_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_25_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 25
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_25_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 25
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_25_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 25
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 25
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_25_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI147_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI147_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_25_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI147_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI147_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 25, i64 25>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_25_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_25_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 25
; PWR5-NEXT: subfic 3, 3, 25
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 25
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_25_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 25
; PWR6-NEXT: subfic 3, 3, 25
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 25
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_25_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 25
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 25
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_25_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI148_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI148_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_25_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI148_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI148_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 25, i64 25>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_26_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_26_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 26
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_26_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 26
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_26_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 26
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 26
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_26_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI149_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI149_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_26_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI149_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI149_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 26, i64 26>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_26_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_26_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 26
; PWR5-NEXT: subfic 3, 3, 26
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 26
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_26_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 26
; PWR6-NEXT: subfic 3, 3, 26
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 26
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_26_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 26
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 26
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_26_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI150_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI150_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_26_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI150_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI150_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 26, i64 26>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_27_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_27_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 27
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_27_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 27
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_27_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 27
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 27
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_27_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI151_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI151_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_27_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI151_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI151_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 27, i64 27>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_27_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_27_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 27
; PWR5-NEXT: subfic 3, 3, 27
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 27
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_27_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 27
; PWR6-NEXT: subfic 3, 3, 27
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 27
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_27_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 27
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 27
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_27_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI152_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI152_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_27_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI152_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI152_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 27, i64 27>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_28_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_28_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 28
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_28_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 28
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_28_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 28
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 28
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_28_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI153_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI153_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_28_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI153_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI153_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 28, i64 28>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_28_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_28_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 28
; PWR5-NEXT: subfic 3, 3, 28
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 28
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_28_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 28
; PWR6-NEXT: subfic 3, 3, 28
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 28
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_28_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 28
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 28
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_28_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI154_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI154_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_28_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI154_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI154_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 28, i64 28>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_29_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_29_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 29
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_29_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 29
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_29_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 29
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 29
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_29_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI155_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI155_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_29_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI155_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI155_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 29, i64 29>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_29_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_29_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 29
; PWR5-NEXT: subfic 3, 3, 29
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 29
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_29_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 29
; PWR6-NEXT: subfic 3, 3, 29
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 29
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_29_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 29
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 29
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_29_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI156_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI156_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_29_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI156_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI156_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 29, i64 29>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_30_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_30_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 30
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_30_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 30
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_30_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 30
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 30
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_30_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI157_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI157_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_30_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI157_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI157_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 30, i64 30>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_30_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_30_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 30
; PWR5-NEXT: subfic 3, 3, 30
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 30
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_30_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 30
; PWR6-NEXT: subfic 3, 3, 30
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 30
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_30_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 30
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 30
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_30_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI158_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI158_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_30_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI158_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI158_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 30, i64 30>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_31_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_31_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 31
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_31_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 31
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_31_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 31
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 31
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_31_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI159_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI159_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_31_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI159_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI159_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 31, i64 31>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_31_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_31_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 31
; PWR5-NEXT: subfic 3, 3, 31
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 31
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_31_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 31
; PWR6-NEXT: subfic 3, 3, 31
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 31
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_31_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 31
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 31
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_31_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI160_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI160_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_31_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI160_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI160_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 31, i64 31>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_32_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_32_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 32
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_32_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 32
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_32_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 32
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 32
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_32_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI161_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI161_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_32_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI161_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI161_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 32, i64 32>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_32_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_32_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 32
; PWR5-NEXT: subfic 3, 3, 32
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 32
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_32_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 32
; PWR6-NEXT: subfic 3, 3, 32
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 32
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_32_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 32
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 32
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_32_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI162_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI162_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_32_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI162_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI162_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 32, i64 32>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_33_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_33_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 33
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_33_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 33
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_33_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 33
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 33
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_33_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI163_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI163_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_33_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI163_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI163_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 33, i64 33>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_33_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_33_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 33
; PWR5-NEXT: subfic 3, 3, 33
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 33
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_33_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 33
; PWR6-NEXT: subfic 3, 3, 33
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 33
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_33_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 33
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 33
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_33_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI164_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI164_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_33_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI164_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI164_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 33, i64 33>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_34_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_34_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 34
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_34_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 34
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_34_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 34
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 34
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_34_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI165_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI165_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_34_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI165_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI165_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 34, i64 34>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_34_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_34_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 34
; PWR5-NEXT: subfic 3, 3, 34
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 34
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_34_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 34
; PWR6-NEXT: subfic 3, 3, 34
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 34
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_34_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 34
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 34
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_34_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI166_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI166_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_34_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI166_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI166_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 34, i64 34>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_35_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_35_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 35
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_35_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 35
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_35_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 35
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 35
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_35_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI167_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI167_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_35_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI167_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI167_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 35, i64 35>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_35_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_35_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 35
; PWR5-NEXT: subfic 3, 3, 35
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 35
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_35_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 35
; PWR6-NEXT: subfic 3, 3, 35
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 35
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_35_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 35
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 35
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_35_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI168_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI168_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_35_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI168_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI168_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 35, i64 35>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_36_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_36_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 36
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_36_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 36
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_36_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 36
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 36
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_36_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI169_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI169_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_36_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI169_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI169_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 36, i64 36>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_36_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_36_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 36
; PWR5-NEXT: subfic 3, 3, 36
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 36
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_36_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 36
; PWR6-NEXT: subfic 3, 3, 36
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 36
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_36_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 36
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 36
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_36_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI170_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI170_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_36_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI170_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI170_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 36, i64 36>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_37_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_37_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 37
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_37_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 37
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_37_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 37
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 37
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_37_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI171_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI171_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_37_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI171_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI171_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 37, i64 37>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_37_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_37_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 37
; PWR5-NEXT: subfic 3, 3, 37
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 37
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_37_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 37
; PWR6-NEXT: subfic 3, 3, 37
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 37
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_37_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 37
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 37
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_37_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI172_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI172_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_37_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI172_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI172_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 37, i64 37>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_38_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_38_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 38
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_38_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 38
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_38_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 38
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 38
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_38_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI173_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI173_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_38_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI173_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI173_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 38, i64 38>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_38_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_38_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 38
; PWR5-NEXT: subfic 3, 3, 38
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 38
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_38_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 38
; PWR6-NEXT: subfic 3, 3, 38
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 38
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_38_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 38
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 38
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_38_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI174_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI174_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_38_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI174_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI174_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 38, i64 38>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_39_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_39_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 39
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_39_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 39
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_39_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 39
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 39
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_39_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI175_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI175_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_39_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI175_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI175_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 39, i64 39>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_39_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_39_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 39
; PWR5-NEXT: subfic 3, 3, 39
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 39
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_39_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 39
; PWR6-NEXT: subfic 3, 3, 39
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 39
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_39_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 39
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 39
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_39_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI176_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI176_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_39_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI176_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI176_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 39, i64 39>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_40_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_40_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 40
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_40_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 40
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_40_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 40
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 40
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_40_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI177_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI177_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_40_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI177_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI177_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 40, i64 40>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_40_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_40_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 40
; PWR5-NEXT: subfic 3, 3, 40
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 40
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_40_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 40
; PWR6-NEXT: subfic 3, 3, 40
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 40
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_40_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 40
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 40
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_40_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI178_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI178_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_40_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI178_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI178_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 40, i64 40>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_41_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_41_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 41
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_41_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 41
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_41_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 41
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 41
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_41_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI179_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI179_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_41_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI179_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI179_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 41, i64 41>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_41_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_41_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 41
; PWR5-NEXT: subfic 3, 3, 41
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 41
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_41_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 41
; PWR6-NEXT: subfic 3, 3, 41
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 41
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_41_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 41
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 41
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_41_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI180_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI180_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_41_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI180_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI180_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 41, i64 41>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_42_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_42_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 42
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_42_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 42
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_42_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 42
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 42
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_42_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI181_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI181_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_42_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI181_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI181_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 42, i64 42>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_42_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_42_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 42
; PWR5-NEXT: subfic 3, 3, 42
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 42
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_42_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 42
; PWR6-NEXT: subfic 3, 3, 42
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 42
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_42_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 42
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 42
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_42_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI182_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI182_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_42_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI182_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI182_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 42, i64 42>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_43_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_43_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 43
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_43_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 43
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_43_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 43
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 43
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_43_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI183_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI183_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_43_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI183_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI183_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 43, i64 43>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_43_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_43_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 43
; PWR5-NEXT: subfic 3, 3, 43
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 43
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_43_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 43
; PWR6-NEXT: subfic 3, 3, 43
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 43
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_43_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 43
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 43
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_43_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI184_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI184_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_43_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI184_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI184_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 43, i64 43>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_44_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_44_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 44
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_44_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 44
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_44_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 44
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 44
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_44_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI185_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI185_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_44_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI185_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI185_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 44, i64 44>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_44_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_44_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 44
; PWR5-NEXT: subfic 3, 3, 44
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 44
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_44_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 44
; PWR6-NEXT: subfic 3, 3, 44
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 44
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_44_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 44
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 44
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_44_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI186_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI186_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_44_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI186_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI186_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 44, i64 44>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_45_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_45_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 45
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_45_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 45
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_45_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 45
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 45
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_45_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI187_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI187_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_45_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI187_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI187_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 45, i64 45>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_45_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_45_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 45
; PWR5-NEXT: subfic 3, 3, 45
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 45
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_45_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 45
; PWR6-NEXT: subfic 3, 3, 45
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 45
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_45_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 45
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 45
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_45_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI188_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI188_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_45_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI188_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI188_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 45, i64 45>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_46_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_46_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 46
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_46_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 46
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_46_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 46
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 46
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_46_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI189_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI189_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_46_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI189_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI189_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 46, i64 46>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_46_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_46_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 46
; PWR5-NEXT: subfic 3, 3, 46
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 46
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_46_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 46
; PWR6-NEXT: subfic 3, 3, 46
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 46
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_46_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 46
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 46
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_46_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI190_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI190_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_46_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI190_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI190_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 46, i64 46>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_47_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_47_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 47
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_47_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 47
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_47_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 47
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 47
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_47_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI191_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI191_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_47_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI191_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI191_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 47, i64 47>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_47_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_47_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 47
; PWR5-NEXT: subfic 3, 3, 47
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 47
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_47_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 47
; PWR6-NEXT: subfic 3, 3, 47
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 47
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_47_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 47
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 47
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_47_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI192_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI192_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_47_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI192_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI192_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 47, i64 47>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_48_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_48_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 48
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_48_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 48
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_48_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 48
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 48
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_48_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI193_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI193_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_48_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI193_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI193_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 48, i64 48>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_48_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_48_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 48
; PWR5-NEXT: subfic 3, 3, 48
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 48
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_48_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 48
; PWR6-NEXT: subfic 3, 3, 48
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 48
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_48_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 48
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 48
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_48_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI194_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI194_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_48_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI194_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI194_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 48, i64 48>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_49_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_49_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 49
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_49_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 49
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_49_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 49
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 49
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_49_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI195_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI195_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_49_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI195_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI195_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 49, i64 49>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_49_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_49_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 49
; PWR5-NEXT: subfic 3, 3, 49
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 49
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_49_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 49
; PWR6-NEXT: subfic 3, 3, 49
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 49
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_49_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 49
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 49
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_49_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI196_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI196_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_49_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI196_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI196_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 49, i64 49>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_50_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_50_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 50
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_50_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 50
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_50_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 50
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 50
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_50_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI197_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI197_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_50_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI197_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI197_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 50, i64 50>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_50_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_50_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 50
; PWR5-NEXT: subfic 3, 3, 50
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 50
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_50_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 50
; PWR6-NEXT: subfic 3, 3, 50
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 50
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_50_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 50
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 50
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_50_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI198_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI198_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_50_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI198_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI198_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 50, i64 50>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_51_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_51_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 51
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_51_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 51
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_51_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 51
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 51
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_51_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI199_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI199_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_51_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI199_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI199_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 51, i64 51>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_51_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_51_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 51
; PWR5-NEXT: subfic 3, 3, 51
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 51
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_51_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 51
; PWR6-NEXT: subfic 3, 3, 51
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 51
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_51_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 51
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 51
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_51_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI200_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI200_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_51_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI200_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI200_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 51, i64 51>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_52_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_52_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 52
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_52_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 52
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_52_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 52
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 52
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_52_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI201_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI201_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_52_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI201_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI201_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 52, i64 52>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_52_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_52_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 52
; PWR5-NEXT: subfic 3, 3, 52
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 52
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_52_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 52
; PWR6-NEXT: subfic 3, 3, 52
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 52
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_52_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 52
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 52
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_52_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI202_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI202_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_52_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI202_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI202_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 52, i64 52>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_53_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_53_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 53
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_53_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 53
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_53_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 53
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 53
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_53_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI203_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI203_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_53_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI203_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI203_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 53, i64 53>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_53_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_53_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 53
; PWR5-NEXT: subfic 3, 3, 53
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 53
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_53_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 53
; PWR6-NEXT: subfic 3, 3, 53
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 53
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_53_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 53
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 53
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_53_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI204_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI204_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_53_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI204_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI204_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 53, i64 53>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_54_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_54_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 54
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_54_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 54
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_54_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 54
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 54
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_54_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI205_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI205_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_54_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI205_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI205_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 54, i64 54>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_54_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_54_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 54
; PWR5-NEXT: subfic 3, 3, 54
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 54
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_54_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 54
; PWR6-NEXT: subfic 3, 3, 54
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 54
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_54_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 54
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 54
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_54_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI206_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI206_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_54_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI206_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI206_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 54, i64 54>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_55_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_55_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 55
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_55_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 55
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_55_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 55
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 55
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_55_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI207_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI207_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_55_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI207_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI207_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 55, i64 55>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_55_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_55_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 55
; PWR5-NEXT: subfic 3, 3, 55
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 55
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_55_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 55
; PWR6-NEXT: subfic 3, 3, 55
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 55
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_55_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 55
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 55
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_55_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI208_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI208_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_55_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI208_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI208_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 55, i64 55>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_56_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_56_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_56_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_56_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 56
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 56
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_56_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI209_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI209_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_56_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI209_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI209_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 56, i64 56>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_56_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_56_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 56
; PWR5-NEXT: subfic 3, 3, 56
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 56
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_56_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 56
; PWR6-NEXT: subfic 3, 3, 56
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 56
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_56_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 56
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 56
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_56_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI210_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI210_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_56_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI210_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI210_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 56, i64 56>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_57_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_57_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 57
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_57_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 57
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_57_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 57
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 57
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_57_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI211_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI211_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_57_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI211_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI211_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 57, i64 57>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_57_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_57_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 57
; PWR5-NEXT: subfic 3, 3, 57
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 57
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_57_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 57
; PWR6-NEXT: subfic 3, 3, 57
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 57
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_57_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 57
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 57
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_57_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI212_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI212_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_57_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI212_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI212_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 57, i64 57>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_58_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_58_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 58
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_58_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 58
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_58_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 58
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 58
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_58_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI213_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI213_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_58_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI213_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI213_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 58, i64 58>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_58_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_58_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 58
; PWR5-NEXT: subfic 3, 3, 58
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 58
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_58_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 58
; PWR6-NEXT: subfic 3, 3, 58
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 58
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_58_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 58
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 58
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_58_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI214_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI214_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_58_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI214_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI214_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 58, i64 58>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_59_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_59_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 59
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_59_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 59
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_59_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 59
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 59
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_59_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI215_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI215_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_59_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI215_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI215_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 59, i64 59>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_59_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_59_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 59
; PWR5-NEXT: subfic 3, 3, 59
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 59
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_59_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 59
; PWR6-NEXT: subfic 3, 3, 59
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 59
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_59_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 59
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 59
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_59_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI216_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI216_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_59_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI216_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI216_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 59, i64 59>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_60_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_60_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 60
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_60_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 60
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_60_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 60
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 60
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_60_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI217_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI217_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_60_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI217_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI217_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 60, i64 60>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_60_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_60_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 60
; PWR5-NEXT: subfic 3, 3, 60
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 60
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_60_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 60
; PWR6-NEXT: subfic 3, 3, 60
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 60
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_60_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 60
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 60
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_60_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI218_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI218_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_60_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI218_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI218_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 60, i64 60>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_61_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_61_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 61
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_61_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 61
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_61_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 61
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 61
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_61_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI219_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI219_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_61_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI219_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI219_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 61, i64 61>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_61_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_61_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 61
; PWR5-NEXT: subfic 3, 3, 61
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 61
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_61_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 61
; PWR6-NEXT: subfic 3, 3, 61
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 61
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_61_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 61
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 61
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_61_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI220_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI220_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_61_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI220_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI220_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 61, i64 61>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_62_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_62_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 62
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_62_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 62
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_62_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 62
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 62
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_62_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI221_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI221_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_62_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI221_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI221_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 62, i64 62>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ugt_62_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ugt_62_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: li 5, 62
; PWR5-NEXT: subfic 3, 3, 62
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 5, 5
; PWR5-NEXT: subfic 4, 4, 62
; PWR5-NEXT: subfe 4, 5, 5
; PWR5-NEXT: blr
;
; PWR6-LABEL: ugt_62_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: li 5, 62
; PWR6-NEXT: subfic 3, 3, 62
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 5, 5
; PWR6-NEXT: subfic 4, 4, 62
; PWR6-NEXT: subfe 4, 5, 5
; PWR6-NEXT: blr
;
; PWR7-LABEL: ugt_62_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 62
; PWR7-NEXT: iselgt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 62
; PWR7-NEXT: iselgt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ugt_62_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI222_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI222_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 2, 3
; PWR8-NEXT: blr
;
; PWR9-LABEL: ugt_62_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI222_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI222_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 2, 3
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ugt <2 x i64> %2, <i64 62, i64 62>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
define <2 x i64> @ult_63_v2i64(<2 x i64> %0) {
; PWR5-LABEL: ult_63_v2i64:
; PWR5: # %bb.0:
; PWR5-NEXT: lis 5, 21845
; PWR5-NEXT: lis 6, 13107
; PWR5-NEXT: ori 5, 5, 21845
; PWR5-NEXT: rotldi 8, 4, 63
; PWR5-NEXT: rotldi 9, 3, 63
; PWR5-NEXT: rldimi 5, 5, 32, 0
; PWR5-NEXT: and 8, 8, 5
; PWR5-NEXT: and 5, 9, 5
; PWR5-NEXT: ori 6, 6, 13107
; PWR5-NEXT: sub 3, 3, 5
; PWR5-NEXT: rldimi 6, 6, 32, 0
; PWR5-NEXT: sub 4, 4, 8
; PWR5-NEXT: and 8, 3, 6
; PWR5-NEXT: rotldi 3, 3, 62
; PWR5-NEXT: and 3, 3, 6
; PWR5-NEXT: lis 7, 3855
; PWR5-NEXT: and 5, 4, 6
; PWR5-NEXT: rotldi 4, 4, 62
; PWR5-NEXT: add 3, 8, 3
; PWR5-NEXT: lis 9, 257
; PWR5-NEXT: ori 7, 7, 3855
; PWR5-NEXT: and 4, 4, 6
; PWR5-NEXT: rldicl 6, 3, 60, 4
; PWR5-NEXT: ori 9, 9, 257
; PWR5-NEXT: rldimi 7, 7, 32, 0
; PWR5-NEXT: add 4, 5, 4
; PWR5-NEXT: add 3, 3, 6
; PWR5-NEXT: rldimi 9, 9, 32, 0
; PWR5-NEXT: rldicl 5, 4, 60, 4
; PWR5-NEXT: and 3, 3, 7
; PWR5-NEXT: add 4, 4, 5
; PWR5-NEXT: mulld 3, 3, 9
; PWR5-NEXT: and 4, 4, 7
; PWR5-NEXT: rldicl 3, 3, 8, 56
; PWR5-NEXT: li 5, 63
; PWR5-NEXT: mulld 4, 4, 9
; PWR5-NEXT: subc 6, 3, 5
; PWR5-NEXT: rldicl 4, 4, 8, 56
; PWR5-NEXT: subfe 3, 3, 3
; PWR5-NEXT: subc 5, 4, 5
; PWR5-NEXT: subfe 4, 4, 4
; PWR5-NEXT: blr
;
; PWR6-LABEL: ult_63_v2i64:
; PWR6: # %bb.0:
; PWR6-NEXT: lis 5, 21845
; PWR6-NEXT: lis 6, 13107
; PWR6-NEXT: ori 5, 5, 21845
; PWR6-NEXT: rotldi 8, 4, 63
; PWR6-NEXT: rotldi 9, 3, 63
; PWR6-NEXT: rldimi 5, 5, 32, 0
; PWR6-NEXT: and 8, 8, 5
; PWR6-NEXT: and 5, 9, 5
; PWR6-NEXT: ori 6, 6, 13107
; PWR6-NEXT: sub 3, 3, 5
; PWR6-NEXT: rldimi 6, 6, 32, 0
; PWR6-NEXT: sub 4, 4, 8
; PWR6-NEXT: and 8, 3, 6
; PWR6-NEXT: rotldi 3, 3, 62
; PWR6-NEXT: and 3, 3, 6
; PWR6-NEXT: lis 7, 3855
; PWR6-NEXT: and 5, 4, 6
; PWR6-NEXT: rotldi 4, 4, 62
; PWR6-NEXT: add 3, 8, 3
; PWR6-NEXT: lis 9, 257
; PWR6-NEXT: ori 7, 7, 3855
; PWR6-NEXT: and 4, 4, 6
; PWR6-NEXT: rldicl 6, 3, 60, 4
; PWR6-NEXT: ori 9, 9, 257
; PWR6-NEXT: rldimi 7, 7, 32, 0
; PWR6-NEXT: add 4, 5, 4
; PWR6-NEXT: add 3, 3, 6
; PWR6-NEXT: rldimi 9, 9, 32, 0
; PWR6-NEXT: rldicl 5, 4, 60, 4
; PWR6-NEXT: and 3, 3, 7
; PWR6-NEXT: add 4, 4, 5
; PWR6-NEXT: mulld 3, 3, 9
; PWR6-NEXT: and 4, 4, 7
; PWR6-NEXT: rldicl 3, 3, 8, 56
; PWR6-NEXT: li 5, 63
; PWR6-NEXT: mulld 4, 4, 9
; PWR6-NEXT: subc 6, 3, 5
; PWR6-NEXT: rldicl 4, 4, 8, 56
; PWR6-NEXT: subfe 3, 3, 3
; PWR6-NEXT: subc 5, 4, 5
; PWR6-NEXT: subfe 4, 4, 4
; PWR6-NEXT: blr
;
; PWR7-LABEL: ult_63_v2i64:
; PWR7: # %bb.0:
; PWR7-NEXT: addi 3, 1, -32
; PWR7-NEXT: li 5, 0
; PWR7-NEXT: li 6, -1
; PWR7-NEXT: stxvd2x 34, 0, 3
; PWR7-NEXT: ld 3, -24(1)
; PWR7-NEXT: ld 4, -32(1)
; PWR7-NEXT: popcntd 3, 3
; PWR7-NEXT: popcntd 4, 4
; PWR7-NEXT: cmpldi 3, 63
; PWR7-NEXT: isellt 3, 6, 5
; PWR7-NEXT: cmpldi 4, 63
; PWR7-NEXT: isellt 4, 6, 5
; PWR7-NEXT: std 3, -8(1)
; PWR7-NEXT: addi 3, 1, -16
; PWR7-NEXT: std 4, -16(1)
; PWR7-NEXT: lxvd2x 34, 0, 3
; PWR7-NEXT: blr
;
; PWR8-LABEL: ult_63_v2i64:
; PWR8: # %bb.0:
; PWR8-NEXT: addis 3, 2, .LCPI223_0@toc@ha
; PWR8-NEXT: vpopcntd 2, 2
; PWR8-NEXT: addi 3, 3, .LCPI223_0@toc@l
; PWR8-NEXT: lxvd2x 35, 0, 3
; PWR8-NEXT: vcmpgtud 2, 3, 2
; PWR8-NEXT: blr
;
; PWR9-LABEL: ult_63_v2i64:
; PWR9: # %bb.0:
; PWR9-NEXT: addis 3, 2, .LCPI223_0@toc@ha
; PWR9-NEXT: vpopcntd 2, 2
; PWR9-NEXT: addi 3, 3, .LCPI223_0@toc@l
; PWR9-NEXT: lxvx 35, 0, 3
; PWR9-NEXT: vcmpgtud 2, 3, 2
; PWR9-NEXT: blr
%2 = tail call <2 x i64> @llvm.ctpop.v2i64(<2 x i64> %0)
%3 = icmp ult <2 x i64> %2, <i64 63, i64 63>
%4 = sext <2 x i1> %3 to <2 x i64>
ret <2 x i64> %4
}
declare <16 x i8> @llvm.ctpop.v16i8(<16 x i8>)
declare <8 x i16> @llvm.ctpop.v8i16(<8 x i16>)
declare <4 x i32> @llvm.ctpop.v4i32(<4 x i32>)
declare <2 x i64> @llvm.ctpop.v2i64(<2 x i64>)