Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / twoaddr-mad.mir
blob7062878a846097acbcb6a9a68ca99f01cc0ea08b
1 # RUN: llc -mtriple=amdgcn -mcpu=gfx900 %s -run-pass twoaddressinstruction -verify-machineinstrs -o - | FileCheck -check-prefix=GCN %s
2 # RUN: llc -mtriple=amdgcn -mcpu=gfx900 %s --passes=two-address-instruction -o - | FileCheck -check-prefix=GCN %s
4 # GCN-LABEL: name: test_madmk_reg_imm_f32
5 # GCN: V_MADMK_F32 killed %0.sub0, 1078523331, killed %1, implicit $mode, implicit $exec
6 ---
7 name:            test_madmk_reg_imm_f32
8 registers:
9   - { id: 0, class: vreg_64 }
10   - { id: 1, class: vgpr_32 }
11   - { id: 2, class: vgpr_32 }
12   - { id: 3, class: vgpr_32 }
13 body:             |
14   bb.0:
16     %0 = IMPLICIT_DEF
17     %1 = COPY %0.sub1
18     %2 = V_MOV_B32_e32 1078523331, implicit $exec
19     %3 = V_MAC_F32_e32 killed %0.sub0, %2, killed %1, implicit $mode, implicit $exec
21 ...
23 # GCN-LABEL: name: test_madmk_imm_reg_f32
24 # GCN: V_MADMK_F32 killed %0.sub0, 1078523331, killed %1, implicit $mode, implicit $exec
25 ---
26 name:            test_madmk_imm_reg_f32
27 registers:
28   - { id: 0, class: vreg_64 }
29   - { id: 1, class: vgpr_32 }
30   - { id: 2, class: vgpr_32 }
31   - { id: 3, class: vgpr_32 }
32 body:             |
33   bb.0:
35     %0 = IMPLICIT_DEF
36     %1 = COPY %0.sub1
37     %2 = V_MOV_B32_e32 1078523331, implicit $exec
38     %3 = V_MAC_F32_e32 %2, killed %0.sub0, killed %1, implicit $mode, implicit $exec
40 ...
42 # GCN-LABEL: name: test_madak_f32
43 # GCN: V_MADAK_F32 killed %0.sub0, %0.sub1, 1078523331, implicit $mode, implicit $exec
44 ---
45 name:            test_madak_f32
46 registers:
47   - { id: 0, class: vreg_64 }
48   - { id: 1, class: vgpr_32 }
49   - { id: 2, class: vgpr_32 }
50 body:             |
51   bb.0:
53     %0 = IMPLICIT_DEF
54     %1 = V_MOV_B32_e32 1078523331, implicit $exec
55     %2 = V_MAC_F32_e32 killed %0.sub0, %0.sub1, %1, implicit $mode, implicit $exec
56     S_ENDPGM 0, implicit %1
57 ...
59 # GCN-LABEL: name: test_madmk_reg_imm_f16
60 # GCN: V_MADMK_F16 killed %0.sub0, 1078523331, killed %1, implicit $mode, implicit $exec
61 ---
62 name:            test_madmk_reg_imm_f16
63 registers:
64   - { id: 0, class: vreg_64 }
65   - { id: 1, class: vgpr_32 }
66   - { id: 2, class: vgpr_32 }
67   - { id: 3, class: vgpr_32 }
68 body:             |
69   bb.0:
71     %0 = IMPLICIT_DEF
72     %1 = COPY %0.sub1
73     %2 = V_MOV_B32_e32 1078523331, implicit $exec
74     %3 = V_MAC_F16_e32 killed %0.sub0, %2, killed %1, implicit $mode, implicit $exec
76 ...
78 # GCN-LABEL: name: test_madmk_imm_reg_f16
79 # GCN: V_MADMK_F16 killed %0.sub0, 1078523331, killed %1, implicit $mode, implicit $exec
80 ---
81 name:            test_madmk_imm_reg_f16
82 registers:
83   - { id: 0, class: vreg_64 }
84   - { id: 1, class: vgpr_32 }
85   - { id: 2, class: vgpr_32 }
86   - { id: 3, class: vgpr_32 }
87 body:             |
88   bb.0:
90     %0 = IMPLICIT_DEF
91     %1 = COPY %0.sub1
92     %2 = V_MOV_B32_e32 1078523331, implicit $exec
93     %3 = V_MAC_F16_e32 %2, killed %0.sub0, killed %1, implicit $mode, implicit $exec
95 ...
97 # GCN-LABEL: name: test_madak_f16
98 # GCN: V_MADAK_F16 killed %0.sub0, %0.sub1, 1078523331, implicit $mode, implicit $exec
99 ---
100 name:            test_madak_f16
101 registers:
102   - { id: 0, class: vreg_64 }
103   - { id: 1, class: vgpr_32 }
104   - { id: 2, class: vgpr_32 }
105 body:             |
106   bb.0:
108     %0 = IMPLICIT_DEF
109     %1 = V_MOV_B32_e32 1078523331, implicit $exec
110     %2 = V_MAC_F16_e32 killed %0.sub0, %0.sub1, %1, implicit $mode, implicit $exec
111     S_ENDPGM 0, implicit %1
114 # Make sure constant bus restriction isn't violated if src0 is an SGPR.
116 # GCN-LABEL: name: test_madak_sgpr_src0_f32
117 # GCN: %1:vgpr_32 = V_MOV_B32_e32 1078523331, implicit $exec
118 # GCN: %3:vgpr_32 = V_MAD_F32_e64 0, killed %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
121 name:            test_madak_sgpr_src0_f32
122 registers:
123   - { id: 0, class: sreg_32_xm0 }
124   - { id: 1, class: vgpr_32}
125   - { id: 2, class: vgpr_32 }
126   - { id: 3, class: vgpr_32 }
127 body:             |
128   bb.0:
130     %0 = IMPLICIT_DEF
131     %1 = V_MOV_B32_e32 1078523331, implicit $exec
132     %2 = IMPLICIT_DEF
133     %3 = V_MAC_F32_e32 killed %0, %1, %2, implicit $mode, implicit $exec
134     S_ENDPGM 0, implicit %2
137 # This can still fold if this is an inline immediate.
139 # GCN-LABEL: name: test_madak_inlineimm_src0_f32
140 # GCN: %2:vgpr_32 = V_MADMK_F32 1073741824, 1078523331, %1, implicit $mode, implicit $exec
143 name:            test_madak_inlineimm_src0_f32
144 registers:
145   - { id: 0, class: vgpr_32}
146   - { id: 1, class: vgpr_32 }
147   - { id: 2, class: vgpr_32 }
148 body:             |
149   bb.0:
151     %0 = V_MOV_B32_e32 1078523331, implicit $exec
152     %1 = IMPLICIT_DEF
153     %2 = V_MAC_F32_e32 1073741824, %0, %1, implicit $mode, implicit $exec
154     S_ENDPGM 0, implicit %1
156 # Non-inline immediate uses constant bus already.
158 # GCN-LABEL: name: test_madak_otherimm_src0_f32
159 # GCN: %2:vgpr_32 = V_MADMK_F32 %0, 1120403456, %1, implicit $mode, implicit $exec
162 name:            test_madak_otherimm_src0_f32
163 registers:
164   - { id: 0, class: vgpr_32}
165   - { id: 1, class: vgpr_32 }
166   - { id: 2, class: vgpr_32 }
167 body:             |
168   bb.0:
170     %0 = V_MOV_B32_e32 1078523331, implicit $exec
171     %1 = IMPLICIT_DEF
172     %2 = V_MAC_F32_e32 1120403456, %0, %1, implicit $mode, implicit $exec
173     S_ENDPGM 0, implicit %1
175 # Non-inline immediate uses constant bus already.
177 # GCN-LABEL: name: test_madak_other_constantlike_src0_f32
178 # GCN: %2:vgpr_32 = V_MAC_F32_e32 %stack.0, %0, %2, implicit $mode, implicit $exec
180 name:            test_madak_other_constantlike_src0_f32
181 registers:
182   - { id: 0, class: vgpr_32}
183   - { id: 1, class: vgpr_32 }
184   - { id: 2, class: vgpr_32 }
185 stack:
186   - { id: 0, name: "", type: default, offset: 0, size: 128, alignment: 8,
187       callee-saved-register: '', local-offset: 0, debug-info-variable: '',
188       debug-info-expression: '', debug-info-location: '' }
189 body:             |
190   bb.0:
192     %0 = V_MOV_B32_e32 1078523331, implicit $exec
193     %1 = IMPLICIT_DEF
194     %2 = V_MAC_F32_e32 %stack.0, %0, %1, implicit $mode, implicit $exec
198 # GCN-LABEL: name: test_madak_inline_literal_f16
199 # GCN: %2:vgpr_32 = V_MADAK_F16 16384, killed %0, 49664, implicit $mode, implicit $exec
202 name:            test_madak_inline_literal_f16
203 body:             |
204   bb.0:
205     %3:vgpr_32 = COPY killed $vgpr0
207     %26:vgpr_32 = V_MOV_B32_e32 49664, implicit $exec
208     %28:vgpr_32 = V_MAC_F16_e32 16384, killed %3, %26, implicit $mode, implicit $exec
209     S_ENDPGM 0, implicit %26
212 # GCN-LABEL: name: test_mad_src0mods
213 # GCN: %3:vgpr_32 = V_MAD_F32_e64 1, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
215 name: test_mad_src0mods
216 body: |
217   bb.0:
218     %0:vgpr_32 = IMPLICIT_DEF
219     %1:vgpr_32 = IMPLICIT_DEF
220     %2:vgpr_32 = IMPLICIT_DEF
221     %3:vgpr_32 = V_MAC_F32_e64 1, %0, 0, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
222     S_ENDPGM 0, implicit %2
225 # GCN-LABEL: name: test_mad_src1mods
226 # GCN: %3:vgpr_32 = V_MAD_F32_e64 0, %0, 1, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
228 name: test_mad_src1mods
229 body: |
230   bb.0:
231     %0:vgpr_32 = IMPLICIT_DEF
232     %1:vgpr_32 = IMPLICIT_DEF
233     %2:vgpr_32 = IMPLICIT_DEF
234     %3:vgpr_32 = V_MAC_F32_e64 0, %0, 1, %1, 0, %2, 0, 0, implicit $mode, implicit $exec
235     S_ENDPGM 0, implicit %2
238 # GCN-LABEL: name: test_mad_src2mods
239 # GCN: %3:vgpr_32 = V_MAD_F32_e64 0, %0, 0, %1, 1, %2, 0, 0, implicit $mode, implicit $exec
241 name: test_mad_src2mods
242 body: |
243   bb.0:
244     %0:vgpr_32 = IMPLICIT_DEF
245     %1:vgpr_32 = IMPLICIT_DEF
246     %2:vgpr_32 = IMPLICIT_DEF
247     %3:vgpr_32 = V_MAC_F32_e64 0, %0, 0, %1, 1, %2, 0, 0, implicit $mode, implicit $exec
248     S_ENDPGM 0, implicit %2