1# RUN: llc -march=amdgcn -verify-machineinstrs -run-pass si-optimize-exec-masking %s -o - | FileCheck -check-prefix=GCN %s
2
3---
4# GCN-LABEL: name: reduce_and_saveexec
5# GCN:      $exec = S_AND_B64 $exec, killed $vcc
6# GCN-NEXT: S_ENDPGM 0
7name: reduce_and_saveexec
8tracksRegLiveness: true
9body:             |
10  bb.0:
11    $vcc = IMPLICIT_DEF
12    $sgpr0_sgpr1 = S_AND_B64 $exec, killed $vcc, implicit-def $scc
13    $exec = COPY killed $sgpr0_sgpr1
14    S_ENDPGM 0
15...
16---
17# GCN-LABEL: name: reduce_and_saveexec_commuted
18# GCN:      $exec = S_AND_B64 killed $vcc, $exec
19# GCN-NEXT: S_ENDPGM 0
20name: reduce_and_saveexec_commuted
21tracksRegLiveness: true
22body:             |
23  bb.0:
24    $vcc = IMPLICIT_DEF
25    $sgpr0_sgpr1 = S_AND_B64 killed $vcc, $exec, implicit-def $scc
26    $exec = COPY killed $sgpr0_sgpr1
27    S_ENDPGM 0
28...
29---
30# GCN-LABEL: name: reduce_and_saveexec_liveout
31# GCN:      $sgpr0_sgpr1 = S_AND_B64 $exec, killed $vcc
32# GCN-NEXT: $exec = COPY
33name: reduce_and_saveexec_liveout
34tracksRegLiveness: true
35body:             |
36  bb.0:
37    $vcc = IMPLICIT_DEF
38    $sgpr0_sgpr1 = S_AND_B64 $exec, killed $vcc, implicit-def $scc
39    $exec = COPY $sgpr0_sgpr1
40    S_ENDPGM 0
41...
42---
43# GCN-LABEL: name: and_saveexec
44# GCN:      $sgpr0_sgpr1 = S_AND_SAVEEXEC_B64 $vcc
45# GCN-NEXT: S_ENDPGM 0
46name: and_saveexec
47tracksRegLiveness: true
48body:             |
49  bb.0:
50    $vcc = IMPLICIT_DEF
51    $sgpr0_sgpr1 = COPY $exec
52    $sgpr2_sgpr3 = S_AND_B64 $sgpr0_sgpr1, killed $vcc, implicit-def $scc
53    $exec = S_MOV_B64_term $sgpr2_sgpr3
54    S_ENDPGM 0
55...
56---
57# GCN-LABEL: name: reduce_or_saveexec
58# GCN:      $exec = S_OR_B64 $exec, killed $vcc
59# GCN-NEXT: S_ENDPGM 0
60name: reduce_or_saveexec
61tracksRegLiveness: true
62body:             |
63  bb.0:
64    $vcc = IMPLICIT_DEF
65    $sgpr0_sgpr1 = S_OR_B64 $exec, killed $vcc, implicit-def $scc
66    $exec = COPY killed $sgpr0_sgpr1
67    S_ENDPGM 0
68...
69---
70# GCN-LABEL: name: reduce_xor_saveexec
71# GCN:      $exec = S_XOR_B64 $exec, killed $vcc
72# GCN-NEXT: S_ENDPGM 0
73name: reduce_xor_saveexec
74tracksRegLiveness: true
75body:             |
76  bb.0:
77    $vcc = IMPLICIT_DEF
78    $sgpr0_sgpr1 = S_XOR_B64 $exec, killed $vcc, implicit-def $scc
79    $exec = COPY killed $sgpr0_sgpr1
80    S_ENDPGM 0
81...
82---
83# GCN-LABEL: name: reduce_andn2_saveexec
84# GCN:      $exec = S_ANDN2_B64 $exec, killed $vcc
85# GCN-NEXT: S_ENDPGM 0
86name: reduce_andn2_saveexec
87tracksRegLiveness: true
88body:             |
89  bb.0:
90    $vcc = IMPLICIT_DEF
91    $sgpr0_sgpr1 = S_ANDN2_B64 $exec, killed $vcc, implicit-def $scc
92    $exec = COPY killed $sgpr0_sgpr1
93    S_ENDPGM 0
94...
95---
96# GCN-LABEL: name: reduce_orn2_saveexec
97# GCN:      $exec = S_ORN2_B64 $exec, killed $vcc
98# GCN-NEXT: S_ENDPGM 0
99name: reduce_orn2_saveexec
100tracksRegLiveness: true
101body:             |
102  bb.0:
103    $vcc = IMPLICIT_DEF
104    $sgpr0_sgpr1 = S_ORN2_B64 $exec, killed $vcc, implicit-def $scc
105    $exec = COPY killed $sgpr0_sgpr1
106    S_ENDPGM 0
107...
108---
109# GCN-LABEL: name: reduce_nand_saveexec
110# GCN:      $exec = S_NAND_B64 $exec, killed $vcc
111# GCN-NEXT: S_ENDPGM 0
112name: reduce_nand_saveexec
113tracksRegLiveness: true
114body:             |
115  bb.0:
116    $vcc = IMPLICIT_DEF
117    $sgpr0_sgpr1 = S_NAND_B64 $exec, killed $vcc, implicit-def $scc
118    $exec = COPY killed $sgpr0_sgpr1
119    S_ENDPGM 0
120...
121---
122# GCN-LABEL: name: reduce_nor_saveexec
123# GCN:      $exec = S_NOR_B64 $exec, killed $vcc
124# GCN-NEXT: S_ENDPGM 0
125name: reduce_nor_saveexec
126tracksRegLiveness: true
127body:             |
128  bb.0:
129    $vcc = IMPLICIT_DEF
130    $sgpr0_sgpr1 = S_NOR_B64 $exec, killed $vcc, implicit-def $scc
131    $exec = COPY killed $sgpr0_sgpr1
132    S_ENDPGM 0
133...
134---
135# GCN-LABEL: name: reduce_xnor_saveexec
136# GCN:      $exec = S_XNOR_B64 $exec, killed $vcc
137# GCN-NEXT: S_ENDPGM 0
138name: reduce_xnor_saveexec
139tracksRegLiveness: true
140body:             |
141  bb.0:
142    $vcc = IMPLICIT_DEF
143    $sgpr0_sgpr1 = S_XNOR_B64 $exec, killed $vcc, implicit-def $scc
144    $exec = COPY killed $sgpr0_sgpr1
145    S_ENDPGM 0
146...
147---
148