[llvm-objdump] - Remove one overload of reportError. NFCI.
[llvm-complete.git] / test / CodeGen / AMDGPU / GlobalISel / inst-select-shl.s16.mir
blobd41cdee39040f49cf920cba6cd668d7630486a03
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
3 # RUN: llc -march=amdgcn -mcpu=fiji -run-pass=instruction-select -global-isel-abort=2 -pass-remarks-missed='gisel*' -verify-machineinstrs %s -o - 2>%t | FileCheck -check-prefix=GFX8 %s
4 # RUN: FileCheck -check-prefixes=ERR-GFX8,ERR %s < %t
6 # RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -global-isel-abort=2 -pass-remarks-missed='gisel*' -verify-machineinstrs %s -o - 2>%t | FileCheck -check-prefix=GFX9 %s
7 # RUN: FileCheck -check-prefixes=ERR-GFX910,ERR %s < %t
9 # RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -global-isel-abort=2 -pass-remarks-missed='gisel*' -verify-machineinstrs %s -o - 2>%t | FileCheck -check-prefix=GFX10 %s
10 # RUN: FileCheck -check-prefixes=ERR-GFX910,ERR %s < %t
12 # ERR-NOT: remark
13 # ERR-GFX8: remark: <unknown>:0:0: cannot select: %3:sgpr(s16) = G_SHL %2:sgpr, %1:sgpr(s32) (in function: shl_s16_ss)
14 # ERR-GFX8-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_SHL %2:sgpr, %1:vgpr(s32) (in function: shl_s16_sv)
15 # ERR-GFX8-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_SHL %2:vgpr, %1:sgpr(s32) (in function: shl_s16_vs)
16 # ERR-GFX8-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_SHL %2:vgpr, %1:vgpr(s32) (in function: shl_s16_vv)
18 # ERR-GFX910: remark: <unknown>:0:0: cannot select: %3:sgpr(s16) = G_SHL %2:sgpr, %1:sgpr(s32) (in function: shl_s16_ss)
19 # ERR-GFX910-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_SHL %2:sgpr, %1:vgpr(s32) (in function: shl_s16_sv)
20 # ERR-GFX910-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_SHL %2:vgpr, %1:sgpr(s32) (in function: shl_s16_vs)
21 # ERR-GFX910-NEXT: remark: <unknown>:0:0: cannot select: %3:vgpr(s16) = G_SHL %2:vgpr, %1:vgpr(s32) (in function: shl_s16_vv)
23 # ERR-NOT: remark
25 ---
26 name: shl_s16_ss
27 legalized: true
28 regBankSelected: true
30 body: |
31   bb.0:
32     liveins: $sgpr0, $sgpr1
33     ; GFX6-LABEL: name: shl_s16_ss
34     ; GFX6: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
35     ; GFX6: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
36     ; GFX6: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)
37     ; GFX6: [[SHL:%[0-9]+]]:sgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
38     ; GFX6: S_ENDPGM 0, implicit [[SHL]](s16)
39     ; GFX7-LABEL: name: shl_s16_ss
40     ; GFX7: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
41     ; GFX7: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
42     ; GFX7: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)
43     ; GFX7: [[SHL:%[0-9]+]]:sgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
44     ; GFX7: S_ENDPGM 0, implicit [[SHL]](s16)
45     ; GFX8-LABEL: name: shl_s16_ss
46     ; GFX8: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
47     ; GFX8: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
48     ; GFX8: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)
49     ; GFX8: [[SHL:%[0-9]+]]:sgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
50     ; GFX8: S_ENDPGM 0, implicit [[SHL]](s16)
51     ; GFX9-LABEL: name: shl_s16_ss
52     ; GFX9: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
53     ; GFX9: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
54     ; GFX9: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)
55     ; GFX9: [[SHL:%[0-9]+]]:sgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
56     ; GFX9: S_ENDPGM 0, implicit [[SHL]](s16)
57     ; GFX10-LABEL: name: shl_s16_ss
58     ; GFX10: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
59     ; GFX10: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1
60     ; GFX10: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)
61     ; GFX10: [[SHL:%[0-9]+]]:sgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
62     ; GFX10: S_ENDPGM 0, implicit [[SHL]](s16)
63     %0:sgpr(s32) = COPY $sgpr0
64     %1:sgpr(s32) = COPY $sgpr1
65     %2:sgpr(s16) = G_TRUNC %0
66     %3:sgpr(s16) = G_SHL %2, %1
67     S_ENDPGM 0, implicit %3
68 ...
70 ---
71 name: shl_s16_sv
72 legalized: true
73 regBankSelected: true
75 body: |
76   bb.0:
77     liveins: $sgpr0, $vgpr0
78     ; GFX6-LABEL: name: shl_s16_sv
79     ; GFX6: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
80     ; GFX6: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
81     ; GFX6: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)
82     ; GFX6: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
83     ; GFX6: S_ENDPGM 0, implicit [[SHL]](s16)
84     ; GFX7-LABEL: name: shl_s16_sv
85     ; GFX7: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
86     ; GFX7: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
87     ; GFX7: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)
88     ; GFX7: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
89     ; GFX7: S_ENDPGM 0, implicit [[SHL]](s16)
90     ; GFX8-LABEL: name: shl_s16_sv
91     ; GFX8: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
92     ; GFX8: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
93     ; GFX8: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)
94     ; GFX8: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
95     ; GFX8: S_ENDPGM 0, implicit [[SHL]](s16)
96     ; GFX9-LABEL: name: shl_s16_sv
97     ; GFX9: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
98     ; GFX9: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
99     ; GFX9: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)
100     ; GFX9: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
101     ; GFX9: S_ENDPGM 0, implicit [[SHL]](s16)
102     ; GFX10-LABEL: name: shl_s16_sv
103     ; GFX10: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
104     ; GFX10: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
105     ; GFX10: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)
106     ; GFX10: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
107     ; GFX10: S_ENDPGM 0, implicit [[SHL]](s16)
108     %0:sgpr(s32) = COPY $sgpr0
109     %1:vgpr(s32) = COPY $vgpr0
110     %2:sgpr(s16) = G_TRUNC %0
111     %3:vgpr(s16) = G_SHL %2, %1
112     S_ENDPGM 0, implicit %3
116 name: shl_s16_vs
117 legalized: true
118 regBankSelected: true
120 body: |
121   bb.0:
122     liveins: $sgpr0, $vgpr0
123     ; GFX6-LABEL: name: shl_s16_vs
124     ; GFX6: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
125     ; GFX6: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
126     ; GFX6: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
127     ; GFX6: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
128     ; GFX6: S_ENDPGM 0, implicit [[SHL]](s16)
129     ; GFX7-LABEL: name: shl_s16_vs
130     ; GFX7: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
131     ; GFX7: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
132     ; GFX7: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
133     ; GFX7: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
134     ; GFX7: S_ENDPGM 0, implicit [[SHL]](s16)
135     ; GFX8-LABEL: name: shl_s16_vs
136     ; GFX8: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
137     ; GFX8: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
138     ; GFX8: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
139     ; GFX8: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
140     ; GFX8: S_ENDPGM 0, implicit [[SHL]](s16)
141     ; GFX9-LABEL: name: shl_s16_vs
142     ; GFX9: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
143     ; GFX9: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
144     ; GFX9: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
145     ; GFX9: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
146     ; GFX9: S_ENDPGM 0, implicit [[SHL]](s16)
147     ; GFX10-LABEL: name: shl_s16_vs
148     ; GFX10: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
149     ; GFX10: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
150     ; GFX10: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
151     ; GFX10: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
152     ; GFX10: S_ENDPGM 0, implicit [[SHL]](s16)
153     %0:vgpr(s32) = COPY $vgpr0
154     %1:sgpr(s32) = COPY $sgpr0
155     %2:vgpr(s16) = G_TRUNC %0
156     %3:vgpr(s16) = G_SHL %2, %1
157     S_ENDPGM 0, implicit %3
161 name: shl_s16_vv
162 legalized: true
163 regBankSelected: true
165 body: |
166   bb.0:
167     liveins: $vgpr0, $vgpr1
168     ; GFX6-LABEL: name: shl_s16_vv
169     ; GFX6: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
170     ; GFX6: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
171     ; GFX6: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
172     ; GFX6: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
173     ; GFX6: S_ENDPGM 0, implicit [[SHL]](s16)
174     ; GFX7-LABEL: name: shl_s16_vv
175     ; GFX7: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
176     ; GFX7: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
177     ; GFX7: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
178     ; GFX7: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
179     ; GFX7: S_ENDPGM 0, implicit [[SHL]](s16)
180     ; GFX8-LABEL: name: shl_s16_vv
181     ; GFX8: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
182     ; GFX8: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
183     ; GFX8: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
184     ; GFX8: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
185     ; GFX8: S_ENDPGM 0, implicit [[SHL]](s16)
186     ; GFX9-LABEL: name: shl_s16_vv
187     ; GFX9: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
188     ; GFX9: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
189     ; GFX9: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
190     ; GFX9: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
191     ; GFX9: S_ENDPGM 0, implicit [[SHL]](s16)
192     ; GFX10-LABEL: name: shl_s16_vv
193     ; GFX10: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
194     ; GFX10: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1
195     ; GFX10: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
196     ; GFX10: [[SHL:%[0-9]+]]:vgpr(s16) = G_SHL [[TRUNC]], [[COPY1]](s32)
197     ; GFX10: S_ENDPGM 0, implicit [[SHL]](s16)
198     %0:vgpr(s32) = COPY $vgpr0
199     %1:vgpr(s32) = COPY $vgpr1
200     %2:vgpr(s16) = G_TRUNC %0
201     %3:vgpr(s16) = G_SHL %2, %1
202     S_ENDPGM 0, implicit %3