133 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 i8 0, align 110 11; Function Attrs: norecurse nounwind readnone12define dso_local signext i32 @test_igeuc(i8 zeroext %a, i8 zeroext %b) {13; CHECK-LABEL: test_igeuc:14; CHECK: # %bb.0: # %entry15; CHECK-NEXT: sub r3, r3, r416; CHECK-NEXT: not r3, r317; CHECK-NEXT: rldicl r3, r3, 1, 6318; CHECK-NEXT: blr19entry:20 %cmp = icmp uge i8 %a, %b21 %conv2 = zext i1 %cmp to i3222 ret i32 %conv223}24 25; Function Attrs: norecurse nounwind readnone26define dso_local signext i32 @test_igeuc_sext(i8 zeroext %a, i8 zeroext %b) {27; CHECK-LABEL: test_igeuc_sext:28; CHECK: # %bb.0: # %entry29; CHECK-NEXT: sub r3, r3, r430; CHECK-NEXT: rldicl r3, r3, 1, 6331; CHECK-NEXT: addi r3, r3, -132; CHECK-NEXT: blr33entry:34 %cmp = icmp uge i8 %a, %b35 %sub = sext i1 %cmp to i3236 ret i32 %sub37 38}39 40; Function Attrs: norecurse nounwind readnone41define dso_local signext i32 @test_igeuc_z(i8 zeroext %a) {42; CHECK-LABEL: test_igeuc_z:43; CHECK: # %bb.0: # %entry44; CHECK-NEXT: li r3, 145; CHECK-NEXT: blr46entry:47 %cmp = icmp uge i8 %a, 048 %conv2 = zext i1 %cmp to i3249 ret i32 %conv250}51 52; Function Attrs: norecurse nounwind readnone53define dso_local signext i32 @test_igeuc_sext_z(i8 zeroext %a) {54; CHECK-LABEL: test_igeuc_sext_z:55; CHECK: # %bb.0: # %entry56; CHECK-NEXT: li r3, -157; CHECK-NEXT: blr58entry:59 %cmp = icmp uge i8 %a, 060 %conv2 = sext i1 %cmp to i3261 ret i32 %conv262}63 64; Function Attrs: norecurse nounwind65define dso_local void @test_igeuc_store(i8 zeroext %a, i8 zeroext %b) {66; CHECK-LABEL: test_igeuc_store:67; CHECK: # %bb.0: # %entry68; CHECK-NEXT: sub r3, r3, r469; CHECK-NEXT: addis r4, r2, glob@toc@ha70; CHECK-NEXT: not r3, r371; CHECK-NEXT: rldicl r3, r3, 1, 6372; CHECK-NEXT: stb r3, glob@toc@l(r4)73; CHECK-NEXT: blr74entry:75 %cmp = icmp uge i8 %a, %b76 %conv3 = zext i1 %cmp to i877 store i8 %conv3, ptr @glob78 ret void79}80 81; Function Attrs: norecurse nounwind82define dso_local void @test_igeuc_sext_store(i8 zeroext %a, i8 zeroext %b) {83; CHECK-LABEL: test_igeuc_sext_store:84; CHECK: # %bb.0: # %entry85; CHECK-NEXT: sub r3, r3, r486; CHECK-NEXT: addis r4, r2, glob@toc@ha87; CHECK-NEXT: rldicl r3, r3, 1, 6388; CHECK-NEXT: addi r3, r3, -189; CHECK-NEXT: stb r3, glob@toc@l(r4)90; CHECK-NEXT: blr91entry:92 %cmp = icmp uge i8 %a, %b93 %conv3 = sext i1 %cmp to i894 store i8 %conv3, ptr @glob95 ret void96; CHECK-TBD-LABEL: @test_igeuc_sext_store97; CHECK-TBD: subf [[REG1:r[0-9]+]], r3, r498; CHECK-TBD: rldicl [[REG2:r[0-9]+]], [[REG1]], 1, 6399; CHECK-TBD: addi [[REG3:r[0-9]+]], [[REG2]], -1100; CHECK-TBD: stb [[REG3]]101; CHECK-TBD: blr102}103 104; Function Attrs : norecurse nounwind105define dso_local void @test_igeuc_z_store(i8 zeroext %a) {106; CHECK-LABEL: test_igeuc_z_store:107; CHECK: # %bb.0: # %entry108; CHECK-NEXT: addis r3, r2, glob@toc@ha109; CHECK-NEXT: li r4, 1110; CHECK-NEXT: stb r4, glob@toc@l(r3)111; CHECK-NEXT: blr112entry:113 %cmp = icmp uge i8 %a, 0114 %conv3 = zext i1 %cmp to i8115 store i8 %conv3, ptr @glob116 ret void117}118 119; Function Attrs: norecurse nounwind120define dso_local void @test_igeuc_sext_z_store(i8 zeroext %a) {121; CHECK-LABEL: test_igeuc_sext_z_store:122; CHECK: # %bb.0: # %entry123; CHECK-NEXT: addis r3, r2, glob@toc@ha124; CHECK-NEXT: li r4, -1125; CHECK-NEXT: stb r4, glob@toc@l(r3)126; CHECK-NEXT: blr127entry:128 %cmp = icmp uge i8 %a, 0129 %conv3 = sext i1 %cmp to i8130 store i8 %conv3, ptr @glob131 ret void132}133