brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · 1c8e029 Raw
191 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \3; RUN:   -ppc-asm-full-reg-names -verify-machineinstrs -O2 < %s | FileCheck %s \4; RUN:   --check-prefix=CHECK-P95 6define i32 @t(i32 %n, i32 %delta, i32 %a) {7; CHECK-P9-LABEL: t:8; CHECK-P9:       # %bb.0: # %entry9; CHECK-P9-NEXT:    lis r7, 010; CHECK-P9-NEXT:    li r6, 011; CHECK-P9-NEXT:    li r8, 012; CHECK-P9-NEXT:    li r9, 013; CHECK-P9-NEXT:    ori r7, r7, 6553514; CHECK-P9-NEXT:    .p2align 515; CHECK-P9-NEXT:  .LBB0_1: # %header16; CHECK-P9-NEXT:    #17; CHECK-P9-NEXT:    addi r9, r9, 118; CHECK-P9-NEXT:    cmpw r9, r319; CHECK-P9-NEXT:    blt cr0, .LBB0_420; CHECK-P9-NEXT:  # %bb.2: # %cont21; CHECK-P9-NEXT:    #22; CHECK-P9-NEXT:    add r8, r8, r423; CHECK-P9-NEXT:    cmpw r8, r724; CHECK-P9-NEXT:    bgt cr0, .LBB0_125; CHECK-P9-NEXT:  # %bb.3: # %cont.126; CHECK-P9-NEXT:    addi r6, r5, 102427; CHECK-P9-NEXT:  .LBB0_4: # %return28; CHECK-P9-NEXT:    addi r3, r5, 102429; CHECK-P9-NEXT:    mullw r3, r6, r330; CHECK-P9-NEXT:    blr31entry:32  br label %header33 34header:35  %sum = phi i32 [ 0, %entry ], [ %sum.1, %cont ]36  %i = phi i32 [ 0, %entry ], [ %i.1, %cont ]37  %i.1 = add nsw i32 %i, 138  %lt = icmp slt i32 %i.1, %n39  br i1 %lt, label %return, label %cont40 41cont:42  %sum.1 = add nsw i32 %sum, %delta43  %lt.1 = icmp slt i32 %sum.1, 6553644  br i1 %lt.1, label %cont.1, label %header45 46cont.1:47  %delta.1 = add nsw i32 %a, 102448  br label %return49 50return:51  %delta.2 = phi i32 [ %delta.1, %cont.1 ], [ 0, %header ]52  %delta.3 = add nsw i32 %a, 102453  %ret = mul i32 %delta.2, %delta.354  ret i32 %ret55}56 57define dso_local signext i32 @foo(i32 signext %x, i32 signext %y) nounwind {58; CHECK-P9-LABEL: foo:59; CHECK-P9:       # %bb.0: # %entry60; CHECK-P9-NEXT:    mflr r061; CHECK-P9-NEXT:    std r27, -40(r1) # 8-byte Folded Spill62; CHECK-P9-NEXT:    std r28, -32(r1) # 8-byte Folded Spill63; CHECK-P9-NEXT:    std r29, -24(r1) # 8-byte Folded Spill64; CHECK-P9-NEXT:    std r30, -16(r1) # 8-byte Folded Spill65; CHECK-P9-NEXT:    stdu r1, -80(r1)66; CHECK-P9-NEXT:    mr r30, r467; CHECK-P9-NEXT:    mr r29, r368; CHECK-P9-NEXT:    lis r3, 2184569; CHECK-P9-NEXT:    std r0, 96(r1)70; CHECK-P9-NEXT:    add r28, r30, r2971; CHECK-P9-NEXT:    ori r27, r3, 2184672; CHECK-P9-NEXT:    b .LBB1_473; CHECK-P9-NEXT:    .p2align 474; CHECK-P9-NEXT:  .LBB1_1: # %sw.bb375; CHECK-P9-NEXT:    #76; CHECK-P9-NEXT:    mulli r3, r30, 2377; CHECK-P9-NEXT:  .LBB1_2: # %sw.epilog78; CHECK-P9-NEXT:    #79; CHECK-P9-NEXT:    add r28, r3, r2880; CHECK-P9-NEXT:  .LBB1_3: # %sw.epilog81; CHECK-P9-NEXT:    #82; CHECK-P9-NEXT:    cmpwi r28, 102583; CHECK-P9-NEXT:    bge cr0, .LBB1_784; CHECK-P9-NEXT:  .LBB1_4: # %while.cond85; CHECK-P9-NEXT:    #86; CHECK-P9-NEXT:    mr r3, r2987; CHECK-P9-NEXT:    bl bar88; CHECK-P9-NEXT:    nop89; CHECK-P9-NEXT:    mr r29, r390; CHECK-P9-NEXT:    mr r3, r3091; CHECK-P9-NEXT:    bl bar92; CHECK-P9-NEXT:    nop93; CHECK-P9-NEXT:    mr r30, r394; CHECK-P9-NEXT:    mulhw r3, r28, r2795; CHECK-P9-NEXT:    srwi r4, r3, 3196; CHECK-P9-NEXT:    add r3, r3, r497; CHECK-P9-NEXT:    slwi r4, r3, 198; CHECK-P9-NEXT:    add r3, r3, r499; CHECK-P9-NEXT:    sub r3, r28, r3100; CHECK-P9-NEXT:    cmplwi r3, 1101; CHECK-P9-NEXT:    beq cr0, .LBB1_1102; CHECK-P9-NEXT:  # %bb.5: # %while.cond103; CHECK-P9-NEXT:    #104; CHECK-P9-NEXT:    cmplwi r3, 0105; CHECK-P9-NEXT:    bne cr0, .LBB1_3106; CHECK-P9-NEXT:  # %bb.6: # %sw.bb107; CHECK-P9-NEXT:    #108; CHECK-P9-NEXT:    mulli r3, r29, 13109; CHECK-P9-NEXT:    b .LBB1_2110; CHECK-P9-NEXT:  .LBB1_7: # %while.end111; CHECK-P9-NEXT:    lis r3, -13108112; CHECK-P9-NEXT:    lis r4, 13107113; CHECK-P9-NEXT:    ori r3, r3, 52429114; CHECK-P9-NEXT:    ori r4, r4, 13108115; CHECK-P9-NEXT:    mullw r3, r28, r3116; CHECK-P9-NEXT:    cmplw r3, r4117; CHECK-P9-NEXT:    blt cr0, .LBB1_9118; CHECK-P9-NEXT:  # %bb.8: # %if.then8119; CHECK-P9-NEXT:    mulli r3, r29, 13120; CHECK-P9-NEXT:    mulli r5, r30, 23121; CHECK-P9-NEXT:    extsw r4, r28122; CHECK-P9-NEXT:    extsw r3, r3123; CHECK-P9-NEXT:    extsw r5, r5124; CHECK-P9-NEXT:    sub r3, r4, r3125; CHECK-P9-NEXT:    sub r4, r5, r4126; CHECK-P9-NEXT:    rldicl r3, r3, 1, 63127; CHECK-P9-NEXT:    rldicl r4, r4, 1, 63128; CHECK-P9-NEXT:    or r3, r3, r4129; CHECK-P9-NEXT:    b .LBB1_10130; CHECK-P9-NEXT:  .LBB1_9: # %cleanup20131; CHECK-P9-NEXT:    li r3, 0132; CHECK-P9-NEXT:  .LBB1_10: # %cleanup20133; CHECK-P9-NEXT:    addi r1, r1, 80134; CHECK-P9-NEXT:    ld r0, 16(r1)135; CHECK-P9-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload136; CHECK-P9-NEXT:    ld r29, -24(r1) # 8-byte Folded Reload137; CHECK-P9-NEXT:    ld r28, -32(r1) # 8-byte Folded Reload138; CHECK-P9-NEXT:    mtlr r0139; CHECK-P9-NEXT:    ld r27, -40(r1) # 8-byte Folded Reload140; CHECK-P9-NEXT:    blr141entry:142  %add = add nsw i32 %y, %x143  br label %while.cond144 145while.cond:                                       ; preds = %sw.epilog, %entry146  %sum.0 = phi i32 [ %add, %entry ], [ %sum.1, %sw.epilog ]147  %y.addr.0 = phi i32 [ %y, %entry ], [ %call1, %sw.epilog ]148  %x.addr.0 = phi i32 [ %x, %entry ], [ %call, %sw.epilog ]149  %call = tail call signext i32 @bar(i32 signext %x.addr.0) #2150  %call1 = tail call signext i32 @bar(i32 signext %y.addr.0) #2151  %rem = srem i32 %sum.0, 3152  switch i32 %rem, label %sw.epilog [153    i32 0, label %sw.bb154    i32 1, label %sw.bb3155  ]156 157sw.bb:                                            ; preds = %while.cond158  %mul = mul nsw i32 %call, 13159  %add2 = add nsw i32 %mul, %sum.0160  br label %sw.epilog161 162sw.bb3:                                           ; preds = %while.cond163  %mul4 = mul nsw i32 %call1, 23164  %add5 = add nsw i32 %mul4, %sum.0165  br label %sw.epilog166 167sw.epilog:                                        ; preds = %while.cond, %sw.bb3, %sw.bb168  %sum.1 = phi i32 [ %sum.0, %while.cond ], [ %add5, %sw.bb3 ], [ %add2, %sw.bb ]169  %cmp = icmp slt i32 %sum.1, 1025170  br i1 %cmp, label %while.cond, label %while.end171 172while.end:                                        ; preds = %sw.epilog173  %rem739 = urem i32 %sum.1, 5174  %tobool = icmp eq i32 %rem739, 0175  br i1 %tobool, label %cleanup20, label %if.then8176 177if.then8:                                         ; preds = %while.end178  %mul9 = mul nsw i32 %call, 13179  %cmp11 = icmp slt i32 %sum.1, %mul9180  %mul10 = mul nsw i32 %call1, 23181  %cmp12 = icmp sgt i32 %sum.1, %mul10182  %or.cond = or i1 %cmp11, %cmp12183  %spec.select = zext i1 %or.cond to i32184  ret i32 %spec.select185 186cleanup20:                                        ; preds = %while.end187  ret i32 0188}189 190declare signext i32 @bar(i32 signext) local_unnamed_addr #1191