243 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/testComparesieqsll.c'9 10@glob = dso_local local_unnamed_addr global i64 0, align 811 12; Function Attrs: norecurse nounwind readnone13define dso_local signext i32 @test_ieqsll(i64 %a, i64 %b) {14; CHECK-LABEL: test_ieqsll:15; CHECK: # %bb.0: # %entry16; CHECK-NEXT: xor r3, r3, r417; CHECK-NEXT: cntlzd r3, r318; CHECK-NEXT: rldicl r3, r3, 58, 6319; CHECK-NEXT: blr20; CHECK-BE-LABEL: test_ieqsll:21; CHECK-BE: # %bb.0: # %entry22; CHECK-BE-NEXT: xor r3, r3, r423; CHECK-BE-NEXT: cntlzd r3, r324; CHECK-BE-NEXT: rldicl r3, r3, 58, 6325; CHECK-BE-NEXT: blr26;27; CHECK-LE-LABEL: test_ieqsll:28; CHECK-LE: # %bb.0: # %entry29; CHECK-LE-NEXT: xor r3, r3, r430; CHECK-LE-NEXT: cntlzd r3, r331; CHECK-LE-NEXT: rldicl r3, r3, 58, 6332; CHECK-LE-NEXT: blr33entry:34 %cmp = icmp eq i64 %a, %b35 %conv = zext i1 %cmp to i3236 ret i32 %conv37}38 39; Function Attrs: norecurse nounwind readnone40define dso_local signext i32 @test_ieqsll_sext(i64 %a, i64 %b) {41; CHECK-LABEL: test_ieqsll_sext:42; CHECK: # %bb.0: # %entry43; CHECK-NEXT: xor r3, r3, r444; CHECK-NEXT: addic r3, r3, -145; CHECK-NEXT: subfe r3, r3, r346; CHECK-NEXT: blr47; CHECK-BE-LABEL: test_ieqsll_sext:48; CHECK-BE: # %bb.0: # %entry49; CHECK-BE-NEXT: xor r3, r3, r450; CHECK-BE-NEXT: addic r3, r3, -151; CHECK-BE-NEXT: subfe r3, r3, r352; CHECK-BE-NEXT: blr53;54; CHECK-LE-LABEL: test_ieqsll_sext:55; CHECK-LE: # %bb.0: # %entry56; CHECK-LE-NEXT: xor r3, r3, r457; CHECK-LE-NEXT: addic r3, r3, -158; CHECK-LE-NEXT: subfe r3, r3, r359; CHECK-LE-NEXT: blr60entry:61 %cmp = icmp eq i64 %a, %b62 %sub = sext i1 %cmp to i3263 ret i32 %sub64}65 66; Function Attrs: norecurse nounwind readnone67define dso_local signext i32 @test_ieqsll_z(i64 %a) {68; CHECK-LABEL: test_ieqsll_z:69; CHECK: # %bb.0: # %entry70; CHECK-NEXT: cntlzd r3, r371; CHECK-NEXT: rldicl r3, r3, 58, 6372; CHECK-NEXT: blr73; CHECK-BE-LABEL: test_ieqsll_z:74; CHECK-BE: # %bb.0: # %entry75; CHECK-BE-NEXT: cntlzd r3, r376; CHECK-BE-NEXT: rldicl r3, r3, 58, 6377; CHECK-BE-NEXT: blr78;79; CHECK-LE-LABEL: test_ieqsll_z:80; CHECK-LE: # %bb.0: # %entry81; CHECK-LE-NEXT: cntlzd r3, r382; CHECK-LE-NEXT: rldicl r3, r3, 58, 6383; CHECK-LE-NEXT: blr84entry:85 %cmp = icmp eq i64 %a, 086 %conv = zext i1 %cmp to i3287 ret i32 %conv88}89 90; Function Attrs: norecurse nounwind readnone91define dso_local signext i32 @test_ieqsll_sext_z(i64 %a) {92; CHECK-LABEL: test_ieqsll_sext_z:93; CHECK: # %bb.0: # %entry94; CHECK-NEXT: addic r3, r3, -195; CHECK-NEXT: subfe r3, r3, r396; CHECK-NEXT: blr97; CHECK-BE-LABEL: test_ieqsll_sext_z:98; CHECK-BE: # %bb.0: # %entry99; CHECK-BE-NEXT: addic r3, r3, -1100; CHECK-BE-NEXT: subfe r3, r3, r3101; CHECK-BE-NEXT: blr102;103; CHECK-LE-LABEL: test_ieqsll_sext_z:104; CHECK-LE: # %bb.0: # %entry105; CHECK-LE-NEXT: addic r3, r3, -1106; CHECK-LE-NEXT: subfe r3, r3, r3107; CHECK-LE-NEXT: blr108entry:109 %cmp = icmp eq i64 %a, 0110 %sub = sext i1 %cmp to i32111 ret i32 %sub112}113 114; Function Attrs: norecurse nounwind115define dso_local void @test_ieqsll_store(i64 %a, i64 %b) {116; CHECK-LABEL: test_ieqsll_store:117; CHECK: # %bb.0: # %entry118; CHECK-NEXT: xor r3, r3, r4119; CHECK-NEXT: addis r5, r2, glob@toc@ha120; CHECK-NEXT: cntlzd r3, r3121; CHECK-NEXT: rldicl r3, r3, 58, 63122; CHECK-NEXT: std r3, glob@toc@l(r5)123; CHECK-NEXT: blr124; CHECK-BE-LABEL: test_ieqsll_store:125; CHECK-BE: # %bb.0: # %entry126; CHECK-BE-NEXT: xor r3, r3, r4127; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha128; CHECK-BE-NEXT: cntlzd r3, r3129; CHECK-BE-NEXT: rldicl r3, r3, 58, 63130; CHECK-BE-NEXT: std r3, glob@toc@l(r4)131; CHECK-BE-NEXT: blr132;133; CHECK-LE-LABEL: test_ieqsll_store:134; CHECK-LE: # %bb.0: # %entry135; CHECK-LE-NEXT: xor r3, r3, r4136; CHECK-LE-NEXT: addis r4, r2, glob@toc@ha137; CHECK-LE-NEXT: cntlzd r3, r3138; CHECK-LE-NEXT: rldicl r3, r3, 58, 63139; CHECK-LE-NEXT: std r3, glob@toc@l(r4)140; CHECK-LE-NEXT: blr141entry:142 %cmp = icmp eq i64 %a, %b143 %conv1 = zext i1 %cmp to i64144 store i64 %conv1, ptr @glob, align 8145 ret void146}147 148; Function Attrs: norecurse nounwind149define dso_local void @test_ieqsll_sext_store(i64 %a, i64 %b) {150; CHECK-LABEL: test_ieqsll_sext_store:151; CHECK: # %bb.0: # %entry152; CHECK-NEXT: xor r3, r3, r4153; CHECK-NEXT: addis r5, r2, glob@toc@ha154; CHECK-NEXT: addic r3, r3, -1155; CHECK-NEXT: subfe r3, r3, r3156; CHECK-NEXT: std r3, glob@toc@l(r5)157; CHECK-NEXT: blr158; CHECK-BE-LABEL: test_ieqsll_sext_store:159; CHECK-BE: # %bb.0: # %entry160; CHECK-BE-NEXT: xor r3, r3, r4161; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha162; CHECK-BE-NEXT: addic r3, r3, -1163; CHECK-BE-NEXT: subfe r3, r3, r3164; CHECK-BE-NEXT: std r3, glob@toc@l(r4)165; CHECK-BE-NEXT: blr166;167; CHECK-LE-LABEL: test_ieqsll_sext_store:168; CHECK-LE: # %bb.0: # %entry169; CHECK-LE-NEXT: xor r3, r3, r4170; CHECK-LE-NEXT: addis r4, r2, glob@toc@ha171; CHECK-LE-NEXT: addic r3, r3, -1172; CHECK-LE-NEXT: subfe r3, r3, r3173; CHECK-LE-NEXT: std r3, glob@toc@l(r4)174; CHECK-LE-NEXT: blr175entry:176 %cmp = icmp eq i64 %a, %b177 %conv1 = sext i1 %cmp to i64178 store i64 %conv1, ptr @glob, align 8179 ret void180}181 182; Function Attrs: norecurse nounwind183define dso_local void @test_ieqsll_z_store(i64 %a) {184; CHECK-LABEL: test_ieqsll_z_store:185; CHECK: # %bb.0: # %entry186; CHECK-NEXT: cntlzd r3, r3187; CHECK-NEXT: addis r4, r2, glob@toc@ha188; CHECK-NEXT: rldicl r3, r3, 58, 63189; CHECK-NEXT: std r3, glob@toc@l(r4)190; CHECK-NEXT: blr191; CHECK-BE-LABEL: test_ieqsll_z_store:192; CHECK-BE: # %bb.0: # %entry193; CHECK-BE-NEXT: cntlzd r3, r3194; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha195; CHECK-BE-NEXT: rldicl r3, r3, 58, 63196; CHECK-BE-NEXT: std r3, glob@toc@l(r4)197; CHECK-BE-NEXT: blr198;199; CHECK-LE-LABEL: test_ieqsll_z_store:200; CHECK-LE: # %bb.0: # %entry201; CHECK-LE-NEXT: cntlzd r3, r3202; CHECK-LE-NEXT: addis r4, r2, glob@toc@ha203; CHECK-LE-NEXT: rldicl r3, r3, 58, 63204; CHECK-LE-NEXT: std r3, glob@toc@l(r4)205; CHECK-LE-NEXT: blr206entry:207 %cmp = icmp eq i64 %a, 0208 %conv1 = zext i1 %cmp to i64209 store i64 %conv1, ptr @glob, align 8210 ret void211}212 213; Function Attrs: norecurse nounwind214define dso_local void @test_ieqsll_sext_z_store(i64 %a) {215; CHECK-LABEL: test_ieqsll_sext_z_store:216; CHECK: # %bb.0: # %entry217; CHECK-NEXT: addic r3, r3, -1218; CHECK-NEXT: addis r4, r2, glob@toc@ha219; CHECK-NEXT: subfe r3, r3, r3220; CHECK-NEXT: std r3, glob@toc@l(r4)221; CHECK-NEXT: blr222; CHECK-BE-LABEL: test_ieqsll_sext_z_store:223; CHECK-BE: # %bb.0: # %entry224; CHECK-BE-NEXT: addic r3, r3, -1225; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha226; CHECK-BE-NEXT: subfe r3, r3, r3227; CHECK-BE-NEXT: std r3, glob@toc@l(r4)228; CHECK-BE-NEXT: blr229;230; CHECK-LE-LABEL: test_ieqsll_sext_z_store:231; CHECK-LE: # %bb.0: # %entry232; CHECK-LE-NEXT: addic r3, r3, -1233; CHECK-LE-NEXT: addis r4, r2, glob@toc@ha234; CHECK-LE-NEXT: subfe r3, r3, r3235; CHECK-LE-NEXT: std r3, glob@toc@l(r4)236; CHECK-LE-NEXT: blr237entry:238 %cmp = icmp eq i64 %a, 0239 %conv1 = sext i1 %cmp to i64240 store i64 %conv1, ptr @glob, align 8241 ret void242}243