[AMDGPU] Make v8i16/v8f16 legal
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / inst-select-abs.mir
blobce7f7fa9d4ea4a21d13bf62633bff0222ec075af
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=tahiti -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX6 %s
3 # RUN: llc -march=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX9 %s
4 # RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck -check-prefix=GFX9 %s
6 ---
7 name: smax_neg_abs_pattern_s32_ss
8 legalized: true
9 regBankSelected: true
10 tracksRegLiveness: true
12 body: |
13   bb.0:
14     liveins: $sgpr0
16     ; GFX6-LABEL: name: smax_neg_abs_pattern_s32_ss
17     ; GFX6: liveins: $sgpr0
18     ; GFX6: %src0:sreg_32 = COPY $sgpr0
19     ; GFX6: %smax:sreg_32 = S_ABS_I32 %src0, implicit-def $scc
20     ; GFX6: S_ENDPGM 0, implicit %smax
21     ; GFX9-LABEL: name: smax_neg_abs_pattern_s32_ss
22     ; GFX9: liveins: $sgpr0
23     ; GFX9: %src0:sreg_32 = COPY $sgpr0
24     ; GFX9: %smax:sreg_32 = S_ABS_I32 %src0, implicit-def $scc
25     ; GFX9: S_ENDPGM 0, implicit %smax
26     %src0:sgpr(s32) = COPY $sgpr0
27     %zero:sgpr(s32) = G_CONSTANT i32 0
28     %ineg:sgpr(s32) = G_SUB %zero, %src0
29     %smax:sgpr(s32) = G_SMAX %src0, %ineg
30     S_ENDPGM 0, implicit %smax
31 ...
33 ---
34 name: smax_neg_abs_pattern_s32_ss_commute
35 legalized: true
36 regBankSelected: true
37 tracksRegLiveness: true
39 body: |
40   bb.0:
41     liveins: $sgpr0
43     ; GFX6-LABEL: name: smax_neg_abs_pattern_s32_ss_commute
44     ; GFX6: liveins: $sgpr0
45     ; GFX6: %src0:sreg_32 = COPY $sgpr0
46     ; GFX6: %smax:sreg_32 = S_ABS_I32 %src0, implicit-def $scc
47     ; GFX6: S_ENDPGM 0, implicit %smax
48     ; GFX9-LABEL: name: smax_neg_abs_pattern_s32_ss_commute
49     ; GFX9: liveins: $sgpr0
50     ; GFX9: %src0:sreg_32 = COPY $sgpr0
51     ; GFX9: %smax:sreg_32 = S_ABS_I32 %src0, implicit-def $scc
52     ; GFX9: S_ENDPGM 0, implicit %smax
53     %src0:sgpr(s32) = COPY $sgpr0
54     %zero:sgpr(s32) = G_CONSTANT i32 0
55     %ineg:sgpr(s32) = G_SUB %zero, %src0
56     %smax:sgpr(s32) = G_SMAX %ineg, %src0
57     S_ENDPGM 0, implicit %smax
58 ...
60 ---
61 name: smax_neg_abs_pattern_s32_vv
62 legalized: true
63 regBankSelected: true
64 tracksRegLiveness: true
66 body: |
67   bb.0:
68     liveins: $vgpr0
70     ; GFX6-LABEL: name: smax_neg_abs_pattern_s32_vv
71     ; GFX6: liveins: $vgpr0
72     ; GFX6: %src0:vgpr_32 = COPY $vgpr0
73     ; GFX6: %zero:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
74     ; GFX6: %ineg:vgpr_32, dead %4:sreg_64_xexec = V_SUB_CO_U32_e64 %zero, %src0, 0, implicit $exec
75     ; GFX6: %smax:vgpr_32 = V_MAX_I32_e64 %src0, %ineg, implicit $exec
76     ; GFX6: S_ENDPGM 0, implicit %smax
77     ; GFX9-LABEL: name: smax_neg_abs_pattern_s32_vv
78     ; GFX9: liveins: $vgpr0
79     ; GFX9: %src0:vgpr_32 = COPY $vgpr0
80     ; GFX9: %zero:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
81     ; GFX9: %ineg:vgpr_32 = V_SUB_U32_e64 %zero, %src0, 0, implicit $exec
82     ; GFX9: %smax:vgpr_32 = V_MAX_I32_e64 %src0, %ineg, implicit $exec
83     ; GFX9: S_ENDPGM 0, implicit %smax
84     %src0:vgpr(s32) = COPY $vgpr0
85     %zero:vgpr(s32) = G_CONSTANT i32 0
86     %ineg:vgpr(s32) = G_SUB %zero, %src0
87     %smax:vgpr(s32) = G_SMAX %src0, %ineg
88     S_ENDPGM 0, implicit %smax
89 ...
91 # FIXME: Violates constant bus restriction
92 # ---
93 # name: smax_neg_abs_pattern_s32_vs
94 # legalized: true
95 # regBankSelected: true
97 # body: |
98 #   bb.0:
99 #     liveins: $sgpr0
101 #     %src0:sgpr(s32) = COPY $sgpr0
102 #     %zero:sgpr(s32) = G_CONSTANT i32 0
103 #     %ineg:sgpr(s32) = G_SUB %zero, %src0
104 #     %smax:vgpr(s32) = G_SMAX %src0, %ineg
105 #     S_ENDPGM 0, implicit %smax
106 # ...