xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/postlegalizercombiner-select.mir (revision 9e9907f1cfa424366fba58d9520f9305b537cec9)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s
3
4---
5name:            select_from_different_results_of_unmerge_values
6tracksRegLiveness: true
7body:             |
8  bb.0:
9    liveins: $vgpr0
10
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
24
25...
26
27---
28name:            select_from_same_results_of_unmerge_values
29tracksRegLiveness: true
30body:             |
31  bb.0:
32    liveins: $vgpr0
33
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
47
48...
49
50---
51name: select_different_result_from_different_unmerge_values_with_the_same_source
52tracksRegLiveness: true
53body: |
54  bb.0:
55    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
56
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...
75
76---
77name: select_same_result_from_different_unmerge_values_with_the_same_source
78tracksRegLiveness: true
79body: |
80  bb.0:
81    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4
82
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...
97