255 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \3; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-BE \4; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl5; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \6; RUN: -ppc-gpr-icmps=all -ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s --check-prefix=CHECK-LE \7; RUN: --implicit-check-not cmpw --implicit-check-not cmpd --implicit-check-not cmpl8; ModuleID = 'ComparisonTestCases/testComparesiequc.c'9 10@glob = dso_local local_unnamed_addr global i8 0, align 111 12; Function Attrs: norecurse nounwind readnone13define dso_local signext i32 @test_iequc(i8 zeroext %a, i8 zeroext %b) {14; CHECK-LABEL: test_iequc:15; CHECK: # %bb.0: # %entry16; CHECK-NEXT: xor r3, r3, r417; CHECK-NEXT: cntlzw r3, r318; CHECK-NEXT: srwi r3, r3, 519; CHECK-NEXT: blr20; CHECK-BE-LABEL: test_iequc:21; CHECK-BE: # %bb.0: # %entry22; CHECK-BE-NEXT: xor r3, r3, r423; CHECK-BE-NEXT: cntlzw r3, r324; CHECK-BE-NEXT: srwi r3, r3, 525; CHECK-BE-NEXT: blr26;27; CHECK-LE-LABEL: test_iequc:28; CHECK-LE: # %bb.0: # %entry29; CHECK-LE-NEXT: xor r3, r3, r430; CHECK-LE-NEXT: cntlzw r3, r331; CHECK-LE-NEXT: srwi r3, r3, 532; CHECK-LE-NEXT: blr33entry:34 %cmp = icmp eq i8 %a, %b35 %conv2 = zext i1 %cmp to i3236 ret i32 %conv237}38 39; Function Attrs: norecurse nounwind readnone40define dso_local signext i32 @test_iequc_sext(i8 zeroext %a, i8 zeroext %b) {41; CHECK-LABEL: test_iequc_sext:42; CHECK: # %bb.0: # %entry43; CHECK-NEXT: xor r3, r3, r444; CHECK-NEXT: cntlzw r3, r345; CHECK-NEXT: srwi r3, r3, 546; CHECK-NEXT: neg r3, r347; CHECK-NEXT: blr48; CHECK-BE-LABEL: test_iequc_sext:49; CHECK-BE: # %bb.0: # %entry50; CHECK-BE-NEXT: xor r3, r3, r451; CHECK-BE-NEXT: cntlzw r3, r352; CHECK-BE-NEXT: srwi r3, r3, 553; CHECK-BE-NEXT: neg r3, r354; CHECK-BE-NEXT: blr55;56; CHECK-LE-LABEL: test_iequc_sext:57; CHECK-LE: # %bb.0: # %entry58; CHECK-LE-NEXT: xor r3, r3, r459; CHECK-LE-NEXT: cntlzw r3, r360; CHECK-LE-NEXT: srwi r3, r3, 561; CHECK-LE-NEXT: neg r3, r362; CHECK-LE-NEXT: blr63entry:64 %cmp = icmp eq i8 %a, %b65 %sub = sext i1 %cmp to i3266 ret i32 %sub67}68 69; Function Attrs: norecurse nounwind readnone70define dso_local signext i32 @test_iequc_z(i8 zeroext %a) {71; CHECK-LABEL: test_iequc_z:72; CHECK: # %bb.0: # %entry73; CHECK-NEXT: cntlzw r3, r374; CHECK-NEXT: srwi r3, r3, 575; CHECK-NEXT: blr76; CHECK-BE-LABEL: test_iequc_z:77; CHECK-BE: # %bb.0: # %entry78; CHECK-BE-NEXT: cntlzw r3, r379; CHECK-BE-NEXT: srwi r3, r3, 580; CHECK-BE-NEXT: blr81;82; CHECK-LE-LABEL: test_iequc_z:83; CHECK-LE: # %bb.0: # %entry84; CHECK-LE-NEXT: cntlzw r3, r385; CHECK-LE-NEXT: srwi r3, r3, 586; CHECK-LE-NEXT: blr87entry:88 %cmp = icmp eq i8 %a, 089 %conv1 = zext i1 %cmp to i3290 ret i32 %conv191}92 93; Function Attrs: norecurse nounwind readnone94define dso_local signext i32 @test_iequc_sext_z(i8 zeroext %a) {95; CHECK-LABEL: test_iequc_sext_z:96; CHECK: # %bb.0: # %entry97; CHECK-NEXT: cntlzw r3, r398; CHECK-NEXT: srwi r3, r3, 599; CHECK-NEXT: neg r3, r3100; CHECK-NEXT: blr101; CHECK-BE-LABEL: test_iequc_sext_z:102; CHECK-BE: # %bb.0: # %entry103; CHECK-BE-NEXT: cntlzw r3, r3104; CHECK-BE-NEXT: srwi r3, r3, 5105; CHECK-BE-NEXT: neg r3, r3106; CHECK-BE-NEXT: blr107;108; CHECK-LE-LABEL: test_iequc_sext_z:109; CHECK-LE: # %bb.0: # %entry110; CHECK-LE-NEXT: cntlzw r3, r3111; CHECK-LE-NEXT: srwi r3, r3, 5112; CHECK-LE-NEXT: neg r3, r3113; CHECK-LE-NEXT: blr114entry:115 %cmp = icmp eq i8 %a, 0116 %sub = sext i1 %cmp to i32117 ret i32 %sub118}119 120; Function Attrs: norecurse nounwind121define dso_local void @test_iequc_store(i8 zeroext %a, i8 zeroext %b) {122; CHECK-LABEL: test_iequc_store:123; CHECK: # %bb.0: # %entry124; CHECK-NEXT: xor r3, r3, r4125; CHECK-NEXT: addis r5, r2, glob@toc@ha126; CHECK-NEXT: cntlzw r3, r3127; CHECK-NEXT: srwi r3, r3, 5128; CHECK-NEXT: stb r3, glob@toc@l(r5)129; CHECK-NEXT: blr130; CHECK-BE-LABEL: test_iequc_store:131; CHECK-BE: # %bb.0: # %entry132; CHECK-BE-NEXT: xor r3, r3, r4133; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha134; CHECK-BE-NEXT: cntlzw r3, r3135; CHECK-BE-NEXT: srwi r3, r3, 5136; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)137; CHECK-BE-NEXT: blr138;139; CHECK-LE-LABEL: test_iequc_store:140; CHECK-LE: # %bb.0: # %entry141; CHECK-LE-NEXT: xor r3, r3, r4142; CHECK-LE-NEXT: addis r4, r2, glob@toc@ha143; CHECK-LE-NEXT: cntlzw r3, r3144; CHECK-LE-NEXT: srwi r3, r3, 5145; CHECK-LE-NEXT: stb r3, glob@toc@l(r4)146; CHECK-LE-NEXT: blr147entry:148 %cmp = icmp eq i8 %a, %b149 %conv3 = zext i1 %cmp to i8150 store i8 %conv3, ptr @glob, align 1151 ret void152}153 154; Function Attrs: norecurse nounwind155define dso_local void @test_iequc_sext_store(i8 zeroext %a, i8 zeroext %b) {156; CHECK-LABEL: test_iequc_sext_store:157; CHECK: # %bb.0: # %entry158; CHECK-NEXT: xor r3, r3, r4159; CHECK-NEXT: addis r5, r2, glob@toc@ha160; CHECK-NEXT: cntlzw r3, r3161; CHECK-NEXT: srwi r3, r3, 5162; CHECK-NEXT: neg r3, r3163; CHECK-NEXT: stb r3, glob@toc@l(r5)164; CHECK-NEXT: blr165; CHECK-BE-LABEL: test_iequc_sext_store:166; CHECK-BE: # %bb.0: # %entry167; CHECK-BE-NEXT: xor r3, r3, r4168; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha169; CHECK-BE-NEXT: cntlzw r3, r3170; CHECK-BE-NEXT: srwi r3, r3, 5171; CHECK-BE-NEXT: neg r3, r3172; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)173; CHECK-BE-NEXT: blr174;175; CHECK-LE-LABEL: test_iequc_sext_store:176; CHECK-LE: # %bb.0: # %entry177; CHECK-LE-NEXT: xor r3, r3, r4178; CHECK-LE-NEXT: addis r4, r2, glob@toc@ha179; CHECK-LE-NEXT: cntlzw r3, r3180; CHECK-LE-NEXT: srwi r3, r3, 5181; CHECK-LE-NEXT: neg r3, r3182; CHECK-LE-NEXT: stb r3, glob@toc@l(r4)183; CHECK-LE-NEXT: blr184entry:185 %cmp = icmp eq i8 %a, %b186 %conv3 = sext i1 %cmp to i8187 store i8 %conv3, ptr @glob, align 1188 ret void189}190 191; Function Attrs: norecurse nounwind192define dso_local void @test_iequc_z_store(i8 zeroext %a) {193; CHECK-LABEL: test_iequc_z_store:194; CHECK: # %bb.0: # %entry195; CHECK-NEXT: cntlzw r3, r3196; CHECK-NEXT: addis r4, r2, glob@toc@ha197; CHECK-NEXT: srwi r3, r3, 5198; CHECK-NEXT: stb r3, glob@toc@l(r4)199; CHECK-NEXT: blr200; CHECK-BE-LABEL: test_iequc_z_store:201; CHECK-BE: # %bb.0: # %entry202; CHECK-BE-NEXT: cntlzw r3, r3203; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha204; CHECK-BE-NEXT: srwi r3, r3, 5205; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)206; CHECK-BE-NEXT: blr207;208; CHECK-LE-LABEL: test_iequc_z_store:209; CHECK-LE: # %bb.0: # %entry210; CHECK-LE-NEXT: cntlzw r3, r3211; CHECK-LE-NEXT: addis r4, r2, glob@toc@ha212; CHECK-LE-NEXT: srwi r3, r3, 5213; CHECK-LE-NEXT: stb r3, glob@toc@l(r4)214; CHECK-LE-NEXT: blr215entry:216 %cmp = icmp eq i8 %a, 0217 %conv2 = zext i1 %cmp to i8218 store i8 %conv2, ptr @glob, align 1219 ret void220}221 222; Function Attrs: norecurse nounwind223define dso_local void @test_iequc_sext_z_store(i8 zeroext %a) {224; CHECK-LABEL: test_iequc_sext_z_store:225; CHECK: # %bb.0: # %entry226; CHECK-NEXT: cntlzw r3, r3227; CHECK-NEXT: addis r4, r2, glob@toc@ha228; CHECK-NEXT: srwi r3, r3, 5229; CHECK-NEXT: neg r3, r3230; CHECK-NEXT: stb r3, glob@toc@l(r4)231; CHECK-NEXT: blr232; CHECK-BE-LABEL: test_iequc_sext_z_store:233; CHECK-BE: # %bb.0: # %entry234; CHECK-BE-NEXT: cntlzw r3, r3235; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha236; CHECK-BE-NEXT: srwi r3, r3, 5237; CHECK-BE-NEXT: neg r3, r3238; CHECK-BE-NEXT: stb r3, glob@toc@l(r4)239; CHECK-BE-NEXT: blr240;241; CHECK-LE-LABEL: test_iequc_sext_z_store:242; CHECK-LE: # %bb.0: # %entry243; CHECK-LE-NEXT: cntlzw r3, r3244; CHECK-LE-NEXT: addis r4, r2, glob@toc@ha245; CHECK-LE-NEXT: srwi r3, r3, 5246; CHECK-LE-NEXT: neg r3, r3247; CHECK-LE-NEXT: stb r3, glob@toc@l(r4)248; CHECK-LE-NEXT: blr249entry:250 %cmp = icmp eq i8 %a, 0251 %conv2 = sext i1 %cmp to i8252 store i8 %conv2, ptr @glob, align 1253 ret void254}255