604 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs < %s | FileCheck %s3 4target datalayout = "e-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512"5target triple = "powerpc64le-unknown-linux-gnu"6 7%struct_S1 = type { [1 x i8] }8@gS1 = external global %struct_S1, align 19 10define void @call_test_byval_mem1() #0 {11; CHECK-LABEL: call_test_byval_mem1:12; CHECK: # %bb.0: # %entry13; CHECK-NEXT: mflr 014; CHECK-NEXT: stdu 1, -32(1)15; CHECK-NEXT: std 0, 48(1)16; CHECK-NEXT: .cfi_def_cfa_offset 3217; CHECK-NEXT: .cfi_offset lr, 1618; CHECK-NEXT: addis 3, 2, .LC0@toc@ha19; CHECK-NEXT: ld 3, .LC0@toc@l(3)20; CHECK-NEXT: lbz 3, 0(3)21; CHECK-NEXT: bl test_byval_mem122; CHECK-NEXT: nop23; CHECK-NEXT: addi 1, 1, 3224; CHECK-NEXT: ld 0, 16(1)25; CHECK-NEXT: mtlr 026; CHECK-NEXT: blr27entry:28 %call = call zeroext i8 @test_byval_mem1(ptr byval(%struct_S1) align 1 @gS1)29 ret void30}31 32define zeroext i8 @test_byval_mem1(ptr byval(%struct_S1) align 1 %s) {33; CHECK-LABEL: test_byval_mem1:34; CHECK: # %bb.0: # %entry35; CHECK-NEXT: stb 3, -8(1)36; CHECK-NEXT: clrldi 3, 3, 5637; CHECK-NEXT: blr38entry:39 %0 = load i8, ptr %s, align 140 ret i8 %041}42 43define void @call_test_byval_mem1_2() #0 {44; CHECK-LABEL: call_test_byval_mem1_2:45; CHECK: # %bb.0: # %entry46; CHECK-NEXT: mflr 047; CHECK-NEXT: stdu 1, -112(1)48; CHECK-NEXT: std 0, 128(1)49; CHECK-NEXT: .cfi_def_cfa_offset 11250; CHECK-NEXT: .cfi_offset lr, 1651; CHECK-NEXT: addis 3, 2, .LC0@toc@ha52; CHECK-NEXT: li 4, 153; CHECK-NEXT: li 5, 254; CHECK-NEXT: li 6, 355; CHECK-NEXT: li 7, 456; CHECK-NEXT: li 8, 557; CHECK-NEXT: li 9, 658; CHECK-NEXT: li 10, 759; CHECK-NEXT: ld 3, .LC0@toc@l(3)60; CHECK-NEXT: lbz 3, 0(3)61; CHECK-NEXT: stb 3, 96(1)62; CHECK-NEXT: li 3, 063; CHECK-NEXT: bl test_byval_mem1_264; CHECK-NEXT: nop65; CHECK-NEXT: addi 1, 1, 11266; CHECK-NEXT: ld 0, 16(1)67; CHECK-NEXT: mtlr 068; CHECK-NEXT: blr69entry:70 %call = call zeroext i8 @test_byval_mem1_2(i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7, ptr byval(%struct_S1) align 1 @gS1)71 ret void72}73 74define zeroext i8 @test_byval_mem1_2(i64 %v1, i64 %v2, i64 %v3, i64 %v4, i64 %v5, i64 %v6, i64 %v7, i64 %v8, ptr byval(%struct_S1) align 1 %s) {75; CHECK-LABEL: test_byval_mem1_2:76; CHECK: # %bb.0: # %entry77; CHECK-NEXT: lbz 3, 96(1)78; CHECK-NEXT: blr79entry:80 %0 = load i8, ptr %s, align 181 ret i8 %082}83 84define void @call_test_byval_mem1_3() #0 {85; CHECK-LABEL: call_test_byval_mem1_3:86; CHECK: # %bb.0: # %entry87; CHECK-NEXT: mflr 088; CHECK-NEXT: stdu 1, -32(1)89; CHECK-NEXT: std 0, 48(1)90; CHECK-NEXT: .cfi_def_cfa_offset 3291; CHECK-NEXT: .cfi_offset lr, 1692; CHECK-NEXT: addis 3, 2, .LC0@toc@ha93; CHECK-NEXT: li 4, 194; CHECK-NEXT: li 5, 295; CHECK-NEXT: li 6, 396; CHECK-NEXT: li 7, 497; CHECK-NEXT: li 8, 598; CHECK-NEXT: li 9, 699; CHECK-NEXT: ld 3, .LC0@toc@l(3)100; CHECK-NEXT: lbz 10, 0(3)101; CHECK-NEXT: li 3, 0102; CHECK-NEXT: bl test_byval_mem1_3103; CHECK-NEXT: nop104; CHECK-NEXT: addi 1, 1, 32105; CHECK-NEXT: ld 0, 16(1)106; CHECK-NEXT: mtlr 0107; CHECK-NEXT: blr108entry:109 %call = call zeroext i8 @test_byval_mem1_3(i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, ptr byval(%struct_S1) align 1 @gS1)110 ret void111}112 113define zeroext i8 @test_byval_mem1_3(i64 %v1, i64 %v2, i64 %v3, i64 %v4, i64 %v5, i64 %v6, i64 %v7, ptr byval(%struct_S1) align 1 %s) {114; CHECK-LABEL: test_byval_mem1_3:115; CHECK: # %bb.0: # %entry116; CHECK-NEXT: clrldi 3, 10, 56117; CHECK-NEXT: stb 10, -8(1)118; CHECK-NEXT: blr119entry:120 %0 = load i8, ptr %s, align 1121 ret i8 %0122}123 124define void @call_test_byval_mem1_4() #0 {125; CHECK-LABEL: call_test_byval_mem1_4:126; CHECK: # %bb.0: # %entry127; CHECK-NEXT: mflr 0128; CHECK-NEXT: stdu 1, -112(1)129; CHECK-NEXT: std 0, 128(1)130; CHECK-NEXT: .cfi_def_cfa_offset 112131; CHECK-NEXT: .cfi_offset lr, 16132; CHECK-NEXT: li 3, 7133; CHECK-NEXT: li 4, 1134; CHECK-NEXT: li 5, 2135; CHECK-NEXT: li 7, 3136; CHECK-NEXT: li 8, 4137; CHECK-NEXT: li 9, 5138; CHECK-NEXT: li 10, 6139; CHECK-NEXT: std 3, 96(1)140; CHECK-NEXT: addis 3, 2, .LC0@toc@ha141; CHECK-NEXT: ld 3, .LC0@toc@l(3)142; CHECK-NEXT: lbz 6, 0(3)143; CHECK-NEXT: li 3, 0144; CHECK-NEXT: bl test_byval_mem1_4145; CHECK-NEXT: nop146; CHECK-NEXT: addi 1, 1, 112147; CHECK-NEXT: ld 0, 16(1)148; CHECK-NEXT: mtlr 0149; CHECK-NEXT: blr150entry:151 %call = call zeroext i8 @test_byval_mem1_4(i64 0, i64 1, i64 2, ptr byval(%struct_S1) align 1 @gS1, i64 3, i64 4, i64 5, i64 6, i64 7)152 ret void153}154 155define zeroext i8 @test_byval_mem1_4(i64 %v1, i64 %v2, i64 %v3, ptr byval(%struct_S1) align 1 %s, i64 %v4, i64 %v5, i64 %v6, i64 %v7, i64 %v8) {156; CHECK-LABEL: test_byval_mem1_4:157; CHECK: # %bb.0: # %entry158; CHECK-NEXT: clrldi 3, 6, 56159; CHECK-NEXT: stb 6, 56(1)160; CHECK-NEXT: blr161entry:162 %0 = load i8, ptr %s, align 1163 ret i8 %0164}165 166define void @call_test_byval_mem1_5() #0 {167; CHECK-LABEL: call_test_byval_mem1_5:168; CHECK: # %bb.0: # %entry169; CHECK-NEXT: mflr 0170; CHECK-NEXT: stdu 1, -32(1)171; CHECK-NEXT: std 0, 48(1)172; CHECK-NEXT: .cfi_def_cfa_offset 32173; CHECK-NEXT: .cfi_offset lr, 16174; CHECK-NEXT: addis 3, 2, .LC0@toc@ha175; CHECK-NEXT: li 4, 1176; CHECK-NEXT: li 5, 2177; CHECK-NEXT: li 7, 3178; CHECK-NEXT: li 8, 4179; CHECK-NEXT: li 9, 5180; CHECK-NEXT: li 10, 6181; CHECK-NEXT: ld 3, .LC0@toc@l(3)182; CHECK-NEXT: lbz 6, 0(3)183; CHECK-NEXT: li 3, 0184; CHECK-NEXT: bl test_byval_mem1_5185; CHECK-NEXT: nop186; CHECK-NEXT: addi 1, 1, 32187; CHECK-NEXT: ld 0, 16(1)188; CHECK-NEXT: mtlr 0189; CHECK-NEXT: blr190entry:191 %call = call zeroext i8 @test_byval_mem1_5(i64 0, i64 1, i64 2, ptr byval(%struct_S1) align 1 @gS1, i64 3, i64 4, i64 5, i64 6)192 ret void193}194 195define zeroext i8 @test_byval_mem1_5(i64 %v1, i64 %v2, i64 %v3, ptr byval(%struct_S1) align 1 %s, i64 %v4, i64 %v5, i64 %v6, i64 %v7) {196; CHECK-LABEL: test_byval_mem1_5:197; CHECK: # %bb.0: # %entry198; CHECK-NEXT: clrldi 3, 6, 56199; CHECK-NEXT: stb 6, -8(1)200; CHECK-NEXT: blr201entry:202 %0 = load i8, ptr %s, align 1203 ret i8 %0204}205 206%struct_S2 = type { [2 x i8] }207@gS2 = external global %struct_S2, align 1208 209define void @call_test_byval_mem2() #0 {210; CHECK-LABEL: call_test_byval_mem2:211; CHECK: # %bb.0: # %entry212; CHECK-NEXT: mflr 0213; CHECK-NEXT: stdu 1, -32(1)214; CHECK-NEXT: std 0, 48(1)215; CHECK-NEXT: .cfi_def_cfa_offset 32216; CHECK-NEXT: .cfi_offset lr, 16217; CHECK-NEXT: addis 3, 2, .LC1@toc@ha218; CHECK-NEXT: ld 3, .LC1@toc@l(3)219; CHECK-NEXT: lhz 3, 0(3)220; CHECK-NEXT: bl test_byval_mem2221; CHECK-NEXT: nop222; CHECK-NEXT: addi 1, 1, 32223; CHECK-NEXT: ld 0, 16(1)224; CHECK-NEXT: mtlr 0225; CHECK-NEXT: blr226entry:227 %call = call zeroext i8 @test_byval_mem2(ptr byval(%struct_S2) align 1 @gS2)228 ret void229}230 231define zeroext i8 @test_byval_mem2(ptr byval(%struct_S2) align 1 %s) {232; CHECK-LABEL: test_byval_mem2:233; CHECK: # %bb.0: # %entry234; CHECK-NEXT: sth 3, -8(1)235; CHECK-NEXT: lbz 3, -8(1)236; CHECK-NEXT: blr237entry:238 %0 = load i8, ptr %s, align 1239 ret i8 %0240}241 242%struct_S3 = type { [3 x i8] }243@gS3 = external global %struct_S3, align 1244 245define void @call_test_byval_mem3() #0 {246; CHECK-LABEL: call_test_byval_mem3:247; CHECK: # %bb.0: # %entry248; CHECK-NEXT: mflr 0249; CHECK-NEXT: stdu 1, -32(1)250; CHECK-NEXT: std 0, 48(1)251; CHECK-NEXT: .cfi_def_cfa_offset 32252; CHECK-NEXT: .cfi_offset lr, 16253; CHECK-NEXT: addis 3, 2, .LC2@toc@ha254; CHECK-NEXT: ld 3, .LC2@toc@l(3)255; CHECK-NEXT: lbz 4, 2(3)256; CHECK-NEXT: stb 4, 34(1)257; CHECK-NEXT: lhz 3, 0(3)258; CHECK-NEXT: sth 3, 32(1)259; CHECK-NEXT: ld 3, 32(1)260; CHECK-NEXT: bl test_byval_mem3261; CHECK-NEXT: nop262; CHECK-NEXT: addi 1, 1, 32263; CHECK-NEXT: ld 0, 16(1)264; CHECK-NEXT: mtlr 0265; CHECK-NEXT: blr266entry:267 %call = call zeroext i8 @test_byval_mem3(ptr byval(%struct_S3) align 1 @gS3)268 ret void269}270 271define zeroext i8 @test_byval_mem3(ptr byval(%struct_S3) align 1 %s) {272; CHECK-LABEL: test_byval_mem3:273; CHECK: # %bb.0: # %entry274; CHECK-NEXT: sth 3, -8(1)275; CHECK-NEXT: rldicl 3, 3, 48, 16276; CHECK-NEXT: stb 3, -6(1)277; CHECK-NEXT: lbz 3, -8(1)278; CHECK-NEXT: blr279entry:280 %0 = load i8, ptr %s, align 1281 ret i8 %0282}283 284%struct_S4 = type { [4 x i8] }285@gS4 = external global %struct_S4, align 1286 287define void @call_test_byval_mem4() #0 {288; CHECK-LABEL: call_test_byval_mem4:289; CHECK: # %bb.0: # %entry290; CHECK-NEXT: mflr 0291; CHECK-NEXT: stdu 1, -32(1)292; CHECK-NEXT: std 0, 48(1)293; CHECK-NEXT: .cfi_def_cfa_offset 32294; CHECK-NEXT: .cfi_offset lr, 16295; CHECK-NEXT: addis 3, 2, .LC3@toc@ha296; CHECK-NEXT: ld 3, .LC3@toc@l(3)297; CHECK-NEXT: lwz 3, 0(3)298; CHECK-NEXT: bl test_byval_mem4299; CHECK-NEXT: nop300; CHECK-NEXT: addi 1, 1, 32301; CHECK-NEXT: ld 0, 16(1)302; CHECK-NEXT: mtlr 0303; CHECK-NEXT: blr304entry:305 %call = call zeroext i8 @test_byval_mem4(ptr byval(%struct_S4) align 1 @gS4)306 ret void307}308 309define zeroext i8 @test_byval_mem4(ptr byval(%struct_S4) align 1 %s) {310; CHECK-LABEL: test_byval_mem4:311; CHECK: # %bb.0: # %entry312; CHECK-NEXT: stw 3, -8(1)313; CHECK-NEXT: lbz 3, -8(1)314; CHECK-NEXT: blr315entry:316 %0 = load i8, ptr %s, align 1317 ret i8 %0318}319 320%struct_S8 = type { [8 x i8] }321@gS8 = external global %struct_S8, align 1322 323define void @call_test_byval_mem8() #0 {324; CHECK-LABEL: call_test_byval_mem8:325; CHECK: # %bb.0: # %entry326; CHECK-NEXT: mflr 0327; CHECK-NEXT: stdu 1, -32(1)328; CHECK-NEXT: std 0, 48(1)329; CHECK-NEXT: .cfi_def_cfa_offset 32330; CHECK-NEXT: .cfi_offset lr, 16331; CHECK-NEXT: addis 3, 2, .LC4@toc@ha332; CHECK-NEXT: ld 3, .LC4@toc@l(3)333; CHECK-NEXT: ld 3, 0(3)334; CHECK-NEXT: bl test_byval_mem8335; CHECK-NEXT: nop336; CHECK-NEXT: addi 1, 1, 32337; CHECK-NEXT: ld 0, 16(1)338; CHECK-NEXT: mtlr 0339; CHECK-NEXT: blr340entry:341 %call = call zeroext i8 @test_byval_mem8(ptr byval(%struct_S8) align 1 @gS8)342 ret void343}344 345define zeroext i8 @test_byval_mem8(ptr byval(%struct_S8) align 1 %s) {346; CHECK-LABEL: test_byval_mem8:347; CHECK: # %bb.0: # %entry348; CHECK-NEXT: std 3, -8(1)349; CHECK-NEXT: clrldi 3, 3, 56350; CHECK-NEXT: blr351entry:352 %0 = load i8, ptr %s, align 1353 ret i8 %0354}355 356%struct_S32 = type {[32 x i8] }357@gS32 = external global %struct_S32, align 1358 359define void @call_test_byval_mem32() #0 {360; CHECK-LABEL: call_test_byval_mem32:361; CHECK: # %bb.0: # %entry362; CHECK-NEXT: mflr 0363; CHECK-NEXT: stdu 1, -32(1)364; CHECK-NEXT: std 0, 48(1)365; CHECK-NEXT: .cfi_def_cfa_offset 32366; CHECK-NEXT: .cfi_offset lr, 16367; CHECK-NEXT: addis 3, 2, .LC5@toc@ha368; CHECK-NEXT: ld 3, .LC5@toc@l(3)369; CHECK-NEXT: ld 6, 24(3)370; CHECK-NEXT: ld 5, 16(3)371; CHECK-NEXT: ld 4, 8(3)372; CHECK-NEXT: ld 3, 0(3)373; CHECK-NEXT: bl test_byval_mem32374; CHECK-NEXT: nop375; CHECK-NEXT: addi 1, 1, 32376; CHECK-NEXT: ld 0, 16(1)377; CHECK-NEXT: mtlr 0378; CHECK-NEXT: blr379entry:380 %call = call zeroext i8 @test_byval_mem32(ptr byval(%struct_S32) align 1 @gS32)381 ret void382}383 384define zeroext i8 @test_byval_mem32(ptr byval(%struct_S32) align 1 %s) {385; CHECK-LABEL: test_byval_mem32:386; CHECK: # %bb.0: # %entry387; CHECK-NEXT: std 3, -32(1)388; CHECK-NEXT: clrldi 3, 3, 56389; CHECK-NEXT: std 4, -24(1)390; CHECK-NEXT: std 5, -16(1)391; CHECK-NEXT: std 6, -8(1)392; CHECK-NEXT: blr393entry:394 %0 = load i8, ptr %s, align 1395 ret i8 %0396}397 398define void @call_test_byval_mem32_2() #0 {399; CHECK-LABEL: call_test_byval_mem32_2:400; CHECK: # %bb.0: # %entry401; CHECK-NEXT: mflr 0402; CHECK-NEXT: stdu 1, -32(1)403; CHECK-NEXT: std 0, 48(1)404; CHECK-NEXT: .cfi_def_cfa_offset 32405; CHECK-NEXT: .cfi_offset lr, 16406; CHECK-NEXT: vspltisw 2, 1407; CHECK-NEXT: addis 3, 2, .LC5@toc@ha408; CHECK-NEXT: ld 3, .LC5@toc@l(3)409; CHECK-NEXT: xvcvsxwdp 1, 34410; CHECK-NEXT: ld 7, 24(3)411; CHECK-NEXT: ld 6, 16(3)412; CHECK-NEXT: ld 5, 8(3)413; CHECK-NEXT: ld 4, 0(3)414; CHECK-NEXT: bl test_byval_mem32_2415; CHECK-NEXT: nop416; CHECK-NEXT: addi 1, 1, 32417; CHECK-NEXT: ld 0, 16(1)418; CHECK-NEXT: mtlr 0419; CHECK-NEXT: blr420entry:421 %call = call zeroext i8 @test_byval_mem32_2(float 1.0, ptr byval(%struct_S32) align 1 @gS32)422 ret void423}424 425define zeroext i8 @test_byval_mem32_2(float %f, ptr byval(%struct_S32) align 1 %s) {426; CHECK-LABEL: test_byval_mem32_2:427; CHECK: # %bb.0: # %entry428; CHECK-NEXT: clrldi 3, 4, 56429; CHECK-NEXT: std 4, -32(1)430; CHECK-NEXT: std 5, -24(1)431; CHECK-NEXT: std 6, -16(1)432; CHECK-NEXT: std 7, -8(1)433; CHECK-NEXT: blr434entry:435 %0 = load i8, ptr %s, align 1436 ret i8 %0437}438 439define void @call_test_byval_mem32_3() #0 {440; CHECK-LABEL: call_test_byval_mem32_3:441; CHECK: # %bb.0: # %entry442; CHECK-NEXT: mflr 0443; CHECK-NEXT: stdu 1, -112(1)444; CHECK-NEXT: std 0, 128(1)445; CHECK-NEXT: .cfi_def_cfa_offset 112446; CHECK-NEXT: .cfi_offset lr, 16447; CHECK-NEXT: addis 3, 2, .LC5@toc@ha448; CHECK-NEXT: li 4, 16449; CHECK-NEXT: vspltisw 2, 1450; CHECK-NEXT: vspltisw 3, 4451; CHECK-NEXT: li 5, 3452; CHECK-NEXT: li 7, 2453; CHECK-NEXT: ld 3, .LC5@toc@l(3)454; CHECK-NEXT: xvcvsxwdp 1, 34455; CHECK-NEXT: xvcvsxwdp 2, 35456; CHECK-NEXT: lxvd2x 0, 3, 4457; CHECK-NEXT: li 4, 88458; CHECK-NEXT: stxvd2x 0, 1, 4459; CHECK-NEXT: li 4, 72460; CHECK-NEXT: lxvd2x 0, 0, 3461; CHECK-NEXT: stxvd2x 0, 1, 4462; CHECK-NEXT: ld 10, 16(3)463; CHECK-NEXT: ld 9, 8(3)464; CHECK-NEXT: ld 8, 0(3)465; CHECK-NEXT: li 3, 1466; CHECK-NEXT: bl test_byval_mem32_3467; CHECK-NEXT: nop468; CHECK-NEXT: addi 1, 1, 112469; CHECK-NEXT: ld 0, 16(1)470; CHECK-NEXT: mtlr 0471; CHECK-NEXT: blr472entry:473 %call = call zeroext i8 @test_byval_mem32_3(i64 1, float 1.0, i64 3, double 4.0, i32 2, ptr byval(%struct_S32) align 1 @gS32)474 ret void475}476 477define zeroext i8 @test_byval_mem32_3(i64 %i1, float %f, i64 %i2, double %d, i32 %i3, ptr byval(%struct_S32) align 1 %s) {478; CHECK-LABEL: test_byval_mem32_3:479; CHECK: # %bb.0: # %entry480; CHECK-NEXT: clrldi 3, 8, 56481; CHECK-NEXT: std 8, 72(1)482; CHECK-NEXT: std 9, 80(1)483; CHECK-NEXT: std 10, 88(1)484; CHECK-NEXT: blr485entry:486 %0 = load i8, ptr %s, align 1487 ret i8 %0488}489 490%struct_S64 = type {[64 x i8] }491@gS64= external global %struct_S64, align 1492 493define void @call_test_byval_mem64() #0 {494; CHECK-LABEL: call_test_byval_mem64:495; CHECK: # %bb.0: # %entry496; CHECK-NEXT: mflr 0497; CHECK-NEXT: stdu 1, -32(1)498; CHECK-NEXT: std 0, 48(1)499; CHECK-NEXT: .cfi_def_cfa_offset 32500; CHECK-NEXT: .cfi_offset lr, 16501; CHECK-NEXT: addis 3, 2, .LC6@toc@ha502; CHECK-NEXT: ld 3, .LC6@toc@l(3)503; CHECK-NEXT: ld 10, 56(3)504; CHECK-NEXT: ld 9, 48(3)505; CHECK-NEXT: ld 8, 40(3)506; CHECK-NEXT: ld 7, 32(3)507; CHECK-NEXT: ld 6, 24(3)508; CHECK-NEXT: ld 5, 16(3)509; CHECK-NEXT: ld 4, 8(3)510; CHECK-NEXT: ld 3, 0(3)511; CHECK-NEXT: bl test_byval_mem64512; CHECK-NEXT: nop513; CHECK-NEXT: addi 1, 1, 32514; CHECK-NEXT: ld 0, 16(1)515; CHECK-NEXT: mtlr 0516; CHECK-NEXT: blr517entry:518 %call = call zeroext i8 @test_byval_mem64(ptr byval(%struct_S64) align 1 @gS64)519 ret void520}521 522define zeroext i8 @test_byval_mem64(ptr byval(%struct_S64) align 1 %s) {523; CHECK-LABEL: test_byval_mem64:524; CHECK: # %bb.0: # %entry525; CHECK-NEXT: std 3, -64(1)526; CHECK-NEXT: clrldi 3, 3, 56527; CHECK-NEXT: std 4, -56(1)528; CHECK-NEXT: std 5, -48(1)529; CHECK-NEXT: std 6, -40(1)530; CHECK-NEXT: std 7, -32(1)531; CHECK-NEXT: std 8, -24(1)532; CHECK-NEXT: std 9, -16(1)533; CHECK-NEXT: std 10, -8(1)534; CHECK-NEXT: blr535entry:536 %0 = load i8, ptr %s, align 1537 ret i8 %0538}539 540%struct_S65 = type { [65 x i8] }541@gS65 = external global %struct_S65, align 1542 543define void @call_test_byval_mem65() #0 {544; CHECK-LABEL: call_test_byval_mem65:545; CHECK: # %bb.0: # %entry546; CHECK-NEXT: mflr 0547; CHECK-NEXT: stdu 1, -112(1)548; CHECK-NEXT: std 0, 128(1)549; CHECK-NEXT: .cfi_def_cfa_offset 112550; CHECK-NEXT: .cfi_offset lr, 16551; CHECK-NEXT: addis 3, 2, .LC7@toc@ha552; CHECK-NEXT: li 4, 48553; CHECK-NEXT: li 5, 80554; CHECK-NEXT: li 6, 64555; CHECK-NEXT: ld 3, .LC7@toc@l(3)556; CHECK-NEXT: lxvd2x 0, 3, 4557; CHECK-NEXT: stxvd2x 0, 1, 5558; CHECK-NEXT: li 5, 32559; CHECK-NEXT: lxvd2x 0, 3, 5560; CHECK-NEXT: stxvd2x 0, 1, 6561; CHECK-NEXT: li 6, 16562; CHECK-NEXT: lxvd2x 0, 3, 6563; CHECK-NEXT: stxvd2x 0, 1, 4564; CHECK-NEXT: lxvd2x 0, 0, 3565; CHECK-NEXT: stxvd2x 0, 1, 5566; CHECK-NEXT: lbz 4, 64(3)567; CHECK-NEXT: stb 4, 96(1)568; CHECK-NEXT: ld 10, 56(3)569; CHECK-NEXT: ld 9, 48(3)570; CHECK-NEXT: ld 8, 40(3)571; CHECK-NEXT: ld 7, 32(3)572; CHECK-NEXT: ld 6, 24(3)573; CHECK-NEXT: ld 5, 16(3)574; CHECK-NEXT: ld 4, 8(3)575; CHECK-NEXT: ld 3, 0(3)576; CHECK-NEXT: bl test_byval_mem65577; CHECK-NEXT: nop578; CHECK-NEXT: addi 1, 1, 112579; CHECK-NEXT: ld 0, 16(1)580; CHECK-NEXT: mtlr 0581; CHECK-NEXT: blr582entry:583 %call = call zeroext i8 @test_byval_mem65(ptr byval(%struct_S65) align 1 @gS65)584 ret void585}586 587define zeroext i8 @test_byval_mem65(ptr byval(%struct_S65) align 1 %s) {588; CHECK-LABEL: test_byval_mem65:589; CHECK: # %bb.0: # %entry590; CHECK-NEXT: std 3, 32(1)591; CHECK-NEXT: clrldi 3, 3, 56592; CHECK-NEXT: std 4, 40(1)593; CHECK-NEXT: std 5, 48(1)594; CHECK-NEXT: std 6, 56(1)595; CHECK-NEXT: std 7, 64(1)596; CHECK-NEXT: std 8, 72(1)597; CHECK-NEXT: std 9, 80(1)598; CHECK-NEXT: std 10, 88(1)599; CHECK-NEXT: blr600entry:601 %0 = load i8, ptr %s, align 1602 ret i8 %0603}604