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 cmplw --implicit-check-not cmpld20; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \21; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr10 < %s | \22; RUN: FileCheck %s --check-prefixes=CHECK-P10-CMP,CHECK-P10-CMP-BE \23; RUN: --implicit-check-not cmplw --implicit-check-not cmpld24 25%struct.tree_common = type { i8, [3 x i8] }26declare signext i32 @fn2(...) local_unnamed_addr #127 28; Function Attrs: nounwind29define dso_local i32 @testCompare1(ptr nocapture readonly %arg1) nounwind {30; BE-LABEL: testCompare1:31; BE: # %bb.0: # %entry32; BE-NEXT: mflr r033; BE-NEXT: stdu r1, -112(r1)34; BE-NEXT: addis r4, r2, testCompare1@toc@ha35; BE-NEXT: std r0, 128(r1)36; BE-NEXT: lbz r3, 0(r3)37; BE-NEXT: lbz r4, testCompare1@toc@l(r4)38; BE-NEXT: clrlwi r3, r3, 3139; BE-NEXT: clrlwi r4, r4, 3140; BE-NEXT: clrldi r3, r3, 3241; BE-NEXT: clrldi r4, r4, 3242; BE-NEXT: sub r3, r3, r443; BE-NEXT: rldicl r3, r3, 1, 6344; BE-NEXT: bl fn245; BE-NEXT: nop46; BE-NEXT: addi r1, r1, 11247; BE-NEXT: ld r0, 16(r1)48; BE-NEXT: mtlr r049; BE-NEXT: blr50;51; LE-LABEL: testCompare1:52; LE: # %bb.0: # %entry53; LE-NEXT: mflr r054; LE-NEXT: stdu r1, -32(r1)55; LE-NEXT: addis r4, r2, testCompare1@toc@ha56; LE-NEXT: std r0, 48(r1)57; LE-NEXT: lbz r3, 0(r3)58; LE-NEXT: lbz r4, testCompare1@toc@l(r4)59; LE-NEXT: clrlwi r3, r3, 3160; LE-NEXT: clrlwi r4, r4, 3161; LE-NEXT: clrldi r3, r3, 3262; LE-NEXT: clrldi r4, r4, 3263; LE-NEXT: sub r3, r3, r464; LE-NEXT: rldicl r3, r3, 1, 6365; LE-NEXT: bl fn266; LE-NEXT: nop67; LE-NEXT: addi r1, r1, 3268; LE-NEXT: ld r0, 16(r1)69; LE-NEXT: mtlr r070; LE-NEXT: blr71;72; CHECK-P10-LE-LABEL: testCompare1:73; CHECK-P10-LE: # %bb.0: # %entry74; CHECK-P10-LE-NEXT: plbz r4, testCompare1@PCREL(0), 175; CHECK-P10-LE-NEXT: lbz r3, 0(r3)76; CHECK-P10-LE-NEXT: clrlwi r4, r4, 3177; CHECK-P10-LE-NEXT: clrlwi r3, r3, 3178; CHECK-P10-LE-NEXT: cmplw r4, r379; CHECK-P10-LE-NEXT: setbc r3, gt80; CHECK-P10-LE-NEXT: b fn2@notoc81; CHECK-P10-LE-NEXT: #TC_RETURNd8 fn2@notoc 082;83; CHECK-P10-BE-LABEL: testCompare1:84; CHECK-P10-BE: # %bb.0: # %entry85; CHECK-P10-BE-NEXT: mflr r086; CHECK-P10-BE-NEXT: std r0, 16(r1)87; CHECK-P10-BE-NEXT: stdu r1, -112(r1)88; CHECK-P10-BE-NEXT: addis r4, r2, testCompare1@toc@ha89; CHECK-P10-BE-NEXT: lbz r3, 0(r3)90; CHECK-P10-BE-NEXT: lbz r4, testCompare1@toc@l(r4)91; CHECK-P10-BE-NEXT: clrlwi r3, r3, 3192; CHECK-P10-BE-NEXT: clrlwi r4, r4, 3193; CHECK-P10-BE-NEXT: cmplw r4, r394; CHECK-P10-BE-NEXT: setbc r3, gt95; CHECK-P10-BE-NEXT: bl fn296; CHECK-P10-BE-NEXT: nop97; CHECK-P10-BE-NEXT: addi r1, r1, 11298; CHECK-P10-BE-NEXT: ld r0, 16(r1)99; CHECK-P10-BE-NEXT: mtlr r0100; CHECK-P10-BE-NEXT: blr101;102; CHECK-P10-CMP-LE-LABEL: testCompare1:103; CHECK-P10-CMP-LE: # %bb.0: # %entry104; CHECK-P10-CMP-LE-NEXT: mflr r0105; CHECK-P10-CMP-LE-NEXT: std r0, 16(r1)106; CHECK-P10-CMP-LE-NEXT: stdu r1, -112(r1)107; CHECK-P10-CMP-LE-NEXT: addis r4, r2, testCompare1@toc@ha108; CHECK-P10-CMP-LE-NEXT: lbz r3, 0(r3)109; CHECK-P10-CMP-LE-NEXT: lbz r4, testCompare1@toc@l(r4)110; CHECK-P10-CMP-LE-NEXT: clrlwi r3, r3, 31111; CHECK-P10-CMP-LE-NEXT: clrldi r3, r3, 32112; CHECK-P10-CMP-LE-NEXT: clrlwi r4, r4, 31113; CHECK-P10-CMP-LE-NEXT: clrldi r4, r4, 32114; CHECK-P10-CMP-LE-NEXT: sub r3, r3, r4115; CHECK-P10-CMP-LE-NEXT: rldicl r3, r3, 1, 63116; CHECK-P10-CMP-LE-NEXT: bl fn2117; CHECK-P10-CMP-LE-NEXT: nop118; CHECK-P10-CMP-LE-NEXT: addi r1, r1, 112119; CHECK-P10-CMP-LE-NEXT: ld r0, 16(r1)120; CHECK-P10-CMP-LE-NEXT: mtlr r0121; CHECK-P10-CMP-LE-NEXT: blr122;123; CHECK-P10-CMP-BE-LABEL: testCompare1:124; CHECK-P10-CMP-BE: # %bb.0: # %entry125; CHECK-P10-CMP-BE-NEXT: plbz r4, testCompare1@PCREL(0), 1126; CHECK-P10-CMP-BE-NEXT: lbz r3, 0(r3)127; CHECK-P10-CMP-BE-NEXT: clrlwi r4, r4, 31128; CHECK-P10-CMP-BE-NEXT: clrlwi r3, r3, 31129; CHECK-P10-CMP-BE-NEXT: clrldi r4, r4, 32130; CHECK-P10-CMP-BE-NEXT: clrldi r3, r3, 32131; CHECK-P10-CMP-BE-NEXT: sub r3, r3, r4132; CHECK-P10-CMP-BE-NEXT: rldicl r3, r3, 1, 63133; CHECK-P10-CMP-BE-NEXT: b fn2@notoc134; CHECK-P10-CMP-BE-NEXT: #TC_RETURNd8 fn2@notoc 0135 136entry:137 %bf.load = load i8, ptr @testCompare1, align 4138 %bf.clear = and i8 %bf.load, 1139 %bf.load1 = load i8, ptr %arg1, align 4140 %bf.clear2 = and i8 %bf.load1, 1141 %cmp = icmp ugt i8 %bf.clear, %bf.clear2142 %conv = zext i1 %cmp to i32143 %call = tail call signext i32 @fn2(i32 signext %conv) #2144 ret i32 undef145}146 147; Function Attrs: norecurse nounwind readnone148define dso_local signext i32 @testCompare2(i32 zeroext %a, i32 zeroext %b) {149; CHECK-LABEL: testCompare2:150; CHECK: # %bb.0: # %entry151; CHECK-NEXT: clrlwi r3, r3, 31152; CHECK-NEXT: clrlwi r4, r4, 31153; CHECK-NEXT: clrldi r3, r3, 32154; CHECK-NEXT: clrldi r4, r4, 32155; CHECK-NEXT: sub r3, r4, r3156; CHECK-NEXT: rldicl r3, r3, 1, 63157; CHECK-NEXT: blr158;159; CHECK-P10-LABEL: testCompare2:160; CHECK-P10: # %bb.0: # %entry161; CHECK-P10-NEXT: clrlwi r3, r3, 31162; CHECK-P10-NEXT: clrlwi r4, r4, 31163; CHECK-P10-NEXT: cmplw r3, r4164; CHECK-P10-NEXT: setbc r3, gt165; CHECK-P10-NEXT: blr166;167; CHECK-P10-CMP-LABEL: testCompare2:168; CHECK-P10-CMP: # %bb.0: # %entry169; CHECK-P10-CMP-NEXT: clrlwi r3, r3, 31170; CHECK-P10-CMP-NEXT: clrlwi r4, r4, 31171; CHECK-P10-CMP-NEXT: clrldi r3, r3, 32172; CHECK-P10-CMP-NEXT: clrldi r4, r4, 32173; CHECK-P10-CMP-NEXT: sub r3, r4, r3174; CHECK-P10-CMP-NEXT: rldicl r3, r3, 1, 63175; CHECK-P10-CMP-NEXT: blr176 177entry:178 %and = and i32 %a, 1179 %and1 = and i32 %b, 1180 %cmp = icmp ugt i32 %and, %and1181 %conv = zext i1 %cmp to i32182 ret i32 %conv183}184