[clang] Fix crashes when passing VLA to va_arg (#119563)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / combine-sreg64-inits.mir
blob57afb456d6037f61aecb095126d7411b308ff870
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn -verify-machineinstrs -run-pass=liveintervals,amdgpu-pre-ra-optimizations %s -o - | FileCheck -check-prefix=GCN %s
4 ---
5 name:            combine_sreg64_inits
6 tracksRegLiveness: true
7 body:             |
8   bb.0:
9     ; GCN-LABEL: name: combine_sreg64_inits
10     ; GCN: dead [[S_MOV_B:%[0-9]+]]:sgpr_64 = S_MOV_B64_IMM_PSEUDO 8589934593
11     ; GCN-NEXT: S_NOP 0
12     undef %0.sub0:sgpr_64 = S_MOV_B32 1
13     S_NOP 0
14     %0.sub1:sgpr_64 = S_MOV_B32 2
15 ...
16 ---
17 name:            combine_sreg64_inits_swap
18 tracksRegLiveness: true
19 body:             |
20   bb.0:
21     ; GCN-LABEL: name: combine_sreg64_inits_swap
22     ; GCN: dead [[S_MOV_B:%[0-9]+]]:sgpr_64 = S_MOV_B64_IMM_PSEUDO 8589934593
23     ; GCN-NEXT: S_NOP 0
24     undef %0.sub1:sgpr_64 = S_MOV_B32 2
25     S_NOP 0
26     %0.sub0:sgpr_64 = S_MOV_B32 1
27 ...
28 ---
29 name: sreg64_subreg_copy_0
30 tracksRegLiveness: true
31 body: |
32   bb.0:
33     ; GCN-LABEL: name: sreg64_subreg_copy_0
34     ; GCN: [[DEF:%[0-9]+]]:sgpr_32 = IMPLICIT_DEF
35     ; GCN-NEXT: undef [[COPY:%[0-9]+]].sub0:sgpr_64 = COPY [[DEF]]
36     ; GCN-NEXT: [[COPY:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 1
37     ; GCN-NEXT: dead [[COPY:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 2
38     %0:sgpr_32 = IMPLICIT_DEF
39     undef %1.sub0:sgpr_64 = COPY %0:sgpr_32
40     %1.sub0:sgpr_64 = S_MOV_B32 1
41     %1.sub1:sgpr_64 = S_MOV_B32 2
42 ...
43 ---
44 name: sreg64_subreg_copy_1
45 tracksRegLiveness: true
46 body: |
47   bb.0:
48     ; GCN-LABEL: name: sreg64_subreg_copy_1
49     ; GCN: [[DEF:%[0-9]+]]:sgpr_32 = IMPLICIT_DEF
50     ; GCN-NEXT: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 1
51     ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = COPY [[DEF]]
52     ; GCN-NEXT: dead [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 2
53     %0:sgpr_32 = IMPLICIT_DEF
54     undef %1.sub0:sgpr_64 = S_MOV_B32 1
55     %1.sub1:sgpr_64 = COPY %0:sgpr_32
56     %1.sub1:sgpr_64 = S_MOV_B32 2
57 ...
58 ---
59 name: sreg64_subreg_copy_2
60 tracksRegLiveness: true
61 body: |
62   bb.0:
63     ; GCN-LABEL: name: sreg64_subreg_copy_2
64     ; GCN: [[DEF:%[0-9]+]]:sgpr_32 = IMPLICIT_DEF
65     ; GCN-NEXT: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 1
66     ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 2
67     ; GCN-NEXT: dead [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = COPY [[DEF]]
68     %0:sgpr_32 = IMPLICIT_DEF
69     undef %1.sub0:sgpr_64 = S_MOV_B32 1
70     %1.sub1:sgpr_64 = S_MOV_B32 2
71     %1.sub0:sgpr_64 = COPY %0:sgpr_32
72 ...
73 ---
74 name:            sreg64_inits_different_blocks
75 tracksRegLiveness: true
76 body:             |
77   ; GCN-LABEL: name: sreg64_inits_different_blocks
78   ; GCN: bb.0:
79   ; GCN-NEXT:   successors: %bb.1(0x80000000)
80   ; GCN-NEXT: {{  $}}
81   ; GCN-NEXT:   undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 1
82   ; GCN-NEXT: {{  $}}
83   ; GCN-NEXT: bb.1:
84   ; GCN-NEXT:   dead [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 2
85   bb.0:
86     undef %0.sub0:sgpr_64 = S_MOV_B32 1
88   bb.1:
89     %0.sub1:sgpr_64 = S_MOV_B32 2
90 ...
91 ---
92 name:            sreg64_inits_two_defs_sub1
93 tracksRegLiveness: true
94 body:             |
95   bb.0:
96     ; GCN-LABEL: name: sreg64_inits_two_defs_sub1
97     ; GCN: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 1
98     ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 2
99     ; GCN-NEXT: dead [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 3
100     undef %0.sub0:sgpr_64 = S_MOV_B32 1
101     %0.sub1:sgpr_64 = S_MOV_B32 2
102     %0.sub1:sgpr_64 = S_MOV_B32 3
105 name:            sreg64_inits_two_defs_sub0
106 tracksRegLiveness: true
107 body:             |
108   bb.0:
109     ; GCN-LABEL: name: sreg64_inits_two_defs_sub0
110     ; GCN: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 1
111     ; GCN-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 2
112     ; GCN-NEXT: dead [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 3
113     undef %0.sub0:sgpr_64 = S_MOV_B32 1
114     %0.sub1:sgpr_64 = S_MOV_B32 2
115     %0.sub0:sgpr_64 = S_MOV_B32 3
118 name:            sreg64_inits_full_def
119 tracksRegLiveness: true
120 body:             |
121   bb.0:
122     ; GCN-LABEL: name: sreg64_inits_full_def
123     ; GCN: dead undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 1
124     ; GCN-NEXT: dead [[S_MOV_B64_:%[0-9]+]]:sgpr_64 = S_MOV_B64 3
125     undef %0.sub0:sgpr_64 = S_MOV_B32 1
126     %0:sgpr_64 = S_MOV_B64 3
129 name:            sreg64_inits_imp_use
130 tracksRegLiveness: true
131 body:             |
132   bb.0:
133     ; GCN-LABEL: name: sreg64_inits_imp_use
134     ; GCN: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 1, implicit $m0
135     ; GCN-NEXT: dead [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 2
136     undef %0.sub0:sgpr_64 = S_MOV_B32 1, implicit $m0
137     %0.sub1:sgpr_64 = S_MOV_B32 2
140 name:            sreg64_inits_imp_def
141 tracksRegLiveness: true
142 body:             |
143   bb.0:
144     ; GCN-LABEL: name: sreg64_inits_imp_def
145     ; GCN: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 1, implicit-def $scc
146     ; GCN-NEXT: dead [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 2
147     undef %0.sub0:sgpr_64 = S_MOV_B32 1, implicit-def $scc
148     %0.sub1:sgpr_64 = S_MOV_B32 2