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