1; RUN: llc -verify-machineinstrs -stop-before=ppc-vsx-copy -vec-extabi \ 2; RUN: -mcpu=pwr7 -mtriple powerpc-ibm-aix-xcoff < %s 2>&1 | \ 3; RUN: FileCheck %s 4 5define void @caller() { 6entry: 7 %call = tail call <4 x i32> (double, double, double, ...) @split_spill(double 0.000000e+00, double 1.000000e+00, double 2.000000e+00, <4 x i32> <i32 1, i32 2, i32 3, i32 4>) 8 ret void 9} 10 11declare <4 x i32> @split_spill(double, double, double, ...) 12 13; CHECK: ADJCALLSTACKDOWN 64, 0, implicit-def dead $r1, implicit $r1 14; CHECK: [[VECCONSTADDR:%[0-9]+]]:gprc = LWZtoc %const.0, $r2 :: (load (s32) from got) 15; CHECK: [[VECCONST:%[0-9]+]]:vsrc = LXVW4X $zero, killed [[VECCONSTADDR]] :: (load (s128) from constant-pool) 16; CHECK: [[STACKOFFSET:%[0-9]+]]:gprc = LI 48 17; CHECK: STXVW4X killed [[VECCONST]], $r1, killed [[STACKOFFSET]] :: (store (s128)) 18; CHECK-DAG: [[ELEMENT1:%[0-9]+]]:gprc = LWZ 48, $r1 :: (load (s32)) 19; CHECK-DAG: [[ELEMENT2:%[0-9]+]]:gprc = LWZ 52, $r1 :: (load (s32)) 20; CHECK: [[FLOAT1SPLAT:%[0-9]+]]:vrrc = VSPLTISW 1 21; CHECK: [[FLOAT1COPY:%[0-9]+]]:vsrc = COPY [[FLOAT1SPLAT]] 22; CHECK: [[DOUBLE1:%[0-9]+]]:vsrc = XVCVSXWDP killed [[FLOAT1COPY]], implicit $rm 23; CHECK: [[DOUBLE1COPY:%[0-9]+]]:vsfrc = COPY [[DOUBLE1]] 24; CHECK: [[FLOAT2SPLAT:%[0-9]+]]:vrrc = VSPLTISW 2 25; CHECK: [[FLOAT2COPY:%[0-9]+]]:vsrc = COPY [[FLOAT2SPLAT]] 26; CHECK: [[DOUBLE2:%[0-9]+]]:vsrc = XVCVSXWDP killed [[FLOAT2COPY]], implicit $rm 27; CHECK: [[DOUBLE2COPY:%[0-9]+]]:vsfrc = COPY [[DOUBLE2]] 28 29; CHECK: [[DZERO:%[0-9]+]]:vsfrc = XXLXORdpz 30; CHECK: [[DTOI1:%[0-9]+]]:gprc = LIS 16368 31; CHECK: [[DTOI2:%[0-9]+]]:gprc = LIS 16384 32; CHECK: [[IZERO:%[0-9]+]]:gprc = LI 0 33 34; CHECK-DAG: $f1 = COPY [[DZERO]] 35; CHECK-DAG: $r3 = COPY [[IZERO]] 36; CHECK-DAG: $r4 = COPY [[IZERO]] 37 38; CHECK-DAG: $f2 = COPY [[DOUBLE1COPY]] 39; CHECK-DAG: $r5 = COPY [[DTOI1]] 40; CHECK-DAG: $r6 = COPY [[IZERO]] 41 42; CHECK-DAG: $f3 = COPY [[DOUBLE2COPY]] 43; CHECK-DAG: $r7 = COPY [[DTOI2]] 44; CHECK-DAG: $r8 = COPY [[IZERO]] 45 46; CHECK-DAG: $r9 = COPY [[ELEMENT1]] 47; CHECK-DAG: $r10 = COPY [[ELEMENT2]] 48 49; CHECK: BL_NOP <mcsymbol .split_spill[PR]>, csr_aix32_altivec, implicit-def dead $lr, implicit $rm, implicit $f1, implicit $r3, implicit $r4, implicit $f2, implicit $r5, implicit $r6, implicit $f3, implicit $r7, implicit $r8, implicit $r9, implicit $r10, implicit $r2, implicit-def $r1, implicit-def $v2 50