1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck %s
3# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s
4
5---
6name: fma_sss
7legalized: true
8
9body: |
10  bb.0:
11    liveins: $sgpr0, $sgpr1, $sgpr2
12    ; CHECK-LABEL: name: fma_sss
13    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
14    ; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
15    ; CHECK: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2
16    ; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
17    ; CHECK: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
18    ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY3]], [[COPY4]]
19    %0:_(s32) = COPY $sgpr0
20    %1:_(s32) = COPY $sgpr1
21    %2:_(s32) = COPY $sgpr2
22    %3:_(s32) = G_FMA %0, %1, %2
23...
24---
25name: fma_vss
26legalized: true
27
28body: |
29  bb.0:
30    liveins: $vgpr0, $sgpr0, $sgpr1
31    ; CHECK-LABEL: name: fma_vss
32    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
33    ; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
34    ; CHECK: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
35    ; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
36    ; CHECK: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
37    ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY3]], [[COPY4]]
38    %0:_(s32) = COPY $vgpr0
39    %1:_(s32) = COPY $sgpr0
40    %2:_(s32) = COPY $sgpr1
41    %3:_(s32) = G_FMA %0, %1, %2
42...
43---
44name: fma_svs
45legalized: true
46
47body: |
48  bb.0:
49    liveins: $sgpr0, $vgpr0, $sgpr1
50    ; CHECK-LABEL: name: fma_svs
51    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
52    ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
53    ; CHECK: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
54    ; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
55    ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY3]]
56    %0:_(s32) = COPY $sgpr0
57    %1:_(s32) = COPY $vgpr0
58    %2:_(s32) = COPY $sgpr1
59    %3:_(s32) = G_FMA %0, %1, %2
60...
61---
62name: fma_ssv
63legalized: true
64
65body: |
66  bb.0:
67    liveins: $sgpr0, $sgpr1, $vgpr0
68    ; CHECK-LABEL: name: fma_ssv
69    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
70    ; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
71    ; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
72    ; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
73    ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY3]], [[COPY2]]
74    %0:_(s32) = COPY $sgpr0
75    %1:_(s32) = COPY $sgpr1
76    %2:_(s32) = COPY $vgpr0
77    %3:_(s32) = G_FMA %0, %1, %2
78...
79---
80name: fma_vvs
81legalized: true
82
83body: |
84  bb.0:
85    liveins: $vgpr0, $vgpr1, $sgpr0
86    ; CHECK-LABEL: name: fma_vvs
87    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
88    ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
89    ; CHECK: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
90    ; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32)
91    ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY3]]
92    %0:_(s32) = COPY $vgpr0
93    %1:_(s32) = COPY $vgpr1
94    %2:_(s32) = COPY $sgpr0
95    %3:_(s32) = G_FMA %0, %1, %2
96...
97---
98name: fma_vsv
99legalized: true
100
101body: |
102  bb.0:
103    liveins: $vgpr0, $sgpr0, $vgpr1
104    ; CHECK-LABEL: name: fma_vsv
105    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
106    ; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
107    ; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
108    ; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32)
109    ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY3]], [[COPY2]]
110    %0:_(s32) = COPY $vgpr0
111    %1:_(s32) = COPY $sgpr1
112    %2:_(s32) = COPY $vgpr1
113    %3:_(s32) = G_FMA %0, %1, %2
114...
115---
116name: fma_svv
117legalized: true
118
119body: |
120  bb.0:
121    liveins: $sgpr0, $vgpr0, $vgpr1
122    ; CHECK-LABEL: name: fma_svv
123    ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
124    ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
125    ; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
126    ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY2]]
127    %0:_(s32) = COPY $sgpr0
128    %1:_(s32) = COPY $vgpr0
129    %2:_(s32) = COPY $vgpr1
130    %3:_(s32) = G_FMA %0, %1, %2
131...
132---
133name: fma_vvv
134legalized: true
135
136body: |
137  bb.0:
138    liveins: $vgpr0, $vgpr1, $vgpr2
139    ; CHECK-LABEL: name: fma_vvv
140    ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
141    ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
142    ; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2
143    ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY2]]
144    %0:_(s32) = COPY $vgpr0
145    %1:_(s32) = COPY $vgpr1
146    %2:_(s32) = COPY $vgpr2
147    %3:_(s32) = G_FMA %0, %1, %2
148...
149