brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.2 KiB · 9d537d8 Raw
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