Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / regbankselect-abs.mir
blobd3660e1f0a705d21c965dd9a68e92a179bdde751
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=amdgpu-regbankselect %s -verify-machineinstrs -o - | FileCheck %s
4 ---
5 name: abs_sgpr_s16
6 legalized: true
8 body: |
9   bb.0:
10     liveins: $sgpr0
12     ; CHECK-LABEL: name: abs_sgpr_s16
13     ; CHECK: liveins: $sgpr0
14     ; CHECK-NEXT: {{  $}}
15     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0
16     ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s16) = G_TRUNC [[COPY]](s32)
17     ; CHECK-NEXT: [[SEXT:%[0-9]+]]:sgpr(s32) = G_SEXT [[TRUNC]](s16)
18     ; CHECK-NEXT: [[ABS:%[0-9]+]]:sgpr(s32) = G_ABS [[SEXT]]
19     ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s16) = G_TRUNC [[ABS]](s32)
20     %1:_(s32) = COPY $sgpr0
21     %2:_(s16) = G_TRUNC %1
22     %5:_(s16) = G_ABS %2
23 ...
25 ---
26 name: abs_vgpr_s16
27 legalized: true
29 body: |
30   bb.0:
31     liveins: $vgpr0
33     ; CHECK-LABEL: name: abs_vgpr_s16
34     ; CHECK: liveins: $vgpr0
35     ; CHECK-NEXT: {{  $}}
36     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0
37     ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32)
38     ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 0
39     ; CHECK-NEXT: [[SUB:%[0-9]+]]:vgpr(s16) = G_SUB [[C]], [[TRUNC]]
40     ; CHECK-NEXT: [[SMAX:%[0-9]+]]:vgpr(s16) = G_SMAX [[TRUNC]], [[SUB]]
41     %1:_(s32) = COPY $vgpr0
42     %2:_(s16) = G_TRUNC %1
43     %5:_(s16) = G_ABS %2
44 ...
46 ---
47 name: abs_sgpr_v2i16
48 legalized: true
50 body: |
51   bb.0:
52     liveins: $sgpr0
54     ; CHECK-LABEL: name: abs_sgpr_v2i16
55     ; CHECK: liveins: $sgpr0
56     ; CHECK-NEXT: {{  $}}
57     ; CHECK-NEXT: [[COPY:%[0-9]+]]:sgpr(<2 x s16>) = COPY $sgpr0
58     ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:sgpr(s32) = G_BITCAST [[COPY]](<2 x s16>)
59     ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:sgpr(s32) = G_SEXT_INREG [[BITCAST]], 16
60     ; CHECK-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 16
61     ; CHECK-NEXT: [[ASHR:%[0-9]+]]:sgpr(s32) = G_ASHR [[BITCAST]], [[C]](s32)
62     ; CHECK-NEXT: [[ABS:%[0-9]+]]:sgpr(s32) = G_ABS [[SEXT_INREG]]
63     ; CHECK-NEXT: [[ABS1:%[0-9]+]]:sgpr(s32) = G_ABS [[ASHR]]
64     ; CHECK-NEXT: [[BUILD_VECTOR_TRUNC:%[0-9]+]]:sgpr(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[ABS]](s32), [[ABS1]](s32)
65     %1:_(<2 x s16>) = COPY $sgpr0
66     %5:_(<2 x s16>) = G_ABS %1
67 ...
69 ---
70 name: abs_vgpr_v2i16
71 legalized: true
73 body: |
74   bb.0:
75     liveins: $vgpr0
77     ; CHECK-LABEL: name: abs_vgpr_v2i16
78     ; CHECK: liveins: $vgpr0
79     ; CHECK-NEXT: {{  $}}
80     ; CHECK-NEXT: [[COPY:%[0-9]+]]:vgpr(<2 x s16>) = COPY $vgpr0
81     ; CHECK-NEXT: [[C:%[0-9]+]]:vgpr(s16) = G_CONSTANT i16 0
82     ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s16>) = G_BUILD_VECTOR [[C]](s16), [[C]](s16)
83     ; CHECK-NEXT: [[SUB:%[0-9]+]]:vgpr(<2 x s16>) = G_SUB [[BUILD_VECTOR]], [[COPY]]
84     ; CHECK-NEXT: [[SMAX:%[0-9]+]]:vgpr(<2 x s16>) = G_SMAX [[COPY]], [[SUB]]
85     %1:_(<2 x s16>) = COPY $vgpr0
86     %5:_(<2 x s16>) = G_ABS %1
87 ...