brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.0 KiB · e24c7e3 Raw
266 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs  -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \3; RUN:     -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 < %s | FileCheck %s --check-prefix=CHECK-PWR94; RUN: llc -verify-machineinstrs  -ppc-vsr-nums-as-vr -ppc-asm-full-reg-names \5; RUN:     -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s6 7; Check CSR split can work properly for tests below.8 9@a = dso_local local_unnamed_addr global i32 0, align 410 11define dso_local signext i32 @test1(ptr %b) local_unnamed_addr  {12; CHECK-PWR9-LABEL: test1:13; CHECK-PWR9:       # %bb.0: # %entry14; CHECK-PWR9-NEXT:    addis r4, r2, a@toc@ha15; CHECK-PWR9-NEXT:    lwa r4, a@toc@l(r4)16; CHECK-PWR9-NEXT:    cmpld r4, r317; CHECK-PWR9-NEXT:    # implicit-def: $r418; CHECK-PWR9-NEXT:    beq cr0, .LBB0_219; CHECK-PWR9-NEXT:  # %bb.1: # %if.end20; CHECK-PWR9-NEXT:    extsw r3, r421; CHECK-PWR9-NEXT:    blr22; CHECK-PWR9-NEXT:  .LBB0_2: # %if.then23; CHECK-PWR9-NEXT:    mflr r024; CHECK-PWR9-NEXT:    .cfi_def_cfa_offset 4825; CHECK-PWR9-NEXT:    .cfi_offset lr, 1626; CHECK-PWR9-NEXT:    .cfi_offset r30, -1627; CHECK-PWR9-NEXT:    std r30, -16(r1) # 8-byte Folded Spill28; CHECK-PWR9-NEXT:    stdu r1, -48(r1)29; CHECK-PWR9-NEXT:    std r0, 64(r1)30; CHECK-PWR9-NEXT:    mr r30, r331; CHECK-PWR9-NEXT:    bl callVoid32; CHECK-PWR9-NEXT:    nop33; CHECK-PWR9-NEXT:    mr r3, r3034; CHECK-PWR9-NEXT:    bl callNonVoid35; CHECK-PWR9-NEXT:    nop36; CHECK-PWR9-NEXT:    mr r4, r337; CHECK-PWR9-NEXT:    addi r1, r1, 4838; CHECK-PWR9-NEXT:    ld r0, 16(r1)39; CHECK-PWR9-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload40; CHECK-PWR9-NEXT:    mtlr r041; CHECK-PWR9-NEXT:    extsw r3, r442; CHECK-PWR9-NEXT:    blr43;44; CHECK-LABEL: test1:45; CHECK:       # %bb.0: # %entry46; CHECK-NEXT:    addis r4, r2, a@toc@ha47; CHECK-NEXT:    lwa r4, a@toc@l(r4)48; CHECK-NEXT:    cmpld r4, r349; CHECK-NEXT:    # implicit-def: $r450; CHECK-NEXT:    beq cr0, .LBB0_251; CHECK-NEXT:  # %bb.1: # %if.end52; CHECK-NEXT:    extsw r3, r453; CHECK-NEXT:    blr54; CHECK-NEXT:  .LBB0_2: # %if.then55; CHECK-NEXT:    mflr r056; CHECK-NEXT:    stdu r1, -128(r1)57; CHECK-NEXT:    std r0, 144(r1)58; CHECK-NEXT:    .cfi_def_cfa_offset 12859; CHECK-NEXT:    .cfi_offset lr, 1660; CHECK-NEXT:    .cfi_offset r30, -1661; CHECK-NEXT:    std r30, 112(r1) # 8-byte Folded Spill62; CHECK-NEXT:    mr r30, r363; CHECK-NEXT:    bl callVoid64; CHECK-NEXT:    nop65; CHECK-NEXT:    mr r3, r3066; CHECK-NEXT:    bl callNonVoid67; CHECK-NEXT:    nop68; CHECK-NEXT:    ld r30, 112(r1) # 8-byte Folded Reload69; CHECK-NEXT:    mr r4, r370; CHECK-NEXT:    addi r1, r1, 12871; CHECK-NEXT:    ld r0, 16(r1)72; CHECK-NEXT:    mtlr r073; CHECK-NEXT:    extsw r3, r474; CHECK-NEXT:    blr75entry:76  %0 = load i32, ptr @a, align 4, !tbaa !277  %conv = sext i32 %0 to i6478  %1 = inttoptr i64 %conv to ptr79  %cmp = icmp eq ptr %1, %b80  br i1 %cmp, label %if.then, label %if.end81 82if.then:                                          ; preds = %entry83  %call = tail call signext i32 @callVoid()84  %call2 = tail call signext i32 @callNonVoid(ptr %b)85  br label %if.end86 87if.end:                                           ; preds = %if.then, %entry88  %retval.0 = phi i32 [ %call2, %if.then ], [ undef, %entry ]89  ret i32 %retval.090}91 92declare signext i32 @callVoid(...) local_unnamed_addr93 94declare signext i32 @callNonVoid(ptr) local_unnamed_addr95 96define dso_local signext i32 @test2(ptr %p1) local_unnamed_addr  {97; CHECK-PWR9-LABEL: test2:98; CHECK-PWR9:       # %bb.0: # %entry99; CHECK-PWR9-NEXT:    mflr r0100; CHECK-PWR9-NEXT:    .cfi_def_cfa_offset 48101; CHECK-PWR9-NEXT:    .cfi_offset lr, 16102; CHECK-PWR9-NEXT:    .cfi_offset r30, -16103; CHECK-PWR9-NEXT:    std r30, -16(r1) # 8-byte Folded Spill104; CHECK-PWR9-NEXT:    stdu r1, -48(r1)105; CHECK-PWR9-NEXT:    mr r30, r3106; CHECK-PWR9-NEXT:    li r3, 0107; CHECK-PWR9-NEXT:    std r0, 64(r1)108; CHECK-PWR9-NEXT:    cmpldi r30, 0109; CHECK-PWR9-NEXT:    beq cr0, .LBB1_3110; CHECK-PWR9-NEXT:  # %bb.1: # %if.end111; CHECK-PWR9-NEXT:    addis r4, r2, a@toc@ha112; CHECK-PWR9-NEXT:    lwa r4, a@toc@l(r4)113; CHECK-PWR9-NEXT:    cmpld r4, r30114; CHECK-PWR9-NEXT:    bne cr0, .LBB1_3115; CHECK-PWR9-NEXT:  # %bb.2: # %if.then2116; CHECK-PWR9-NEXT:    bl callVoid117; CHECK-PWR9-NEXT:    nop118; CHECK-PWR9-NEXT:    mr r3, r30119; CHECK-PWR9-NEXT:    bl callNonVoid120; CHECK-PWR9-NEXT:    nop121; CHECK-PWR9-NEXT:  .LBB1_3: # %return122; CHECK-PWR9-NEXT:    addi r1, r1, 48123; CHECK-PWR9-NEXT:    ld r0, 16(r1)124; CHECK-PWR9-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload125; CHECK-PWR9-NEXT:    mtlr r0126; CHECK-PWR9-NEXT:    blr127;128; CHECK-LABEL: test2:129; CHECK:       # %bb.0: # %entry130; CHECK-NEXT:    mflr r0131; CHECK-NEXT:    stdu r1, -128(r1)132; CHECK-NEXT:    std r0, 144(r1)133; CHECK-NEXT:    .cfi_def_cfa_offset 128134; CHECK-NEXT:    .cfi_offset lr, 16135; CHECK-NEXT:    .cfi_offset r30, -16136; CHECK-NEXT:    std r30, 112(r1) # 8-byte Folded Spill137; CHECK-NEXT:    mr r30, r3138; CHECK-NEXT:    li r3, 0139; CHECK-NEXT:    cmpldi r30, 0140; CHECK-NEXT:    beq cr0, .LBB1_3141; CHECK-NEXT:  # %bb.1: # %if.end142; CHECK-NEXT:    addis r4, r2, a@toc@ha143; CHECK-NEXT:    lwa r4, a@toc@l(r4)144; CHECK-NEXT:    cmpld r4, r30145; CHECK-NEXT:    bne cr0, .LBB1_3146; CHECK-NEXT:  # %bb.2: # %if.then2147; CHECK-NEXT:    bl callVoid148; CHECK-NEXT:    nop149; CHECK-NEXT:    mr r3, r30150; CHECK-NEXT:    bl callNonVoid151; CHECK-NEXT:    nop152; CHECK-NEXT:  .LBB1_3: # %return153; CHECK-NEXT:    ld r30, 112(r1) # 8-byte Folded Reload154; CHECK-NEXT:    addi r1, r1, 128155; CHECK-NEXT:    ld r0, 16(r1)156; CHECK-NEXT:    mtlr r0157; CHECK-NEXT:    blr158entry:159  %tobool = icmp eq ptr %p1, null160  br i1 %tobool, label %return, label %if.end161 162if.end:                                           ; preds = %entry163  %0 = load i32, ptr @a, align 4, !tbaa !2164  %conv = sext i32 %0 to i64165  %1 = inttoptr i64 %conv to ptr166  %cmp = icmp eq ptr %1, %p1167  br i1 %cmp, label %if.then2, label %return168 169if.then2:                                         ; preds = %if.end170  %call = tail call signext i32 @callVoid()171  %call3 = tail call signext i32 @callNonVoid(ptr nonnull %p1)172  br label %return173 174return:                                           ; preds = %if.end, %entry, %if.then2175  %retval.0 = phi i32 [ %call3, %if.then2 ], [ 0, %entry ], [ 0, %if.end ]176  ret i32 %retval.0177}178 179 180define dso_local ptr @test3(ptr nocapture %p1, i8 zeroext %p2) local_unnamed_addr  {181; CHECK-PWR9-LABEL: test3:182; CHECK-PWR9:       # %bb.0: # %entry183; CHECK-PWR9-NEXT:    mflr r0184; CHECK-PWR9-NEXT:    .cfi_def_cfa_offset 64185; CHECK-PWR9-NEXT:    .cfi_offset lr, 16186; CHECK-PWR9-NEXT:    .cfi_offset r29, -24187; CHECK-PWR9-NEXT:    .cfi_offset r30, -16188; CHECK-PWR9-NEXT:    std r29, -24(r1) # 8-byte Folded Spill189; CHECK-PWR9-NEXT:    std r30, -16(r1) # 8-byte Folded Spill190; CHECK-PWR9-NEXT:    stdu r1, -64(r1)191; CHECK-PWR9-NEXT:    std r0, 80(r1)192; CHECK-PWR9-NEXT:    ld r30, 0(r3)193; CHECK-PWR9-NEXT:    cmpldi r30, 0194; CHECK-PWR9-NEXT:    beq cr0, .LBB2_2195; CHECK-PWR9-NEXT:  # %bb.1: # %land.rhs196; CHECK-PWR9-NEXT:    mr r29, r3197; CHECK-PWR9-NEXT:    mr r3, r30198; CHECK-PWR9-NEXT:    bl bar199; CHECK-PWR9-NEXT:    nop200; CHECK-PWR9-NEXT:    std r3, 0(r29)201; CHECK-PWR9-NEXT:  .LBB2_2: # %land.end202; CHECK-PWR9-NEXT:    mr r3, r30203; CHECK-PWR9-NEXT:    addi r1, r1, 64204; CHECK-PWR9-NEXT:    ld r0, 16(r1)205; CHECK-PWR9-NEXT:    ld r30, -16(r1) # 8-byte Folded Reload206; CHECK-PWR9-NEXT:    ld r29, -24(r1) # 8-byte Folded Reload207; CHECK-PWR9-NEXT:    mtlr r0208; CHECK-PWR9-NEXT:    blr209;210; CHECK-LABEL: test3:211; CHECK:       # %bb.0: # %entry212; CHECK-NEXT:    mflr r0213; CHECK-NEXT:    stdu r1, -144(r1)214; CHECK-NEXT:    std r0, 160(r1)215; CHECK-NEXT:    .cfi_def_cfa_offset 144216; CHECK-NEXT:    .cfi_offset lr, 16217; CHECK-NEXT:    .cfi_offset r29, -24218; CHECK-NEXT:    .cfi_offset r30, -16219; CHECK-NEXT:    std r30, 128(r1) # 8-byte Folded Spill220; CHECK-NEXT:    ld r30, 0(r3)221; CHECK-NEXT:    std r29, 120(r1) # 8-byte Folded Spill222; CHECK-NEXT:    cmpldi r30, 0223; CHECK-NEXT:    beq cr0, .LBB2_2224; CHECK-NEXT:  # %bb.1: # %land.rhs225; CHECK-NEXT:    mr r29, r3226; CHECK-NEXT:    mr r3, r30227; CHECK-NEXT:    bl bar228; CHECK-NEXT:    nop229; CHECK-NEXT:    std r3, 0(r29)230; CHECK-NEXT:  .LBB2_2: # %land.end231; CHECK-NEXT:    mr r3, r30232; CHECK-NEXT:    ld r30, 128(r1) # 8-byte Folded Reload233; CHECK-NEXT:    ld r29, 120(r1) # 8-byte Folded Reload234; CHECK-NEXT:    addi r1, r1, 144235; CHECK-NEXT:    ld r0, 16(r1)236; CHECK-NEXT:    mtlr r0237; CHECK-NEXT:    blr238entry:239  %0 = load ptr, ptr %p1, align 8, !tbaa !6240  %tobool = icmp eq ptr %0, null241  br i1 %tobool, label %land.end, label %land.rhs242 243land.rhs:                                         ; preds = %entry244  %call = tail call ptr @bar(ptr nonnull %0, i8 zeroext %p2)245  store ptr %call, ptr %p1, align 8, !tbaa !6246  br label %land.end247 248land.end:                                         ; preds = %entry, %land.rhs249  ret ptr %0250}251 252declare ptr @bar(ptr, i8 zeroext) local_unnamed_addr253 254 255!llvm.module.flags = !{!0}256!llvm.ident = !{!1}257 258!0 = !{i32 1, !"wchar_size", i32 4}259!1 = !{!"clang version 10.0.0 (trunk 367381) (llvm/trunk 367388)"}260!2 = !{!3, !3, i64 0}261!3 = !{!"int", !4, i64 0}262!4 = !{!"omnipotent char", !5, i64 0}263!5 = !{!"Simple C/C++ TBAA"}264!6 = !{!7, !7, i64 0}265!7 = !{!"any pointer", !4, i64 0}266