Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / postlegalizercombiner-select.mir
blobc0f96d210f5889728f89aa3504be243b74635bb7
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -march=amdgcn -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s
4 ---
5 name:            select_from_different_results_of_unmerge_values
6 tracksRegLiveness: true
7 body:             |
8   bb.0:
9     liveins: $vgpr0
11     ; GCN-LABEL: name: select_from_different_results_of_unmerge_values
12     ; GCN: liveins: $vgpr0
13     ; GCN-NEXT: {{  $}}
14     ; GCN-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
15     ; GCN-NEXT: $vgpr0 = COPY [[DEF]](s32)
16     ; GCN-NEXT: SI_RETURN_TO_EPILOG $vgpr0
17     %0:_(<2 x s32>) = G_IMPLICIT_DEF
18     %1:_(s32) = COPY $vgpr0
19     %2:_(s1) = G_TRUNC %1:_(s32)
20     %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %0:_(<2 x s32>)
21     %5:_(s32) = G_SELECT %2:_(s1), %3:_, %4:_
22     $vgpr0 = COPY %5
23     SI_RETURN_TO_EPILOG $vgpr0
25 ...
27 ---
28 name:            select_from_same_results_of_unmerge_values
29 tracksRegLiveness: true
30 body:             |
31   bb.0:
32     liveins: $vgpr0
34     ; GCN-LABEL: name: select_from_same_results_of_unmerge_values
35     ; GCN: liveins: $vgpr0
36     ; GCN-NEXT: {{  $}}
37     ; GCN-NEXT: [[DEF:%[0-9]+]]:_(s32) = G_IMPLICIT_DEF
38     ; GCN-NEXT: $vgpr0 = COPY [[DEF]](s32)
39     ; GCN-NEXT: SI_RETURN_TO_EPILOG $vgpr0
40     %0:_(<2 x s32>) = G_IMPLICIT_DEF
41     %1:_(s32) = COPY $vgpr0
42     %2:_(s1) = G_TRUNC %1:_(s32)
43     %3:_(s32), %4:_(s32) = G_UNMERGE_VALUES %0:_(<2 x s32>)
44     %5:_(s32) = G_SELECT %2:_(s1), %3:_, %3:_
45     $vgpr0 = COPY %5
46     SI_RETURN_TO_EPILOG $vgpr0
48 ...
50 ---
51 name: select_different_result_from_different_unmerge_values_with_the_same_source
52 tracksRegLiveness: true
53 body: |
54   bb.0:
55     liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
57     ; GCN-LABEL: name: select_different_result_from_different_unmerge_values_with_the_same_source
58     ; GCN: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
59     ; GCN-NEXT: {{  $}}
60     ; GCN-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
61     ; GCN-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr4
62     ; GCN-NEXT: [[TRUNC:%[0-9]+]]:_(s1) = G_TRUNC [[COPY1]](s32)
63     ; GCN-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)
64     ; GCN-NEXT: [[UV4:%[0-9]+]]:_(s32), [[UV5:%[0-9]+]]:_(s32), [[UV6:%[0-9]+]]:_(s32), [[UV7:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)
65     ; GCN-NEXT: [[SELECT:%[0-9]+]]:_(s32) = G_SELECT [[TRUNC]](s1), [[UV1]], [[UV7]]
66     ; GCN-NEXT: $vgpr0 = COPY [[SELECT]](s32)
67     %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
68     %1:_(s32) = COPY $vgpr4
69     %2:_(s1) = G_TRUNC %1:_(s32)
70     %3:_(s32), %4:_(s32), %5:_(s32), %6:_(s32) = G_UNMERGE_VALUES %0:_(<4 x s32>)
71     %7:_(s32), %8:_(s32), %9:_(s32), %10:_(s32) = G_UNMERGE_VALUES %0:_(<4 x s32>)
72     %11:_(s32) = G_SELECT %2:_(s1), %4:_, %10:_
73     $vgpr0 = COPY %11
74 ...
76 ---
77 name: select_same_result_from_different_unmerge_values_with_the_same_source
78 tracksRegLiveness: true
79 body: |
80   bb.0:
81     liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
83     ; GCN-LABEL: name: select_same_result_from_different_unmerge_values_with_the_same_source
84     ; GCN: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
85     ; GCN-NEXT: {{  $}}
86     ; GCN-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
87     ; GCN-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)
88     ; GCN-NEXT: $vgpr0 = COPY [[UV1]](s32)
89     %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3
90     %1:_(s32) = COPY $vgpr4
91     %2:_(s1) = G_TRUNC %1:_(s32)
92     %3:_(s32), %4:_(s32), %5:_(s32), %6:_(s32) = G_UNMERGE_VALUES %0:_(<4 x s32>)
93     %7:_(s32), %8:_(s32), %9:_(s32), %10:_(s32) = G_UNMERGE_VALUES %0:_(<4 x s32>)
94     %11:_(s32) = G_SELECT %2:_(s1), %4:_, %8:_
95     $vgpr0 = COPY %11
96 ...