brintos

brintos / llvm-project-archived public Read only

0
0
Text · 42.3 KiB · 8c88e07 Raw
1199 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs --mtriple powerpc64le-unknown-linux-gnu \3; RUN:   -mcpu=pwr8 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P8LE4; RUN: llc -verify-machineinstrs --mtriple powerpc64le-unknown-linux-gnu \5; RUN:   -mcpu=pwr9 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P9LE6; RUN: llc -verify-machineinstrs --mtriple powerpc64le-unknown-linux-gnu \7; RUN:   -mcpu=pwr10 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P10LE8; RUN: llc -verify-machineinstrs --mtriple powerpc64-unknown-linux-gnu \9; RUN:   -mcpu=pwr8 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P8BE10; RUN: llc -verify-machineinstrs --mtriple powerpc64-unknown-linux-gnu \11; RUN:   -mcpu=pwr9 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P9BE12; RUN: llc -verify-machineinstrs --mtriple powerpc64-unknown-linux-gnu \13; RUN:   -mcpu=pwr10 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P10BE14 15define signext i8 @caller_9(ptr nocapture readonly byval([9 x i8]) %data) #0 {16; P8LE-LABEL: caller_9:17; P8LE:       # %bb.0: # %entry18; P8LE-NEXT:    mflr r019; P8LE-NEXT:    stdu r1, -80(r1)20; P8LE-NEXT:    std r0, 96(r1)21; P8LE-NEXT:    stb r4, 56(r1)22; P8LE-NEXT:    addi r4, r1, 7123; P8LE-NEXT:    lbz r5, 56(r1)24; P8LE-NEXT:    std r3, 48(r1)25; P8LE-NEXT:    stdx r3, 0, r426; P8LE-NEXT:    mr r3, r427; P8LE-NEXT:    stb r5, 79(r1)28; P8LE-NEXT:    bl callee29; P8LE-NEXT:    nop30; P8LE-NEXT:    li r3, 031; P8LE-NEXT:    addi r1, r1, 8032; P8LE-NEXT:    ld r0, 16(r1)33; P8LE-NEXT:    mtlr r034; P8LE-NEXT:    blr35;36; P9LE-LABEL: caller_9:37; P9LE:       # %bb.0: # %entry38; P9LE-NEXT:    mflr r039; P9LE-NEXT:    stdu r1, -80(r1)40; P9LE-NEXT:    std r0, 96(r1)41; P9LE-NEXT:    stb r4, 56(r1)42; P9LE-NEXT:    addi r4, r1, 7143; P9LE-NEXT:    lbz r5, 56(r1)44; P9LE-NEXT:    std r3, 48(r1)45; P9LE-NEXT:    stdx r3, 0, r446; P9LE-NEXT:    mr r3, r447; P9LE-NEXT:    stb r5, 79(r1)48; P9LE-NEXT:    bl callee49; P9LE-NEXT:    nop50; P9LE-NEXT:    li r3, 051; P9LE-NEXT:    addi r1, r1, 8052; P9LE-NEXT:    ld r0, 16(r1)53; P9LE-NEXT:    mtlr r054; P9LE-NEXT:    blr55;56; P10LE-LABEL: caller_9:57; P10LE:       # %bb.0: # %entry58; P10LE-NEXT:    mflr r059; P10LE-NEXT:    std r0, 16(r1)60; P10LE-NEXT:    stdu r1, -80(r1)61; P10LE-NEXT:    stb r4, 56(r1)62; P10LE-NEXT:    addi r4, r1, 7163; P10LE-NEXT:    std r3, 48(r1)64; P10LE-NEXT:    lbz r5, 56(r1)65; P10LE-NEXT:    stdx r3, 0, r466; P10LE-NEXT:    mr r3, r467; P10LE-NEXT:    stb r5, 79(r1)68; P10LE-NEXT:    bl callee@notoc69; P10LE-NEXT:    li r3, 070; P10LE-NEXT:    addi r1, r1, 8071; P10LE-NEXT:    ld r0, 16(r1)72; P10LE-NEXT:    mtlr r073; P10LE-NEXT:    blr74;75; P8BE-LABEL: caller_9:76; P8BE:       # %bb.0: # %entry77; P8BE-NEXT:    mflr r078; P8BE-NEXT:    stdu r1, -144(r1)79; P8BE-NEXT:    std r0, 160(r1)80; P8BE-NEXT:    stb r4, 200(r1)81; P8BE-NEXT:    addi r4, r1, 13582; P8BE-NEXT:    lbz r5, 200(r1)83; P8BE-NEXT:    std r3, 192(r1)84; P8BE-NEXT:    stdx r3, 0, r485; P8BE-NEXT:    mr r3, r486; P8BE-NEXT:    stb r5, 143(r1)87; P8BE-NEXT:    bl callee88; P8BE-NEXT:    nop89; P8BE-NEXT:    li r3, 090; P8BE-NEXT:    addi r1, r1, 14491; P8BE-NEXT:    ld r0, 16(r1)92; P8BE-NEXT:    mtlr r093; P8BE-NEXT:    blr94;95; P9BE-LABEL: caller_9:96; P9BE:       # %bb.0: # %entry97; P9BE-NEXT:    mflr r098; P9BE-NEXT:    stdu r1, -144(r1)99; P9BE-NEXT:    std r0, 160(r1)100; P9BE-NEXT:    stb r4, 200(r1)101; P9BE-NEXT:    addi r4, r1, 135102; P9BE-NEXT:    lbz r5, 200(r1)103; P9BE-NEXT:    std r3, 192(r1)104; P9BE-NEXT:    stdx r3, 0, r4105; P9BE-NEXT:    mr r3, r4106; P9BE-NEXT:    stb r5, 143(r1)107; P9BE-NEXT:    bl callee108; P9BE-NEXT:    nop109; P9BE-NEXT:    li r3, 0110; P9BE-NEXT:    addi r1, r1, 144111; P9BE-NEXT:    ld r0, 16(r1)112; P9BE-NEXT:    mtlr r0113; P9BE-NEXT:    blr114;115; P10BE-LABEL: caller_9:116; P10BE:       # %bb.0: # %entry117; P10BE-NEXT:    mflr r0118; P10BE-NEXT:    std r0, 16(r1)119; P10BE-NEXT:    stdu r1, -144(r1)120; P10BE-NEXT:    stb r4, 200(r1)121; P10BE-NEXT:    addi r4, r1, 135122; P10BE-NEXT:    std r3, 192(r1)123; P10BE-NEXT:    lbz r5, 200(r1)124; P10BE-NEXT:    stdx r3, 0, r4125; P10BE-NEXT:    mr r3, r4126; P10BE-NEXT:    stb r5, 143(r1)127; P10BE-NEXT:    bl callee128; P10BE-NEXT:    nop129; P10BE-NEXT:    li r3, 0130; P10BE-NEXT:    addi r1, r1, 144131; P10BE-NEXT:    ld r0, 16(r1)132; P10BE-NEXT:    mtlr r0133; P10BE-NEXT:    blr134entry:135  %_param_data = alloca [9 x i8], align 1136  %.unpack0 = load i8, ptr %data, align 1137  %.elt1 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 1138  %.unpack1 = load i8, ptr %.elt1, align 1139  %.elt2 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 2140  %.unpack2 = load i8, ptr %.elt2, align 1141  %.elt3 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 3142  %.unpack3 = load i8, ptr %.elt3, align 1143  %.elt4 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 4144  %.unpack4 = load i8, ptr %.elt4, align 1145  %.elt5 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 5146  %.unpack5 = load i8, ptr %.elt5, align 1147  %.elt6 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 6148  %.unpack6 = load i8, ptr %.elt6, align 1149  %.elt7 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 7150  %.unpack7 = load i8, ptr %.elt7, align 1151  %.elt8 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 8152  %.unpack8 = load i8, ptr %.elt8, align 1153  store i8 %.unpack0, ptr %_param_data, align 1154  %.temp.1.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 1155  store i8 %.unpack1, ptr %.temp.1.gep, align 1156  %.temp.2.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 2157  store i8 %.unpack2, ptr %.temp.2.gep, align 1158  %.temp.3.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 3159  store i8 %.unpack3, ptr %.temp.3.gep, align 1160  %.temp.4.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 4161  store i8 %.unpack4, ptr %.temp.4.gep, align 1162  %.temp.5.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 5163  store i8 %.unpack5, ptr %.temp.5.gep, align 1164  %.temp.6.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 6165  store i8 %.unpack6, ptr %.temp.6.gep, align 1166  %.temp.7.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 7167  store i8 %.unpack7, ptr %.temp.7.gep, align 1168  %.temp.8.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 8169  store i8 %.unpack8, ptr %.temp.8.gep, align 1170  call void @callee(ptr nonnull %_param_data)171  ret i8 0172}173 174define signext i8 @caller_9_callee_9(ptr nocapture readonly byval([9 x i8]) %data) #0 {175; P8LE-LABEL: caller_9_callee_9:176; P8LE:       # %bb.0: # %entry177; P8LE-NEXT:    mflr r0178; P8LE-NEXT:    stdu r1, -80(r1)179; P8LE-NEXT:    std r0, 96(r1)180; P8LE-NEXT:    stb r4, 56(r1)181; P8LE-NEXT:    addi r5, r1, 71182; P8LE-NEXT:    lbz r4, 56(r1)183; P8LE-NEXT:    std r3, 48(r1)184; P8LE-NEXT:    stdx r3, 0, r5185; P8LE-NEXT:    stb r4, 79(r1)186; P8LE-NEXT:    lbz r4, 56(r1)187; P8LE-NEXT:    bl callee_9188; P8LE-NEXT:    nop189; P8LE-NEXT:    li r3, 0190; P8LE-NEXT:    addi r1, r1, 80191; P8LE-NEXT:    ld r0, 16(r1)192; P8LE-NEXT:    mtlr r0193; P8LE-NEXT:    blr194;195; P9LE-LABEL: caller_9_callee_9:196; P9LE:       # %bb.0: # %entry197; P9LE-NEXT:    mflr r0198; P9LE-NEXT:    stdu r1, -80(r1)199; P9LE-NEXT:    std r0, 96(r1)200; P9LE-NEXT:    stb r4, 56(r1)201; P9LE-NEXT:    addi r4, r1, 71202; P9LE-NEXT:    lbz r5, 56(r1)203; P9LE-NEXT:    std r3, 48(r1)204; P9LE-NEXT:    stdx r3, 0, r4205; P9LE-NEXT:    lbz r4, 56(r1)206; P9LE-NEXT:    stb r5, 79(r1)207; P9LE-NEXT:    bl callee_9208; P9LE-NEXT:    nop209; P9LE-NEXT:    li r3, 0210; P9LE-NEXT:    addi r1, r1, 80211; P9LE-NEXT:    ld r0, 16(r1)212; P9LE-NEXT:    mtlr r0213; P9LE-NEXT:    blr214;215; P10LE-LABEL: caller_9_callee_9:216; P10LE:       # %bb.0: # %entry217; P10LE-NEXT:    mflr r0218; P10LE-NEXT:    std r0, 16(r1)219; P10LE-NEXT:    stdu r1, -80(r1)220; P10LE-NEXT:    stb r4, 56(r1)221; P10LE-NEXT:    addi r4, r1, 71222; P10LE-NEXT:    std r3, 48(r1)223; P10LE-NEXT:    lbz r5, 56(r1)224; P10LE-NEXT:    stdx r3, 0, r4225; P10LE-NEXT:    lbz r4, 56(r1)226; P10LE-NEXT:    stb r5, 79(r1)227; P10LE-NEXT:    bl callee_9@notoc228; P10LE-NEXT:    li r3, 0229; P10LE-NEXT:    addi r1, r1, 80230; P10LE-NEXT:    ld r0, 16(r1)231; P10LE-NEXT:    mtlr r0232; P10LE-NEXT:    blr233;234; P8BE-LABEL: caller_9_callee_9:235; P8BE:       # %bb.0: # %entry236; P8BE-NEXT:    mflr r0237; P8BE-NEXT:    stdu r1, -144(r1)238; P8BE-NEXT:    std r0, 160(r1)239; P8BE-NEXT:    stb r4, 200(r1)240; P8BE-NEXT:    addi r5, r1, 135241; P8BE-NEXT:    lbz r4, 200(r1)242; P8BE-NEXT:    std r3, 192(r1)243; P8BE-NEXT:    stdx r3, 0, r5244; P8BE-NEXT:    stb r4, 143(r1)245; P8BE-NEXT:    lbz r4, 200(r1)246; P8BE-NEXT:    bl callee_9247; P8BE-NEXT:    nop248; P8BE-NEXT:    li r3, 0249; P8BE-NEXT:    addi r1, r1, 144250; P8BE-NEXT:    ld r0, 16(r1)251; P8BE-NEXT:    mtlr r0252; P8BE-NEXT:    blr253;254; P9BE-LABEL: caller_9_callee_9:255; P9BE:       # %bb.0: # %entry256; P9BE-NEXT:    mflr r0257; P9BE-NEXT:    stdu r1, -144(r1)258; P9BE-NEXT:    std r0, 160(r1)259; P9BE-NEXT:    stb r4, 200(r1)260; P9BE-NEXT:    addi r4, r1, 135261; P9BE-NEXT:    lbz r5, 200(r1)262; P9BE-NEXT:    std r3, 192(r1)263; P9BE-NEXT:    stdx r3, 0, r4264; P9BE-NEXT:    lbz r4, 200(r1)265; P9BE-NEXT:    stb r5, 143(r1)266; P9BE-NEXT:    bl callee_9267; P9BE-NEXT:    nop268; P9BE-NEXT:    li r3, 0269; P9BE-NEXT:    addi r1, r1, 144270; P9BE-NEXT:    ld r0, 16(r1)271; P9BE-NEXT:    mtlr r0272; P9BE-NEXT:    blr273;274; P10BE-LABEL: caller_9_callee_9:275; P10BE:       # %bb.0: # %entry276; P10BE-NEXT:    mflr r0277; P10BE-NEXT:    std r0, 16(r1)278; P10BE-NEXT:    stdu r1, -144(r1)279; P10BE-NEXT:    stb r4, 200(r1)280; P10BE-NEXT:    addi r4, r1, 135281; P10BE-NEXT:    std r3, 192(r1)282; P10BE-NEXT:    lbz r5, 200(r1)283; P10BE-NEXT:    stdx r3, 0, r4284; P10BE-NEXT:    lbz r4, 200(r1)285; P10BE-NEXT:    stb r5, 143(r1)286; P10BE-NEXT:    bl callee_9287; P10BE-NEXT:    nop288; P10BE-NEXT:    li r3, 0289; P10BE-NEXT:    addi r1, r1, 144290; P10BE-NEXT:    ld r0, 16(r1)291; P10BE-NEXT:    mtlr r0292; P10BE-NEXT:    blr293entry:294  %_param_data = alloca [9 x i8], align 1295  %.unpack0 = load i8, ptr %data, align 1296  %.elt1 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 1297  %.unpack1 = load i8, ptr %.elt1, align 1298  %.elt2 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 2299  %.unpack2 = load i8, ptr %.elt2, align 1300  %.elt3 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 3301  %.unpack3 = load i8, ptr %.elt3, align 1302  %.elt4 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 4303  %.unpack4 = load i8, ptr %.elt4, align 1304  %.elt5 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 5305  %.unpack5 = load i8, ptr %.elt5, align 1306  %.elt6 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 6307  %.unpack6 = load i8, ptr %.elt6, align 1308  %.elt7 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 7309  %.unpack7 = load i8, ptr %.elt7, align 1310  %.elt8 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 8311  %.unpack8 = load i8, ptr %.elt8, align 1312  store i8 %.unpack0, ptr %_param_data, align 1313  %.temp.1.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 1314  store i8 %.unpack1, ptr %.temp.1.gep, align 1315  %.temp.2.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 2316  store i8 %.unpack2, ptr %.temp.2.gep, align 1317  %.temp.3.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 3318  store i8 %.unpack3, ptr %.temp.3.gep, align 1319  %.temp.4.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 4320  store i8 %.unpack4, ptr %.temp.4.gep, align 1321  %.temp.5.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 5322  store i8 %.unpack5, ptr %.temp.5.gep, align 1323  %.temp.6.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 6324  store i8 %.unpack6, ptr %.temp.6.gep, align 1325  %.temp.7.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 7326  store i8 %.unpack7, ptr %.temp.7.gep, align 1327  %.temp.8.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 8328  store i8 %.unpack8, ptr %.temp.8.gep, align 1329  call void @callee_9(ptr nocapture readonly byval([9 x i8]) %data)330  ret i8 0331}332 333define signext i8 @caller_10(ptr nocapture readonly byval([10 x i8]) %data) #0 {334; P8LE-LABEL: caller_10:335; P8LE:       # %bb.0: # %entry336; P8LE-NEXT:    mflr r0337; P8LE-NEXT:    stdu r1, -80(r1)338; P8LE-NEXT:    std r0, 96(r1)339; P8LE-NEXT:    sth r4, 56(r1)340; P8LE-NEXT:    addi r4, r1, 70341; P8LE-NEXT:    lhz r5, 56(r1)342; P8LE-NEXT:    std r3, 48(r1)343; P8LE-NEXT:    stdx r3, 0, r4344; P8LE-NEXT:    mr r3, r4345; P8LE-NEXT:    sth r5, 78(r1)346; P8LE-NEXT:    bl callee347; P8LE-NEXT:    nop348; P8LE-NEXT:    li r3, 0349; P8LE-NEXT:    addi r1, r1, 80350; P8LE-NEXT:    ld r0, 16(r1)351; P8LE-NEXT:    mtlr r0352; P8LE-NEXT:    blr353;354; P9LE-LABEL: caller_10:355; P9LE:       # %bb.0: # %entry356; P9LE-NEXT:    mflr r0357; P9LE-NEXT:    stdu r1, -80(r1)358; P9LE-NEXT:    std r0, 96(r1)359; P9LE-NEXT:    sth r4, 56(r1)360; P9LE-NEXT:    addi r4, r1, 70361; P9LE-NEXT:    lhz r5, 56(r1)362; P9LE-NEXT:    std r3, 48(r1)363; P9LE-NEXT:    stdx r3, 0, r4364; P9LE-NEXT:    mr r3, r4365; P9LE-NEXT:    sth r5, 78(r1)366; P9LE-NEXT:    bl callee367; P9LE-NEXT:    nop368; P9LE-NEXT:    li r3, 0369; P9LE-NEXT:    addi r1, r1, 80370; P9LE-NEXT:    ld r0, 16(r1)371; P9LE-NEXT:    mtlr r0372; P9LE-NEXT:    blr373;374; P10LE-LABEL: caller_10:375; P10LE:       # %bb.0: # %entry376; P10LE-NEXT:    mflr r0377; P10LE-NEXT:    std r0, 16(r1)378; P10LE-NEXT:    stdu r1, -80(r1)379; P10LE-NEXT:    sth r4, 56(r1)380; P10LE-NEXT:    addi r4, r1, 70381; P10LE-NEXT:    std r3, 48(r1)382; P10LE-NEXT:    lhz r5, 56(r1)383; P10LE-NEXT:    stdx r3, 0, r4384; P10LE-NEXT:    mr r3, r4385; P10LE-NEXT:    sth r5, 78(r1)386; P10LE-NEXT:    bl callee@notoc387; P10LE-NEXT:    li r3, 0388; P10LE-NEXT:    addi r1, r1, 80389; P10LE-NEXT:    ld r0, 16(r1)390; P10LE-NEXT:    mtlr r0391; P10LE-NEXT:    blr392;393; P8BE-LABEL: caller_10:394; P8BE:       # %bb.0: # %entry395; P8BE-NEXT:    mflr r0396; P8BE-NEXT:    stdu r1, -144(r1)397; P8BE-NEXT:    std r0, 160(r1)398; P8BE-NEXT:    sth r4, 200(r1)399; P8BE-NEXT:    addi r4, r1, 134400; P8BE-NEXT:    lhz r5, 200(r1)401; P8BE-NEXT:    std r3, 192(r1)402; P8BE-NEXT:    stdx r3, 0, r4403; P8BE-NEXT:    mr r3, r4404; P8BE-NEXT:    sth r5, 142(r1)405; P8BE-NEXT:    bl callee406; P8BE-NEXT:    nop407; P8BE-NEXT:    li r3, 0408; P8BE-NEXT:    addi r1, r1, 144409; P8BE-NEXT:    ld r0, 16(r1)410; P8BE-NEXT:    mtlr r0411; P8BE-NEXT:    blr412;413; P9BE-LABEL: caller_10:414; P9BE:       # %bb.0: # %entry415; P9BE-NEXT:    mflr r0416; P9BE-NEXT:    stdu r1, -144(r1)417; P9BE-NEXT:    std r0, 160(r1)418; P9BE-NEXT:    sth r4, 200(r1)419; P9BE-NEXT:    addi r4, r1, 134420; P9BE-NEXT:    lhz r5, 200(r1)421; P9BE-NEXT:    std r3, 192(r1)422; P9BE-NEXT:    stdx r3, 0, r4423; P9BE-NEXT:    mr r3, r4424; P9BE-NEXT:    sth r5, 142(r1)425; P9BE-NEXT:    bl callee426; P9BE-NEXT:    nop427; P9BE-NEXT:    li r3, 0428; P9BE-NEXT:    addi r1, r1, 144429; P9BE-NEXT:    ld r0, 16(r1)430; P9BE-NEXT:    mtlr r0431; P9BE-NEXT:    blr432;433; P10BE-LABEL: caller_10:434; P10BE:       # %bb.0: # %entry435; P10BE-NEXT:    mflr r0436; P10BE-NEXT:    std r0, 16(r1)437; P10BE-NEXT:    stdu r1, -144(r1)438; P10BE-NEXT:    sth r4, 200(r1)439; P10BE-NEXT:    addi r4, r1, 134440; P10BE-NEXT:    std r3, 192(r1)441; P10BE-NEXT:    lhz r5, 200(r1)442; P10BE-NEXT:    stdx r3, 0, r4443; P10BE-NEXT:    mr r3, r4444; P10BE-NEXT:    sth r5, 142(r1)445; P10BE-NEXT:    bl callee446; P10BE-NEXT:    nop447; P10BE-NEXT:    li r3, 0448; P10BE-NEXT:    addi r1, r1, 144449; P10BE-NEXT:    ld r0, 16(r1)450; P10BE-NEXT:    mtlr r0451; P10BE-NEXT:    blr452entry:453  %_param_data = alloca [10 x i8], align 1454  %.unpack0 = load i8, ptr %data, align 1455  %.elt1 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 1456  %.unpack1 = load i8, ptr %.elt1, align 1457  %.elt2 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 2458  %.unpack2 = load i8, ptr %.elt2, align 1459  %.elt3 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 3460  %.unpack3 = load i8, ptr %.elt3, align 1461  %.elt4 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 4462  %.unpack4 = load i8, ptr %.elt4, align 1463  %.elt5 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 5464  %.unpack5 = load i8, ptr %.elt5, align 1465  %.elt6 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 6466  %.unpack6 = load i8, ptr %.elt6, align 1467  %.elt7 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 7468  %.unpack7 = load i8, ptr %.elt7, align 1469  %.elt8 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 8470  %.unpack8 = load i8, ptr %.elt8, align 1471  %.elt9 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 9472  %.unpack9 = load i8, ptr %.elt9, align 1473  store i8 %.unpack0, ptr %_param_data, align 1474  %.temp.1.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 1475  store i8 %.unpack1, ptr %.temp.1.gep, align 1476  %.temp.2.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 2477  store i8 %.unpack2, ptr %.temp.2.gep, align 1478  %.temp.3.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 3479  store i8 %.unpack3, ptr %.temp.3.gep, align 1480  %.temp.4.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 4481  store i8 %.unpack4, ptr %.temp.4.gep, align 1482  %.temp.5.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 5483  store i8 %.unpack5, ptr %.temp.5.gep, align 1484  %.temp.6.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 6485  store i8 %.unpack6, ptr %.temp.6.gep, align 1486  %.temp.7.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 7487  store i8 %.unpack7, ptr %.temp.7.gep, align 1488  %.temp.8.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 8489  store i8 %.unpack8, ptr %.temp.8.gep, align 1490  %.temp.9.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 9491  store i8 %.unpack9, ptr %.temp.9.gep, align 1492  call void @callee(ptr nonnull %_param_data)493  ret i8 0494}495 496define signext i8 @caller_12(ptr nocapture readonly byval([12 x i8]) %data) #0 {497; P8LE-LABEL: caller_12:498; P8LE:       # %bb.0: # %entry499; P8LE-NEXT:    mflr r0500; P8LE-NEXT:    stdu r1, -80(r1)501; P8LE-NEXT:    std r0, 96(r1)502; P8LE-NEXT:    stw r4, 56(r1)503; P8LE-NEXT:    addi r4, r1, 68504; P8LE-NEXT:    lwz r5, 56(r1)505; P8LE-NEXT:    std r3, 48(r1)506; P8LE-NEXT:    std r3, 68(r1)507; P8LE-NEXT:    mr r3, r4508; P8LE-NEXT:    stw r5, 76(r1)509; P8LE-NEXT:    bl callee510; P8LE-NEXT:    nop511; P8LE-NEXT:    li r3, 0512; P8LE-NEXT:    addi r1, r1, 80513; P8LE-NEXT:    ld r0, 16(r1)514; P8LE-NEXT:    mtlr r0515; P8LE-NEXT:    blr516;517; P9LE-LABEL: caller_12:518; P9LE:       # %bb.0: # %entry519; P9LE-NEXT:    mflr r0520; P9LE-NEXT:    stdu r1, -80(r1)521; P9LE-NEXT:    std r0, 96(r1)522; P9LE-NEXT:    stw r4, 56(r1)523; P9LE-NEXT:    addi r4, r1, 68524; P9LE-NEXT:    lwz r5, 56(r1)525; P9LE-NEXT:    std r3, 48(r1)526; P9LE-NEXT:    std r3, 68(r1)527; P9LE-NEXT:    mr r3, r4528; P9LE-NEXT:    stw r5, 76(r1)529; P9LE-NEXT:    bl callee530; P9LE-NEXT:    nop531; P9LE-NEXT:    li r3, 0532; P9LE-NEXT:    addi r1, r1, 80533; P9LE-NEXT:    ld r0, 16(r1)534; P9LE-NEXT:    mtlr r0535; P9LE-NEXT:    blr536;537; P10LE-LABEL: caller_12:538; P10LE:       # %bb.0: # %entry539; P10LE-NEXT:    mflr r0540; P10LE-NEXT:    std r0, 16(r1)541; P10LE-NEXT:    stdu r1, -80(r1)542; P10LE-NEXT:    stw r4, 56(r1)543; P10LE-NEXT:    addi r4, r1, 68544; P10LE-NEXT:    std r3, 48(r1)545; P10LE-NEXT:    lwz r5, 56(r1)546; P10LE-NEXT:    std r3, 68(r1)547; P10LE-NEXT:    mr r3, r4548; P10LE-NEXT:    stw r5, 76(r1)549; P10LE-NEXT:    bl callee@notoc550; P10LE-NEXT:    li r3, 0551; P10LE-NEXT:    addi r1, r1, 80552; P10LE-NEXT:    ld r0, 16(r1)553; P10LE-NEXT:    mtlr r0554; P10LE-NEXT:    blr555;556; P8BE-LABEL: caller_12:557; P8BE:       # %bb.0: # %entry558; P8BE-NEXT:    mflr r0559; P8BE-NEXT:    stdu r1, -144(r1)560; P8BE-NEXT:    std r0, 160(r1)561; P8BE-NEXT:    stw r4, 200(r1)562; P8BE-NEXT:    addi r4, r1, 132563; P8BE-NEXT:    lwz r5, 200(r1)564; P8BE-NEXT:    std r3, 192(r1)565; P8BE-NEXT:    std r3, 132(r1)566; P8BE-NEXT:    mr r3, r4567; P8BE-NEXT:    stw r5, 140(r1)568; P8BE-NEXT:    bl callee569; P8BE-NEXT:    nop570; P8BE-NEXT:    li r3, 0571; P8BE-NEXT:    addi r1, r1, 144572; P8BE-NEXT:    ld r0, 16(r1)573; P8BE-NEXT:    mtlr r0574; P8BE-NEXT:    blr575;576; P9BE-LABEL: caller_12:577; P9BE:       # %bb.0: # %entry578; P9BE-NEXT:    mflr r0579; P9BE-NEXT:    stdu r1, -144(r1)580; P9BE-NEXT:    std r0, 160(r1)581; P9BE-NEXT:    stw r4, 200(r1)582; P9BE-NEXT:    addi r4, r1, 132583; P9BE-NEXT:    lwz r5, 200(r1)584; P9BE-NEXT:    std r3, 192(r1)585; P9BE-NEXT:    std r3, 132(r1)586; P9BE-NEXT:    mr r3, r4587; P9BE-NEXT:    stw r5, 140(r1)588; P9BE-NEXT:    bl callee589; P9BE-NEXT:    nop590; P9BE-NEXT:    li r3, 0591; P9BE-NEXT:    addi r1, r1, 144592; P9BE-NEXT:    ld r0, 16(r1)593; P9BE-NEXT:    mtlr r0594; P9BE-NEXT:    blr595;596; P10BE-LABEL: caller_12:597; P10BE:       # %bb.0: # %entry598; P10BE-NEXT:    mflr r0599; P10BE-NEXT:    std r0, 16(r1)600; P10BE-NEXT:    stdu r1, -144(r1)601; P10BE-NEXT:    stw r4, 200(r1)602; P10BE-NEXT:    addi r4, r1, 132603; P10BE-NEXT:    std r3, 192(r1)604; P10BE-NEXT:    lwz r5, 200(r1)605; P10BE-NEXT:    std r3, 132(r1)606; P10BE-NEXT:    mr r3, r4607; P10BE-NEXT:    stw r5, 140(r1)608; P10BE-NEXT:    bl callee609; P10BE-NEXT:    nop610; P10BE-NEXT:    li r3, 0611; P10BE-NEXT:    addi r1, r1, 144612; P10BE-NEXT:    ld r0, 16(r1)613; P10BE-NEXT:    mtlr r0614; P10BE-NEXT:    blr615entry:616  %_param_data = alloca [12 x i8], align 1617  %.unpack0 = load i8, ptr %data, align 1618  %.elt1 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 1619  %.unpack1 = load i8, ptr %.elt1, align 1620  %.elt2 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 2621  %.unpack2 = load i8, ptr %.elt2, align 1622  %.elt3 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 3623  %.unpack3 = load i8, ptr %.elt3, align 1624  %.elt4 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 4625  %.unpack4 = load i8, ptr %.elt4, align 1626  %.elt5 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 5627  %.unpack5 = load i8, ptr %.elt5, align 1628  %.elt6 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 6629  %.unpack6 = load i8, ptr %.elt6, align 1630  %.elt7 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 7631  %.unpack7 = load i8, ptr %.elt7, align 1632  %.elt8 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 8633  %.unpack8 = load i8, ptr %.elt8, align 1634  %.elt9 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 9635  %.unpack9 = load i8, ptr %.elt9, align 1636  %.elt10 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 10637  %.unpack10 = load i8, ptr %.elt10, align 1638  %.elt11 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 11639  %.unpack11 = load i8, ptr %.elt11, align 1640  store i8 %.unpack0, ptr %_param_data, align 1641  %.temp.1.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 1642  store i8 %.unpack1, ptr %.temp.1.gep, align 1643  %.temp.2.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 2644  store i8 %.unpack2, ptr %.temp.2.gep, align 1645  %.temp.3.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 3646  store i8 %.unpack3, ptr %.temp.3.gep, align 1647  %.temp.4.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 4648  store i8 %.unpack4, ptr %.temp.4.gep, align 1649  %.temp.5.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 5650  store i8 %.unpack5, ptr %.temp.5.gep, align 1651  %.temp.6.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 6652  store i8 %.unpack6, ptr %.temp.6.gep, align 1653  %.temp.7.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 7654  store i8 %.unpack7, ptr %.temp.7.gep, align 1655  %.temp.8.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 8656  store i8 %.unpack8, ptr %.temp.8.gep, align 1657  %.temp.9.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 9658  store i8 %.unpack9, ptr %.temp.9.gep, align 1659  %.temp.10.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 10660  store i8 %.unpack10, ptr %.temp.10.gep, align 1661  %.temp.11.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 11662  store i8 %.unpack11, ptr %.temp.11.gep, align 1663  call void @callee(ptr nonnull %_param_data)664  ret i8 0665}666 667define signext i8 @caller_14(ptr nocapture readonly byval([14 x i8]) %data) #0 {668; P8LE-LABEL: caller_14:669; P8LE:       # %bb.0: # %entry670; P8LE-NEXT:    mflr r0671; P8LE-NEXT:    stdu r1, -80(r1)672; P8LE-NEXT:    std r0, 96(r1)673; P8LE-NEXT:    stw r4, 56(r1)674; P8LE-NEXT:    rldicl r4, r4, 32, 32675; P8LE-NEXT:    lwz r5, 56(r1)676; P8LE-NEXT:    std r3, 48(r1)677; P8LE-NEXT:    sth r4, 60(r1)678; P8LE-NEXT:    addi r4, r1, 66679; P8LE-NEXT:    stdx r3, 0, r4680; P8LE-NEXT:    mr r3, r4681; P8LE-NEXT:    stw r5, 74(r1)682; P8LE-NEXT:    bl callee683; P8LE-NEXT:    nop684; P8LE-NEXT:    li r3, 0685; P8LE-NEXT:    addi r1, r1, 80686; P8LE-NEXT:    ld r0, 16(r1)687; P8LE-NEXT:    mtlr r0688; P8LE-NEXT:    blr689;690; P9LE-LABEL: caller_14:691; P9LE:       # %bb.0: # %entry692; P9LE-NEXT:    mflr r0693; P9LE-NEXT:    stdu r1, -80(r1)694; P9LE-NEXT:    std r0, 96(r1)695; P9LE-NEXT:    stw r4, 56(r1)696; P9LE-NEXT:    lwz r5, 56(r1)697; P9LE-NEXT:    rldicl r4, r4, 32, 32698; P9LE-NEXT:    std r3, 48(r1)699; P9LE-NEXT:    sth r4, 60(r1)700; P9LE-NEXT:    addi r4, r1, 66701; P9LE-NEXT:    stdx r3, 0, r4702; P9LE-NEXT:    mr r3, r4703; P9LE-NEXT:    stw r5, 74(r1)704; P9LE-NEXT:    bl callee705; P9LE-NEXT:    nop706; P9LE-NEXT:    li r3, 0707; P9LE-NEXT:    addi r1, r1, 80708; P9LE-NEXT:    ld r0, 16(r1)709; P9LE-NEXT:    mtlr r0710; P9LE-NEXT:    blr711;712; P10LE-LABEL: caller_14:713; P10LE:       # %bb.0: # %entry714; P10LE-NEXT:    mflr r0715; P10LE-NEXT:    std r0, 16(r1)716; P10LE-NEXT:    stdu r1, -80(r1)717; P10LE-NEXT:    stw r4, 56(r1)718; P10LE-NEXT:    rldicl r4, r4, 32, 32719; P10LE-NEXT:    std r3, 48(r1)720; P10LE-NEXT:    lwz r5, 56(r1)721; P10LE-NEXT:    sth r4, 60(r1)722; P10LE-NEXT:    addi r4, r1, 66723; P10LE-NEXT:    stdx r3, 0, r4724; P10LE-NEXT:    mr r3, r4725; P10LE-NEXT:    stw r5, 74(r1)726; P10LE-NEXT:    bl callee@notoc727; P10LE-NEXT:    li r3, 0728; P10LE-NEXT:    addi r1, r1, 80729; P10LE-NEXT:    ld r0, 16(r1)730; P10LE-NEXT:    mtlr r0731; P10LE-NEXT:    blr732;733; P8BE-LABEL: caller_14:734; P8BE:       # %bb.0: # %entry735; P8BE-NEXT:    mflr r0736; P8BE-NEXT:    stdu r1, -144(r1)737; P8BE-NEXT:    rldicl r5, r4, 48, 16738; P8BE-NEXT:    std r0, 160(r1)739; P8BE-NEXT:    sth r4, 204(r1)740; P8BE-NEXT:    addi r4, r1, 130741; P8BE-NEXT:    std r3, 192(r1)742; P8BE-NEXT:    stw r5, 200(r1)743; P8BE-NEXT:    stdx r3, 0, r4744; P8BE-NEXT:    mr r3, r4745; P8BE-NEXT:    lwz r5, 200(r1)746; P8BE-NEXT:    stw r5, 138(r1)747; P8BE-NEXT:    bl callee748; P8BE-NEXT:    nop749; P8BE-NEXT:    li r3, 0750; P8BE-NEXT:    addi r1, r1, 144751; P8BE-NEXT:    ld r0, 16(r1)752; P8BE-NEXT:    mtlr r0753; P8BE-NEXT:    blr754;755; P9BE-LABEL: caller_14:756; P9BE:       # %bb.0: # %entry757; P9BE-NEXT:    mflr r0758; P9BE-NEXT:    stdu r1, -144(r1)759; P9BE-NEXT:    rldicl r5, r4, 48, 16760; P9BE-NEXT:    std r0, 160(r1)761; P9BE-NEXT:    sth r4, 204(r1)762; P9BE-NEXT:    addi r4, r1, 130763; P9BE-NEXT:    std r3, 192(r1)764; P9BE-NEXT:    stw r5, 200(r1)765; P9BE-NEXT:    stdx r3, 0, r4766; P9BE-NEXT:    mr r3, r4767; P9BE-NEXT:    lwz r5, 200(r1)768; P9BE-NEXT:    stw r5, 138(r1)769; P9BE-NEXT:    bl callee770; P9BE-NEXT:    nop771; P9BE-NEXT:    li r3, 0772; P9BE-NEXT:    addi r1, r1, 144773; P9BE-NEXT:    ld r0, 16(r1)774; P9BE-NEXT:    mtlr r0775; P9BE-NEXT:    blr776;777; P10BE-LABEL: caller_14:778; P10BE:       # %bb.0: # %entry779; P10BE-NEXT:    mflr r0780; P10BE-NEXT:    std r0, 16(r1)781; P10BE-NEXT:    stdu r1, -144(r1)782; P10BE-NEXT:    rldicl r5, r4, 48, 16783; P10BE-NEXT:    sth r4, 204(r1)784; P10BE-NEXT:    addi r4, r1, 130785; P10BE-NEXT:    std r3, 192(r1)786; P10BE-NEXT:    stw r5, 200(r1)787; P10BE-NEXT:    stdx r3, 0, r4788; P10BE-NEXT:    mr r3, r4789; P10BE-NEXT:    lwz r5, 200(r1)790; P10BE-NEXT:    stw r5, 138(r1)791; P10BE-NEXT:    bl callee792; P10BE-NEXT:    nop793; P10BE-NEXT:    li r3, 0794; P10BE-NEXT:    addi r1, r1, 144795; P10BE-NEXT:    ld r0, 16(r1)796; P10BE-NEXT:    mtlr r0797; P10BE-NEXT:    blr798entry:799  %_param_data = alloca [14 x i8], align 1800  %.unpack0 = load i8, ptr %data, align 1801  %.elt1 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 1802  %.unpack1 = load i8, ptr %.elt1, align 1803  %.elt2 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 2804  %.unpack2 = load i8, ptr %.elt2, align 1805  %.elt3 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 3806  %.unpack3 = load i8, ptr %.elt3, align 1807  %.elt4 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 4808  %.unpack4 = load i8, ptr %.elt4, align 1809  %.elt5 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 5810  %.unpack5 = load i8, ptr %.elt5, align 1811  %.elt6 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 6812  %.unpack6 = load i8, ptr %.elt6, align 1813  %.elt7 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 7814  %.unpack7 = load i8, ptr %.elt7, align 1815  %.elt8 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 8816  %.unpack8 = load i8, ptr %.elt8, align 1817  %.elt9 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 9818  %.unpack9 = load i8, ptr %.elt9, align 1819  %.elt10 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 10820  %.unpack10 = load i8, ptr %.elt10, align 1821  %.elt11 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 11822  %.unpack11 = load i8, ptr %.elt11, align 1823  store i8 %.unpack0, ptr %_param_data, align 1824  %.temp.1.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 1825  store i8 %.unpack1, ptr %.temp.1.gep, align 1826  %.temp.2.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 2827  store i8 %.unpack2, ptr %.temp.2.gep, align 1828  %.temp.3.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 3829  store i8 %.unpack3, ptr %.temp.3.gep, align 1830  %.temp.4.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 4831  store i8 %.unpack4, ptr %.temp.4.gep, align 1832  %.temp.5.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 5833  store i8 %.unpack5, ptr %.temp.5.gep, align 1834  %.temp.6.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 6835  store i8 %.unpack6, ptr %.temp.6.gep, align 1836  %.temp.7.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 7837  store i8 %.unpack7, ptr %.temp.7.gep, align 1838  %.temp.8.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 8839  store i8 %.unpack8, ptr %.temp.8.gep, align 1840  %.temp.9.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 9841  store i8 %.unpack9, ptr %.temp.9.gep, align 1842  %.temp.10.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 10843  store i8 %.unpack10, ptr %.temp.10.gep, align 1844  %.temp.11.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 11845  store i8 %.unpack11, ptr %.temp.11.gep, align 1846  call void @callee(ptr nonnull %_param_data)847  ret i8 0848}849 850define signext i8 @caller_16(ptr nocapture readonly byval([16 x i8]) %data) #0 {851; P8LE-LABEL: caller_16:852; P8LE:       # %bb.0: # %entry853; P8LE-NEXT:    mflr r0854; P8LE-NEXT:    stdu r1, -80(r1)855; P8LE-NEXT:    addi r5, r1, 64856; P8LE-NEXT:    std r0, 96(r1)857; P8LE-NEXT:    std r3, 48(r1)858; P8LE-NEXT:    std r4, 56(r1)859; P8LE-NEXT:    stw r4, 72(r1)860; P8LE-NEXT:    std r3, 64(r1)861; P8LE-NEXT:    mr r3, r5862; P8LE-NEXT:    bl callee863; P8LE-NEXT:    nop864; P8LE-NEXT:    li r3, 0865; P8LE-NEXT:    addi r1, r1, 80866; P8LE-NEXT:    ld r0, 16(r1)867; P8LE-NEXT:    mtlr r0868; P8LE-NEXT:    blr869;870; P9LE-LABEL: caller_16:871; P9LE:       # %bb.0: # %entry872; P9LE-NEXT:    mflr r0873; P9LE-NEXT:    stdu r1, -80(r1)874; P9LE-NEXT:    addi r5, r1, 64875; P9LE-NEXT:    std r0, 96(r1)876; P9LE-NEXT:    std r3, 48(r1)877; P9LE-NEXT:    std r4, 56(r1)878; P9LE-NEXT:    stw r4, 72(r1)879; P9LE-NEXT:    std r3, 64(r1)880; P9LE-NEXT:    mr r3, r5881; P9LE-NEXT:    bl callee882; P9LE-NEXT:    nop883; P9LE-NEXT:    li r3, 0884; P9LE-NEXT:    addi r1, r1, 80885; P9LE-NEXT:    ld r0, 16(r1)886; P9LE-NEXT:    mtlr r0887; P9LE-NEXT:    blr888;889; P10LE-LABEL: caller_16:890; P10LE:       # %bb.0: # %entry891; P10LE-NEXT:    mflr r0892; P10LE-NEXT:    std r0, 16(r1)893; P10LE-NEXT:    stdu r1, -80(r1)894; P10LE-NEXT:    addi r5, r1, 64895; P10LE-NEXT:    std r3, 48(r1)896; P10LE-NEXT:    std r4, 56(r1)897; P10LE-NEXT:    stw r4, 72(r1)898; P10LE-NEXT:    std r3, 64(r1)899; P10LE-NEXT:    mr r3, r5900; P10LE-NEXT:    bl callee@notoc901; P10LE-NEXT:    li r3, 0902; P10LE-NEXT:    addi r1, r1, 80903; P10LE-NEXT:    ld r0, 16(r1)904; P10LE-NEXT:    mtlr r0905; P10LE-NEXT:    blr906;907; P8BE-LABEL: caller_16:908; P8BE:       # %bb.0: # %entry909; P8BE-NEXT:    mflr r0910; P8BE-NEXT:    stdu r1, -144(r1)911; P8BE-NEXT:    std r0, 160(r1)912; P8BE-NEXT:    std r4, 200(r1)913; P8BE-NEXT:    rldicl r5, r4, 32, 32914; P8BE-NEXT:    addi r4, r1, 128915; P8BE-NEXT:    std r3, 192(r1)916; P8BE-NEXT:    std r3, 128(r1)917; P8BE-NEXT:    mr r3, r4918; P8BE-NEXT:    stw r5, 136(r1)919; P8BE-NEXT:    bl callee920; P8BE-NEXT:    nop921; P8BE-NEXT:    li r3, 0922; P8BE-NEXT:    addi r1, r1, 144923; P8BE-NEXT:    ld r0, 16(r1)924; P8BE-NEXT:    mtlr r0925; P8BE-NEXT:    blr926;927; P9BE-LABEL: caller_16:928; P9BE:       # %bb.0: # %entry929; P9BE-NEXT:    mflr r0930; P9BE-NEXT:    stdu r1, -144(r1)931; P9BE-NEXT:    std r0, 160(r1)932; P9BE-NEXT:    std r4, 200(r1)933; P9BE-NEXT:    rldicl r5, r4, 32, 32934; P9BE-NEXT:    addi r4, r1, 128935; P9BE-NEXT:    std r3, 192(r1)936; P9BE-NEXT:    std r3, 128(r1)937; P9BE-NEXT:    mr r3, r4938; P9BE-NEXT:    stw r5, 136(r1)939; P9BE-NEXT:    bl callee940; P9BE-NEXT:    nop941; P9BE-NEXT:    li r3, 0942; P9BE-NEXT:    addi r1, r1, 144943; P9BE-NEXT:    ld r0, 16(r1)944; P9BE-NEXT:    mtlr r0945; P9BE-NEXT:    blr946;947; P10BE-LABEL: caller_16:948; P10BE:       # %bb.0: # %entry949; P10BE-NEXT:    mflr r0950; P10BE-NEXT:    std r0, 16(r1)951; P10BE-NEXT:    stdu r1, -144(r1)952; P10BE-NEXT:    std r3, 192(r1)953; P10BE-NEXT:    std r4, 200(r1)954; P10BE-NEXT:    rldicl r5, r4, 32, 32955; P10BE-NEXT:    addi r4, r1, 128956; P10BE-NEXT:    std r3, 128(r1)957; P10BE-NEXT:    mr r3, r4958; P10BE-NEXT:    stw r5, 136(r1)959; P10BE-NEXT:    bl callee960; P10BE-NEXT:    nop961; P10BE-NEXT:    li r3, 0962; P10BE-NEXT:    addi r1, r1, 144963; P10BE-NEXT:    ld r0, 16(r1)964; P10BE-NEXT:    mtlr r0965; P10BE-NEXT:    blr966entry:967  %_param_data = alloca [16 x i8], align 1968  %.unpack0 = load i8, ptr %data, align 1969  %.elt1 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 1970  %.unpack1 = load i8, ptr %.elt1, align 1971  %.elt2 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 2972  %.unpack2 = load i8, ptr %.elt2, align 1973  %.elt3 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 3974  %.unpack3 = load i8, ptr %.elt3, align 1975  %.elt4 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 4976  %.unpack4 = load i8, ptr %.elt4, align 1977  %.elt5 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 5978  %.unpack5 = load i8, ptr %.elt5, align 1979  %.elt6 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 6980  %.unpack6 = load i8, ptr %.elt6, align 1981  %.elt7 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 7982  %.unpack7 = load i8, ptr %.elt7, align 1983  %.elt8 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 8984  %.unpack8 = load i8, ptr %.elt8, align 1985  %.elt9 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 9986  %.unpack9 = load i8, ptr %.elt9, align 1987  %.elt10 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 10988  %.unpack10 = load i8, ptr %.elt10, align 1989  %.elt11 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 11990  %.unpack11 = load i8, ptr %.elt11, align 1991  store i8 %.unpack0, ptr %_param_data, align 1992  %.temp.1.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 1993  store i8 %.unpack1, ptr %.temp.1.gep, align 1994  %.temp.2.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 2995  store i8 %.unpack2, ptr %.temp.2.gep, align 1996  %.temp.3.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 3997  store i8 %.unpack3, ptr %.temp.3.gep, align 1998  %.temp.4.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 4999  store i8 %.unpack4, ptr %.temp.4.gep, align 11000  %.temp.5.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 51001  store i8 %.unpack5, ptr %.temp.5.gep, align 11002  %.temp.6.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 61003  store i8 %.unpack6, ptr %.temp.6.gep, align 11004  %.temp.7.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 71005  store i8 %.unpack7, ptr %.temp.7.gep, align 11006  %.temp.8.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 81007  store i8 %.unpack8, ptr %.temp.8.gep, align 11008  %.temp.9.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 91009  store i8 %.unpack9, ptr %.temp.9.gep, align 11010  %.temp.10.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 101011  store i8 %.unpack10, ptr %.temp.10.gep, align 11012  %.temp.11.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 111013  store i8 %.unpack11, ptr %.temp.11.gep, align 11014  call void @callee(ptr nonnull %_param_data)1015  ret i8 01016}1017 1018define signext i8 @caller_18(ptr nocapture readonly byval([18 x i8]) %data) #0 {1019; P8LE-LABEL: caller_18:1020; P8LE:       # %bb.0: # %entry1021; P8LE-NEXT:    mflr r01022; P8LE-NEXT:    stdu r1, -96(r1)1023; P8LE-NEXT:    std r0, 112(r1)1024; P8LE-NEXT:    sth r5, 64(r1)1025; P8LE-NEXT:    addi r5, r1, 781026; P8LE-NEXT:    std r3, 48(r1)1027; P8LE-NEXT:    std r4, 56(r1)1028; P8LE-NEXT:    stw r4, 86(r1)1029; P8LE-NEXT:    stdx r3, 0, r51030; P8LE-NEXT:    mr r3, r51031; P8LE-NEXT:    bl callee1032; P8LE-NEXT:    nop1033; P8LE-NEXT:    li r3, 01034; P8LE-NEXT:    addi r1, r1, 961035; P8LE-NEXT:    ld r0, 16(r1)1036; P8LE-NEXT:    mtlr r01037; P8LE-NEXT:    blr1038;1039; P9LE-LABEL: caller_18:1040; P9LE:       # %bb.0: # %entry1041; P9LE-NEXT:    mflr r01042; P9LE-NEXT:    stdu r1, -96(r1)1043; P9LE-NEXT:    std r0, 112(r1)1044; P9LE-NEXT:    sth r5, 64(r1)1045; P9LE-NEXT:    addi r5, r1, 781046; P9LE-NEXT:    std r3, 48(r1)1047; P9LE-NEXT:    std r4, 56(r1)1048; P9LE-NEXT:    stw r4, 86(r1)1049; P9LE-NEXT:    stdx r3, 0, r51050; P9LE-NEXT:    mr r3, r51051; P9LE-NEXT:    bl callee1052; P9LE-NEXT:    nop1053; P9LE-NEXT:    li r3, 01054; P9LE-NEXT:    addi r1, r1, 961055; P9LE-NEXT:    ld r0, 16(r1)1056; P9LE-NEXT:    mtlr r01057; P9LE-NEXT:    blr1058;1059; P10LE-LABEL: caller_18:1060; P10LE:       # %bb.0: # %entry1061; P10LE-NEXT:    mflr r01062; P10LE-NEXT:    std r0, 16(r1)1063; P10LE-NEXT:    stdu r1, -96(r1)1064; P10LE-NEXT:    sth r5, 64(r1)1065; P10LE-NEXT:    addi r5, r1, 781066; P10LE-NEXT:    std r3, 48(r1)1067; P10LE-NEXT:    std r4, 56(r1)1068; P10LE-NEXT:    stw r4, 86(r1)1069; P10LE-NEXT:    stdx r3, 0, r51070; P10LE-NEXT:    mr r3, r51071; P10LE-NEXT:    bl callee@notoc1072; P10LE-NEXT:    li r3, 01073; P10LE-NEXT:    addi r1, r1, 961074; P10LE-NEXT:    ld r0, 16(r1)1075; P10LE-NEXT:    mtlr r01076; P10LE-NEXT:    blr1077;1078; P8BE-LABEL: caller_18:1079; P8BE:       # %bb.0: # %entry1080; P8BE-NEXT:    mflr r01081; P8BE-NEXT:    stdu r1, -144(r1)1082; P8BE-NEXT:    std r0, 160(r1)1083; P8BE-NEXT:    std r4, 200(r1)1084; P8BE-NEXT:    sth r5, 208(r1)1085; P8BE-NEXT:    rldicl r5, r4, 32, 321086; P8BE-NEXT:    addi r4, r1, 1261087; P8BE-NEXT:    std r3, 192(r1)1088; P8BE-NEXT:    stdx r3, 0, r41089; P8BE-NEXT:    mr r3, r41090; P8BE-NEXT:    stw r5, 134(r1)1091; P8BE-NEXT:    bl callee1092; P8BE-NEXT:    nop1093; P8BE-NEXT:    li r3, 01094; P8BE-NEXT:    addi r1, r1, 1441095; P8BE-NEXT:    ld r0, 16(r1)1096; P8BE-NEXT:    mtlr r01097; P8BE-NEXT:    blr1098;1099; P9BE-LABEL: caller_18:1100; P9BE:       # %bb.0: # %entry1101; P9BE-NEXT:    mflr r01102; P9BE-NEXT:    stdu r1, -144(r1)1103; P9BE-NEXT:    std r0, 160(r1)1104; P9BE-NEXT:    std r4, 200(r1)1105; P9BE-NEXT:    sth r5, 208(r1)1106; P9BE-NEXT:    rldicl r5, r4, 32, 321107; P9BE-NEXT:    addi r4, r1, 1261108; P9BE-NEXT:    std r3, 192(r1)1109; P9BE-NEXT:    stdx r3, 0, r41110; P9BE-NEXT:    mr r3, r41111; P9BE-NEXT:    stw r5, 134(r1)1112; P9BE-NEXT:    bl callee1113; P9BE-NEXT:    nop1114; P9BE-NEXT:    li r3, 01115; P9BE-NEXT:    addi r1, r1, 1441116; P9BE-NEXT:    ld r0, 16(r1)1117; P9BE-NEXT:    mtlr r01118; P9BE-NEXT:    blr1119;1120; P10BE-LABEL: caller_18:1121; P10BE:       # %bb.0: # %entry1122; P10BE-NEXT:    mflr r01123; P10BE-NEXT:    std r0, 16(r1)1124; P10BE-NEXT:    stdu r1, -144(r1)1125; P10BE-NEXT:    std r3, 192(r1)1126; P10BE-NEXT:    std r4, 200(r1)1127; P10BE-NEXT:    sth r5, 208(r1)1128; P10BE-NEXT:    rldicl r5, r4, 32, 321129; P10BE-NEXT:    addi r4, r1, 1261130; P10BE-NEXT:    stdx r3, 0, r41131; P10BE-NEXT:    mr r3, r41132; P10BE-NEXT:    stw r5, 134(r1)1133; P10BE-NEXT:    bl callee1134; P10BE-NEXT:    nop1135; P10BE-NEXT:    li r3, 01136; P10BE-NEXT:    addi r1, r1, 1441137; P10BE-NEXT:    ld r0, 16(r1)1138; P10BE-NEXT:    mtlr r01139; P10BE-NEXT:    blr1140entry:1141  %_param_data = alloca [18 x i8], align 11142  %.unpack0 = load i8, ptr %data, align 11143  %.elt1 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 11144  %.unpack1 = load i8, ptr %.elt1, align 11145  %.elt2 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 21146  %.unpack2 = load i8, ptr %.elt2, align 11147  %.elt3 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 31148  %.unpack3 = load i8, ptr %.elt3, align 11149  %.elt4 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 41150  %.unpack4 = load i8, ptr %.elt4, align 11151  %.elt5 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 51152  %.unpack5 = load i8, ptr %.elt5, align 11153  %.elt6 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 61154  %.unpack6 = load i8, ptr %.elt6, align 11155  %.elt7 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 71156  %.unpack7 = load i8, ptr %.elt7, align 11157  %.elt8 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 81158  %.unpack8 = load i8, ptr %.elt8, align 11159  %.elt9 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 91160  %.unpack9 = load i8, ptr %.elt9, align 11161  %.elt10 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 101162  %.unpack10 = load i8, ptr %.elt10, align 11163  %.elt11 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 111164  %.unpack11 = load i8, ptr %.elt11, align 11165  store i8 %.unpack0, ptr %_param_data, align 11166  %.temp.1.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 11167  store i8 %.unpack1, ptr %.temp.1.gep, align 11168  %.temp.2.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 21169  store i8 %.unpack2, ptr %.temp.2.gep, align 11170  %.temp.3.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 31171  store i8 %.unpack3, ptr %.temp.3.gep, align 11172  %.temp.4.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 41173  store i8 %.unpack4, ptr %.temp.4.gep, align 11174  %.temp.5.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 51175  store i8 %.unpack5, ptr %.temp.5.gep, align 11176  %.temp.6.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 61177  store i8 %.unpack6, ptr %.temp.6.gep, align 11178  %.temp.7.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 71179  store i8 %.unpack7, ptr %.temp.7.gep, align 11180  %.temp.8.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 81181  store i8 %.unpack8, ptr %.temp.8.gep, align 11182  %.temp.9.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 91183  store i8 %.unpack9, ptr %.temp.9.gep, align 11184  %.temp.10.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 101185  store i8 %.unpack10, ptr %.temp.10.gep, align 11186  %.temp.11.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 111187  store i8 %.unpack11, ptr %.temp.11.gep, align 11188  call void @callee(ptr nonnull %_param_data)1189  ret i8 01190}1191 1192 1193 1194declare void @callee(ptr) local_unnamed_addr #01195declare void @callee_9(ptr nocapture readonly byval([9 x i8]) %data) local_unnamed_addr #01196 1197attributes #0 = { nounwind }1198 1199