xref: /llvm-project/llvm/test/CodeGen/PowerPC/aix-p8vector-liveins.ll (revision 8b20f1b92444a95c16e0a21161515dbf5b03f424)
1; RUN: llc -mtriple powerpc-ibm-aix-xcoff -mcpu=pwr8 \
2; RUN:   -verify-machineinstrs -stop-after=finalize-isel  < %s | \
3; RUN:   FileCheck --check-prefixes=POWR8,VSX %s
4; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr7 \
5; RUN:   -verify-machineinstrs -mattr=-vsx -stop-after=finalize-isel \
6; RUN:    < %s | FileCheck %s --check-prefixes=NOVSX,NOP8V
7; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -mcpu=pwr7 \
8; RUN:   -verify-machineinstrs -mattr=vsx -stop-after=finalize-isel \
9; RUN:    < %s | FileCheck %s --check-prefixes=VSX,NOP8V
10
11define float @vssr(float %a, float %b, float %c, float %d, float %e) {
12entry:
13  %add = fadd float %a, %b
14  %add1 = fadd float %add, %c
15  %add2 = fadd float %add1, %d
16  %add3 = fadd float %add2, %e
17  ret float %add3
18}
19
20; POWR8-LABEL: name:            vssr
21; POWR8:       - { id: 0, class: vssrc, preferred-register: '', flags: [  ] }
22; POWR8:       - { id: 1, class: vssrc, preferred-register: '', flags: [  ] }
23; POWR8:       - { id: 2, class: vssrc, preferred-register: '', flags: [  ] }
24; POWR8:       - { id: 3, class: vssrc, preferred-register: '', flags: [  ] }
25; POWR8:       - { id: 4, class: vssrc, preferred-register: '', flags: [  ] }
26; POWR8:       - { id: 5, class: vssrc, preferred-register: '', flags: [  ] }
27; POWR8:       - { id: 6, class: vssrc, preferred-register: '', flags: [  ] }
28; POWR8:       - { id: 7, class: vssrc, preferred-register: '', flags: [  ] }
29; POWR8:       - { id: 8, class: vssrc, preferred-register: '', flags: [  ] }
30; POWR8:       %4:vssrc = COPY $f5
31; POWR8:       %3:vssrc = COPY $f4
32; POWR8:       %2:vssrc = COPY $f3
33; POWR8:       %1:vssrc = COPY $f2
34; POWR8:       %0:vssrc = COPY $f1
35; POWR8:       %5:vssrc = nofpexcept XSADDSP %0, %1
36; POWR8:       %6:vssrc = nofpexcept XSADDSP killed %5, %2
37; POWR8:       %7:vssrc = nofpexcept XSADDSP killed %6, %3
38; POWR8:       %8:vssrc = nofpexcept XSADDSP killed %7, %4
39; POWR8:       $f1 = COPY %8
40
41; NOP8V-LABEL: name:            vssr
42; NOP8V:       registers:
43; NOP8V:       - { id: 0, class: f4rc, preferred-register: '', flags: [  ] }
44; NOP8V:       - { id: 1, class: f4rc, preferred-register: '', flags: [  ] }
45; NOP8V:       - { id: 2, class: f4rc, preferred-register: '', flags: [  ] }
46; NOP8V:       - { id: 3, class: f4rc, preferred-register: '', flags: [  ] }
47; NOP8V:       - { id: 4, class: f4rc, preferred-register: '', flags: [  ] }
48; NOP8V:       - { id: 5, class: f4rc, preferred-register: '', flags: [  ] }
49; NOP8V:       - { id: 6, class: f4rc, preferred-register: '', flags: [  ] }
50; NOP8V:       - { id: 7, class: f4rc, preferred-register: '', flags: [  ] }
51; NOP8V:       - { id: 8, class: f4rc, preferred-register: '', flags: [  ] }
52; NOP8V:        %4:f4rc = COPY $f5
53; NOP8V:        %3:f4rc = COPY $f4
54; NOP8V:        %2:f4rc = COPY $f3
55; NOP8V:        %1:f4rc = COPY $f2
56; NOP8V:        %0:f4rc = COPY $f1
57; NOP8V:        %5:f4rc = nofpexcept FADDS %0, %1, implicit $rm
58; NOP8V:        %6:f4rc = nofpexcept FADDS killed %5, %2, implicit $rm
59; NOP8V:        %7:f4rc = nofpexcept FADDS killed %6, %3, implicit $rm
60; NOP8V:        %8:f4rc = nofpexcept FADDS killed %7, %4, implicit $rm
61; NOP8V:        $f1 = COPY %8
62
63define double @vsfr(double %a, double %b, double %c, double %d, double %e) {
64entry:
65  %add = fadd double %a, %b
66  %add1 = fadd double %add, %c
67  %add2 = fadd double %add1, %d
68  %add3 = fadd double %add2, %e
69  ret double %add3
70}
71
72; VSX-LABEL:   vsfr
73; VSX:         registers:
74; VSX:          - { id: 0, class: vsfrc, preferred-register: '', flags: [  ] }
75; VSX:          - { id: 1, class: vsfrc, preferred-register: '', flags: [  ] }
76; VSX:          - { id: 2, class: vsfrc, preferred-register: '', flags: [  ] }
77; VSX:          - { id: 3, class: vsfrc, preferred-register: '', flags: [  ] }
78; VSX:          - { id: 4, class: vsfrc, preferred-register: '', flags: [  ] }
79; VSX:          - { id: 5, class: vsfrc, preferred-register: '', flags: [  ] }
80; VSX:          - { id: 6, class: vsfrc, preferred-register: '', flags: [  ] }
81; VSX:          - { id: 7, class: vsfrc, preferred-register: '', flags: [  ] }
82; VSX:          - { id: 8, class: vsfrc, preferred-register: '', flags: [  ] }
83; VSX:          %4:vsfrc = COPY $f5
84; VSX:          %3:vsfrc = COPY $f4
85; VSX:          %2:vsfrc = COPY $f3
86; VSX:          %1:vsfrc = COPY $f2
87; VSX:          %0:vsfrc = COPY $f1
88; VSX:          %5:vsfrc = nofpexcept XSADDDP %0, %1, implicit $rm
89; VSX:          %6:vsfrc = nofpexcept XSADDDP killed %5, %2, implicit $rm
90; VSX:          %7:vsfrc = nofpexcept XSADDDP killed %6, %3, implicit $rm
91; VSX:          %8:vsfrc = nofpexcept XSADDDP killed %7, %4, implicit $rm
92; VSX:          $f1 = COPY %8
93
94; NOVSX-LABEL:  vsfr
95; NOVSX:        registers:
96; NOVSX:        - { id: 0, class: f8rc, preferred-register: '', flags: [  ] }
97; NOVSX:        - { id: 1, class: f8rc, preferred-register: '', flags: [  ] }
98; NOVSX:        - { id: 2, class: f8rc, preferred-register: '', flags: [  ] }
99; NOVSX:        - { id: 3, class: f8rc, preferred-register: '', flags: [  ] }
100; NOVSX:        - { id: 4, class: f8rc, preferred-register: '', flags: [  ] }
101; NOVSX:        - { id: 5, class: f8rc, preferred-register: '', flags: [  ] }
102; NOVSX:        - { id: 6, class: f8rc, preferred-register: '', flags: [  ] }
103; NOVSX:        - { id: 7, class: f8rc, preferred-register: '', flags: [  ] }
104; NOVSX:        - { id: 8, class: f8rc, preferred-register: '', flags: [  ] }
105; NOVSX:        %4:f8rc = COPY $f5
106; NOVSX:        %3:f8rc = COPY $f4
107; NOVSX:        %2:f8rc = COPY $f3
108; NOVSX:        %1:f8rc = COPY $f2
109; NOVSX:        %0:f8rc = COPY $f1
110; NOVSX:        %5:f8rc = nofpexcept FADD %0, %1, implicit $rm
111; NOVSX:        %6:f8rc = nofpexcept FADD killed %5, %2, implicit $rm
112; NOVSX:        %7:f8rc = nofpexcept FADD killed %6, %3, implicit $rm
113; NOVSX:        %8:f8rc = nofpexcept FADD killed %7, %4, implicit $rm
114; NOVSX:        $f1 = COPY %8
115
116