xref: /llvm-project/llvm/test/CodeGen/PowerPC/combine-setcc.ll (revision f6fb752fe80f05e57b4b6928597d1113a558a7c1)
195214673SLi Jia He; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
295214673SLi Jia He; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-unknown \
395214673SLi Jia He; RUN:  -ppc-asm-full-reg-names < %s  | FileCheck %s
495214673SLi Jia He; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-unknown \
595214673SLi Jia He; RUN:  -ppc-asm-full-reg-names < %s  | FileCheck %s
695214673SLi Jia He
795214673SLi Jia Hedefine zeroext i1 @eq1(i1 zeroext %x, i1 zeroext %y) {
895214673SLi Jia He; CHECK-LABEL: eq1:
995214673SLi Jia He; CHECK:       # %bb.0:
10*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
1195214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
1295214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
1395214673SLi Jia He; CHECK-NEXT:    blr
1495214673SLi Jia He  %sub = sext i1 %x to i32
1595214673SLi Jia He  %conv3 = zext i1 %y to i32
1695214673SLi Jia He  %cmp = icmp eq i32 %sub, %conv3
1795214673SLi Jia He  ret i1 %cmp
1895214673SLi Jia He}
1995214673SLi Jia He
2095214673SLi Jia Hedefine zeroext i8 @eq2(i8 zeroext %x, i8 zeroext %y) {
2195214673SLi Jia He; CHECK-LABEL: eq2:
2295214673SLi Jia He; CHECK:       # %bb.0:
23*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
2495214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
2595214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
2695214673SLi Jia He; CHECK-NEXT:    blr
2795214673SLi Jia He  %conv = zext i8 %x to i32
2895214673SLi Jia He  %sub = sub nsw i32 0, %conv
2995214673SLi Jia He  %conv1 = zext i8 %y to i32
3095214673SLi Jia He  %cmp = icmp eq i32 %sub, %conv1
3195214673SLi Jia He  %conv3 = zext i1 %cmp to i8
3295214673SLi Jia He  ret i8 %conv3
3395214673SLi Jia He}
3495214673SLi Jia He
3595214673SLi Jia Hedefine signext i16 @eq3(i16 signext %x, i16 signext %y) {
3695214673SLi Jia He; CHECK-LABEL: eq3:
3795214673SLi Jia He; CHECK:       # %bb.0:
38*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
3995214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
4095214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
4195214673SLi Jia He; CHECK-NEXT:    blr
4295214673SLi Jia He  %conv = sext i16 %x to i32
4395214673SLi Jia He  %sub = sub nsw i32 0, %conv
4495214673SLi Jia He  %conv1 = sext i16 %y to i32
4595214673SLi Jia He  %cmp = icmp eq i32 %sub, %conv1
4695214673SLi Jia He  %conv3 = zext i1 %cmp to i16
4795214673SLi Jia He  ret i16 %conv3
4895214673SLi Jia He}
4995214673SLi Jia He
5095214673SLi Jia Hedefine zeroext i16 @eq4(i16 zeroext %x, i16 zeroext %y) {
5195214673SLi Jia He; CHECK-LABEL: eq4:
5295214673SLi Jia He; CHECK:       # %bb.0:
53*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
5495214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
5595214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
5695214673SLi Jia He; CHECK-NEXT:    blr
5795214673SLi Jia He  %conv = zext i16 %x to i32
5895214673SLi Jia He  %sub = sub nsw i32 0, %conv
5995214673SLi Jia He  %conv1 = zext i16 %y to i32
6095214673SLi Jia He  %cmp = icmp eq i32 %sub, %conv1
6195214673SLi Jia He  %conv3 = zext i1 %cmp to i16
6295214673SLi Jia He  ret i16 %conv3
6395214673SLi Jia He}
6495214673SLi Jia He
6595214673SLi Jia Hedefine signext i32 @eq5(i32 signext %x, i32 signext %y) {
6695214673SLi Jia He; CHECK-LABEL: eq5:
6795214673SLi Jia He; CHECK:       # %bb.0:
68*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
6995214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
7095214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
7195214673SLi Jia He; CHECK-NEXT:    blr
7295214673SLi Jia He  %sub = sub nsw i32 0, %x
7395214673SLi Jia He  %cmp = icmp eq i32 %sub, %y
7495214673SLi Jia He  %conv = zext i1 %cmp to i32
7595214673SLi Jia He  ret i32 %conv
7695214673SLi Jia He}
7795214673SLi Jia He
7895214673SLi Jia Hedefine zeroext i32 @eq6(i32 zeroext %x, i32 zeroext %y) {
7995214673SLi Jia He; CHECK-LABEL: eq6:
8095214673SLi Jia He; CHECK:       # %bb.0:
81*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
8295214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
8395214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
8495214673SLi Jia He; CHECK-NEXT:    blr
8595214673SLi Jia He  %sub = sub i32 0, %x
8695214673SLi Jia He  %cmp = icmp eq i32 %sub, %y
8795214673SLi Jia He  %conv = zext i1 %cmp to i32
8895214673SLi Jia He  ret i32 %conv
8995214673SLi Jia He}
9095214673SLi Jia He
9195214673SLi Jia Hedefine i64 @eq7(i64 %x, i64 %y) {
9295214673SLi Jia He; CHECK-LABEL: eq7:
9395214673SLi Jia He; CHECK:       # %bb.0:
94*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
9595214673SLi Jia He; CHECK-NEXT:    cntlzd r3, r3
9695214673SLi Jia He; CHECK-NEXT:    rldicl r3, r3, 58, 63
9795214673SLi Jia He; CHECK-NEXT:    blr
9895214673SLi Jia He  %sub = sub nsw i64 0, %x
9995214673SLi Jia He  %cmp = icmp eq i64 %sub, %y
10095214673SLi Jia He  %zext = zext i1 %cmp to i64
10195214673SLi Jia He  ret i64 %zext
10295214673SLi Jia He}
10395214673SLi Jia He
10495214673SLi Jia Hedefine zeroext i1 @eq8(i1 zeroext %x, i1 zeroext %y) {
10595214673SLi Jia He; CHECK-LABEL: eq8:
10695214673SLi Jia He; CHECK:       # %bb.0:
107*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
10895214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
10995214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
11095214673SLi Jia He; CHECK-NEXT:    blr
11195214673SLi Jia He  %conv = zext i1 %y to i32
11295214673SLi Jia He  %sub = sext i1 %x to i32
11395214673SLi Jia He  %cmp = icmp eq i32 %conv, %sub
11495214673SLi Jia He  ret i1 %cmp
11595214673SLi Jia He}
11695214673SLi Jia He
11795214673SLi Jia Hedefine zeroext i8 @eq9(i8 zeroext %x, i8 zeroext %y) {
11895214673SLi Jia He; CHECK-LABEL: eq9:
11995214673SLi Jia He; CHECK:       # %bb.0:
120*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r3, r4
12195214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
12295214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
12395214673SLi Jia He; CHECK-NEXT:    blr
12495214673SLi Jia He  %conv = zext i8 %x to i32
12595214673SLi Jia He  %conv1 = zext i8 %y to i32
12695214673SLi Jia He  %sub = sub nsw i32 0, %conv1
12795214673SLi Jia He  %cmp = icmp eq i32 %conv, %sub
12895214673SLi Jia He  %conv3 = zext i1 %cmp to i8
12995214673SLi Jia He  ret i8 %conv3
13095214673SLi Jia He}
13195214673SLi Jia He
13295214673SLi Jia Hedefine signext i16 @eq10(i16 signext %x, i16 signext %y) {
13395214673SLi Jia He; CHECK-LABEL: eq10:
13495214673SLi Jia He; CHECK:       # %bb.0:
135*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r3, r4
13695214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
13795214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
13895214673SLi Jia He; CHECK-NEXT:    blr
13995214673SLi Jia He  %conv = sext i16 %x to i32
14095214673SLi Jia He  %conv1 = sext i16 %y to i32
14195214673SLi Jia He  %sub = sub nsw i32 0, %conv1
14295214673SLi Jia He  %cmp = icmp eq i32 %conv, %sub
14395214673SLi Jia He  %conv3 = zext i1 %cmp to i16
14495214673SLi Jia He  ret i16 %conv3
14595214673SLi Jia He}
14695214673SLi Jia He
14795214673SLi Jia Hedefine zeroext i16 @eq11(i16 zeroext %x, i16 zeroext %y) {
14895214673SLi Jia He; CHECK-LABEL: eq11:
14995214673SLi Jia He; CHECK:       # %bb.0:
150*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r3, r4
15195214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
15295214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
15395214673SLi Jia He; CHECK-NEXT:    blr
15495214673SLi Jia He  %conv = zext i16 %x to i32
15595214673SLi Jia He  %conv1 = zext i16 %y to i32
15695214673SLi Jia He  %sub = sub nsw i32 0, %conv1
15795214673SLi Jia He  %cmp = icmp eq i32 %conv, %sub
15895214673SLi Jia He  %conv3 = zext i1 %cmp to i16
15995214673SLi Jia He  ret i16 %conv3
16095214673SLi Jia He}
16195214673SLi Jia He
16295214673SLi Jia Hedefine signext i32 @eq12(i32 signext %x, i32 signext %y) {
16395214673SLi Jia He; CHECK-LABEL: eq12:
16495214673SLi Jia He; CHECK:       # %bb.0:
165*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r3, r4
16695214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
16795214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
16895214673SLi Jia He; CHECK-NEXT:    blr
16995214673SLi Jia He  %sub = sub nsw i32 0, %y
17095214673SLi Jia He  %cmp = icmp eq i32 %sub, %x
17195214673SLi Jia He  %conv = zext i1 %cmp to i32
17295214673SLi Jia He  ret i32 %conv
17395214673SLi Jia He}
17495214673SLi Jia He
17595214673SLi Jia Hedefine zeroext i32 @eq13(i32 zeroext %x, i32 zeroext %y) {
17695214673SLi Jia He; CHECK-LABEL: eq13:
17795214673SLi Jia He; CHECK:       # %bb.0:
178*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r3, r4
17995214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
18095214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
18195214673SLi Jia He; CHECK-NEXT:    blr
18295214673SLi Jia He  %sub = sub i32 0, %y
18395214673SLi Jia He  %cmp = icmp eq i32 %sub, %x
18495214673SLi Jia He  %conv = zext i1 %cmp to i32
18595214673SLi Jia He  ret i32 %conv
18695214673SLi Jia He}
18795214673SLi Jia He
18895214673SLi Jia Hedefine i64 @eq14(i64 %x, i64 %y) {
18995214673SLi Jia He; CHECK-LABEL: eq14:
19095214673SLi Jia He; CHECK:       # %bb.0:
191*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r3, r4
19295214673SLi Jia He; CHECK-NEXT:    cntlzd r3, r3
19395214673SLi Jia He; CHECK-NEXT:    rldicl r3, r3, 58, 63
19495214673SLi Jia He; CHECK-NEXT:    blr
19595214673SLi Jia He  %sub = sub nsw i64 0, %y
19695214673SLi Jia He  %cmp = icmp eq i64 %sub, %x
19795214673SLi Jia He  %conv1 = zext i1 %cmp to i64
19895214673SLi Jia He  ret i64 %conv1
19995214673SLi Jia He}
20095214673SLi Jia He
20195214673SLi Jia Hedefine zeroext i1 @neq1(i1 zeroext %x, i1 zeroext %y) {
20295214673SLi Jia He; CHECK-LABEL: neq1:
20395214673SLi Jia He; CHECK:       # %bb.0:
204*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
20595214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
20695214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
20795214673SLi Jia He; CHECK-NEXT:    xori r3, r3, 1
20895214673SLi Jia He; CHECK-NEXT:    blr
20995214673SLi Jia He  %sub = sext i1 %x to i32
21095214673SLi Jia He  %conv3 = zext i1 %y to i32
21195214673SLi Jia He  %cmp = icmp ne i32 %sub, %conv3
21295214673SLi Jia He  ret i1 %cmp
21395214673SLi Jia He}
21495214673SLi Jia He
21595214673SLi Jia Hedefine zeroext i8 @neq2(i8 zeroext %x, i8 zeroext %y) {
21695214673SLi Jia He; CHECK-LABEL: neq2:
21795214673SLi Jia He; CHECK:       # %bb.0:
218*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
21995214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
22095214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
22195214673SLi Jia He; CHECK-NEXT:    xori r3, r3, 1
22295214673SLi Jia He; CHECK-NEXT:    blr
22395214673SLi Jia He  %conv = zext i8 %x to i32
22495214673SLi Jia He  %sub = sub nsw i32 0, %conv
22595214673SLi Jia He  %conv1 = zext i8 %y to i32
22695214673SLi Jia He  %cmp = icmp ne i32 %sub, %conv1
22795214673SLi Jia He  %conv3 = zext i1 %cmp to i8
22895214673SLi Jia He  ret i8 %conv3
22995214673SLi Jia He}
23095214673SLi Jia He
23195214673SLi Jia Hedefine signext i16 @neq3(i16 signext %x, i16 signext %y) {
23295214673SLi Jia He; CHECK-LABEL: neq3:
23395214673SLi Jia He; CHECK:       # %bb.0:
234*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
23595214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
23695214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
23795214673SLi Jia He; CHECK-NEXT:    xori r3, r3, 1
23895214673SLi Jia He; CHECK-NEXT:    blr
23995214673SLi Jia He  %conv = sext i16 %x to i32
24095214673SLi Jia He  %sub = sub nsw i32 0, %conv
24195214673SLi Jia He  %conv1 = sext i16 %y to i32
24295214673SLi Jia He  %cmp = icmp ne i32 %sub, %conv1
24395214673SLi Jia He  %conv3 = zext i1 %cmp to i16
24495214673SLi Jia He  ret i16 %conv3
24595214673SLi Jia He}
24695214673SLi Jia He
24795214673SLi Jia Hedefine zeroext i16 @neq4(i16 zeroext %x, i16 zeroext %y) {
24895214673SLi Jia He; CHECK-LABEL: neq4:
24995214673SLi Jia He; CHECK:       # %bb.0:
250*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
25195214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
25295214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
25395214673SLi Jia He; CHECK-NEXT:    xori r3, r3, 1
25495214673SLi Jia He; CHECK-NEXT:    blr
25595214673SLi Jia He  %conv = zext i16 %x to i32
25695214673SLi Jia He  %sub = sub nsw i32 0, %conv
25795214673SLi Jia He  %conv1 = zext i16 %y to i32
25895214673SLi Jia He  %cmp = icmp ne i32 %sub, %conv1
25995214673SLi Jia He  %conv3 = zext i1 %cmp to i16
26095214673SLi Jia He  ret i16 %conv3
26195214673SLi Jia He}
26295214673SLi Jia He
26395214673SLi Jia Hedefine signext i32 @neq5(i32 signext %x, i32 signext %y) {
26495214673SLi Jia He; CHECK-LABEL: neq5:
26595214673SLi Jia He; CHECK:       # %bb.0:
266*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
26795214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
26895214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
26995214673SLi Jia He; CHECK-NEXT:    xori r3, r3, 1
27095214673SLi Jia He; CHECK-NEXT:    blr
27195214673SLi Jia He  %sub = sub nsw i32 0, %x
27295214673SLi Jia He  %cmp = icmp ne i32 %sub, %y
27395214673SLi Jia He  %conv = zext i1 %cmp to i32
27495214673SLi Jia He  ret i32 %conv
27595214673SLi Jia He}
27695214673SLi Jia He
27795214673SLi Jia Hedefine zeroext i32 @neq6(i32 zeroext %x, i32 zeroext %y) {
27895214673SLi Jia He; CHECK-LABEL: neq6:
27995214673SLi Jia He; CHECK:       # %bb.0:
280*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
28195214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
28295214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
28395214673SLi Jia He; CHECK-NEXT:    xori r3, r3, 1
28495214673SLi Jia He; CHECK-NEXT:    blr
28595214673SLi Jia He  %sub = sub i32 0, %x
28695214673SLi Jia He  %cmp = icmp ne i32 %sub, %y
28795214673SLi Jia He  %conv = zext i1 %cmp to i32
28895214673SLi Jia He  ret i32 %conv
28995214673SLi Jia He}
29095214673SLi Jia He
29195214673SLi Jia Hedefine i64 @neq7(i64 %x, i64 %y) {
29295214673SLi Jia He; CHECK-LABEL: neq7:
29395214673SLi Jia He; CHECK:       # %bb.0:
294*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
29595214673SLi Jia He; CHECK-NEXT:    addic r4, r3, -1
29695214673SLi Jia He; CHECK-NEXT:    subfe r3, r4, r3
29795214673SLi Jia He; CHECK-NEXT:    blr
29895214673SLi Jia He  %sub = sub nsw i64 0, %x
29995214673SLi Jia He  %cmp = icmp ne i64 %sub, %y
30095214673SLi Jia He  %zext = zext i1 %cmp to i64
30195214673SLi Jia He  ret i64 %zext
30295214673SLi Jia He}
30395214673SLi Jia He
30495214673SLi Jia Hedefine zeroext i1 @neq8(i1 zeroext %x, i1 zeroext %y) {
30595214673SLi Jia He; CHECK-LABEL: neq8:
30695214673SLi Jia He; CHECK:       # %bb.0:
307*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
30895214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
30995214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
31095214673SLi Jia He; CHECK-NEXT:    xori r3, r3, 1
31195214673SLi Jia He; CHECK-NEXT:    blr
31295214673SLi Jia He  %conv = zext i1 %y to i32
31395214673SLi Jia He  %sub = sext i1 %x to i32
31495214673SLi Jia He  %cmp = icmp ne i32 %conv, %sub
31595214673SLi Jia He  ret i1 %cmp
31695214673SLi Jia He}
31795214673SLi Jia He
31895214673SLi Jia Hedefine zeroext i8 @neq9(i8 zeroext %x, i8 zeroext %y) {
31995214673SLi Jia He; CHECK-LABEL: neq9:
32095214673SLi Jia He; CHECK:       # %bb.0:
321*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
32295214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
32395214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
32495214673SLi Jia He; CHECK-NEXT:    xori r3, r3, 1
32595214673SLi Jia He; CHECK-NEXT:    blr
32695214673SLi Jia He  %conv = zext i8 %y to i32
32795214673SLi Jia He  %conv1 = zext i8 %x to i32
32895214673SLi Jia He  %sub = sub nsw i32 0, %conv1
32995214673SLi Jia He  %cmp = icmp ne i32 %conv, %sub
33095214673SLi Jia He  %conv3 = zext i1 %cmp to i8
33195214673SLi Jia He  ret i8 %conv3
33295214673SLi Jia He}
33395214673SLi Jia He
33495214673SLi Jia Hedefine signext i16 @neq10(i16 signext %x, i16 signext %y) {
33595214673SLi Jia He; CHECK-LABEL: neq10:
33695214673SLi Jia He; CHECK:       # %bb.0:
337*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
33895214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
33995214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
34095214673SLi Jia He; CHECK-NEXT:    xori r3, r3, 1
34195214673SLi Jia He; CHECK-NEXT:    blr
34295214673SLi Jia He  %conv = sext i16 %y to i32
34395214673SLi Jia He  %conv1 = sext i16 %x to i32
34495214673SLi Jia He  %sub = sub nsw i32 0, %conv1
34595214673SLi Jia He  %cmp = icmp ne i32 %conv, %sub
34695214673SLi Jia He  %conv3 = zext i1 %cmp to i16
34795214673SLi Jia He  ret i16 %conv3
34895214673SLi Jia He}
34995214673SLi Jia He
35095214673SLi Jia Hedefine zeroext i16 @neq11(i16 zeroext %x, i16 zeroext %y) {
35195214673SLi Jia He; CHECK-LABEL: neq11:
35295214673SLi Jia He; CHECK:       # %bb.0: # %entry
353*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
35495214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
35595214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
35695214673SLi Jia He; CHECK-NEXT:    xori r3, r3, 1
35795214673SLi Jia He; CHECK-NEXT:    blr
35895214673SLi Jia Heentry:
35995214673SLi Jia He  %conv = zext i16 %y to i32
36095214673SLi Jia He  %conv1 = zext i16 %x to i32
36195214673SLi Jia He  %sub = sub nsw i32 0, %conv1
36295214673SLi Jia He  %cmp = icmp ne i32 %conv, %sub
36395214673SLi Jia He  %conv3 = zext i1 %cmp to i16
36495214673SLi Jia He  ret i16 %conv3
36595214673SLi Jia He}
36695214673SLi Jia He
36795214673SLi Jia Hedefine signext i32 @neq12(i32 signext %x, i32 signext %y) {
36895214673SLi Jia He; CHECK-LABEL: neq12:
36995214673SLi Jia He; CHECK:       # %bb.0: # %entry
370*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
37195214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
37295214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
37395214673SLi Jia He; CHECK-NEXT:    xori r3, r3, 1
37495214673SLi Jia He; CHECK-NEXT:    blr
37595214673SLi Jia Heentry:
37695214673SLi Jia He  %sub = sub nsw i32 0, %x
37795214673SLi Jia He  %cmp = icmp ne i32 %sub, %y
37895214673SLi Jia He  %conv = zext i1 %cmp to i32
37995214673SLi Jia He  ret i32 %conv
38095214673SLi Jia He}
38195214673SLi Jia He
38295214673SLi Jia Hedefine zeroext i32 @neq13(i32 zeroext %x, i32 zeroext %y) {
38395214673SLi Jia He; CHECK-LABEL: neq13:
38495214673SLi Jia He; CHECK:       # %bb.0: # %entry
385*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
38695214673SLi Jia He; CHECK-NEXT:    cntlzw r3, r3
38795214673SLi Jia He; CHECK-NEXT:    srwi r3, r3, 5
38895214673SLi Jia He; CHECK-NEXT:    xori r3, r3, 1
38995214673SLi Jia He; CHECK-NEXT:    blr
39095214673SLi Jia Heentry:
39195214673SLi Jia He  %sub = sub i32 0, %x
39295214673SLi Jia He  %cmp = icmp ne i32 %sub, %y
39395214673SLi Jia He  %conv = zext i1 %cmp to i32
39495214673SLi Jia He  ret i32 %conv
39595214673SLi Jia He}
39695214673SLi Jia He
39795214673SLi Jia Hedefine i64 @neq14(i64 %x, i64 %y) {
39895214673SLi Jia He; CHECK-LABEL: neq14:
39995214673SLi Jia He; CHECK:       # %bb.0:
400*f6fb752fSLi Jia He; CHECK-NEXT:    add r3, r4, r3
40195214673SLi Jia He; CHECK-NEXT:    addic r4, r3, -1
40295214673SLi Jia He; CHECK-NEXT:    subfe r3, r4, r3
40395214673SLi Jia He; CHECK-NEXT:    blr
40495214673SLi Jia He  %sub = sub nsw i64 0, %x
40595214673SLi Jia He  %cmp = icmp ne i64 %y, %sub
40695214673SLi Jia He  %zext = zext i1 %cmp to i64
40795214673SLi Jia He  ret i64 %zext
40895214673SLi Jia He}
409