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