1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -verify-machineinstrs --mtriple powerpc64le-unknown-linux-gnu \ 3; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P8LE 4; RUN: llc -verify-machineinstrs --mtriple powerpc64le-unknown-linux-gnu \ 5; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P9LE 6; RUN: llc -verify-machineinstrs --mtriple powerpc64le-unknown-linux-gnu \ 7; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P10LE 8; RUN: llc -verify-machineinstrs --mtriple powerpc64-unknown-linux-gnu \ 9; RUN: -mcpu=pwr8 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P8BE 10; RUN: llc -verify-machineinstrs --mtriple powerpc64-unknown-linux-gnu \ 11; RUN: -mcpu=pwr9 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P9BE 12; RUN: llc -verify-machineinstrs --mtriple powerpc64-unknown-linux-gnu \ 13; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names < %s | FileCheck %s --check-prefix=P10BE 14 15define signext i8 @caller_9(ptr nocapture readonly byval([9 x i8]) %data) #0 { 16; P8LE-LABEL: caller_9: 17; P8LE: # %bb.0: # %entry 18; P8LE-NEXT: mflr r0 19; 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, 71 23; P8LE-NEXT: lbz r5, 56(r1) 24; P8LE-NEXT: std r3, 48(r1) 25; P8LE-NEXT: stdx r3, 0, r4 26; P8LE-NEXT: mr r3, r4 27; P8LE-NEXT: stb r5, 79(r1) 28; P8LE-NEXT: bl callee 29; P8LE-NEXT: nop 30; P8LE-NEXT: li r3, 0 31; P8LE-NEXT: addi r1, r1, 80 32; P8LE-NEXT: ld r0, 16(r1) 33; P8LE-NEXT: mtlr r0 34; P8LE-NEXT: blr 35; 36; P9LE-LABEL: caller_9: 37; P9LE: # %bb.0: # %entry 38; P9LE-NEXT: mflr r0 39; 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, 71 43; P9LE-NEXT: lbz r5, 56(r1) 44; P9LE-NEXT: std r3, 48(r1) 45; P9LE-NEXT: stdx r3, 0, r4 46; P9LE-NEXT: mr r3, r4 47; P9LE-NEXT: stb r5, 79(r1) 48; P9LE-NEXT: bl callee 49; P9LE-NEXT: nop 50; P9LE-NEXT: li r3, 0 51; P9LE-NEXT: addi r1, r1, 80 52; P9LE-NEXT: ld r0, 16(r1) 53; P9LE-NEXT: mtlr r0 54; P9LE-NEXT: blr 55; 56; P10LE-LABEL: caller_9: 57; P10LE: # %bb.0: # %entry 58; P10LE-NEXT: mflr r0 59; 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, 71 63; P10LE-NEXT: std r3, 48(r1) 64; P10LE-NEXT: lbz r5, 56(r1) 65; P10LE-NEXT: stdx r3, 0, r4 66; P10LE-NEXT: mr r3, r4 67; P10LE-NEXT: stb r5, 79(r1) 68; P10LE-NEXT: bl callee@notoc 69; P10LE-NEXT: li r3, 0 70; P10LE-NEXT: addi r1, r1, 80 71; P10LE-NEXT: ld r0, 16(r1) 72; P10LE-NEXT: mtlr r0 73; P10LE-NEXT: blr 74; 75; P8BE-LABEL: caller_9: 76; P8BE: # %bb.0: # %entry 77; P8BE-NEXT: mflr r0 78; 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, 135 82; P8BE-NEXT: lbz r5, 200(r1) 83; P8BE-NEXT: std r3, 192(r1) 84; P8BE-NEXT: stdx r3, 0, r4 85; P8BE-NEXT: mr r3, r4 86; P8BE-NEXT: stb r5, 143(r1) 87; P8BE-NEXT: bl callee 88; P8BE-NEXT: nop 89; P8BE-NEXT: li r3, 0 90; P8BE-NEXT: addi r1, r1, 144 91; P8BE-NEXT: ld r0, 16(r1) 92; P8BE-NEXT: mtlr r0 93; P8BE-NEXT: blr 94; 95; P9BE-LABEL: caller_9: 96; P9BE: # %bb.0: # %entry 97; P9BE-NEXT: mflr r0 98; 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, 135 102; P9BE-NEXT: lbz r5, 200(r1) 103; P9BE-NEXT: std r3, 192(r1) 104; P9BE-NEXT: stdx r3, 0, r4 105; P9BE-NEXT: mr r3, r4 106; P9BE-NEXT: stb r5, 143(r1) 107; P9BE-NEXT: bl callee 108; P9BE-NEXT: nop 109; P9BE-NEXT: li r3, 0 110; P9BE-NEXT: addi r1, r1, 144 111; P9BE-NEXT: ld r0, 16(r1) 112; P9BE-NEXT: mtlr r0 113; P9BE-NEXT: blr 114; 115; P10BE-LABEL: caller_9: 116; P10BE: # %bb.0: # %entry 117; P10BE-NEXT: mflr r0 118; 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, 135 122; P10BE-NEXT: std r3, 192(r1) 123; P10BE-NEXT: lbz r5, 200(r1) 124; P10BE-NEXT: stdx r3, 0, r4 125; P10BE-NEXT: mr r3, r4 126; P10BE-NEXT: stb r5, 143(r1) 127; P10BE-NEXT: bl callee 128; P10BE-NEXT: nop 129; P10BE-NEXT: li r3, 0 130; P10BE-NEXT: addi r1, r1, 144 131; P10BE-NEXT: ld r0, 16(r1) 132; P10BE-NEXT: mtlr r0 133; P10BE-NEXT: blr 134entry: 135 %_param_data = alloca [9 x i8], align 1 136 %.unpack0 = load i8, ptr %data, align 1 137 %.elt1 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 1 138 %.unpack1 = load i8, ptr %.elt1, align 1 139 %.elt2 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 2 140 %.unpack2 = load i8, ptr %.elt2, align 1 141 %.elt3 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 3 142 %.unpack3 = load i8, ptr %.elt3, align 1 143 %.elt4 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 4 144 %.unpack4 = load i8, ptr %.elt4, align 1 145 %.elt5 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 5 146 %.unpack5 = load i8, ptr %.elt5, align 1 147 %.elt6 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 6 148 %.unpack6 = load i8, ptr %.elt6, align 1 149 %.elt7 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 7 150 %.unpack7 = load i8, ptr %.elt7, align 1 151 %.elt8 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 8 152 %.unpack8 = load i8, ptr %.elt8, align 1 153 store i8 %.unpack0, ptr %_param_data, align 1 154 %.temp.1.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 1 155 store i8 %.unpack1, ptr %.temp.1.gep, align 1 156 %.temp.2.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 2 157 store i8 %.unpack2, ptr %.temp.2.gep, align 1 158 %.temp.3.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 3 159 store i8 %.unpack3, ptr %.temp.3.gep, align 1 160 %.temp.4.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 4 161 store i8 %.unpack4, ptr %.temp.4.gep, align 1 162 %.temp.5.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 5 163 store i8 %.unpack5, ptr %.temp.5.gep, align 1 164 %.temp.6.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 6 165 store i8 %.unpack6, ptr %.temp.6.gep, align 1 166 %.temp.7.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 7 167 store i8 %.unpack7, ptr %.temp.7.gep, align 1 168 %.temp.8.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 8 169 store i8 %.unpack8, ptr %.temp.8.gep, align 1 170 call void @callee(ptr nonnull %_param_data) 171 ret i8 0 172} 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: # %entry 177; P8LE-NEXT: mflr r0 178; 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, 71 182; P8LE-NEXT: lbz r4, 56(r1) 183; P8LE-NEXT: std r3, 48(r1) 184; P8LE-NEXT: stdx r3, 0, r5 185; P8LE-NEXT: stb r4, 79(r1) 186; P8LE-NEXT: lbz r4, 56(r1) 187; P8LE-NEXT: bl callee_9 188; P8LE-NEXT: nop 189; P8LE-NEXT: li r3, 0 190; P8LE-NEXT: addi r1, r1, 80 191; P8LE-NEXT: ld r0, 16(r1) 192; P8LE-NEXT: mtlr r0 193; P8LE-NEXT: blr 194; 195; P9LE-LABEL: caller_9_callee_9: 196; P9LE: # %bb.0: # %entry 197; P9LE-NEXT: mflr r0 198; 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, 71 202; P9LE-NEXT: lbz r5, 56(r1) 203; P9LE-NEXT: std r3, 48(r1) 204; P9LE-NEXT: stdx r3, 0, r4 205; P9LE-NEXT: lbz r4, 56(r1) 206; P9LE-NEXT: stb r5, 79(r1) 207; P9LE-NEXT: bl callee_9 208; P9LE-NEXT: nop 209; P9LE-NEXT: li r3, 0 210; P9LE-NEXT: addi r1, r1, 80 211; P9LE-NEXT: ld r0, 16(r1) 212; P9LE-NEXT: mtlr r0 213; P9LE-NEXT: blr 214; 215; P10LE-LABEL: caller_9_callee_9: 216; P10LE: # %bb.0: # %entry 217; P10LE-NEXT: mflr r0 218; 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, 71 222; P10LE-NEXT: std r3, 48(r1) 223; P10LE-NEXT: lbz r5, 56(r1) 224; P10LE-NEXT: stdx r3, 0, r4 225; P10LE-NEXT: lbz r4, 56(r1) 226; P10LE-NEXT: stb r5, 79(r1) 227; P10LE-NEXT: bl callee_9@notoc 228; P10LE-NEXT: li r3, 0 229; P10LE-NEXT: addi r1, r1, 80 230; P10LE-NEXT: ld r0, 16(r1) 231; P10LE-NEXT: mtlr r0 232; P10LE-NEXT: blr 233; 234; P8BE-LABEL: caller_9_callee_9: 235; P8BE: # %bb.0: # %entry 236; P8BE-NEXT: mflr r0 237; 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, 135 241; P8BE-NEXT: lbz r4, 200(r1) 242; P8BE-NEXT: std r3, 192(r1) 243; P8BE-NEXT: stdx r3, 0, r5 244; P8BE-NEXT: stb r4, 143(r1) 245; P8BE-NEXT: lbz r4, 200(r1) 246; P8BE-NEXT: bl callee_9 247; P8BE-NEXT: nop 248; P8BE-NEXT: li r3, 0 249; P8BE-NEXT: addi r1, r1, 144 250; P8BE-NEXT: ld r0, 16(r1) 251; P8BE-NEXT: mtlr r0 252; P8BE-NEXT: blr 253; 254; P9BE-LABEL: caller_9_callee_9: 255; P9BE: # %bb.0: # %entry 256; P9BE-NEXT: mflr r0 257; 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, 135 261; P9BE-NEXT: lbz r5, 200(r1) 262; P9BE-NEXT: std r3, 192(r1) 263; P9BE-NEXT: stdx r3, 0, r4 264; P9BE-NEXT: lbz r4, 200(r1) 265; P9BE-NEXT: stb r5, 143(r1) 266; P9BE-NEXT: bl callee_9 267; P9BE-NEXT: nop 268; P9BE-NEXT: li r3, 0 269; P9BE-NEXT: addi r1, r1, 144 270; P9BE-NEXT: ld r0, 16(r1) 271; P9BE-NEXT: mtlr r0 272; P9BE-NEXT: blr 273; 274; P10BE-LABEL: caller_9_callee_9: 275; P10BE: # %bb.0: # %entry 276; P10BE-NEXT: mflr r0 277; 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, 135 281; P10BE-NEXT: std r3, 192(r1) 282; P10BE-NEXT: lbz r5, 200(r1) 283; P10BE-NEXT: stdx r3, 0, r4 284; P10BE-NEXT: lbz r4, 200(r1) 285; P10BE-NEXT: stb r5, 143(r1) 286; P10BE-NEXT: bl callee_9 287; P10BE-NEXT: nop 288; P10BE-NEXT: li r3, 0 289; P10BE-NEXT: addi r1, r1, 144 290; P10BE-NEXT: ld r0, 16(r1) 291; P10BE-NEXT: mtlr r0 292; P10BE-NEXT: blr 293entry: 294 %_param_data = alloca [9 x i8], align 1 295 %.unpack0 = load i8, ptr %data, align 1 296 %.elt1 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 1 297 %.unpack1 = load i8, ptr %.elt1, align 1 298 %.elt2 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 2 299 %.unpack2 = load i8, ptr %.elt2, align 1 300 %.elt3 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 3 301 %.unpack3 = load i8, ptr %.elt3, align 1 302 %.elt4 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 4 303 %.unpack4 = load i8, ptr %.elt4, align 1 304 %.elt5 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 5 305 %.unpack5 = load i8, ptr %.elt5, align 1 306 %.elt6 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 6 307 %.unpack6 = load i8, ptr %.elt6, align 1 308 %.elt7 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 7 309 %.unpack7 = load i8, ptr %.elt7, align 1 310 %.elt8 = getelementptr inbounds [9 x i8], ptr %data, i64 0, i64 8 311 %.unpack8 = load i8, ptr %.elt8, align 1 312 store i8 %.unpack0, ptr %_param_data, align 1 313 %.temp.1.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 1 314 store i8 %.unpack1, ptr %.temp.1.gep, align 1 315 %.temp.2.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 2 316 store i8 %.unpack2, ptr %.temp.2.gep, align 1 317 %.temp.3.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 3 318 store i8 %.unpack3, ptr %.temp.3.gep, align 1 319 %.temp.4.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 4 320 store i8 %.unpack4, ptr %.temp.4.gep, align 1 321 %.temp.5.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 5 322 store i8 %.unpack5, ptr %.temp.5.gep, align 1 323 %.temp.6.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 6 324 store i8 %.unpack6, ptr %.temp.6.gep, align 1 325 %.temp.7.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 7 326 store i8 %.unpack7, ptr %.temp.7.gep, align 1 327 %.temp.8.gep = getelementptr inbounds [9 x i8], ptr %_param_data, i64 0, i64 8 328 store i8 %.unpack8, ptr %.temp.8.gep, align 1 329 call void @callee_9(ptr nocapture readonly byval([9 x i8]) %data) 330 ret i8 0 331} 332 333define signext i8 @caller_10(ptr nocapture readonly byval([10 x i8]) %data) #0 { 334; P8LE-LABEL: caller_10: 335; P8LE: # %bb.0: # %entry 336; P8LE-NEXT: mflr r0 337; 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, 70 341; P8LE-NEXT: lhz r5, 56(r1) 342; P8LE-NEXT: std r3, 48(r1) 343; P8LE-NEXT: stdx r3, 0, r4 344; P8LE-NEXT: mr r3, r4 345; P8LE-NEXT: sth r5, 78(r1) 346; P8LE-NEXT: bl callee 347; P8LE-NEXT: nop 348; P8LE-NEXT: li r3, 0 349; P8LE-NEXT: addi r1, r1, 80 350; P8LE-NEXT: ld r0, 16(r1) 351; P8LE-NEXT: mtlr r0 352; P8LE-NEXT: blr 353; 354; P9LE-LABEL: caller_10: 355; P9LE: # %bb.0: # %entry 356; P9LE-NEXT: mflr r0 357; 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, 70 361; P9LE-NEXT: lhz r5, 56(r1) 362; P9LE-NEXT: std r3, 48(r1) 363; P9LE-NEXT: stdx r3, 0, r4 364; P9LE-NEXT: mr r3, r4 365; P9LE-NEXT: sth r5, 78(r1) 366; P9LE-NEXT: bl callee 367; P9LE-NEXT: nop 368; P9LE-NEXT: li r3, 0 369; P9LE-NEXT: addi r1, r1, 80 370; P9LE-NEXT: ld r0, 16(r1) 371; P9LE-NEXT: mtlr r0 372; P9LE-NEXT: blr 373; 374; P10LE-LABEL: caller_10: 375; P10LE: # %bb.0: # %entry 376; P10LE-NEXT: mflr r0 377; 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, 70 381; P10LE-NEXT: std r3, 48(r1) 382; P10LE-NEXT: lhz r5, 56(r1) 383; P10LE-NEXT: stdx r3, 0, r4 384; P10LE-NEXT: mr r3, r4 385; P10LE-NEXT: sth r5, 78(r1) 386; P10LE-NEXT: bl callee@notoc 387; P10LE-NEXT: li r3, 0 388; P10LE-NEXT: addi r1, r1, 80 389; P10LE-NEXT: ld r0, 16(r1) 390; P10LE-NEXT: mtlr r0 391; P10LE-NEXT: blr 392; 393; P8BE-LABEL: caller_10: 394; P8BE: # %bb.0: # %entry 395; P8BE-NEXT: mflr r0 396; 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, 134 400; P8BE-NEXT: lhz r5, 200(r1) 401; P8BE-NEXT: std r3, 192(r1) 402; P8BE-NEXT: stdx r3, 0, r4 403; P8BE-NEXT: mr r3, r4 404; P8BE-NEXT: sth r5, 142(r1) 405; P8BE-NEXT: bl callee 406; P8BE-NEXT: nop 407; P8BE-NEXT: li r3, 0 408; P8BE-NEXT: addi r1, r1, 144 409; P8BE-NEXT: ld r0, 16(r1) 410; P8BE-NEXT: mtlr r0 411; P8BE-NEXT: blr 412; 413; P9BE-LABEL: caller_10: 414; P9BE: # %bb.0: # %entry 415; P9BE-NEXT: mflr r0 416; 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, 134 420; P9BE-NEXT: lhz r5, 200(r1) 421; P9BE-NEXT: std r3, 192(r1) 422; P9BE-NEXT: stdx r3, 0, r4 423; P9BE-NEXT: mr r3, r4 424; P9BE-NEXT: sth r5, 142(r1) 425; P9BE-NEXT: bl callee 426; P9BE-NEXT: nop 427; P9BE-NEXT: li r3, 0 428; P9BE-NEXT: addi r1, r1, 144 429; P9BE-NEXT: ld r0, 16(r1) 430; P9BE-NEXT: mtlr r0 431; P9BE-NEXT: blr 432; 433; P10BE-LABEL: caller_10: 434; P10BE: # %bb.0: # %entry 435; P10BE-NEXT: mflr r0 436; 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, 134 440; P10BE-NEXT: std r3, 192(r1) 441; P10BE-NEXT: lhz r5, 200(r1) 442; P10BE-NEXT: stdx r3, 0, r4 443; P10BE-NEXT: mr r3, r4 444; P10BE-NEXT: sth r5, 142(r1) 445; P10BE-NEXT: bl callee 446; P10BE-NEXT: nop 447; P10BE-NEXT: li r3, 0 448; P10BE-NEXT: addi r1, r1, 144 449; P10BE-NEXT: ld r0, 16(r1) 450; P10BE-NEXT: mtlr r0 451; P10BE-NEXT: blr 452entry: 453 %_param_data = alloca [10 x i8], align 1 454 %.unpack0 = load i8, ptr %data, align 1 455 %.elt1 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 1 456 %.unpack1 = load i8, ptr %.elt1, align 1 457 %.elt2 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 2 458 %.unpack2 = load i8, ptr %.elt2, align 1 459 %.elt3 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 3 460 %.unpack3 = load i8, ptr %.elt3, align 1 461 %.elt4 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 4 462 %.unpack4 = load i8, ptr %.elt4, align 1 463 %.elt5 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 5 464 %.unpack5 = load i8, ptr %.elt5, align 1 465 %.elt6 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 6 466 %.unpack6 = load i8, ptr %.elt6, align 1 467 %.elt7 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 7 468 %.unpack7 = load i8, ptr %.elt7, align 1 469 %.elt8 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 8 470 %.unpack8 = load i8, ptr %.elt8, align 1 471 %.elt9 = getelementptr inbounds [10 x i8], ptr %data, i64 0, i64 9 472 %.unpack9 = load i8, ptr %.elt9, align 1 473 store i8 %.unpack0, ptr %_param_data, align 1 474 %.temp.1.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 1 475 store i8 %.unpack1, ptr %.temp.1.gep, align 1 476 %.temp.2.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 2 477 store i8 %.unpack2, ptr %.temp.2.gep, align 1 478 %.temp.3.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 3 479 store i8 %.unpack3, ptr %.temp.3.gep, align 1 480 %.temp.4.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 4 481 store i8 %.unpack4, ptr %.temp.4.gep, align 1 482 %.temp.5.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 5 483 store i8 %.unpack5, ptr %.temp.5.gep, align 1 484 %.temp.6.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 6 485 store i8 %.unpack6, ptr %.temp.6.gep, align 1 486 %.temp.7.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 7 487 store i8 %.unpack7, ptr %.temp.7.gep, align 1 488 %.temp.8.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 8 489 store i8 %.unpack8, ptr %.temp.8.gep, align 1 490 %.temp.9.gep = getelementptr inbounds [10 x i8], ptr %_param_data, i64 0, i64 9 491 store i8 %.unpack9, ptr %.temp.9.gep, align 1 492 call void @callee(ptr nonnull %_param_data) 493 ret i8 0 494} 495 496define signext i8 @caller_12(ptr nocapture readonly byval([12 x i8]) %data) #0 { 497; P8LE-LABEL: caller_12: 498; P8LE: # %bb.0: # %entry 499; P8LE-NEXT: mflr r0 500; 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, 68 504; 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, r4 508; P8LE-NEXT: stw r5, 76(r1) 509; P8LE-NEXT: bl callee 510; P8LE-NEXT: nop 511; P8LE-NEXT: li r3, 0 512; P8LE-NEXT: addi r1, r1, 80 513; P8LE-NEXT: ld r0, 16(r1) 514; P8LE-NEXT: mtlr r0 515; P8LE-NEXT: blr 516; 517; P9LE-LABEL: caller_12: 518; P9LE: # %bb.0: # %entry 519; P9LE-NEXT: mflr r0 520; 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, 68 524; 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, r4 528; P9LE-NEXT: stw r5, 76(r1) 529; P9LE-NEXT: bl callee 530; P9LE-NEXT: nop 531; P9LE-NEXT: li r3, 0 532; P9LE-NEXT: addi r1, r1, 80 533; P9LE-NEXT: ld r0, 16(r1) 534; P9LE-NEXT: mtlr r0 535; P9LE-NEXT: blr 536; 537; P10LE-LABEL: caller_12: 538; P10LE: # %bb.0: # %entry 539; P10LE-NEXT: mflr r0 540; 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, 68 544; 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, r4 548; P10LE-NEXT: stw r5, 76(r1) 549; P10LE-NEXT: bl callee@notoc 550; P10LE-NEXT: li r3, 0 551; P10LE-NEXT: addi r1, r1, 80 552; P10LE-NEXT: ld r0, 16(r1) 553; P10LE-NEXT: mtlr r0 554; P10LE-NEXT: blr 555; 556; P8BE-LABEL: caller_12: 557; P8BE: # %bb.0: # %entry 558; P8BE-NEXT: mflr r0 559; 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, 132 563; 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, r4 567; P8BE-NEXT: stw r5, 140(r1) 568; P8BE-NEXT: bl callee 569; P8BE-NEXT: nop 570; P8BE-NEXT: li r3, 0 571; P8BE-NEXT: addi r1, r1, 144 572; P8BE-NEXT: ld r0, 16(r1) 573; P8BE-NEXT: mtlr r0 574; P8BE-NEXT: blr 575; 576; P9BE-LABEL: caller_12: 577; P9BE: # %bb.0: # %entry 578; P9BE-NEXT: mflr r0 579; 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, 132 583; 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, r4 587; P9BE-NEXT: stw r5, 140(r1) 588; P9BE-NEXT: bl callee 589; P9BE-NEXT: nop 590; P9BE-NEXT: li r3, 0 591; P9BE-NEXT: addi r1, r1, 144 592; P9BE-NEXT: ld r0, 16(r1) 593; P9BE-NEXT: mtlr r0 594; P9BE-NEXT: blr 595; 596; P10BE-LABEL: caller_12: 597; P10BE: # %bb.0: # %entry 598; P10BE-NEXT: mflr r0 599; 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, 132 603; 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, r4 607; P10BE-NEXT: stw r5, 140(r1) 608; P10BE-NEXT: bl callee 609; P10BE-NEXT: nop 610; P10BE-NEXT: li r3, 0 611; P10BE-NEXT: addi r1, r1, 144 612; P10BE-NEXT: ld r0, 16(r1) 613; P10BE-NEXT: mtlr r0 614; P10BE-NEXT: blr 615entry: 616 %_param_data = alloca [12 x i8], align 1 617 %.unpack0 = load i8, ptr %data, align 1 618 %.elt1 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 1 619 %.unpack1 = load i8, ptr %.elt1, align 1 620 %.elt2 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 2 621 %.unpack2 = load i8, ptr %.elt2, align 1 622 %.elt3 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 3 623 %.unpack3 = load i8, ptr %.elt3, align 1 624 %.elt4 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 4 625 %.unpack4 = load i8, ptr %.elt4, align 1 626 %.elt5 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 5 627 %.unpack5 = load i8, ptr %.elt5, align 1 628 %.elt6 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 6 629 %.unpack6 = load i8, ptr %.elt6, align 1 630 %.elt7 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 7 631 %.unpack7 = load i8, ptr %.elt7, align 1 632 %.elt8 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 8 633 %.unpack8 = load i8, ptr %.elt8, align 1 634 %.elt9 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 9 635 %.unpack9 = load i8, ptr %.elt9, align 1 636 %.elt10 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 10 637 %.unpack10 = load i8, ptr %.elt10, align 1 638 %.elt11 = getelementptr inbounds [12 x i8], ptr %data, i64 0, i64 11 639 %.unpack11 = load i8, ptr %.elt11, align 1 640 store i8 %.unpack0, ptr %_param_data, align 1 641 %.temp.1.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 1 642 store i8 %.unpack1, ptr %.temp.1.gep, align 1 643 %.temp.2.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 2 644 store i8 %.unpack2, ptr %.temp.2.gep, align 1 645 %.temp.3.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 3 646 store i8 %.unpack3, ptr %.temp.3.gep, align 1 647 %.temp.4.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 4 648 store i8 %.unpack4, ptr %.temp.4.gep, align 1 649 %.temp.5.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 5 650 store i8 %.unpack5, ptr %.temp.5.gep, align 1 651 %.temp.6.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 6 652 store i8 %.unpack6, ptr %.temp.6.gep, align 1 653 %.temp.7.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 7 654 store i8 %.unpack7, ptr %.temp.7.gep, align 1 655 %.temp.8.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 8 656 store i8 %.unpack8, ptr %.temp.8.gep, align 1 657 %.temp.9.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 9 658 store i8 %.unpack9, ptr %.temp.9.gep, align 1 659 %.temp.10.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 10 660 store i8 %.unpack10, ptr %.temp.10.gep, align 1 661 %.temp.11.gep = getelementptr inbounds [12 x i8], ptr %_param_data, i64 0, i64 11 662 store i8 %.unpack11, ptr %.temp.11.gep, align 1 663 call void @callee(ptr nonnull %_param_data) 664 ret i8 0 665} 666 667define signext i8 @caller_14(ptr nocapture readonly byval([14 x i8]) %data) #0 { 668; P8LE-LABEL: caller_14: 669; P8LE: # %bb.0: # %entry 670; P8LE-NEXT: mflr r0 671; 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, 32 675; 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, 66 679; P8LE-NEXT: stdx r3, 0, r4 680; P8LE-NEXT: mr r3, r4 681; P8LE-NEXT: stw r5, 74(r1) 682; P8LE-NEXT: bl callee 683; P8LE-NEXT: nop 684; P8LE-NEXT: li r3, 0 685; P8LE-NEXT: addi r1, r1, 80 686; P8LE-NEXT: ld r0, 16(r1) 687; P8LE-NEXT: mtlr r0 688; P8LE-NEXT: blr 689; 690; P9LE-LABEL: caller_14: 691; P9LE: # %bb.0: # %entry 692; P9LE-NEXT: mflr r0 693; 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, 32 698; P9LE-NEXT: std r3, 48(r1) 699; P9LE-NEXT: sth r4, 60(r1) 700; P9LE-NEXT: addi r4, r1, 66 701; P9LE-NEXT: stdx r3, 0, r4 702; P9LE-NEXT: mr r3, r4 703; P9LE-NEXT: stw r5, 74(r1) 704; P9LE-NEXT: bl callee 705; P9LE-NEXT: nop 706; P9LE-NEXT: li r3, 0 707; P9LE-NEXT: addi r1, r1, 80 708; P9LE-NEXT: ld r0, 16(r1) 709; P9LE-NEXT: mtlr r0 710; P9LE-NEXT: blr 711; 712; P10LE-LABEL: caller_14: 713; P10LE: # %bb.0: # %entry 714; P10LE-NEXT: mflr r0 715; 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, 32 719; 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, 66 723; P10LE-NEXT: stdx r3, 0, r4 724; P10LE-NEXT: mr r3, r4 725; P10LE-NEXT: stw r5, 74(r1) 726; P10LE-NEXT: bl callee@notoc 727; P10LE-NEXT: li r3, 0 728; P10LE-NEXT: addi r1, r1, 80 729; P10LE-NEXT: ld r0, 16(r1) 730; P10LE-NEXT: mtlr r0 731; P10LE-NEXT: blr 732; 733; P8BE-LABEL: caller_14: 734; P8BE: # %bb.0: # %entry 735; P8BE-NEXT: mflr r0 736; P8BE-NEXT: stdu r1, -144(r1) 737; P8BE-NEXT: rldicl r5, r4, 48, 16 738; P8BE-NEXT: std r0, 160(r1) 739; P8BE-NEXT: sth r4, 204(r1) 740; P8BE-NEXT: addi r4, r1, 130 741; P8BE-NEXT: std r3, 192(r1) 742; P8BE-NEXT: stw r5, 200(r1) 743; P8BE-NEXT: stdx r3, 0, r4 744; P8BE-NEXT: mr r3, r4 745; P8BE-NEXT: lwz r5, 200(r1) 746; P8BE-NEXT: stw r5, 138(r1) 747; P8BE-NEXT: bl callee 748; P8BE-NEXT: nop 749; P8BE-NEXT: li r3, 0 750; P8BE-NEXT: addi r1, r1, 144 751; P8BE-NEXT: ld r0, 16(r1) 752; P8BE-NEXT: mtlr r0 753; P8BE-NEXT: blr 754; 755; P9BE-LABEL: caller_14: 756; P9BE: # %bb.0: # %entry 757; P9BE-NEXT: mflr r0 758; P9BE-NEXT: stdu r1, -144(r1) 759; P9BE-NEXT: rldicl r5, r4, 48, 16 760; P9BE-NEXT: std r0, 160(r1) 761; P9BE-NEXT: sth r4, 204(r1) 762; P9BE-NEXT: addi r4, r1, 130 763; P9BE-NEXT: std r3, 192(r1) 764; P9BE-NEXT: stw r5, 200(r1) 765; P9BE-NEXT: stdx r3, 0, r4 766; P9BE-NEXT: mr r3, r4 767; P9BE-NEXT: lwz r5, 200(r1) 768; P9BE-NEXT: stw r5, 138(r1) 769; P9BE-NEXT: bl callee 770; P9BE-NEXT: nop 771; P9BE-NEXT: li r3, 0 772; P9BE-NEXT: addi r1, r1, 144 773; P9BE-NEXT: ld r0, 16(r1) 774; P9BE-NEXT: mtlr r0 775; P9BE-NEXT: blr 776; 777; P10BE-LABEL: caller_14: 778; P10BE: # %bb.0: # %entry 779; P10BE-NEXT: mflr r0 780; P10BE-NEXT: std r0, 16(r1) 781; P10BE-NEXT: stdu r1, -144(r1) 782; P10BE-NEXT: rldicl r5, r4, 48, 16 783; P10BE-NEXT: sth r4, 204(r1) 784; P10BE-NEXT: addi r4, r1, 130 785; P10BE-NEXT: std r3, 192(r1) 786; P10BE-NEXT: stw r5, 200(r1) 787; P10BE-NEXT: stdx r3, 0, r4 788; P10BE-NEXT: mr r3, r4 789; P10BE-NEXT: lwz r5, 200(r1) 790; P10BE-NEXT: stw r5, 138(r1) 791; P10BE-NEXT: bl callee 792; P10BE-NEXT: nop 793; P10BE-NEXT: li r3, 0 794; P10BE-NEXT: addi r1, r1, 144 795; P10BE-NEXT: ld r0, 16(r1) 796; P10BE-NEXT: mtlr r0 797; P10BE-NEXT: blr 798entry: 799 %_param_data = alloca [14 x i8], align 1 800 %.unpack0 = load i8, ptr %data, align 1 801 %.elt1 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 1 802 %.unpack1 = load i8, ptr %.elt1, align 1 803 %.elt2 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 2 804 %.unpack2 = load i8, ptr %.elt2, align 1 805 %.elt3 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 3 806 %.unpack3 = load i8, ptr %.elt3, align 1 807 %.elt4 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 4 808 %.unpack4 = load i8, ptr %.elt4, align 1 809 %.elt5 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 5 810 %.unpack5 = load i8, ptr %.elt5, align 1 811 %.elt6 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 6 812 %.unpack6 = load i8, ptr %.elt6, align 1 813 %.elt7 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 7 814 %.unpack7 = load i8, ptr %.elt7, align 1 815 %.elt8 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 8 816 %.unpack8 = load i8, ptr %.elt8, align 1 817 %.elt9 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 9 818 %.unpack9 = load i8, ptr %.elt9, align 1 819 %.elt10 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 10 820 %.unpack10 = load i8, ptr %.elt10, align 1 821 %.elt11 = getelementptr inbounds [14 x i8], ptr %data, i64 0, i64 11 822 %.unpack11 = load i8, ptr %.elt11, align 1 823 store i8 %.unpack0, ptr %_param_data, align 1 824 %.temp.1.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 1 825 store i8 %.unpack1, ptr %.temp.1.gep, align 1 826 %.temp.2.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 2 827 store i8 %.unpack2, ptr %.temp.2.gep, align 1 828 %.temp.3.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 3 829 store i8 %.unpack3, ptr %.temp.3.gep, align 1 830 %.temp.4.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 4 831 store i8 %.unpack4, ptr %.temp.4.gep, align 1 832 %.temp.5.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 5 833 store i8 %.unpack5, ptr %.temp.5.gep, align 1 834 %.temp.6.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 6 835 store i8 %.unpack6, ptr %.temp.6.gep, align 1 836 %.temp.7.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 7 837 store i8 %.unpack7, ptr %.temp.7.gep, align 1 838 %.temp.8.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 8 839 store i8 %.unpack8, ptr %.temp.8.gep, align 1 840 %.temp.9.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 9 841 store i8 %.unpack9, ptr %.temp.9.gep, align 1 842 %.temp.10.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 10 843 store i8 %.unpack10, ptr %.temp.10.gep, align 1 844 %.temp.11.gep = getelementptr inbounds [14 x i8], ptr %_param_data, i64 0, i64 11 845 store i8 %.unpack11, ptr %.temp.11.gep, align 1 846 call void @callee(ptr nonnull %_param_data) 847 ret i8 0 848} 849 850define signext i8 @caller_16(ptr nocapture readonly byval([16 x i8]) %data) #0 { 851; P8LE-LABEL: caller_16: 852; P8LE: # %bb.0: # %entry 853; P8LE-NEXT: mflr r0 854; P8LE-NEXT: stdu r1, -80(r1) 855; P8LE-NEXT: addi r5, r1, 64 856; 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, r5 862; P8LE-NEXT: bl callee 863; P8LE-NEXT: nop 864; P8LE-NEXT: li r3, 0 865; P8LE-NEXT: addi r1, r1, 80 866; P8LE-NEXT: ld r0, 16(r1) 867; P8LE-NEXT: mtlr r0 868; P8LE-NEXT: blr 869; 870; P9LE-LABEL: caller_16: 871; P9LE: # %bb.0: # %entry 872; P9LE-NEXT: mflr r0 873; P9LE-NEXT: stdu r1, -80(r1) 874; P9LE-NEXT: addi r5, r1, 64 875; 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, r5 881; P9LE-NEXT: bl callee 882; P9LE-NEXT: nop 883; P9LE-NEXT: li r3, 0 884; P9LE-NEXT: addi r1, r1, 80 885; P9LE-NEXT: ld r0, 16(r1) 886; P9LE-NEXT: mtlr r0 887; P9LE-NEXT: blr 888; 889; P10LE-LABEL: caller_16: 890; P10LE: # %bb.0: # %entry 891; P10LE-NEXT: mflr r0 892; P10LE-NEXT: std r0, 16(r1) 893; P10LE-NEXT: stdu r1, -80(r1) 894; P10LE-NEXT: addi r5, r1, 64 895; 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, r5 900; P10LE-NEXT: bl callee@notoc 901; P10LE-NEXT: li r3, 0 902; P10LE-NEXT: addi r1, r1, 80 903; P10LE-NEXT: ld r0, 16(r1) 904; P10LE-NEXT: mtlr r0 905; P10LE-NEXT: blr 906; 907; P8BE-LABEL: caller_16: 908; P8BE: # %bb.0: # %entry 909; P8BE-NEXT: mflr r0 910; 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, 32 914; P8BE-NEXT: addi r4, r1, 128 915; P8BE-NEXT: std r3, 192(r1) 916; P8BE-NEXT: std r3, 128(r1) 917; P8BE-NEXT: mr r3, r4 918; P8BE-NEXT: stw r5, 136(r1) 919; P8BE-NEXT: bl callee 920; P8BE-NEXT: nop 921; P8BE-NEXT: li r3, 0 922; P8BE-NEXT: addi r1, r1, 144 923; P8BE-NEXT: ld r0, 16(r1) 924; P8BE-NEXT: mtlr r0 925; P8BE-NEXT: blr 926; 927; P9BE-LABEL: caller_16: 928; P9BE: # %bb.0: # %entry 929; P9BE-NEXT: mflr r0 930; 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, 32 934; P9BE-NEXT: addi r4, r1, 128 935; P9BE-NEXT: std r3, 192(r1) 936; P9BE-NEXT: std r3, 128(r1) 937; P9BE-NEXT: mr r3, r4 938; P9BE-NEXT: stw r5, 136(r1) 939; P9BE-NEXT: bl callee 940; P9BE-NEXT: nop 941; P9BE-NEXT: li r3, 0 942; P9BE-NEXT: addi r1, r1, 144 943; P9BE-NEXT: ld r0, 16(r1) 944; P9BE-NEXT: mtlr r0 945; P9BE-NEXT: blr 946; 947; P10BE-LABEL: caller_16: 948; P10BE: # %bb.0: # %entry 949; P10BE-NEXT: mflr r0 950; 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, 32 955; P10BE-NEXT: addi r4, r1, 128 956; P10BE-NEXT: std r3, 128(r1) 957; P10BE-NEXT: mr r3, r4 958; P10BE-NEXT: stw r5, 136(r1) 959; P10BE-NEXT: bl callee 960; P10BE-NEXT: nop 961; P10BE-NEXT: li r3, 0 962; P10BE-NEXT: addi r1, r1, 144 963; P10BE-NEXT: ld r0, 16(r1) 964; P10BE-NEXT: mtlr r0 965; P10BE-NEXT: blr 966entry: 967 %_param_data = alloca [16 x i8], align 1 968 %.unpack0 = load i8, ptr %data, align 1 969 %.elt1 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 1 970 %.unpack1 = load i8, ptr %.elt1, align 1 971 %.elt2 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 2 972 %.unpack2 = load i8, ptr %.elt2, align 1 973 %.elt3 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 3 974 %.unpack3 = load i8, ptr %.elt3, align 1 975 %.elt4 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 4 976 %.unpack4 = load i8, ptr %.elt4, align 1 977 %.elt5 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 5 978 %.unpack5 = load i8, ptr %.elt5, align 1 979 %.elt6 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 6 980 %.unpack6 = load i8, ptr %.elt6, align 1 981 %.elt7 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 7 982 %.unpack7 = load i8, ptr %.elt7, align 1 983 %.elt8 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 8 984 %.unpack8 = load i8, ptr %.elt8, align 1 985 %.elt9 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 9 986 %.unpack9 = load i8, ptr %.elt9, align 1 987 %.elt10 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 10 988 %.unpack10 = load i8, ptr %.elt10, align 1 989 %.elt11 = getelementptr inbounds [16 x i8], ptr %data, i64 0, i64 11 990 %.unpack11 = load i8, ptr %.elt11, align 1 991 store i8 %.unpack0, ptr %_param_data, align 1 992 %.temp.1.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 1 993 store i8 %.unpack1, ptr %.temp.1.gep, align 1 994 %.temp.2.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 2 995 store i8 %.unpack2, ptr %.temp.2.gep, align 1 996 %.temp.3.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 3 997 store i8 %.unpack3, ptr %.temp.3.gep, align 1 998 %.temp.4.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 4 999 store i8 %.unpack4, ptr %.temp.4.gep, align 1 1000 %.temp.5.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 5 1001 store i8 %.unpack5, ptr %.temp.5.gep, align 1 1002 %.temp.6.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 6 1003 store i8 %.unpack6, ptr %.temp.6.gep, align 1 1004 %.temp.7.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 7 1005 store i8 %.unpack7, ptr %.temp.7.gep, align 1 1006 %.temp.8.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 8 1007 store i8 %.unpack8, ptr %.temp.8.gep, align 1 1008 %.temp.9.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 9 1009 store i8 %.unpack9, ptr %.temp.9.gep, align 1 1010 %.temp.10.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 10 1011 store i8 %.unpack10, ptr %.temp.10.gep, align 1 1012 %.temp.11.gep = getelementptr inbounds [16 x i8], ptr %_param_data, i64 0, i64 11 1013 store i8 %.unpack11, ptr %.temp.11.gep, align 1 1014 call void @callee(ptr nonnull %_param_data) 1015 ret i8 0 1016} 1017 1018define signext i8 @caller_18(ptr nocapture readonly byval([18 x i8]) %data) #0 { 1019; P8LE-LABEL: caller_18: 1020; P8LE: # %bb.0: # %entry 1021; P8LE-NEXT: mflr r0 1022; 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, 78 1026; 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, r5 1030; P8LE-NEXT: mr r3, r5 1031; P8LE-NEXT: bl callee 1032; P8LE-NEXT: nop 1033; P8LE-NEXT: li r3, 0 1034; P8LE-NEXT: addi r1, r1, 96 1035; P8LE-NEXT: ld r0, 16(r1) 1036; P8LE-NEXT: mtlr r0 1037; P8LE-NEXT: blr 1038; 1039; P9LE-LABEL: caller_18: 1040; P9LE: # %bb.0: # %entry 1041; P9LE-NEXT: mflr r0 1042; 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, 78 1046; 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, r5 1050; P9LE-NEXT: mr r3, r5 1051; P9LE-NEXT: bl callee 1052; P9LE-NEXT: nop 1053; P9LE-NEXT: li r3, 0 1054; P9LE-NEXT: addi r1, r1, 96 1055; P9LE-NEXT: ld r0, 16(r1) 1056; P9LE-NEXT: mtlr r0 1057; P9LE-NEXT: blr 1058; 1059; P10LE-LABEL: caller_18: 1060; P10LE: # %bb.0: # %entry 1061; P10LE-NEXT: mflr r0 1062; 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, 78 1066; 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, r5 1070; P10LE-NEXT: mr r3, r5 1071; P10LE-NEXT: bl callee@notoc 1072; P10LE-NEXT: li r3, 0 1073; P10LE-NEXT: addi r1, r1, 96 1074; P10LE-NEXT: ld r0, 16(r1) 1075; P10LE-NEXT: mtlr r0 1076; P10LE-NEXT: blr 1077; 1078; P8BE-LABEL: caller_18: 1079; P8BE: # %bb.0: # %entry 1080; P8BE-NEXT: mflr r0 1081; 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, 32 1086; P8BE-NEXT: addi r4, r1, 126 1087; P8BE-NEXT: std r3, 192(r1) 1088; P8BE-NEXT: stdx r3, 0, r4 1089; P8BE-NEXT: mr r3, r4 1090; P8BE-NEXT: stw r5, 134(r1) 1091; P8BE-NEXT: bl callee 1092; P8BE-NEXT: nop 1093; P8BE-NEXT: li r3, 0 1094; P8BE-NEXT: addi r1, r1, 144 1095; P8BE-NEXT: ld r0, 16(r1) 1096; P8BE-NEXT: mtlr r0 1097; P8BE-NEXT: blr 1098; 1099; P9BE-LABEL: caller_18: 1100; P9BE: # %bb.0: # %entry 1101; P9BE-NEXT: mflr r0 1102; 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, 32 1107; P9BE-NEXT: addi r4, r1, 126 1108; P9BE-NEXT: std r3, 192(r1) 1109; P9BE-NEXT: stdx r3, 0, r4 1110; P9BE-NEXT: mr r3, r4 1111; P9BE-NEXT: stw r5, 134(r1) 1112; P9BE-NEXT: bl callee 1113; P9BE-NEXT: nop 1114; P9BE-NEXT: li r3, 0 1115; P9BE-NEXT: addi r1, r1, 144 1116; P9BE-NEXT: ld r0, 16(r1) 1117; P9BE-NEXT: mtlr r0 1118; P9BE-NEXT: blr 1119; 1120; P10BE-LABEL: caller_18: 1121; P10BE: # %bb.0: # %entry 1122; P10BE-NEXT: mflr r0 1123; 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, 32 1129; P10BE-NEXT: addi r4, r1, 126 1130; P10BE-NEXT: stdx r3, 0, r4 1131; P10BE-NEXT: mr r3, r4 1132; P10BE-NEXT: stw r5, 134(r1) 1133; P10BE-NEXT: bl callee 1134; P10BE-NEXT: nop 1135; P10BE-NEXT: li r3, 0 1136; P10BE-NEXT: addi r1, r1, 144 1137; P10BE-NEXT: ld r0, 16(r1) 1138; P10BE-NEXT: mtlr r0 1139; P10BE-NEXT: blr 1140entry: 1141 %_param_data = alloca [18 x i8], align 1 1142 %.unpack0 = load i8, ptr %data, align 1 1143 %.elt1 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 1 1144 %.unpack1 = load i8, ptr %.elt1, align 1 1145 %.elt2 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 2 1146 %.unpack2 = load i8, ptr %.elt2, align 1 1147 %.elt3 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 3 1148 %.unpack3 = load i8, ptr %.elt3, align 1 1149 %.elt4 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 4 1150 %.unpack4 = load i8, ptr %.elt4, align 1 1151 %.elt5 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 5 1152 %.unpack5 = load i8, ptr %.elt5, align 1 1153 %.elt6 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 6 1154 %.unpack6 = load i8, ptr %.elt6, align 1 1155 %.elt7 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 7 1156 %.unpack7 = load i8, ptr %.elt7, align 1 1157 %.elt8 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 8 1158 %.unpack8 = load i8, ptr %.elt8, align 1 1159 %.elt9 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 9 1160 %.unpack9 = load i8, ptr %.elt9, align 1 1161 %.elt10 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 10 1162 %.unpack10 = load i8, ptr %.elt10, align 1 1163 %.elt11 = getelementptr inbounds [18 x i8], ptr %data, i64 0, i64 11 1164 %.unpack11 = load i8, ptr %.elt11, align 1 1165 store i8 %.unpack0, ptr %_param_data, align 1 1166 %.temp.1.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 1 1167 store i8 %.unpack1, ptr %.temp.1.gep, align 1 1168 %.temp.2.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 2 1169 store i8 %.unpack2, ptr %.temp.2.gep, align 1 1170 %.temp.3.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 3 1171 store i8 %.unpack3, ptr %.temp.3.gep, align 1 1172 %.temp.4.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 4 1173 store i8 %.unpack4, ptr %.temp.4.gep, align 1 1174 %.temp.5.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 5 1175 store i8 %.unpack5, ptr %.temp.5.gep, align 1 1176 %.temp.6.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 6 1177 store i8 %.unpack6, ptr %.temp.6.gep, align 1 1178 %.temp.7.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 7 1179 store i8 %.unpack7, ptr %.temp.7.gep, align 1 1180 %.temp.8.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 8 1181 store i8 %.unpack8, ptr %.temp.8.gep, align 1 1182 %.temp.9.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 9 1183 store i8 %.unpack9, ptr %.temp.9.gep, align 1 1184 %.temp.10.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 10 1185 store i8 %.unpack10, ptr %.temp.10.gep, align 1 1186 %.temp.11.gep = getelementptr inbounds [18 x i8], ptr %_param_data, i64 0, i64 11 1187 store i8 %.unpack11, ptr %.temp.11.gep, align 1 1188 call void @callee(ptr nonnull %_param_data) 1189 ret i8 0 1190} 1191 1192 1193 1194declare void @callee(ptr) local_unnamed_addr #0 1195declare void @callee_9(ptr nocapture readonly byval([9 x i8]) %data) local_unnamed_addr #0 1196 1197attributes #0 = { nounwind } 1198 1199