1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=+altivec \ 3; RUN: -vec-extabi -mtriple powerpc-ibm-aix-xcoff < %s | \ 4; RUN: FileCheck %s --check-prefix=32BIT 5 6; RUN: llc -verify-machineinstrs -mcpu=pwr7 -mattr=+altivec \ 7; RUN: -vec-extabi -mtriple powerpc64-ibm-aix-xcoff < %s | \ 8; RUN: FileCheck %s --check-prefix=64BIT 9%struct.Test = type { double, double, double, double } 10 11@__const.caller.t = private unnamed_addr constant %struct.Test { double 0.000000e+00, double 1.000000e+00, double 2.000000e+00, double 3.000000e+00 }, align 8 12 13define double @caller() { 14; 32BIT-LABEL: caller: 15; 32BIT: # %bb.0: # %entry 16; 32BIT-NEXT: mflr 0 17; 32BIT-NEXT: stwu 1, -192(1) 18; 32BIT-NEXT: lis 4, 16392 19; 32BIT-NEXT: stw 0, 200(1) 20; 32BIT-NEXT: li 3, 0 21; 32BIT-NEXT: xxlxor 0, 0, 0 22; 32BIT-NEXT: xxlxor 1, 1, 1 23; 32BIT-NEXT: stw 4, 180(1) 24; 32BIT-NEXT: lis 4, 16384 25; 32BIT-NEXT: stw 3, 184(1) 26; 32BIT-NEXT: stw 3, 176(1) 27; 32BIT-NEXT: stw 4, 172(1) 28; 32BIT-NEXT: lis 4, 16368 29; 32BIT-NEXT: stw 3, 168(1) 30; 32BIT-NEXT: stw 3, 160(1) 31; 32BIT-NEXT: stw 4, 164(1) 32; 32BIT-NEXT: stw 3, 156(1) 33; 32BIT-NEXT: li 3, 136 34; 32BIT-NEXT: li 4, 120 35; 32BIT-NEXT: xxlxor 2, 2, 2 36; 32BIT-NEXT: stxvw4x 0, 1, 3 37; 32BIT-NEXT: li 3, 104 38; 32BIT-NEXT: stxvw4x 0, 1, 4 39; 32BIT-NEXT: li 4, 88 40; 32BIT-NEXT: stxvw4x 0, 1, 3 41; 32BIT-NEXT: stxvw4x 0, 1, 4 42; 32BIT-NEXT: lwz 4, L..C0(2) # %const.0 43; 32BIT-NEXT: li 3, 72 44; 32BIT-NEXT: stxvw4x 0, 1, 3 45; 32BIT-NEXT: li 3, 48 46; 32BIT-NEXT: xxlxor 34, 34, 34 47; 32BIT-NEXT: xxlxor 35, 35, 35 48; 32BIT-NEXT: lxvd2x 0, 0, 4 49; 32BIT-NEXT: li 4, 512 50; 32BIT-NEXT: xxlxor 36, 36, 36 51; 32BIT-NEXT: xxlxor 37, 37, 37 52; 32BIT-NEXT: xxlxor 38, 38, 38 53; 32BIT-NEXT: xxlxor 39, 39, 39 54; 32BIT-NEXT: xxlxor 40, 40, 40 55; 32BIT-NEXT: xxlxor 41, 41, 41 56; 32BIT-NEXT: xxlxor 42, 42, 42 57; 32BIT-NEXT: stxvd2x 0, 1, 3 58; 32BIT-NEXT: stw 4, 152(1) 59; 32BIT-NEXT: li 3, 128 60; 32BIT-NEXT: li 4, 256 61; 32BIT-NEXT: xxlxor 43, 43, 43 62; 32BIT-NEXT: xxlxor 44, 44, 44 63; 32BIT-NEXT: xxlxor 45, 45, 45 64; 32BIT-NEXT: xxlxor 3, 3, 3 65; 32BIT-NEXT: xxlxor 4, 4, 4 66; 32BIT-NEXT: xxlxor 5, 5, 5 67; 32BIT-NEXT: xxlxor 6, 6, 6 68; 32BIT-NEXT: xxlxor 7, 7, 7 69; 32BIT-NEXT: xxlxor 8, 8, 8 70; 32BIT-NEXT: xxlxor 9, 9, 9 71; 32BIT-NEXT: xxlxor 10, 10, 10 72; 32BIT-NEXT: xxlxor 11, 11, 11 73; 32BIT-NEXT: xxlxor 12, 12, 12 74; 32BIT-NEXT: xxlxor 13, 13, 13 75; 32BIT-NEXT: bl .callee[PR] 76; 32BIT-NEXT: nop 77; 32BIT-NEXT: addi 1, 1, 192 78; 32BIT-NEXT: lwz 0, 8(1) 79; 32BIT-NEXT: mtlr 0 80; 32BIT-NEXT: blr 81; 82; 64BIT-LABEL: caller: 83; 64BIT: # %bb.0: # %entry 84; 64BIT-NEXT: mflr 0 85; 64BIT-NEXT: stdu 1, -224(1) 86; 64BIT-NEXT: li 3, 2049 87; 64BIT-NEXT: std 0, 240(1) 88; 64BIT-NEXT: li 4, 1 89; 64BIT-NEXT: xxlxor 0, 0, 0 90; 64BIT-NEXT: xxlxor 1, 1, 1 91; 64BIT-NEXT: rldic 3, 3, 51, 1 92; 64BIT-NEXT: rldic 4, 4, 62, 1 93; 64BIT-NEXT: xxlxor 2, 2, 2 94; 64BIT-NEXT: xxlxor 34, 34, 34 95; 64BIT-NEXT: std 3, 216(1) 96; 64BIT-NEXT: li 3, 1023 97; 64BIT-NEXT: std 4, 208(1) 98; 64BIT-NEXT: li 4, 0 99; 64BIT-NEXT: xxlxor 35, 35, 35 100; 64BIT-NEXT: xxlxor 36, 36, 36 101; 64BIT-NEXT: rldic 3, 3, 52, 2 102; 64BIT-NEXT: std 4, 192(1) 103; 64BIT-NEXT: xxlxor 37, 37, 37 104; 64BIT-NEXT: xxlxor 38, 38, 38 105; 64BIT-NEXT: xxlxor 39, 39, 39 106; 64BIT-NEXT: std 3, 200(1) 107; 64BIT-NEXT: li 3, 160 108; 64BIT-NEXT: xxlxor 40, 40, 40 109; 64BIT-NEXT: stxvw4x 0, 1, 3 110; 64BIT-NEXT: li 3, 144 111; 64BIT-NEXT: xxlxor 41, 41, 41 112; 64BIT-NEXT: xxlxor 42, 42, 42 113; 64BIT-NEXT: stxvw4x 0, 1, 3 114; 64BIT-NEXT: li 3, 128 115; 64BIT-NEXT: xxlxor 43, 43, 43 116; 64BIT-NEXT: stxvw4x 0, 1, 3 117; 64BIT-NEXT: ld 3, L..C0(2) # %const.0 118; 64BIT-NEXT: xxlxor 44, 44, 44 119; 64BIT-NEXT: xxlxor 45, 45, 45 120; 64BIT-NEXT: lxvd2x 0, 0, 3 121; 64BIT-NEXT: li 3, 80 122; 64BIT-NEXT: xxlxor 3, 3, 3 123; 64BIT-NEXT: xxlxor 4, 4, 4 124; 64BIT-NEXT: xxlxor 5, 5, 5 125; 64BIT-NEXT: stxvd2x 0, 1, 3 126; 64BIT-NEXT: li 3, 512 127; 64BIT-NEXT: std 4, 176(1) 128; 64BIT-NEXT: li 4, 256 129; 64BIT-NEXT: xxlxor 6, 6, 6 130; 64BIT-NEXT: xxlxor 7, 7, 7 131; 64BIT-NEXT: xxlxor 8, 8, 8 132; 64BIT-NEXT: std 3, 184(1) 133; 64BIT-NEXT: li 3, 128 134; 64BIT-NEXT: xxlxor 9, 9, 9 135; 64BIT-NEXT: xxlxor 10, 10, 10 136; 64BIT-NEXT: xxlxor 11, 11, 11 137; 64BIT-NEXT: xxlxor 12, 12, 12 138; 64BIT-NEXT: xxlxor 13, 13, 13 139; 64BIT-NEXT: bl .callee[PR] 140; 64BIT-NEXT: nop 141; 64BIT-NEXT: addi 1, 1, 224 142; 64BIT-NEXT: ld 0, 16(1) 143; 64BIT-NEXT: mtlr 0 144; 64BIT-NEXT: blr 145 146 entry: 147 %call = tail call double @callee(i32 signext 128, i32 signext 256, double 0.000000e+00, double 0.000000e+00, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 0.000000e+00, double 0.000000e+00>, <2 x double> <double 2.400000e+01, double 2.500000e+01>, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, i32 signext 512, ptr nonnull byval(%struct.Test) align 4 @__const.caller.t) 148 ret double %call 149} 150 151declare double @callee(i32 signext, i32 signext, double, double, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, <2 x double>, double, double, double, double, double, double, double, double, double, double, double, i32 signext, ptr byval(%struct.Test) align 8) 152