184 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \3; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \4; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \5; RUN: --check-prefixes=CHECK,BE6; RUN: llc -relocation-model=pic -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \7; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s \8; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl \9; RUN: --check-prefixes=CHECK,LE10; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \11; RUN: -ppc-asm-full-reg-names -mcpu=pwr10 < %s | \12; RUN: FileCheck %s --check-prefixes=CHECK-P10,CHECK-P10-LE13; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \14; RUN: -ppc-asm-full-reg-names -mcpu=pwr10 < %s | \15; RUN: FileCheck %s --check-prefixes=CHECK-P10,CHECK-P10-BE16; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \17; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr10 < %s | \18; RUN: FileCheck %s --check-prefixes=CHECK-P10-CMP,CHECK-P10-CMP-LE \19; RUN: --implicit-check-not cmpw --implicit-check-not cmpd \20; RUN: --implicit-check-not cmpl21; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \22; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr10 < %s | \23; RUN: FileCheck %s --check-prefixes=CHECK-P10-CMP,CHECK-P10-CMP-BE \24; RUN: --implicit-check-not cmpw --implicit-check-not cmpd \25; RUN: --implicit-check-not cmpl26 27%struct.tree_common = type { i8, [3 x i8] }28declare signext i32 @fn2(...) local_unnamed_addr #129 30; Function Attrs: nounwind31define dso_local i32 @testCompare1(ptr nocapture readonly %arg1) nounwind {32; BE-LABEL: testCompare1:33; BE: # %bb.0: # %entry34; BE-NEXT: mflr r035; BE-NEXT: stdu r1, -112(r1)36; BE-NEXT: addis r4, r2, testCompare1@toc@ha37; BE-NEXT: std r0, 128(r1)38; BE-NEXT: lbz r3, 0(r3)39; BE-NEXT: lbz r4, testCompare1@toc@l(r4)40; BE-NEXT: clrlwi r3, r3, 3141; BE-NEXT: clrlwi r4, r4, 3142; BE-NEXT: clrldi r3, r3, 3243; BE-NEXT: clrldi r4, r4, 3244; BE-NEXT: sub r3, r4, r345; BE-NEXT: rldicl r3, r3, 1, 6346; BE-NEXT: bl fn247; BE-NEXT: nop48; BE-NEXT: addi r1, r1, 11249; BE-NEXT: ld r0, 16(r1)50; BE-NEXT: mtlr r051; BE-NEXT: blr52;53; LE-LABEL: testCompare1:54; LE: # %bb.0: # %entry55; LE-NEXT: mflr r056; LE-NEXT: stdu r1, -32(r1)57; LE-NEXT: addis r4, r2, testCompare1@toc@ha58; LE-NEXT: std r0, 48(r1)59; LE-NEXT: lbz r3, 0(r3)60; LE-NEXT: lbz r4, testCompare1@toc@l(r4)61; LE-NEXT: clrlwi r3, r3, 3162; LE-NEXT: clrlwi r4, r4, 3163; LE-NEXT: clrldi r3, r3, 3264; LE-NEXT: clrldi r4, r4, 3265; LE-NEXT: sub r3, r4, r366; LE-NEXT: rldicl r3, r3, 1, 6367; LE-NEXT: bl fn268; LE-NEXT: nop69; LE-NEXT: addi r1, r1, 3270; LE-NEXT: ld r0, 16(r1)71; LE-NEXT: mtlr r072; LE-NEXT: blr73;74; CHECK-P10-LE-LABEL: testCompare1:75; CHECK-P10-LE: # %bb.0: # %entry76; CHECK-P10-LE-NEXT: plbz r4, testCompare1@PCREL(0), 177; CHECK-P10-LE-NEXT: lbz r3, 0(r3)78; CHECK-P10-LE-NEXT: clrlwi r4, r4, 3179; CHECK-P10-LE-NEXT: clrlwi r3, r3, 3180; CHECK-P10-LE-NEXT: cmplw r4, r381; CHECK-P10-LE-NEXT: setbc r3, lt82; CHECK-P10-LE-NEXT: b fn2@notoc83; CHECK-P10-LE-NEXT: #TC_RETURNd8 fn2@notoc 084;85; CHECK-P10-BE-LABEL: testCompare1:86; CHECK-P10-BE: # %bb.0: # %entry87; CHECK-P10-BE-NEXT: mflr r088; CHECK-P10-BE-NEXT: std r0, 16(r1)89; CHECK-P10-BE-NEXT: stdu r1, -112(r1)90; CHECK-P10-BE-NEXT: addis r4, r2, testCompare1@toc@ha91; CHECK-P10-BE-NEXT: lbz r3, 0(r3)92; CHECK-P10-BE-NEXT: lbz r4, testCompare1@toc@l(r4)93; CHECK-P10-BE-NEXT: clrlwi r3, r3, 3194; CHECK-P10-BE-NEXT: clrlwi r4, r4, 3195; CHECK-P10-BE-NEXT: cmplw r4, r396; CHECK-P10-BE-NEXT: setbc r3, lt97; CHECK-P10-BE-NEXT: bl fn298; CHECK-P10-BE-NEXT: nop99; CHECK-P10-BE-NEXT: addi r1, r1, 112100; CHECK-P10-BE-NEXT: ld r0, 16(r1)101; CHECK-P10-BE-NEXT: mtlr r0102; CHECK-P10-BE-NEXT: blr103;104; CHECK-P10-CMP-LE-LABEL: testCompare1:105; CHECK-P10-CMP-LE: # %bb.0: # %entry106; CHECK-P10-CMP-LE-NEXT: mflr r0107; CHECK-P10-CMP-LE-NEXT: std r0, 16(r1)108; CHECK-P10-CMP-LE-NEXT: stdu r1, -112(r1)109; CHECK-P10-CMP-LE-NEXT: addis r4, r2, testCompare1@toc@ha110; CHECK-P10-CMP-LE-NEXT: lbz r3, 0(r3)111; CHECK-P10-CMP-LE-NEXT: lbz r4, testCompare1@toc@l(r4)112; CHECK-P10-CMP-LE-NEXT: clrlwi r3, r3, 31113; CHECK-P10-CMP-LE-NEXT: clrldi r3, r3, 32114; CHECK-P10-CMP-LE-NEXT: clrlwi r4, r4, 31115; CHECK-P10-CMP-LE-NEXT: clrldi r4, r4, 32116; CHECK-P10-CMP-LE-NEXT: sub r3, r4, r3117; CHECK-P10-CMP-LE-NEXT: rldicl r3, r3, 1, 63118; CHECK-P10-CMP-LE-NEXT: bl fn2119; CHECK-P10-CMP-LE-NEXT: nop120; CHECK-P10-CMP-LE-NEXT: addi r1, r1, 112121; CHECK-P10-CMP-LE-NEXT: ld r0, 16(r1)122; CHECK-P10-CMP-LE-NEXT: mtlr r0123; CHECK-P10-CMP-LE-NEXT: blr124;125; CHECK-P10-CMP-BE-LABEL: testCompare1:126; CHECK-P10-CMP-BE: # %bb.0: # %entry127; CHECK-P10-CMP-BE-NEXT: plbz r4, testCompare1@PCREL(0), 1128; CHECK-P10-CMP-BE-NEXT: lbz r3, 0(r3)129; CHECK-P10-CMP-BE-NEXT: clrlwi r4, r4, 31130; CHECK-P10-CMP-BE-NEXT: clrlwi r3, r3, 31131; CHECK-P10-CMP-BE-NEXT: clrldi r4, r4, 32132; CHECK-P10-CMP-BE-NEXT: clrldi r3, r3, 32133; CHECK-P10-CMP-BE-NEXT: sub r3, r4, r3134; CHECK-P10-CMP-BE-NEXT: rldicl r3, r3, 1, 63135; CHECK-P10-CMP-BE-NEXT: b fn2@notoc136; CHECK-P10-CMP-BE-NEXT: #TC_RETURNd8 fn2@notoc 0137entry:138 %bf.load = load i8, ptr @testCompare1, align 4139 %bf.clear = and i8 %bf.load, 1140 %bf.load1 = load i8, ptr %arg1, align 4141 %bf.clear2 = and i8 %bf.load1, 1142 %cmp = icmp ult i8 %bf.clear, %bf.clear2143 %conv = zext i1 %cmp to i32144 %call = tail call signext i32 @fn2(i32 signext %conv) #2145 ret i32 undef146}147 148; Function Attrs: norecurse nounwind readnone149define dso_local signext i32 @testCompare2(i32 zeroext %a, i32 zeroext %b) {150; CHECK-LABEL: testCompare2:151; CHECK: # %bb.0: # %entry152; CHECK-NEXT: clrlwi r3, r3, 31153; CHECK-NEXT: clrlwi r4, r4, 31154; CHECK-NEXT: clrldi r3, r3, 32155; CHECK-NEXT: clrldi r4, r4, 32156; CHECK-NEXT: sub r3, r3, r4157; CHECK-NEXT: rldicl r3, r3, 1, 63158; CHECK-NEXT: blr159;160; CHECK-P10-LABEL: testCompare2:161; CHECK-P10: # %bb.0: # %entry162; CHECK-P10-NEXT: clrlwi r3, r3, 31163; CHECK-P10-NEXT: clrlwi r4, r4, 31164; CHECK-P10-NEXT: cmplw r3, r4165; CHECK-P10-NEXT: setbc r3, lt166; CHECK-P10-NEXT: blr167;168; CHECK-P10-CMP-LABEL: testCompare2:169; CHECK-P10-CMP: # %bb.0: # %entry170; CHECK-P10-CMP-NEXT: clrlwi r3, r3, 31171; CHECK-P10-CMP-NEXT: clrlwi r4, r4, 31172; CHECK-P10-CMP-NEXT: clrldi r3, r3, 32173; CHECK-P10-CMP-NEXT: clrldi r4, r4, 32174; CHECK-P10-CMP-NEXT: sub r3, r3, r4175; CHECK-P10-CMP-NEXT: rldicl r3, r3, 1, 63176; CHECK-P10-CMP-NEXT: blr177entry:178 %and = and i32 %a, 1179 %and1 = and i32 %b, 1180 %cmp = icmp ult i32 %and, %and1181 %conv = zext i1 %cmp to i32182 ret i32 %conv183}184