Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / PowerPC / aix32-vector-vararg-caller-split.ll
blob04f81124b6d8c6d3c5738597d144960032f7f768
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
5 define void @caller() {
6 entry:
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
11 declare <4 x i32> @split_spill(double, double, double, ...)
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]]
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
34 ; CHECK-DAG: $f1 = COPY [[DZERO]]
35 ; CHECK-DAG: $r3 = COPY [[IZERO]]
36 ; CHECK-DAG: $r4 = COPY [[IZERO]]
38 ; CHECK-DAG: $f2 = COPY [[DOUBLE1COPY]]
39 ; CHECK-DAG: $r5 = COPY [[DTOI1]]
40 ; CHECK-DAG: $r6 = COPY [[IZERO]]
42 ; CHECK-DAG: $f3 = COPY [[DOUBLE2COPY]]
43 ; CHECK-DAG: $r7 = COPY [[DTOI2]]
44 ; CHECK-DAG: $r8 = COPY [[IZERO]]
46 ; CHECK-DAG: $r9 = COPY [[ELEMENT1]]
47 ; CHECK-DAG: $r10 = COPY [[ELEMENT2]]
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