109 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 \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 \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_llltsll(i64 %a, i64 %b) {13; CHECK-LABEL: test_llltsll:14; CHECK: # %bb.0: # %entry15; CHECK-NEXT: sradi r5, r3, 6316; CHECK-NEXT: rldicl r6, r4, 1, 6317; CHECK-NEXT: subc r3, r3, r418; CHECK-NEXT: adde r3, r6, r519; CHECK-NEXT: xori r3, r3, 120; CHECK-NEXT: blr21entry:22 %cmp = icmp slt i64 %a, %b23 %conv1 = zext i1 %cmp to i6424 ret i64 %conv125}26 27; Function Attrs: norecurse nounwind readnone28define i64 @test_llltsll_sext(i64 %a, i64 %b) {29; CHECK-LABEL: test_llltsll_sext:30; CHECK: # %bb.0: # %entry31; CHECK-NEXT: sradi r5, r3, 6332; CHECK-NEXT: rldicl r6, r4, 1, 6333; CHECK-NEXT: subc r3, r3, r434; CHECK-NEXT: adde r3, r6, r535; CHECK-NEXT: xori r3, r3, 136; CHECK-NEXT: neg r3, r337; CHECK-NEXT: blr38entry:39 %cmp = icmp slt i64 %a, %b40 %conv1 = sext i1 %cmp to i6441 ret i64 %conv142}43 44; Function Attrs: norecurse nounwind readnone45define i64 @test_llltsll_sext_z(i64 %a) {46; CHECK-LABEL: test_llltsll_sext_z:47; CHECK: # %bb.0: # %entry48; CHECK-NEXT: sradi r3, r3, 6349; CHECK-NEXT: blr50entry:51 %cmp = icmp slt i64 %a, 052 %sub = sext i1 %cmp to i6453 ret i64 %sub54}55 56; Function Attrs: norecurse nounwind57define dso_local void @test_llltsll_store(i64 %a, i64 %b) {58; CHECK-LABEL: test_llltsll_store:59; CHECK: # %bb.0: # %entry60; CHECK-NEXT: sradi r5, r3, 6361; CHECK-NEXT: rldicl r6, r4, 1, 6362; CHECK-NEXT: subc r3, r3, r463; CHECK-NEXT: addis r4, r2, glob@toc@ha64; CHECK-NEXT: adde r3, r6, r565; CHECK-NEXT: xori r3, r3, 166; CHECK-NEXT: std r3, glob@toc@l(r4)67; CHECK-NEXT: blr68entry:69 %cmp = icmp slt i64 %a, %b70 %conv1 = zext i1 %cmp to i6471 store i64 %conv1, ptr @glob, align 872 ret void73}74 75; Function Attrs: norecurse nounwind76define dso_local void @test_llltsll_sext_store(i64 %a, i64 %b) {77; CHECK-LABEL: test_llltsll_sext_store:78; CHECK: # %bb.0: # %entry79; CHECK-NEXT: sradi r5, r3, 6380; CHECK-NEXT: rldicl r6, r4, 1, 6381; CHECK-NEXT: subc r3, r3, r482; CHECK-NEXT: addis r4, r2, glob@toc@ha83; CHECK-NEXT: adde r3, r6, r584; CHECK-NEXT: xori r3, r3, 185; CHECK-NEXT: neg r3, r386; CHECK-NEXT: std r3, glob@toc@l(r4)87; CHECK-NEXT: blr88entry:89 %cmp = icmp slt i64 %a, %b90 %conv1 = sext i1 %cmp to i6491 store i64 %conv1, ptr @glob, align 892 ret void93}94 95; Function Attrs: norecurse nounwind96define dso_local void @test_llltsll_sext_z_store(i64 %a) {97; CHECK-LABEL: test_llltsll_sext_z_store:98; CHECK: # %bb.0: # %entry99; CHECK-NEXT: sradi r3, r3, 63100; CHECK-NEXT: addis r4, r2, glob@toc@ha101; CHECK-NEXT: std r3, glob@toc@l(r4)102; CHECK-NEXT: blr103entry:104 %cmp = icmp slt i64 %a, 0105 %sub = sext i1 %cmp to i64106 store i64 %sub, ptr @glob, align 8107 ret void108}109