brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · 16e18b5 Raw
213 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v128:128:128-n32:64"3target triple = "powerpc64-unknown-linux-gnu"4; RUN: llc -ppc-gpr-icmps=all -verify-machineinstrs -O2 -ppc-asm-full-reg-names -mcpu=pwr7 -mattr=-isel < %s | FileCheck %s --implicit-check-not isel5 6define signext i32 @testExpandISELToIfElse(i32 signext %i, i32 signext %j) {7; CHECK-LABEL: testExpandISELToIfElse:8; CHECK:       # %bb.0: # %entry9; CHECK-NEXT:    cmpwi r3, 010; CHECK-NEXT:    ble cr0, .LBB0_211; CHECK-NEXT:  # %bb.1:12; CHECK-NEXT:    addi r4, r3, 113; CHECK-NEXT:  .LBB0_2: # %entry14; CHECK-NEXT:    extsw r3, r415; CHECK-NEXT:    blr16entry:17  %cmp = icmp sgt i32 %i, 018  %add = add nsw i32 %i, 119  %cond = select i1 %cmp, i32 %add, i32 %j20  ret i32 %cond21 22}23 24define signext i32 @testExpandISELToIf(i32 signext %i, i32 signext %j) {25; CHECK-LABEL: testExpandISELToIf:26; CHECK:       # %bb.0: # %entry27; CHECK-NEXT:    cmpwi r3, 028; CHECK-NEXT:    bgt cr0, .LBB1_229; CHECK-NEXT:  # %bb.1: # %entry30; CHECK-NEXT:    mr r4, r331; CHECK-NEXT:  .LBB1_2: # %entry32; CHECK-NEXT:    mr r3, r433; CHECK-NEXT:    blr34entry:35  %cmp = icmp sgt i32 %i, 036  %cond = select i1 %cmp, i32 %j, i32 %i37  ret i32 %cond38 39}40 41define signext i32 @testExpandISELToElse(i32 signext %i, i32 signext %j) {42; CHECK-LABEL: testExpandISELToElse:43; CHECK:       # %bb.0: # %entry44; CHECK-NEXT:    cmpwi r3, 045; CHECK-NEXT:    bgtlr cr046; CHECK-NEXT:  # %bb.1: # %entry47; CHECK-NEXT:    mr r3, r448; CHECK-NEXT:    blr49entry:50  %cmp = icmp sgt i32 %i, 051  %cond = select i1 %cmp, i32 %i, i32 %j52  ret i32 %cond53 54}55 56define signext i32 @testExpandISELToNull(i32 signext %i, i32 signext %j) {57; CHECK-LABEL: testExpandISELToNull:58; CHECK:       # %bb.0: # %entry59; CHECK-NEXT:    blr60entry:61  %cmp = icmp sgt i32 %i, 062  %cond = select i1 %cmp, i32 %i, i32 %i63  ret i32 %cond64 65}66 67define signext i32 @testExpandISELsTo2ORIs2ADDIs(i32 signext %a, i32 signext %b, i32 signext %d, i32 signext %f, i32 signext %g) {68; CHECK-LABEL: testExpandISELsTo2ORIs2ADDIs:69; CHECK:       # %bb.0: # %entry70; CHECK-NEXT:    cmpwi r7, 071; CHECK-NEXT:    bgt cr0, .LBB4_272; CHECK-NEXT:  # %bb.1: # %entry73; CHECK-NEXT:    mr r7, r474; CHECK-NEXT:  .LBB4_2: # %entry75; CHECK-NEXT:    bgt cr0, .LBB4_476; CHECK-NEXT:  # %bb.3: # %entry77; CHECK-NEXT:    mr r5, r678; CHECK-NEXT:  .LBB4_4: # %entry79; CHECK-NEXT:    add r3, r7, r580; CHECK-NEXT:    extsw r3, r381; CHECK-NEXT:    blr82entry:83  %cmp = icmp sgt i32 %g, 084  %a.b = select i1 %cmp, i32 %g, i32 %b85  %d.f = select i1 %cmp, i32 %d, i32 %f86  %add = add nsw i32 %a.b, %d.f87  ret i32 %add88}89 90define signext i32 @testExpandISELsTo2ORIs1ADDI(i32 signext %a, i32 signext %b, i32 signext %d, i32 signext %f, i32 signext %g) {91; CHECK-LABEL: testExpandISELsTo2ORIs1ADDI:92; CHECK:       # %bb.0: # %entry93; CHECK-NEXT:    cmpwi r7, 094; CHECK-NEXT:    bgt cr0, .LBB5_295; CHECK-NEXT:  # %bb.1: # %entry96; CHECK-NEXT:    mr r3, r497; CHECK-NEXT:  .LBB5_2: # %entry98; CHECK-NEXT:    bgt cr0, .LBB5_499; CHECK-NEXT:  # %bb.3: # %entry100; CHECK-NEXT:    mr r5, r6101; CHECK-NEXT:  .LBB5_4: # %entry102; CHECK-NEXT:    add r3, r3, r5103; CHECK-NEXT:    extsw r3, r3104; CHECK-NEXT:    blr105entry:106  %cmp = icmp sgt i32 %g, 0107  %a.b = select i1 %cmp, i32 %a, i32 %b108  %d.f = select i1 %cmp, i32 %d, i32 %f109  %add = add nsw i32 %a.b, %d.f110  ret i32 %add111}112 113define signext i32 @testExpandISELsTo1ORI1ADDI(i32 signext %a, i32 signext %b, i32 signext %d, i32 signext %f, i32 signext %g) {114; CHECK-LABEL: testExpandISELsTo1ORI1ADDI:115; CHECK:       # %bb.0: # %entry116; CHECK-NEXT:    cmpwi r7, 0117; CHECK-NEXT:    mr r7, r3118; CHECK-NEXT:    bgt cr0, .LBB6_2119; CHECK-NEXT:  # %bb.1: # %entry120; CHECK-NEXT:    mr r7, r4121; CHECK-NEXT:  .LBB6_2: # %entry122; CHECK-NEXT:    bgt cr0, .LBB6_4123; CHECK-NEXT:  # %bb.3: # %entry124; CHECK-NEXT:    mr r5, r6125; CHECK-NEXT:  .LBB6_4: # %entry126; CHECK-NEXT:    add r4, r7, r5127; CHECK-NEXT:    add r3, r3, r4128; CHECK-NEXT:    extsw r3, r3129; CHECK-NEXT:    blr130entry:131  %cmp = icmp sgt i32 %g, 0132  %a.b = select i1 %cmp, i32 %a, i32 %b133  %d.f = select i1 %cmp, i32 %d, i32 %f134  %add1 = add nsw i32 %a.b, %d.f135  %add2 = add nsw i32 %a, %add1136  ret i32 %add2137}138 139define signext i32 @testExpandISELsTo0ORI2ADDIs(i32 signext %a, i32 signext %b, i32 signext %d, i32 signext %f, i32 signext %g) {140; CHECK-LABEL: testExpandISELsTo0ORI2ADDIs:141; CHECK:       # %bb.0: # %entry142; CHECK-NEXT:    cmpwi r7, 0143; CHECK-NEXT:    mr r7, r3144; CHECK-NEXT:    bgt cr0, .LBB7_2145; CHECK-NEXT:  # %bb.1: # %entry146; CHECK-NEXT:    mr r7, r4147; CHECK-NEXT:  .LBB7_2: # %entry148; CHECK-NEXT:    mr r4, r5149; CHECK-NEXT:    bgt cr0, .LBB7_4150; CHECK-NEXT:  # %bb.3: # %entry151; CHECK-NEXT:    mr r4, r6152; CHECK-NEXT:  .LBB7_4: # %entry153; CHECK-NEXT:    add r4, r7, r4154; CHECK-NEXT:    add r3, r3, r4155; CHECK-NEXT:    sub r3, r3, r5156; CHECK-NEXT:    extsw r3, r3157; CHECK-NEXT:    blr158entry:159  %cmp = icmp sgt i32 %g, 0160  %a.b = select i1 %cmp, i32 %a, i32 %b161  %d.f = select i1 %cmp, i32 %d, i32 %f162  %add1 = add nsw i32 %a.b, %d.f163  %add2 = add nsw i32 %a, %add1164  %sub1 = sub nsw i32 %add2, %d165  ret i32 %sub1166}167 168@b = local_unnamed_addr global i32 0, align 4169@a = local_unnamed_addr global i32 0, align 4170; Function Attrs: norecurse nounwind readonly171define signext i32 @testComplexISEL() #0 {172; CHECK-LABEL: testComplexISEL:173; CHECK:       # %bb.0: # %entry174; CHECK-NEXT:    addis r3, r2, .LC0@toc@ha175; CHECK-NEXT:    ld r3, .LC0@toc@l(r3)176; CHECK-NEXT:    lwz r4, 0(r3)177; CHECK-NEXT:    li r3, 1178; CHECK-NEXT:    cmplwi r4, 0179; CHECK-NEXT:    bnelr cr0180; CHECK-NEXT:  # %bb.1: # %if.end181; CHECK-NEXT:    addis r3, r2, .LC1@toc@ha182; CHECK-NEXT:    addis r4, r2, .LC2@toc@ha183; CHECK-NEXT:    ld r3, .LC1@toc@l(r3)184; CHECK-NEXT:    ld r4, .LC2@toc@l(r4)185; CHECK-NEXT:    lwa r3, 0(r3)186; CHECK-NEXT:    xor r3, r3, r4187; CHECK-NEXT:    cntlzd r3, r3188; CHECK-NEXT:    rldicl r3, r3, 58, 63189; CHECK-NEXT:    blr190entry:191  %0 = load i32, ptr @b, align 4, !tbaa !1192  %tobool = icmp eq i32 %0, 0193  br i1 %tobool, label %if.end, label %cleanup194 195if.end:196  %1 = load i32, ptr @a, align 4, !tbaa !1197  %conv = sext i32 %1 to i64198  %2 = inttoptr i64 %conv to ptr199  %cmp = icmp eq ptr %2, @testComplexISEL200  %conv3 = zext i1 %cmp to i32201  br label %cleanup202 203cleanup:204  %retval.0 = phi i32 [ %conv3, %if.end ], [ 1, %entry ]205  ret i32 %retval.0206 207}208 209!1 = !{!2, !2, i64 0}210!2 = !{!"int", !3, i64 0}211!3 = !{!"omnipotent char", !4, i64 0}212!4 = !{!"Simple C/C++ TBAA"}213