242 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 9@glob = dso_local local_unnamed_addr global i64 0, align 810 11; Function Attrs: norecurse nounwind readnone12define i64 @test_llequll(i64 %a, i64 %b) {13; CHECK-LABEL: test_llequll:14; CHECK: # %bb.0: # %entry15; CHECK-NEXT: xor r3, r3, r416; CHECK-NEXT: cntlzd r3, r317; CHECK-NEXT: rldicl r3, r3, 58, 6318; CHECK-NEXT: blr19; CHECK-BE-LABEL: test_llequll:20; CHECK-BE: # %bb.0: # %entry21; CHECK-BE-NEXT: xor r3, r3, r422; CHECK-BE-NEXT: cntlzd r3, r323; CHECK-BE-NEXT: rldicl r3, r3, 58, 6324; CHECK-BE-NEXT: blr25;26; CHECK-LE-LABEL: test_llequll:27; CHECK-LE: # %bb.0: # %entry28; CHECK-LE-NEXT: xor r3, r3, r429; CHECK-LE-NEXT: cntlzd r3, r330; CHECK-LE-NEXT: rldicl r3, r3, 58, 6331; CHECK-LE-NEXT: blr32entry:33 %cmp = icmp eq i64 %a, %b34 %conv1 = zext i1 %cmp to i6435 ret i64 %conv136}37 38; Function Attrs: norecurse nounwind readnone39define i64 @test_llequll_sext(i64 %a, i64 %b) {40; CHECK-LABEL: test_llequll_sext:41; CHECK: # %bb.0: # %entry42; CHECK-NEXT: xor r3, r3, r443; CHECK-NEXT: addic r3, r3, -144; CHECK-NEXT: subfe r3, r3, r345; CHECK-NEXT: blr46; CHECK-BE-LABEL: test_llequll_sext:47; CHECK-BE: # %bb.0: # %entry48; CHECK-BE-NEXT: xor r3, r3, r449; CHECK-BE-NEXT: addic r3, r3, -150; CHECK-BE-NEXT: subfe r3, r3, r351; CHECK-BE-NEXT: blr52;53; CHECK-LE-LABEL: test_llequll_sext:54; CHECK-LE: # %bb.0: # %entry55; CHECK-LE-NEXT: xor r3, r3, r456; CHECK-LE-NEXT: addic r3, r3, -157; CHECK-LE-NEXT: subfe r3, r3, r358; CHECK-LE-NEXT: blr59entry:60 %cmp = icmp eq i64 %a, %b61 %conv1 = sext i1 %cmp to i6462 ret i64 %conv163}64 65; Function Attrs: norecurse nounwind readnone66define i64 @test_llequll_z(i64 %a) {67; CHECK-LABEL: test_llequll_z:68; CHECK: # %bb.0: # %entry69; CHECK-NEXT: cntlzd r3, r370; CHECK-NEXT: rldicl r3, r3, 58, 6371; CHECK-NEXT: blr72; CHECK-BE-LABEL: test_llequll_z:73; CHECK-BE: # %bb.0: # %entry74; CHECK-BE-NEXT: cntlzd r3, r375; CHECK-BE-NEXT: rldicl r3, r3, 58, 6376; CHECK-BE-NEXT: blr77;78; CHECK-LE-LABEL: test_llequll_z:79; CHECK-LE: # %bb.0: # %entry80; CHECK-LE-NEXT: cntlzd r3, r381; CHECK-LE-NEXT: rldicl r3, r3, 58, 6382; CHECK-LE-NEXT: blr83entry:84 %cmp = icmp eq i64 %a, 085 %conv1 = zext i1 %cmp to i6486 ret i64 %conv187}88 89; Function Attrs: norecurse nounwind readnone90define i64 @test_llequll_sext_z(i64 %a) {91; CHECK-LABEL: test_llequll_sext_z:92; CHECK: # %bb.0: # %entry93; CHECK-NEXT: addic r3, r3, -194; CHECK-NEXT: subfe r3, r3, r395; CHECK-NEXT: blr96; CHECK-BE-LABEL: test_llequll_sext_z:97; CHECK-BE: # %bb.0: # %entry98; CHECK-BE-NEXT: addic r3, r3, -199; CHECK-BE-NEXT: subfe r3, r3, r3100; CHECK-BE-NEXT: blr101;102; CHECK-LE-LABEL: test_llequll_sext_z:103; CHECK-LE: # %bb.0: # %entry104; CHECK-LE-NEXT: addic r3, r3, -1105; CHECK-LE-NEXT: subfe r3, r3, r3106; CHECK-LE-NEXT: blr107entry:108 %cmp = icmp eq i64 %a, 0109 %conv1 = sext i1 %cmp to i64110 ret i64 %conv1111}112 113; Function Attrs: norecurse nounwind114define dso_local void @test_llequll_store(i64 %a, i64 %b) {115; CHECK-LABEL: test_llequll_store:116; CHECK: # %bb.0: # %entry117; CHECK-NEXT: xor r3, r3, r4118; CHECK-NEXT: addis r5, r2, glob@toc@ha119; CHECK-NEXT: cntlzd r3, r3120; CHECK-NEXT: rldicl r3, r3, 58, 63121; CHECK-NEXT: std r3, glob@toc@l(r5)122; CHECK-NEXT: blr123; CHECK-BE-LABEL: test_llequll_store:124; CHECK-BE: # %bb.0: # %entry125; CHECK-BE-NEXT: xor r3, r3, r4126; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha127; CHECK-BE-NEXT: cntlzd r3, r3128; CHECK-BE-NEXT: rldicl r3, r3, 58, 63129; CHECK-BE-NEXT: std r3, glob@toc@l(r4)130; CHECK-BE-NEXT: blr131;132; CHECK-LE-LABEL: test_llequll_store:133; CHECK-LE: # %bb.0: # %entry134; CHECK-LE-NEXT: xor r3, r3, r4135; CHECK-LE-NEXT: addis r4, r2, glob@toc@ha136; CHECK-LE-NEXT: cntlzd r3, r3137; CHECK-LE-NEXT: rldicl r3, r3, 58, 63138; CHECK-LE-NEXT: std r3, glob@toc@l(r4)139; CHECK-LE-NEXT: blr140entry:141 %cmp = icmp eq i64 %a, %b142 %conv1 = zext i1 %cmp to i64143 store i64 %conv1, ptr @glob, align 8144 ret void145}146 147; Function Attrs: norecurse nounwind148define dso_local void @test_llequll_sext_store(i64 %a, i64 %b) {149; CHECK-LABEL: test_llequll_sext_store:150; CHECK: # %bb.0: # %entry151; CHECK-NEXT: xor r3, r3, r4152; CHECK-NEXT: addis r5, r2, glob@toc@ha153; CHECK-NEXT: addic r3, r3, -1154; CHECK-NEXT: subfe r3, r3, r3155; CHECK-NEXT: std r3, glob@toc@l(r5)156; CHECK-NEXT: blr157; CHECK-BE-LABEL: test_llequll_sext_store:158; CHECK-BE: # %bb.0: # %entry159; CHECK-BE-NEXT: xor r3, r3, r4160; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha161; CHECK-BE-NEXT: addic r3, r3, -1162; CHECK-BE-NEXT: subfe r3, r3, r3163; CHECK-BE-NEXT: std r3, glob@toc@l(r4)164; CHECK-BE-NEXT: blr165;166; CHECK-LE-LABEL: test_llequll_sext_store:167; CHECK-LE: # %bb.0: # %entry168; CHECK-LE-NEXT: xor r3, r3, r4169; CHECK-LE-NEXT: addis r4, r2, glob@toc@ha170; CHECK-LE-NEXT: addic r3, r3, -1171; CHECK-LE-NEXT: subfe r3, r3, r3172; CHECK-LE-NEXT: std r3, glob@toc@l(r4)173; CHECK-LE-NEXT: blr174entry:175 %cmp = icmp eq i64 %a, %b176 %conv1 = sext i1 %cmp to i64177 store i64 %conv1, ptr @glob, align 8178 ret void179}180 181; Function Attrs: norecurse nounwind182define dso_local void @test_llequll_z_store(i64 %a) {183; CHECK-LABEL: test_llequll_z_store:184; CHECK: # %bb.0: # %entry185; CHECK-NEXT: cntlzd r3, r3186; CHECK-NEXT: addis r4, r2, glob@toc@ha187; CHECK-NEXT: rldicl r3, r3, 58, 63188; CHECK-NEXT: std r3, glob@toc@l(r4)189; CHECK-NEXT: blr190; CHECK-BE-LABEL: test_llequll_z_store:191; CHECK-BE: # %bb.0: # %entry192; CHECK-BE-NEXT: cntlzd r3, r3193; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha194; CHECK-BE-NEXT: rldicl r3, r3, 58, 63195; CHECK-BE-NEXT: std r3, glob@toc@l(r4)196; CHECK-BE-NEXT: blr197;198; CHECK-LE-LABEL: test_llequll_z_store:199; CHECK-LE: # %bb.0: # %entry200; CHECK-LE-NEXT: cntlzd r3, r3201; CHECK-LE-NEXT: addis r4, r2, glob@toc@ha202; CHECK-LE-NEXT: rldicl r3, r3, 58, 63203; CHECK-LE-NEXT: std r3, glob@toc@l(r4)204; CHECK-LE-NEXT: blr205entry:206 %cmp = icmp eq i64 %a, 0207 %conv1 = zext i1 %cmp to i64208 store i64 %conv1, ptr @glob, align 8209 ret void210}211 212; Function Attrs: norecurse nounwind213define dso_local void @test_llequll_sext_z_store(i64 %a) {214; CHECK-LABEL: test_llequll_sext_z_store:215; CHECK: # %bb.0: # %entry216; CHECK-NEXT: addic r3, r3, -1217; CHECK-NEXT: addis r4, r2, glob@toc@ha218; CHECK-NEXT: subfe r3, r3, r3219; CHECK-NEXT: std r3, glob@toc@l(r4)220; CHECK-NEXT: blr221; CHECK-BE-LABEL: test_llequll_sext_z_store:222; CHECK-BE: # %bb.0: # %entry223; CHECK-BE-NEXT: addic r3, r3, -1224; CHECK-BE-NEXT: addis r4, r2, glob@toc@ha225; CHECK-BE-NEXT: subfe r3, r3, r3226; CHECK-BE-NEXT: std r3, glob@toc@l(r4)227; CHECK-BE-NEXT: blr228;229; CHECK-LE-LABEL: test_llequll_sext_z_store:230; CHECK-LE: # %bb.0: # %entry231; CHECK-LE-NEXT: addic r3, r3, -1232; CHECK-LE-NEXT: addis r4, r2, glob@toc@ha233; CHECK-LE-NEXT: subfe r3, r3, r3234; CHECK-LE-NEXT: std r3, glob@toc@l(r4)235; CHECK-LE-NEXT: blr236entry:237 %cmp = icmp eq i64 %a, 0238 %conv1 = sext i1 %cmp to i64239 store i64 %conv1, ptr @glob, align 8240 ret void241}242