brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.5 KiB · 3316f1b Raw
261 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=powerpc64le-unknown-linux-unknown -verify-machineinstrs %s \3; RUN: -ppc-asm-full-reg-names -o - | FileCheck %s --check-prefix=PPC64LE4; RUN: llc -mtriple=powerpc64-unknown-linux-unknown -verify-machineinstrs %s \5; RUN: -ppc-asm-full-reg-names -o - | FileCheck %s --check-prefix=PPC64BE6 7define dso_local void @ClobberLR() local_unnamed_addr #0 {8; PPC64LE-LABEL: ClobberLR:9; PPC64LE:       # %bb.0: # %entry10; PPC64LE-NEXT:    mflr r011; PPC64LE-NEXT:    stdu r1, -32(r1)12; PPC64LE-NEXT:    std r0, 48(r1)13; PPC64LE-NEXT:    #APP14; PPC64LE-NEXT:    #NO_APP15; PPC64LE-NEXT:    addi r1, r1, 3216; PPC64LE-NEXT:    ld r0, 16(r1)17; PPC64LE-NEXT:    mtlr r018; PPC64LE-NEXT:    blr19;20; PPC64BE-LABEL: ClobberLR:21; PPC64BE:       # %bb.0: # %entry22; PPC64BE-NEXT:    mflr r023; PPC64BE-NEXT:    stdu r1, -48(r1)24; PPC64BE-NEXT:    std r0, 64(r1)25; PPC64BE-NEXT:    #APP26; PPC64BE-NEXT:    #NO_APP27; PPC64BE-NEXT:    addi r1, r1, 4828; PPC64BE-NEXT:    ld r0, 16(r1)29; PPC64BE-NEXT:    mtlr r030; PPC64BE-NEXT:    blr31entry:32  tail call void asm sideeffect "", "~{lr}"()33  ret void34}35 36define dso_local void @ClobberR5() local_unnamed_addr #0 {37; PPC64LE-LABEL: ClobberR5:38; PPC64LE:       # %bb.0: # %entry39; PPC64LE-NEXT:    #APP40; PPC64LE-NEXT:    #NO_APP41; PPC64LE-NEXT:    blr42;43; PPC64BE-LABEL: ClobberR5:44; PPC64BE:       # %bb.0: # %entry45; PPC64BE-NEXT:    #APP46; PPC64BE-NEXT:    #NO_APP47; PPC64BE-NEXT:    blr48entry:49  tail call void asm sideeffect "", "~{r5}"()50  ret void51}52 53define dso_local void @ClobberR15() local_unnamed_addr #0 {54; PPC64LE-LABEL: ClobberR15:55; PPC64LE:       # %bb.0: # %entry56; PPC64LE-NEXT:    std r15, -136(r1) # 8-byte Folded Spill57; PPC64LE-NEXT:    #APP58; PPC64LE-NEXT:    #NO_APP59; PPC64LE-NEXT:    ld r15, -136(r1) # 8-byte Folded Reload60; PPC64LE-NEXT:    blr61;62; PPC64BE-LABEL: ClobberR15:63; PPC64BE:       # %bb.0: # %entry64; PPC64BE-NEXT:    std r15, -136(r1) # 8-byte Folded Spill65; PPC64BE-NEXT:    #APP66; PPC64BE-NEXT:    #NO_APP67; PPC64BE-NEXT:    ld r15, -136(r1) # 8-byte Folded Reload68; PPC64BE-NEXT:    blr69entry:70  tail call void asm sideeffect "", "~{r15}"()71  ret void72}73 74;; Test for INLINEASM_BR75define dso_local signext i32 @ClobberLR_BR(i32 signext %in) #0 {76; PPC64LE-LABEL: ClobberLR_BR:77; PPC64LE:       # %bb.0: # %entry78; PPC64LE-NEXT:    mflr r079; PPC64LE-NEXT:    stdu r1, -32(r1)80; PPC64LE-NEXT:    std r0, 48(r1)81; PPC64LE-NEXT:    #APP82; PPC64LE-NEXT:    nop83; PPC64LE-NEXT:    #NO_APP84; PPC64LE-NEXT:  .LBB3_1: # %return85; PPC64LE-NEXT:    addi r1, r1, 3286; PPC64LE-NEXT:    ld r0, 16(r1)87; PPC64LE-NEXT:    mtlr r088; PPC64LE-NEXT:    blr89; PPC64LE-NEXT:  .LBB3_2: # Inline asm indirect target90; PPC64LE-NEXT:    # %return_early91; PPC64LE-NEXT:    # Label of block must be emitted92; PPC64LE-NEXT:    li r3, 093; PPC64LE-NEXT:    b .LBB3_194;95; PPC64BE-LABEL: ClobberLR_BR:96; PPC64BE:       # %bb.0: # %entry97; PPC64BE-NEXT:    mflr r098; PPC64BE-NEXT:    stdu r1, -48(r1)99; PPC64BE-NEXT:    std r0, 64(r1)100; PPC64BE-NEXT:    #APP101; PPC64BE-NEXT:    nop102; PPC64BE-NEXT:    #NO_APP103; PPC64BE-NEXT:  .LBB3_1: # %return104; PPC64BE-NEXT:    addi r1, r1, 48105; PPC64BE-NEXT:    ld r0, 16(r1)106; PPC64BE-NEXT:    mtlr r0107; PPC64BE-NEXT:    blr108; PPC64BE-NEXT:  .LBB3_2: # Inline asm indirect target109; PPC64BE-NEXT:    # %return_early110; PPC64BE-NEXT:    # Label of block must be emitted111; PPC64BE-NEXT:    li r3, 0112; PPC64BE-NEXT:    b .LBB3_1113entry:114  callbr void asm sideeffect "nop", "!i,~{lr}"()115          to label %return [label %return_early]116 117return_early:118  br label %return119 120return:121  %retval.0 = phi i32 [ 0, %return_early ], [ %in, %entry ]122  ret i32 %retval.0123}124 125define dso_local signext i32 @ClobberR5_BR(i32 signext %in) #0 {126; PPC64LE-LABEL: ClobberR5_BR:127; PPC64LE:       # %bb.0: # %entry128; PPC64LE-NEXT:    #APP129; PPC64LE-NEXT:    nop130; PPC64LE-NEXT:    #NO_APP131; PPC64LE-NEXT:  # %bb.1: # %return132; PPC64LE-NEXT:    blr133; PPC64LE-NEXT:  .LBB4_2: # Inline asm indirect target134; PPC64LE-NEXT:    # %return_early135; PPC64LE-NEXT:    # Label of block must be emitted136; PPC64LE-NEXT:    li r3, 0137; PPC64LE-NEXT:    blr138;139; PPC64BE-LABEL: ClobberR5_BR:140; PPC64BE:       # %bb.0: # %entry141; PPC64BE-NEXT:    #APP142; PPC64BE-NEXT:    nop143; PPC64BE-NEXT:    #NO_APP144; PPC64BE-NEXT:  # %bb.1: # %return145; PPC64BE-NEXT:    blr146; PPC64BE-NEXT:  .LBB4_2: # Inline asm indirect target147; PPC64BE-NEXT:    # %return_early148; PPC64BE-NEXT:    # Label of block must be emitted149; PPC64BE-NEXT:    li r3, 0150; PPC64BE-NEXT:    blr151entry:152  callbr void asm sideeffect "nop", "!i,~{r5}"()153          to label %return [label %return_early]154 155return_early:156  br label %return157 158return:159  %retval.0 = phi i32 [ 0, %return_early ], [ %in, %entry ]160  ret i32 %retval.0161}162 163 164 165define dso_local void @DefLR() local_unnamed_addr #0 {166; PPC64LE-LABEL: DefLR:167; PPC64LE:       # %bb.0: # %entry168; PPC64LE-NEXT:    mflr r0169; PPC64LE-NEXT:    stdu r1, -32(r1)170; PPC64LE-NEXT:    std r0, 48(r1)171; PPC64LE-NEXT:    #APP172; PPC64LE-NEXT:    #NO_APP173; PPC64LE-NEXT:    addi r1, r1, 32174; PPC64LE-NEXT:    ld r0, 16(r1)175; PPC64LE-NEXT:    mtlr r0176; PPC64LE-NEXT:    blr177;178; PPC64BE-LABEL: DefLR:179; PPC64BE:       # %bb.0: # %entry180; PPC64BE-NEXT:    mflr r0181; PPC64BE-NEXT:    stdu r1, -48(r1)182; PPC64BE-NEXT:    std r0, 64(r1)183; PPC64BE-NEXT:    #APP184; PPC64BE-NEXT:    #NO_APP185; PPC64BE-NEXT:    addi r1, r1, 48186; PPC64BE-NEXT:    ld r0, 16(r1)187; PPC64BE-NEXT:    mtlr r0188; PPC64BE-NEXT:    blr189entry:190  tail call i64 asm sideeffect "", "={lr}"()191  ret void192}193 194define dso_local void @EarlyClobberLR() local_unnamed_addr #0 {195; PPC64LE-LABEL: EarlyClobberLR:196; PPC64LE:       # %bb.0: # %entry197; PPC64LE-NEXT:    mflr r0198; PPC64LE-NEXT:    stdu r1, -32(r1)199; PPC64LE-NEXT:    std r0, 48(r1)200; PPC64LE-NEXT:    #APP201; PPC64LE-NEXT:    #NO_APP202; PPC64LE-NEXT:    addi r1, r1, 32203; PPC64LE-NEXT:    ld r0, 16(r1)204; PPC64LE-NEXT:    mtlr r0205; PPC64LE-NEXT:    blr206;207; PPC64BE-LABEL: EarlyClobberLR:208; PPC64BE:       # %bb.0: # %entry209; PPC64BE-NEXT:    mflr r0210; PPC64BE-NEXT:    stdu r1, -48(r1)211; PPC64BE-NEXT:    std r0, 64(r1)212; PPC64BE-NEXT:    #APP213; PPC64BE-NEXT:    #NO_APP214; PPC64BE-NEXT:    addi r1, r1, 48215; PPC64BE-NEXT:    ld r0, 16(r1)216; PPC64BE-NEXT:    mtlr r0217; PPC64BE-NEXT:    blr218entry:219  tail call i64 asm sideeffect "", "=&{lr}"()220  ret void221}222 223define dso_local void @ClobberMulti() local_unnamed_addr #0 {224; PPC64LE-LABEL: ClobberMulti:225; PPC64LE:       # %bb.0: # %entry226; PPC64LE-NEXT:    mflr r0227; PPC64LE-NEXT:    std r15, -136(r1) # 8-byte Folded Spill228; PPC64LE-NEXT:    std r16, -128(r1) # 8-byte Folded Spill229; PPC64LE-NEXT:    stdu r1, -176(r1)230; PPC64LE-NEXT:    std r0, 192(r1)231; PPC64LE-NEXT:    #APP232; PPC64LE-NEXT:    #NO_APP233; PPC64LE-NEXT:    addi r1, r1, 176234; PPC64LE-NEXT:    ld r0, 16(r1)235; PPC64LE-NEXT:    ld r16, -128(r1) # 8-byte Folded Reload236; PPC64LE-NEXT:    ld r15, -136(r1) # 8-byte Folded Reload237; PPC64LE-NEXT:    mtlr r0238; PPC64LE-NEXT:    blr239;240; PPC64BE-LABEL: ClobberMulti:241; PPC64BE:       # %bb.0: # %entry242; PPC64BE-NEXT:    mflr r0243; PPC64BE-NEXT:    stdu r1, -192(r1)244; PPC64BE-NEXT:    std r0, 208(r1)245; PPC64BE-NEXT:    std r15, 56(r1) # 8-byte Folded Spill246; PPC64BE-NEXT:    std r16, 64(r1) # 8-byte Folded Spill247; PPC64BE-NEXT:    #APP248; PPC64BE-NEXT:    #NO_APP249; PPC64BE-NEXT:    ld r16, 64(r1) # 8-byte Folded Reload250; PPC64BE-NEXT:    ld r15, 56(r1) # 8-byte Folded Reload251; PPC64BE-NEXT:    addi r1, r1, 192252; PPC64BE-NEXT:    ld r0, 16(r1)253; PPC64BE-NEXT:    mtlr r0254; PPC64BE-NEXT:    blr255entry:256  tail call void asm sideeffect "", "~{lr},~{r15},~{r16}"()257  ret void258}259 260attributes #0 = { nounwind }261