brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.3 KiB · 60eb086 Raw
243 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=powerpc-ibm-aix-xcoff -verify-machineinstrs < %s -mcpu=pwr7 | FileCheck %s --check-prefix=AIX323; RUN: llc -mtriple=powerpc64-ibm-aix-xcoff -verify-machineinstrs < %s -mcpu=pwr7 | FileCheck %s --check-prefix=AIX644; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -verify-machineinstrs < %s -mcpu=pwr7 | FileCheck %s --check-prefix=LE5 6define ptr @main() #0 {7; AIX32-LABEL: main:8; AIX32:       # %bb.0: # %entry9; AIX32-NEXT:    stwu 1, -32(1)10; AIX32-NEXT:    mr 3, 111; AIX32-NEXT:    addi 1, 1, 3212; AIX32-NEXT:    blr13;14; AIX64-LABEL: main:15; AIX64:       # %bb.0: # %entry16; AIX64-NEXT:    stdu 1, -48(1)17; AIX64-NEXT:    mr 3, 118; AIX64-NEXT:    addi 1, 1, 4819; AIX64-NEXT:    blr20;21; LE-LABEL: main:22; LE:       # %bb.0: # %entry23; LE-NEXT:    stdu 1, -32(1)24; LE-NEXT:    mr 3, 125; LE-NEXT:    addi 1, 1, 3226; LE-NEXT:    blr27entry:28  %0 = call ptr @llvm.frameaddress(i32 0)29  ret ptr %030}31 32define ptr @foo_naked() #3 { ; naked33; AIX32-LABEL: foo_naked:34; AIX32:       # %bb.0: # %entry35; AIX32-NEXT:    lwz 3, 0(1)36; AIX32-NEXT:    blr37;38; AIX64-LABEL: foo_naked:39; AIX64:       # %bb.0: # %entry40; AIX64-NEXT:    ld 3, 0(1)41; AIX64-NEXT:    blr42;43; LE-LABEL: foo_naked:44; LE:       # %bb.0: # %entry45; LE-NEXT:    ld 3, 0(1)46; LE-NEXT:    blr47entry:48  %0 = call ptr @llvm.frameaddress(i32 1)49  ret ptr %050}51 52define ptr @foo1() #0 {53; AIX32-LABEL: foo1:54; AIX32:       # %bb.0: # %entry55; AIX32-NEXT:    stwu 1, -32(1)56; AIX32-NEXT:    lwz 3, 0(1)57; AIX32-NEXT:    addi 1, 1, 3258; AIX32-NEXT:    blr59;60; AIX64-LABEL: foo1:61; AIX64:       # %bb.0: # %entry62; AIX64-NEXT:    stdu 1, -48(1)63; AIX64-NEXT:    ld 3, 0(1)64; AIX64-NEXT:    addi 1, 1, 4865; AIX64-NEXT:    blr66;67; LE-LABEL: foo1:68; LE:       # %bb.0: # %entry69; LE-NEXT:    stdu 1, -32(1)70; LE-NEXT:    ld 3, 0(1)71; LE-NEXT:    addi 1, 1, 3272; LE-NEXT:    blr73entry:74  %0 = call ptr @llvm.frameaddress(i32 1)75  ret ptr %076}77 78define ptr @foo2() #0 {79; AIX32-LABEL: foo2:80; AIX32:       # %bb.0: # %entry81; AIX32-NEXT:    stwu 1, -32(1)82; AIX32-NEXT:    lwz 3, 0(1)83; AIX32-NEXT:    lwz 3, 0(3)84; AIX32-NEXT:    addi 1, 1, 3285; AIX32-NEXT:    blr86;87; AIX64-LABEL: foo2:88; AIX64:       # %bb.0: # %entry89; AIX64-NEXT:    stdu 1, -48(1)90; AIX64-NEXT:    ld 3, 0(1)91; AIX64-NEXT:    ld 3, 0(3)92; AIX64-NEXT:    addi 1, 1, 4893; AIX64-NEXT:    blr94;95; LE-LABEL: foo2:96; LE:       # %bb.0: # %entry97; LE-NEXT:    stdu 1, -32(1)98; LE-NEXT:    ld 3, 0(1)99; LE-NEXT:    ld 3, 0(3)100; LE-NEXT:    addi 1, 1, 32101; LE-NEXT:    blr102entry:103  %0 = call ptr @llvm.frameaddress(i32 2)104  ret ptr %0105}106 107define ptr @bar0() #0 {108; AIX32-LABEL: bar0:109; AIX32:       # %bb.0: # %entry110; AIX32-NEXT:    mflr 0111; AIX32-NEXT:    stw 31, -4(1)112; AIX32-NEXT:    stw 0, 8(1)113; AIX32-NEXT:    lis 0, -2114; AIX32-NEXT:    ori 0, 0, 31008115; AIX32-NEXT:    stwux 1, 1, 0116; AIX32-NEXT:    mr 31, 1117; AIX32-NEXT:    addi 3, 31, 60118; AIX32-NEXT:    bl .use[PR]119; AIX32-NEXT:    nop120; AIX32-NEXT:    mr 3, 31121; AIX32-NEXT:    lwz 1, 0(1)122; AIX32-NEXT:    lwz 0, 8(1)123; AIX32-NEXT:    lwz 31, -4(1)124; AIX32-NEXT:    mtlr 0125; AIX32-NEXT:    blr126;127; AIX64-LABEL: bar0:128; AIX64:       # %bb.0: # %entry129; AIX64-NEXT:    mflr 0130; AIX64-NEXT:    std 31, -8(1)131; AIX64-NEXT:    std 0, 16(1)132; AIX64-NEXT:    lis 0, -2133; AIX64-NEXT:    ori 0, 0, 30944134; AIX64-NEXT:    stdux 1, 1, 0135; AIX64-NEXT:    mr 31, 1136; AIX64-NEXT:    addi 3, 31, 120137; AIX64-NEXT:    bl .use[PR]138; AIX64-NEXT:    nop139; AIX64-NEXT:    mr 3, 31140; AIX64-NEXT:    ld 1, 0(1)141; AIX64-NEXT:    ld 0, 16(1)142; AIX64-NEXT:    ld 31, -8(1)143; AIX64-NEXT:    mtlr 0144; AIX64-NEXT:    blr145;146; LE-LABEL: bar0:147; LE:       # %bb.0: # %entry148; LE-NEXT:    mflr 0149; LE-NEXT:    std 31, -8(1)150; LE-NEXT:    std 0, 16(1)151; LE-NEXT:    lis 0, -2152; LE-NEXT:    ori 0, 0, 31024153; LE-NEXT:    stdux 1, 1, 0154; LE-NEXT:    mr 31, 1155; LE-NEXT:    addi 3, 31, 40156; LE-NEXT:    bl use157; LE-NEXT:    nop158; LE-NEXT:    mr 3, 31159; LE-NEXT:    ld 1, 0(1)160; LE-NEXT:    ld 0, 16(1)161; LE-NEXT:    ld 31, -8(1)162; LE-NEXT:    mtlr 0163; LE-NEXT:    blr164entry:165  %x = alloca [100000 x i8]                       ; <ptr> [#uses=1]166  call void @use(ptr %x) nounwind167  %0 = call ptr @llvm.frameaddress(i32 0)168  ret ptr %0169}170 171define ptr @bar1() #0 {172; AIX32-LABEL: bar1:173; AIX32:       # %bb.0: # %entry174; AIX32-NEXT:    mflr 0175; AIX32-NEXT:    stw 31, -4(1)176; AIX32-NEXT:    stw 0, 8(1)177; AIX32-NEXT:    lis 0, -2178; AIX32-NEXT:    ori 0, 0, 31008179; AIX32-NEXT:    stwux 1, 1, 0180; AIX32-NEXT:    mr 31, 1181; AIX32-NEXT:    addi 3, 31, 60182; AIX32-NEXT:    bl .use[PR]183; AIX32-NEXT:    nop184; AIX32-NEXT:    lwz 3, 0(31)185; AIX32-NEXT:    lwz 1, 0(1)186; AIX32-NEXT:    lwz 0, 8(1)187; AIX32-NEXT:    lwz 31, -4(1)188; AIX32-NEXT:    mtlr 0189; AIX32-NEXT:    blr190;191; AIX64-LABEL: bar1:192; AIX64:       # %bb.0: # %entry193; AIX64-NEXT:    mflr 0194; AIX64-NEXT:    std 31, -8(1)195; AIX64-NEXT:    std 0, 16(1)196; AIX64-NEXT:    lis 0, -2197; AIX64-NEXT:    ori 0, 0, 30944198; AIX64-NEXT:    stdux 1, 1, 0199; AIX64-NEXT:    mr 31, 1200; AIX64-NEXT:    addi 3, 31, 120201; AIX64-NEXT:    bl .use[PR]202; AIX64-NEXT:    nop203; AIX64-NEXT:    ld 3, 0(31)204; AIX64-NEXT:    ld 1, 0(1)205; AIX64-NEXT:    ld 0, 16(1)206; AIX64-NEXT:    ld 31, -8(1)207; AIX64-NEXT:    mtlr 0208; AIX64-NEXT:    blr209;210; LE-LABEL: bar1:211; LE:       # %bb.0: # %entry212; LE-NEXT:    mflr 0213; LE-NEXT:    std 31, -8(1)214; LE-NEXT:    std 0, 16(1)215; LE-NEXT:    lis 0, -2216; LE-NEXT:    ori 0, 0, 31024217; LE-NEXT:    stdux 1, 1, 0218; LE-NEXT:    mr 31, 1219; LE-NEXT:    addi 3, 31, 40220; LE-NEXT:    bl use221; LE-NEXT:    nop222; LE-NEXT:    ld 3, 0(31)223; LE-NEXT:    ld 1, 0(1)224; LE-NEXT:    ld 0, 16(1)225; LE-NEXT:    ld 31, -8(1)226; LE-NEXT:    mtlr 0227; LE-NEXT:    blr228entry:229  %x = alloca [100000 x i8]                       ; <ptr> [#uses=1]230  call void @use(ptr %x) nounwind231  %0 = call ptr @llvm.frameaddress(i32 1)232  ret ptr %0233}234 235declare void @use(ptr)236 237declare ptr @llvm.frameaddress(i32) #2238 239attributes #0 = { nounwind "less-precise-fpmad"="false" "frame-pointer"="non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "use-soft-float"="false" }240attributes #1 = { noreturn nounwind }241attributes #2 = { nounwind readnone }242attributes #3 = { nounwind naked "less-precise-fpmad"="false" "frame-pointer"="non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "use-soft-float"="false" }243