[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / X86 / statepoint-invoke-ra-remove-back-copies.mir
blob3e11b9f7f82fd0b78fa07b86e7400b6e5cc9f223
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # REQUIRES: asserts
3 # RUN: llc -x mir -run-pass=greedy -verify-machineinstrs < %s 2>&1  | FileCheck %s
5 # CHECK-NOT: Cannot move stop beyond start
6 --- |
7   ; ModuleID = 'remove-back-copies'
8   source_filename = "remove-back-copies.ll"
9   target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
10   target triple = "x86_64-unknown-linux-gnu"
12   define void @hoge(i8 addrspace(1)* %arg) gc "statepoint-example" personality i32* ()* @widget {
13   bb:
14     %tmp = call token (i64, i32, void (i8 addrspace(1)*, i8 addrspace(1)*)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidp1i8p1i8f(i64 2, i32 5, void (i8 addrspace(1)*, i8 addrspace(1)*)* nonnull @quux, i32 2, i32 0, i8 addrspace(1)* %arg, i8 addrspace(1)* undef, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 6, i32 0, i32 4, i32 1, i32 0, i8 addrspace(1)* %arg, i32 7, i8* null, i32 0, i8 addrspace(1)* %arg, i32 7, i8* null, i32 0, i8 addrspace(1)* %arg, i32 2, i32 1, i32 5, i32 0, i32 2, i32 0, i32 7, i8* null, i32 7, i8* null), "gc-live"(i8 addrspace(1)* %arg) ]
15     %tmp1 = load atomic i8 addrspace(1)*, i8 addrspace(1)* addrspace(1)* undef unordered, align 8
16     %tmp2 = ptrtoint i8 addrspace(1)* %tmp1 to i64
17     %tmp3 = xor i64 %tmp2, -1
18     %tmp4 = inttoptr i64 %tmp3 to i8 addrspace(1)*
19     %tmp5 = select i1 false, i8 addrspace(1)* null, i8 addrspace(1)* %tmp4
20     br i1 undef, label %bb6, label %bb40
22   bb6:                                              ; preds = %bb
23     br label %bb7
25   bb7:                                              ; preds = %bb27, %bb6
26     %tmp9 = phi i8 addrspace(1)* [ undef, %bb6 ], [ %tmp28, %bb27 ]
27     %tmp10 = phi i8 addrspace(1)* [ undef, %bb6 ], [ %tmp29, %bb27 ]
28     %tmp11 = phi i8 addrspace(1)* [ undef, %bb6 ], [ %tmp30, %bb27 ]
29     %tmp12 = phi i32 [ 0, %bb6 ], [ %tmp16, %bb27 ]
30     %tmp13 = load atomic i32, i32 addrspace(1)* undef unordered, align 8
31     %tmp14 = sub i32 %tmp13, 0
32     %tmp15 = select i1 false, i32 %tmp14, i32 undef
33     %tmp16 = add i32 %tmp15, %tmp12
34     %tmp17 = icmp sgt i32 %tmp12, %tmp16
35     %tmp18 = or i1 undef, %tmp17
36     %tmp19 = or i1 undef, %tmp18
37     br i1 %tmp19, label %bb41, label %bb20
39   bb20:                                             ; preds = %bb7
40     br i1 undef, label %bb27, label %bb23
42   bb23:                                             ; preds = %bb20
43     %tmp24 = invoke token (i64, i32, void (i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32p1i8p1i8i32i32f(i64 1, i32 16, void (i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)* nonnull @barney, i32 5, i32 0, i32 undef, i8 addrspace(1)* nonnull undef, i8 addrspace(1)* null, i32 0, i32 undef, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp11, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp11, i32 10, i32 2, i32 12, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* %tmp11, i32 0, i8 addrspace(1)* %tmp11, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp11, i32 2, i32 8, i32 4, i32 0, i32 1, i32 0, i32 7, i8* null, i32 2, i32 12, i32 7, i32 0, i32 2, i32 0, i32 7, i8* null, i32 7, i8* null, i32 10, i32 18, i32 96, i32 0, i32 9, i32 1, i32 0, i8 addrspace(1)* %tmp10, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp9, i32 3, i32 %tmp16, i32 3, i32 0, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp9, i32 8, i32 9, i32 34, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* %tmp10, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef), "gc-live"(i8 addrspace(1)* %tmp11, i8 addrspace(1)* %tmp9, i8 addrspace(1)* undef, i8 addrspace(1)* %tmp10, i8 addrspace(1)* undef, i8 addrspace(1)* %tmp5) ]
44             to label %bb25 unwind label %bb35
46   bb25:                                             ; preds = %bb23
47     %tmp26 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp24, i32 5, i32 5) ; (%tmp5, %tmp5)
48     br label %bb27
50   bb27:                                             ; preds = %bb25, %bb20
51     %tmp28 = phi i8 addrspace(1)* [ %tmp9, %bb20 ], [ undef, %bb25 ]
52     %tmp29 = phi i8 addrspace(1)* [ %tmp10, %bb20 ], [ undef, %bb25 ]
53     %tmp30 = phi i8 addrspace(1)* [ %tmp11, %bb20 ], [ null, %bb25 ]
54     %tmp34 = icmp sgt i32 0, %tmp16
55     br i1 %tmp34, label %bb7, label %bb44
57   bb35:                                             ; preds = %bb23
58     %tmp36 = landingpad token
59             cleanup
60     br i1 undef, label %bb39, label %bb37
62   bb37:                                             ; preds = %bb35
63     %tmp38 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull @ham, i32 1, i32 2, i32 3, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 10, i32 2, i32 12, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 2, i32 8, i32 4, i32 0, i32 1, i32 0, i32 7, i8* null, i32 2, i32 12, i32 7, i32 0, i32 2, i32 0, i32 7, i8* null, i32 7, i8* null, i32 10, i32 18, i32 96, i32 0, i32 9, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 3, i32 %tmp16, i32 3, i32 0, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 0, i32 9, i32 51, i32 0, i32 3, i32 0, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null), "gc-live"() ]
64     unreachable
66   bb39:                                             ; preds = %bb35
67     unreachable
69   bb40:                                             ; preds = %bb
70     call void @wombat()
71     br label %bb41
73   bb41:                                             ; preds = %bb7, %bb40
74     %tmp42 = phi i32 [ 0, %bb40 ], [ %tmp12, %bb7 ]
75     %tmp43 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull @ham, i32 1, i32 2, i32 -39, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 10, i32 2, i32 12, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 2, i32 8, i32 4, i32 0, i32 1, i32 0, i32 7, i8* null, i32 2, i32 12, i32 7, i32 0, i32 2, i32 0, i32 7, i8* null, i32 7, i8* null, i32 10, i32 18, i32 63, i32 0, i32 9, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 3, i32 %tmp42, i32 3, i32 0, i32 3, i32 undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef, i32 2, i32 33, i32 6, i32 0, i32 5, i32 0, i32 0, i8 addrspace(1)* undef, i32 3, i32 %tmp42, i32 3, i32 undef, i32 0, i8 addrspace(1)* undef, i32 3, i32 undef, i32 1, i32 34, i32 14, i32 0, i32 3, i32 0, i32 3, i32 %tmp42, i32 3, i32 undef, i32 3, i32 0), "gc-live"() ]
76     unreachable
78   bb44:                                             ; preds = %bb27
79     call void @hoge.1()
80     br i1 undef, label %bb50, label %bb45
82   bb45:                                             ; preds = %bb44
83     br i1 undef, label %bb56, label %bb46
85   bb46:                                             ; preds = %bb45
86     %tmp47 = invoke token (i64, i32, void (i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32p1i8p1i8i32i32f(i64 1, i32 16, void (i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)* nonnull @barney, i32 5, i32 0, i32 undef, i8 addrspace(1)* nonnull undef, i8 addrspace(1)* undef, i32 0, i32 undef, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp30, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp30, i32 10, i32 2, i32 19, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* %tmp30, i32 0, i8 addrspace(1)* %tmp30, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp30, i32 8, i32 9, i32 34, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* undef, i32 0, i8 addrspace(1)* undef, i32 7, i8* null, i32 0, i8 addrspace(1)* undef), "gc-live"(i8 addrspace(1)* %tmp30, i8 addrspace(1)* undef, i8 addrspace(1)* undef) ]
87             to label %bb48 unwind label %bb52
89   bb48:                                             ; preds = %bb46
90     %tmp49 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp47, i32 0, i32 0) ; (%tmp30, %tmp30)
91     br label %bb56
93   bb50:                                             ; preds = %bb44
94     %tmp51 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull @ham, i32 1, i32 2, i32 10, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp30, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp30, i32 10, i32 2, i32 19, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* %tmp30, i32 0, i8 addrspace(1)* %tmp30, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp30, i32 1, i32 9, i32 6, i32 1, i32 3, i32 0, i32 0, i8 addrspace(1)* null, i32 0, i8 addrspace(1)* undef, i32 0, i8 addrspace(1)* null, i32 7, i8* null), "gc-live"() ]
95     unreachable
97   bb52:                                             ; preds = %bb46
98     %tmp53 = landingpad token
99             cleanup
100     %tmp54 = call coldcc i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token %tmp53, i32 0, i32 0) ; (%tmp30, %tmp30)
101     %tmp55 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull @ham, i32 1, i32 2, i32 3, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp54, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp54, i32 10, i32 2, i32 19, i32 0, i32 3, i32 1, i32 0, i8 addrspace(1)* %tmp54, i32 0, i8 addrspace(1)* %tmp54, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp54, i32 0, i32 9, i32 51, i32 0, i32 3, i32 0, i32 7, i8* null, i32 7, i8* null, i32 7, i8* null), "gc-live"() ]
102     unreachable
104   bb56:                                             ; preds = %bb48, %bb45
105     %tmp57 = phi i8 addrspace(1)* [ %tmp30, %bb45 ], [ %tmp49, %bb48 ]
106     %tmp58 = call token (i64, i32, void (i32)*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 2882400000, i32 0, void (i32)* nonnull @ham, i32 1, i32 2, i32 10, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 10, i32 0, i32 4, i32 1, i32 7, i8* null, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp57, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp57, i32 9, i32 2, i32 26, i32 1, i32 3, i32 1, i32 0, i8 addrspace(1)* null, i32 0, i8 addrspace(1)* %tmp57, i32 0, i8 addrspace(1)* %tmp57, i32 7, i8* null, i32 0, i8 addrspace(1)* %tmp57), "gc-live"() ]
107     unreachable
108   }
110   declare i32* @widget()
112   declare void @quux(i8 addrspace(1)*, i8 addrspace(1)*)
114   declare void @hoge.1()
116   declare void @barney(i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)
118   ; Function Attrs: nounwind readnone
119   declare i8 addrspace(1)* @llvm.experimental.gc.relocate.p1i8(token, i32 immarg, i32 immarg) #0
121   declare token @llvm.experimental.gc.statepoint.p0f_isVoidp1i8p1i8f(i64 immarg, i32 immarg, void (i8 addrspace(1)*, i8 addrspace(1)*)*, i32 immarg, i32 immarg, ...)
123   declare void @ham(i32)
125   declare token @llvm.experimental.gc.statepoint.p0f_isVoidi32f(i64 immarg, i32 immarg, void (i32)*, i32 immarg, i32 immarg, ...)
127   declare token @llvm.experimental.gc.statepoint.p0f_isVoidi32p1i8p1i8i32i32f(i64 immarg, i32 immarg, void (i32, i8 addrspace(1)*, i8 addrspace(1)*, i32, i32)*, i32 immarg, i32 immarg, ...)
129   declare void @wombat()
131   attributes #0 = { nounwind readnone }
135 name:            hoge
136 alignment:       16
137 exposesReturnsTwice: false
138 legalized:       false
139 regBankSelected: false
140 selected:        false
141 failedISel:      false
142 tracksRegLiveness: true
143 hasWinCFI:       false
144 registers:
145   - { id: 0, class: gr64, preferred-register: '' }
146   - { id: 1, class: gr64, preferred-register: '' }
147   - { id: 2, class: gr64, preferred-register: '' }
148   - { id: 3, class: gr64_with_sub_8bit, preferred-register: '' }
149   - { id: 4, class: gr32, preferred-register: '' }
150   - { id: 5, class: gr32, preferred-register: '' }
151   - { id: 6, class: gr64, preferred-register: '' }
152   - { id: 7, class: gr64, preferred-register: '' }
153   - { id: 8, class: gr64, preferred-register: '' }
154   - { id: 9, class: gr32, preferred-register: '' }
155   - { id: 10, class: gr64, preferred-register: '' }
156   - { id: 11, class: gr64, preferred-register: '' }
157   - { id: 12, class: gr64, preferred-register: '' }
158   - { id: 13, class: gr64, preferred-register: '' }
159   - { id: 14, class: gr64, preferred-register: '' }
160   - { id: 15, class: gr64, preferred-register: '' }
161   - { id: 16, class: gr64, preferred-register: '' }
162   - { id: 17, class: gr64, preferred-register: '' }
163   - { id: 18, class: gr32, preferred-register: '' }
164   - { id: 19, class: gr8, preferred-register: '' }
165   - { id: 20, class: gr32, preferred-register: '' }
166   - { id: 21, class: gr64, preferred-register: '' }
167   - { id: 22, class: gr32, preferred-register: '' }
168   - { id: 23, class: gr32, preferred-register: '' }
169   - { id: 24, class: gr64, preferred-register: '' }
170   - { id: 25, class: gr32, preferred-register: '' }
171   - { id: 26, class: gr8, preferred-register: '' }
172   - { id: 27, class: gr32, preferred-register: '' }
173   - { id: 28, class: gr8, preferred-register: '' }
174   - { id: 29, class: gr32, preferred-register: '' }
175   - { id: 30, class: gr32, preferred-register: '' }
176   - { id: 31, class: gr8, preferred-register: '' }
177   - { id: 32, class: gr64, preferred-register: '' }
178   - { id: 33, class: gr32, preferred-register: '' }
179   - { id: 34, class: gr64_with_sub_8bit, preferred-register: '' }
180   - { id: 35, class: gr32, preferred-register: '' }
181   - { id: 36, class: gr64, preferred-register: '' }
182   - { id: 37, class: gr32, preferred-register: '' }
183   - { id: 38, class: gr64, preferred-register: '' }
184   - { id: 39, class: gr64, preferred-register: '' }
185   - { id: 40, class: gr64, preferred-register: '' }
186   - { id: 41, class: gr64, preferred-register: '' }
187   - { id: 42, class: gr64, preferred-register: '' }
188   - { id: 43, class: gr64, preferred-register: '' }
189   - { id: 44, class: gr32, preferred-register: '' }
190   - { id: 45, class: gr8, preferred-register: '' }
191   - { id: 46, class: gr32, preferred-register: '' }
192   - { id: 47, class: gr64, preferred-register: '' }
193   - { id: 48, class: gr64_with_sub_8bit, preferred-register: '' }
194   - { id: 49, class: gr32, preferred-register: '' }
195   - { id: 50, class: gr32, preferred-register: '' }
196   - { id: 51, class: gr8, preferred-register: '' }
197   - { id: 52, class: gr32, preferred-register: '' }
198   - { id: 53, class: gr8, preferred-register: '' }
199   - { id: 54, class: gr64, preferred-register: '' }
200   - { id: 55, class: gr32, preferred-register: '' }
201   - { id: 56, class: gr32, preferred-register: '' }
202   - { id: 57, class: gr64, preferred-register: '' }
203   - { id: 58, class: gr64, preferred-register: '' }
204   - { id: 59, class: gr32, preferred-register: '' }
205   - { id: 60, class: gr64, preferred-register: '' }
206   - { id: 61, class: gr64, preferred-register: '' }
207   - { id: 62, class: gr64, preferred-register: '' }
208   - { id: 63, class: gr32, preferred-register: '' }
209   - { id: 64, class: gr64, preferred-register: '' }
210   - { id: 65, class: gr32, preferred-register: '' }
211   - { id: 66, class: gr64, preferred-register: '' }
212   - { id: 67, class: gr32, preferred-register: '' }
213   - { id: 68, class: gr64, preferred-register: '' }
214   - { id: 69, class: gr32, preferred-register: '' }
215   - { id: 70, class: gr64, preferred-register: '' }
216   - { id: 71, class: gr64, preferred-register: '' }
217   - { id: 72, class: gr64, preferred-register: '' }
218   - { id: 73, class: gr32, preferred-register: '' }
219   - { id: 74, class: gr64, preferred-register: '' }
220   - { id: 75, class: gr64, preferred-register: '' }
221   - { id: 76, class: gr64, preferred-register: '' }
222   - { id: 77, class: gr32, preferred-register: '' }
223   - { id: 78, class: gr64, preferred-register: '' }
224   - { id: 79, class: gr32, preferred-register: '' }
225 liveins:
226   - { reg: '$rdi', virtual-reg: '%12' }
227 frameInfo:
228   isFrameAddressTaken: false
229   isReturnAddressTaken: false
230   hasStackMap:     false
231   hasPatchPoint:   false
232   stackSize:       0
233   offsetAdjustment: 0
234   maxAlignment:    4
235   adjustsStack:    false
236   hasCalls:        true
237   stackProtector:  ''
238   maxCallFrameSize: 4294967295
239   cvBytesOfCalleeSavedRegisters: 0
240   hasOpaqueSPAdjustment: false
241   hasVAStart:      false
242   hasMustTailInVarArgFunc: false
243   hasTailCall:     false
244   localFrameSize:  0
245   savePoint:       ''
246   restorePoint:    ''
247 fixedStack:      []
248 stack:
249   - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4,
250       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
251       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
252 callSites:       []
253 debugValueSubstitutions: []
254 constants:       []
255 machineFunctionInfo: {}
256 body:             |
257   ; CHECK-LABEL: name: hoge
258   ; CHECK: bb.0.bb:
259   ; CHECK:   successors: %bb.1(0x80000000), %bb.15(0x00000000)
260   ; CHECK:   liveins: $rdi
261   ; CHECK:   [[COPY:%[0-9]+]]:gr64 = COPY $rdi
262   ; CHECK:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
263   ; CHECK:   $rdi = COPY [[COPY]]
264   ; CHECK:   dead [[COPY]]:gr64 = STATEPOINT 2, 5, 2, undef %15:gr64, $rdi, undef $rsi, 2, 0, 2, 0, 2, 27, 2, 0, 2, 10, 2, 0, 2, 6, 2, 0, 2, 4, 2, 1, 2, 0, [[COPY]], 2, 7, 2, 0, 2, 0, [[COPY]], 2, 7, 2, 0, 2, 0, [[COPY]], 2, 2, 2, 1, 2, 5, 2, 0, 2, 2, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 1, [[COPY]](tied-def 0), 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp
265   ; CHECK:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
266   ; CHECK:   [[MOV32r0_:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags
267   ; CHECK:   TEST8rr [[MOV32r0_]].sub_8bit, [[MOV32r0_]].sub_8bit, implicit-def $eflags
268   ; CHECK:   JCC_1 %bb.15, 5, implicit $eflags
269   ; CHECK:   JMP_1 %bb.1
270   ; CHECK: bb.1.bb6:
271   ; CHECK:   successors: %bb.2(0x80000000)
272   ; CHECK:   [[MOV64rm:%[0-9]+]]:gr64 = MOV64rm undef %17:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `i8 addrspace(1)* addrspace(1)* undef`, addrspace 1)
273   ; CHECK:   [[NOT64r:%[0-9]+]]:gr64 = NOT64r [[NOT64r]]
274   ; CHECK:   MOV64mr %stack.1, 1, $noreg, 0, $noreg, [[NOT64r]] :: (store (s64) into %stack.1)
275   ; CHECK:   undef %48.sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
276   ; CHECK:   [[DEF:%[0-9]+]]:gr64 = IMPLICIT_DEF
277   ; CHECK:   [[DEF1:%[0-9]+]]:gr64 = IMPLICIT_DEF
278   ; CHECK:   [[DEF2:%[0-9]+]]:gr64_with_sub_8bit = IMPLICIT_DEF
279   ; CHECK:   [[MOV32r0_1:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags
280   ; CHECK: bb.2.bb7:
281   ; CHECK:   successors: %bb.3(0x00000000), %bb.4(0x80000000)
282   ; CHECK:   TEST8rr %48.sub_8bit, %48.sub_8bit, implicit-def $eflags
283   ; CHECK:   JCC_1 %bb.4, 4, implicit $eflags
284   ; CHECK: bb.3:
285   ; CHECK:   successors: %bb.16(0x80000000)
286   ; CHECK:   JMP_1 %bb.16
287   ; CHECK: bb.4.bb7:
288   ; CHECK:   successors: %bb.5(0x00000000), %bb.6(0x80000000)
289   ; CHECK:   TEST8rr %48.sub_8bit, %48.sub_8bit, implicit-def $eflags
290   ; CHECK:   JCC_1 %bb.6, 4, implicit $eflags
291   ; CHECK: bb.5:
292   ; CHECK:   successors: %bb.16(0x80000000)
293   ; CHECK:   JMP_1 %bb.16
294   ; CHECK: bb.6.bb7:
295   ; CHECK:   successors: %bb.16(0x00000000), %bb.7(0x80000000)
296   ; CHECK:   [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm undef %24:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `i32 addrspace(1)* undef`, align 8, addrspace 1)
297   ; CHECK:   [[ADD32rr:%[0-9]+]]:gr32 = ADD32rr [[ADD32rr]], [[MOV32r0_1]], implicit-def dead $eflags
298   ; CHECK:   CMP32rr [[MOV32r0_1]], [[ADD32rr]], implicit-def $eflags
299   ; CHECK:   JCC_1 %bb.16, 15, implicit $eflags
300   ; CHECK:   JMP_1 %bb.7
301   ; CHECK: bb.7.bb20:
302   ; CHECK:   successors: %bb.8(0x40000000), %bb.9(0x40000000)
303   ; CHECK:   TEST8rr %48.sub_8bit, %48.sub_8bit, implicit-def $eflags
304   ; CHECK:   JCC_1 %bb.9, 4, implicit $eflags
305   ; CHECK: bb.8:
306   ; CHECK:   successors: %bb.11(0x80000000)
307   ; CHECK:   JMP_1 %bb.11
308   ; CHECK: bb.9.bb23:
309   ; CHECK:   successors: %bb.10(0x7ffff800), %bb.12(0x00000800)
310   ; CHECK:   MOV32mr %stack.0, 1, $noreg, 0, $noreg, [[ADD32rr]] :: (store (s32) into %stack.0)
311   ; CHECK:   EH_LABEL <mcsymbol .Ltmp0>
312   ; CHECK:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
313   ; CHECK:   [[MOV64rm:%[0-9]+]]:gr64 = MOV64rm %stack.1, 1, $noreg, 0, $noreg :: (load (s64) from %stack.1)
314   ; CHECK:   dead $edx = MOV32r0 implicit-def dead $eflags, implicit-def $rdx
315   ; CHECK:   $ecx = MOV32r0 implicit-def dead $eflags
316   ; CHECK:   [[COPY1:%[0-9]+]]:gr64 = COPY [[DEF2]]
317   ; CHECK:   dead [[MOV64rm]]:gr64, dead [[COPY1]]:gr64, dead [[DEF1]]:gr64, dead [[DEF]]:gr64 = STATEPOINT 1, 16, 5, undef %41:gr64, undef $edi, undef $rsi, $rdx, $ecx, undef $r8d, 2, 0, 2, 0, 2, 89, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, [[COPY1]], 2, 7, 2, 0, 2, 0, [[COPY1]], 2, 10, 2, 2, 2, 12, 2, 0, 2, 3, 2, 1, 2, 0, [[COPY1]], 2, 0, [[COPY1]], 2, 7, 2, 0, 2, 0, [[COPY1]], 2, 2, 2, 8, 2, 4, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 12, 2, 7, 2, 0, 2, 2, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 10, 2, 18, 2, 96, 2, 0, 2, 9, 2, 1, 2, 0, [[DEF1]], 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, [[DEF]], 2, 3, 1, 4, %stack.0, 0, 2, 3, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, [[DEF]], 2, 8, 2, 9, 2, 34, 2, 0, 2, 3, 2, 1, 2, 0, [[DEF1]], 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 5, [[MOV64rm]](tied-def 0), [[COPY1]](tied-def 1), [[DEF1]](tied-def 2), 2, 4278124286, [[DEF]](tied-def 3), 2, 0, 2, 5, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, csr_64, implicit-def $rsp, implicit-def $ssp :: (volatile load store (s32) on %stack.0)
318   ; CHECK:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
319   ; CHECK:   EH_LABEL <mcsymbol .Ltmp1>
320   ; CHECK:   JMP_1 %bb.10
321   ; CHECK: bb.10.bb25:
322   ; CHECK:   successors: %bb.11(0x80000000)
323   ; CHECK:   [[DEF3:%[0-9]+]]:gr64 = IMPLICIT_DEF
324   ; CHECK:   [[DEF3:%[0-9]+]]:gr64 = IMPLICIT_DEF
325   ; CHECK:   undef [[DEF2]].sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
326   ; CHECK: bb.11.bb27:
327   ; CHECK:   successors: %bb.2(0x80000000), %bb.17(0x00000000)
328   ; CHECK:   TEST32rr [[ADD32rr]], [[ADD32rr]], implicit-def $eflags
329   ; CHECK:   [[COPY2:%[0-9]+]]:gr32 = COPY [[ADD32rr]]
330   ; CHECK:   JCC_1 %bb.2, 8, implicit $eflags
331   ; CHECK:   JMP_1 %bb.17
332   ; CHECK: bb.12.bb35 (landing-pad):
333   ; CHECK:   successors: %bb.14(0x40000000), %bb.13(0x40000000)
334   ; CHECK:   liveins: $rax, $rdx
335   ; CHECK:   EH_LABEL <mcsymbol .Ltmp2>
336   ; CHECK:   [[MOV32r0_:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags
337   ; CHECK:   TEST8rr [[MOV32r0_]].sub_8bit, [[MOV32r0_]].sub_8bit, implicit-def $eflags
338   ; CHECK:   JCC_1 %bb.14, 5, implicit $eflags
339   ; CHECK:   JMP_1 %bb.13
340   ; CHECK: bb.13.bb37:
341   ; CHECK:   successors:
342   ; CHECK:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
343   ; CHECK:   $edi = MOV32ri 3
344   ; CHECK:   STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @ham, $edi, 2, 0, 2, 2, 2, 87, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 10, 2, 2, 2, 12, 2, 0, 2, 3, 2, 1, 2, 0, 2, 4278124286, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 2, 2, 8, 2, 4, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 12, 2, 7, 2, 0, 2, 2, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 10, 2, 18, 2, 96, 2, 0, 2, 9, 2, 1, 2, 0, 2, 4278124286, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 3, [[ADD32rr]], 2, 3, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 0, 2, 9, 2, 51, 2, 0, 2, 3, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 1, 2, 4278124286, 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp
345   ; CHECK:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
346   ; CHECK: bb.14.bb39:
347   ; CHECK:   successors:
348   ; CHECK: bb.15.bb40:
349   ; CHECK:   successors: %bb.16(0x80000000)
350   ; CHECK:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
351   ; CHECK:   CALL64pcrel32 target-flags(x86-plt) @wombat, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp
352   ; CHECK:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
353   ; CHECK: bb.16.bb41:
354   ; CHECK:   successors:
355   ; CHECK:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
356   ; CHECK:   $edi = MOV32ri -39
357   ; CHECK:   STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @ham, $edi, 2, 0, 2, 2, 2, 103, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 10, 2, 2, 2, 12, 2, 0, 2, 3, 2, 1, 2, 0, 2, 4278124286, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 2, 2, 8, 2, 4, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 12, 2, 7, 2, 0, 2, 2, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 10, 2, 18, 2, 63, 2, 0, 2, 9, 2, 1, 2, 0, 2, 4278124286, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 3, [[COPY2]], 2, 3, 2, 0, 2, 3, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 2, 2, 33, 2, 6, 2, 0, 2, 5, 2, 0, 2, 0, 2, 4278124286, 2, 3, [[COPY2]], 2, 3, 2, 4278124286, 2, 0, 2, 4278124286, 2, 3, 2, 4278124286, 2, 1, 2, 34, 2, 14, 2, 0, 2, 3, 2, 0, 2, 3, [[COPY2]], 2, 3, 2, 4278124286, 2, 3, 2, 0, 2, 1, 2, 4278124286, 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp
358   ; CHECK:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
359   ; CHECK: bb.17.bb44:
360   ; CHECK:   successors: %bb.22(0x40000000), %bb.18(0x40000000)
361   ; CHECK:   [[COPY3:%[0-9]+]]:gr64 = COPY [[DEF2]]
362   ; CHECK:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
363   ; CHECK:   CALL64pcrel32 target-flags(x86-plt) @hoge.1, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp
364   ; CHECK:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
365   ; CHECK:   [[MOV32r0_1:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags
366   ; CHECK:   TEST8rr [[MOV32r0_1]].sub_8bit, [[MOV32r0_1]].sub_8bit, implicit-def $eflags
367   ; CHECK:   JCC_1 %bb.22, 5, implicit $eflags
368   ; CHECK:   JMP_1 %bb.18
369   ; CHECK: bb.18.bb45:
370   ; CHECK:   successors: %bb.19(0x40000000), %bb.20(0x40000000)
371   ; CHECK:   [[MOV32r0_2:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags
372   ; CHECK:   TEST8rr [[MOV32r0_2]].sub_8bit, [[MOV32r0_2]].sub_8bit, implicit-def $eflags
373   ; CHECK:   JCC_1 %bb.20, 4, implicit $eflags
374   ; CHECK: bb.19:
375   ; CHECK:   successors: %bb.24(0x80000000)
376   ; CHECK:   JMP_1 %bb.24
377   ; CHECK: bb.20.bb46:
378   ; CHECK:   successors: %bb.21(0x40000000), %bb.23(0x40000000)
379   ; CHECK:   EH_LABEL <mcsymbol .Ltmp3>
380   ; CHECK:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
381   ; CHECK:   $ecx = MOV32r0 implicit-def dead $eflags
382   ; CHECK:   [[STATEPOINT:%[0-9]+]]:gr64 = STATEPOINT 1, 16, 5, undef %60:gr64, undef $edi, undef $rsi, undef $rdx, $ecx, undef $r8d, 2, 0, 2, 0, 2, 45, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, [[STATEPOINT]], 2, 7, 2, 0, 2, 0, [[STATEPOINT]], 2, 10, 2, 2, 2, 19, 2, 0, 2, 3, 2, 1, 2, 0, [[STATEPOINT]], 2, 0, [[STATEPOINT]], 2, 7, 2, 0, 2, 0, [[STATEPOINT]], 2, 8, 2, 9, 2, 34, 2, 0, 2, 3, 2, 1, 2, 0, 2, 4278124286, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 2, [[STATEPOINT]](tied-def 0), 2, 4278124286, 2, 0, 2, 2, 0, 0, 1, 1, csr_64, implicit-def $rsp, implicit-def $ssp
383   ; CHECK:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
384   ; CHECK:   EH_LABEL <mcsymbol .Ltmp4>
385   ; CHECK:   JMP_1 %bb.21
386   ; CHECK: bb.21.bb48:
387   ; CHECK:   successors: %bb.24(0x80000000)
388   ; CHECK:   JMP_1 %bb.24
389   ; CHECK: bb.22.bb50:
390   ; CHECK:   successors:
391   ; CHECK:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
392   ; CHECK:   $edi = MOV32ri 10
393   ; CHECK:   dead [[STATEPOINT]]:gr64 = STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @ham, $edi, 2, 0, 2, 2, 2, 45, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, [[STATEPOINT]], 2, 7, 2, 0, 2, 0, [[STATEPOINT]], 2, 10, 2, 2, 2, 19, 2, 0, 2, 3, 2, 1, 2, 0, [[STATEPOINT]], 2, 0, [[STATEPOINT]], 2, 7, 2, 0, 2, 0, [[STATEPOINT]], 2, 1, 2, 9, 2, 6, 2, 1, 2, 3, 2, 0, 2, 0, 2, 0, 2, 0, 2, 4278124286, 2, 0, 2, 0, 2, 7, 2, 0, 2, 3, [[STATEPOINT]](tied-def 0), 2, 0, 2, 4278124286, 2, 0, 2, 3, 0, 0, 1, 1, 2, 2, csr_64, implicit-def $rsp, implicit-def $ssp
394   ; CHECK:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
395   ; CHECK: bb.23.bb52 (landing-pad):
396   ; CHECK:   successors:
397   ; CHECK:   liveins: $rax, $rdx
398   ; CHECK:   EH_LABEL <mcsymbol .Ltmp5>
399   ; CHECK:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
400   ; CHECK:   $edi = MOV32ri 3
401   ; CHECK:   dead [[STATEPOINT]]:gr64 = STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @ham, $edi, 2, 0, 2, 2, 2, 43, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, [[STATEPOINT]], 2, 7, 2, 0, 2, 0, [[STATEPOINT]], 2, 10, 2, 2, 2, 19, 2, 0, 2, 3, 2, 1, 2, 0, [[STATEPOINT]], 2, 0, [[STATEPOINT]], 2, 7, 2, 0, 2, 0, [[STATEPOINT]], 2, 0, 2, 9, 2, 51, 2, 0, 2, 3, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 1, [[STATEPOINT]](tied-def 0), 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp
402   ; CHECK:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
403   ; CHECK: bb.24.bb56:
404   ; CHECK:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
405   ; CHECK:   $edi = MOV32ri 10
406   ; CHECK:   dead [[STATEPOINT]]:gr64 = STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @ham, $edi, 2, 0, 2, 2, 2, 33, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, [[STATEPOINT]], 2, 7, 2, 0, 2, 0, [[STATEPOINT]], 2, 9, 2, 2, 2, 26, 2, 1, 2, 3, 2, 1, 2, 0, 2, 0, 2, 0, [[STATEPOINT]], 2, 0, [[STATEPOINT]], 2, 7, 2, 0, 2, 0, [[STATEPOINT]], 2, 2, [[STATEPOINT]](tied-def 0), 2, 0, 2, 0, 2, 2, 0, 0, 1, 1, csr_64, implicit-def $rsp, implicit-def $ssp
407   ; CHECK:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
408   bb.0.bb:
409     successors: %bb.1(0x80000000), %bb.12(0x00000000)
410     liveins: $rdi
412     %14:gr64 = COPY $rdi
413     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
414     $rdi = COPY %14
415     dead %14:gr64 = STATEPOINT 2, 5, 2, undef %15:gr64, $rdi, undef $rsi, 2, 0, 2, 0, 2, 27, 2, 0, 2, 10, 2, 0, 2, 6, 2, 0, 2, 4, 2, 1, 2, 0, %14, 2, 7, 2, 0, 2, 0, %14, 2, 7, 2, 0, 2, 0, %14, 2, 2, 2, 1, 2, 5, 2, 0, 2, 2, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 1, %14(tied-def 0), 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp
416     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
417     %77:gr32 = MOV32r0 implicit-def dead $eflags
418     TEST8rr %77.sub_8bit, %77.sub_8bit, implicit-def $eflags
419     JCC_1 %bb.12, 5, implicit $eflags
420     JMP_1 %bb.1
422   bb.1.bb6:
423     successors: %bb.2(0x80000000)
425     %0:gr64 = MOV64rm undef %17:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `i8 addrspace(1)* addrspace(1)* undef`, addrspace 1)
426     %0:gr64 = NOT64r %0
427     undef %48.sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
428     %1:gr64 = IMPLICIT_DEF
429     %2:gr64 = IMPLICIT_DEF
430     %3:gr64_with_sub_8bit = IMPLICIT_DEF
431     %77:gr32 = MOV32r0 implicit-def dead $eflags
433   bb.2.bb7:
434     successors: %bb.22(0x00000000), %bb.3(0x80000000)
436     TEST8rr %48.sub_8bit, %48.sub_8bit, implicit-def $eflags
437     JCC_1 %bb.3, 4, implicit $eflags
439   bb.22:
440     successors: %bb.13(0x80000000)
442     JMP_1 %bb.13
444   bb.3.bb7:
445     successors: %bb.23(0x00000000), %bb.4(0x80000000)
447     TEST8rr %48.sub_8bit, %48.sub_8bit, implicit-def $eflags
448     JCC_1 %bb.4, 4, implicit $eflags
450   bb.23:
451     successors: %bb.13(0x80000000)
453     JMP_1 %bb.13
455   bb.4.bb7:
456     successors: %bb.13(0x00000000), %bb.5(0x80000000)
458     %5:gr32 = MOV32rm undef %24:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `i32 addrspace(1)* undef`, align 8, addrspace 1)
459     %5:gr32 = ADD32rr %5, %77, implicit-def dead $eflags
460     CMP32rr %77, %5, implicit-def $eflags
461     JCC_1 %bb.13, 15, implicit $eflags
462     JMP_1 %bb.5
464   bb.5.bb20:
465     successors: %bb.21(0x40000000), %bb.6(0x40000000)
467     TEST8rr %48.sub_8bit, %48.sub_8bit, implicit-def $eflags
468     JCC_1 %bb.6, 4, implicit $eflags
470   bb.21:
471     successors: %bb.8(0x80000000)
473     JMP_1 %bb.8
475   bb.6.bb23:
476     successors: %bb.7(0x7ffff800), %bb.9(0x00000800)
478     MOV32mr %stack.0, 1, $noreg, 0, $noreg, %5 :: (store (s32) into %stack.0)
479     EH_LABEL <mcsymbol .Ltmp0>
480     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
481     %32:gr64 = COPY %0
482     dead $edx = MOV32r0 implicit-def dead $eflags, implicit-def $rdx
483     $ecx = MOV32r0 implicit-def dead $eflags
484     dead %32:gr64, dead %3:gr64_with_sub_8bit, dead %2:gr64, dead %1:gr64 = STATEPOINT 1, 16, 5, undef %41:gr64, undef $edi, undef $rsi, $rdx, $ecx, undef $r8d, 2, 0, 2, 0, 2, 89, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, %3, 2, 7, 2, 0, 2, 0, %3, 2, 10, 2, 2, 2, 12, 2, 0, 2, 3, 2, 1, 2, 0, %3, 2, 0, %3, 2, 7, 2, 0, 2, 0, %3, 2, 2, 2, 8, 2, 4, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 12, 2, 7, 2, 0, 2, 2, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 10, 2, 18, 2, 96, 2, 0, 2, 9, 2, 1, 2, 0, %2, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, %1, 2, 3, 1, 4, %stack.0, 0, 2, 3, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, %1, 2, 8, 2, 9, 2, 34, 2, 0, 2, 3, 2, 1, 2, 0, %2, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 5, %32(tied-def 0), %3(tied-def 1), %2(tied-def 2), 2, 4278124286, %1(tied-def 3), 2, 0, 2, 5, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, csr_64, implicit-def $rsp, implicit-def $ssp :: (volatile load store (s32) on %stack.0)
485     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
486     EH_LABEL <mcsymbol .Ltmp1>
487     JMP_1 %bb.7
489   bb.7.bb25:
490     successors: %bb.8(0x80000000)
492     %1:gr64 = IMPLICIT_DEF
493     %2:gr64 = IMPLICIT_DEF
494     undef %3.sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
496   bb.8.bb27:
497     successors: %bb.2(0x80000000), %bb.14(0x00000000)
499     TEST32rr %5, %5, implicit-def $eflags
500     %77:gr32 = COPY %5
501     JCC_1 %bb.2, 8, implicit $eflags
502     JMP_1 %bb.14
504   bb.9.bb35 (landing-pad):
505     successors: %bb.11(0x40000000), %bb.10(0x40000000)
506     liveins: $rax, $rdx
508     EH_LABEL <mcsymbol .Ltmp2>
509     %44:gr32 = MOV32r0 implicit-def dead $eflags
510     TEST8rr %44.sub_8bit, %44.sub_8bit, implicit-def $eflags
511     JCC_1 %bb.11, 5, implicit $eflags
512     JMP_1 %bb.10
514   bb.10.bb37:
515     successors:
517     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
518     $edi = MOV32ri 3
519     STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @ham, $edi, 2, 0, 2, 2, 2, 87, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 10, 2, 2, 2, 12, 2, 0, 2, 3, 2, 1, 2, 0, 2, 4278124286, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 2, 2, 8, 2, 4, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 12, 2, 7, 2, 0, 2, 2, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 10, 2, 18, 2, 96, 2, 0, 2, 9, 2, 1, 2, 0, 2, 4278124286, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 3, %5, 2, 3, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 0, 2, 9, 2, 51, 2, 0, 2, 3, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 1, 2, 4278124286, 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp
520     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
522   bb.11.bb39:
523     successors:
526   bb.12.bb40:
527     successors: %bb.13(0x80000000)
529     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
530     CALL64pcrel32 target-flags(x86-plt) @wombat, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp
531     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
533   bb.13.bb41:
534     successors:
536     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
537     $edi = MOV32ri -39
538     STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @ham, $edi, 2, 0, 2, 2, 2, 103, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 10, 2, 2, 2, 12, 2, 0, 2, 3, 2, 1, 2, 0, 2, 4278124286, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 2, 2, 8, 2, 4, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 12, 2, 7, 2, 0, 2, 2, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 10, 2, 18, 2, 63, 2, 0, 2, 9, 2, 1, 2, 0, 2, 4278124286, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 3, %77, 2, 3, 2, 0, 2, 3, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 2, 2, 33, 2, 6, 2, 0, 2, 5, 2, 0, 2, 0, 2, 4278124286, 2, 3, %77, 2, 3, 2, 4278124286, 2, 0, 2, 4278124286, 2, 3, 2, 4278124286, 2, 1, 2, 34, 2, 14, 2, 0, 2, 3, 2, 0, 2, 3, %77, 2, 3, 2, 4278124286, 2, 3, 2, 0, 2, 1, 2, 4278124286, 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp
539     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
541   bb.14.bb44:
542     successors: %bb.18(0x40000000), %bb.15(0x40000000)
544     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
545     CALL64pcrel32 target-flags(x86-plt) @hoge.1, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp
546     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
547     %50:gr32 = MOV32r0 implicit-def dead $eflags
548     TEST8rr %50.sub_8bit, %50.sub_8bit, implicit-def $eflags
549     JCC_1 %bb.18, 5, implicit $eflags
550     JMP_1 %bb.15
552   bb.15.bb45:
553     successors: %bb.24(0x40000000), %bb.16(0x40000000)
555     %52:gr32 = MOV32r0 implicit-def dead $eflags
556     TEST8rr %52.sub_8bit, %52.sub_8bit, implicit-def $eflags
557     JCC_1 %bb.16, 4, implicit $eflags
559   bb.24:
560     successors: %bb.20(0x80000000)
562     JMP_1 %bb.20
564   bb.16.bb46:
565     successors: %bb.17(0x40000000), %bb.19(0x40000000)
567     EH_LABEL <mcsymbol .Ltmp3>
568     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
569     $ecx = MOV32r0 implicit-def dead $eflags
570     %3:gr64_with_sub_8bit = STATEPOINT 1, 16, 5, undef %60:gr64, undef $edi, undef $rsi, undef $rdx, $ecx, undef $r8d, 2, 0, 2, 0, 2, 45, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, %3, 2, 7, 2, 0, 2, 0, %3, 2, 10, 2, 2, 2, 19, 2, 0, 2, 3, 2, 1, 2, 0, %3, 2, 0, %3, 2, 7, 2, 0, 2, 0, %3, 2, 8, 2, 9, 2, 34, 2, 0, 2, 3, 2, 1, 2, 0, 2, 4278124286, 2, 0, 2, 4278124286, 2, 7, 2, 0, 2, 0, 2, 4278124286, 2, 2, %3(tied-def 0), 2, 4278124286, 2, 0, 2, 2, 0, 0, 1, 1, csr_64, implicit-def $rsp, implicit-def $ssp
571     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
572     EH_LABEL <mcsymbol .Ltmp4>
573     JMP_1 %bb.17
575   bb.17.bb48:
576     successors: %bb.20(0x80000000)
578     JMP_1 %bb.20
580   bb.18.bb50:
581     successors:
583     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
584     $edi = MOV32ri 10
585     dead %3:gr64_with_sub_8bit = STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @ham, $edi, 2, 0, 2, 2, 2, 45, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, %3, 2, 7, 2, 0, 2, 0, %3, 2, 10, 2, 2, 2, 19, 2, 0, 2, 3, 2, 1, 2, 0, %3, 2, 0, %3, 2, 7, 2, 0, 2, 0, %3, 2, 1, 2, 9, 2, 6, 2, 1, 2, 3, 2, 0, 2, 0, 2, 0, 2, 0, 2, 4278124286, 2, 0, 2, 0, 2, 7, 2, 0, 2, 3, %3(tied-def 0), 2, 0, 2, 4278124286, 2, 0, 2, 3, 0, 0, 1, 1, 2, 2, csr_64, implicit-def $rsp, implicit-def $ssp
586     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
588   bb.19.bb52 (landing-pad):
589     successors:
590     liveins: $rax, $rdx
592     EH_LABEL <mcsymbol .Ltmp5>
593     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
594     $edi = MOV32ri 3
595     dead %3:gr64_with_sub_8bit = STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @ham, $edi, 2, 0, 2, 2, 2, 43, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, %3, 2, 7, 2, 0, 2, 0, %3, 2, 10, 2, 2, 2, 19, 2, 0, 2, 3, 2, 1, 2, 0, %3, 2, 0, %3, 2, 7, 2, 0, 2, 0, %3, 2, 0, 2, 9, 2, 51, 2, 0, 2, 3, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 1, %3(tied-def 0), 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp
596     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
598   bb.20.bb56:
599     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
600     $edi = MOV32ri 10
601     dead %3:gr64_with_sub_8bit = STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @ham, $edi, 2, 0, 2, 2, 2, 33, 2, 0, 2, 10, 2, 0, 2, 10, 2, 0, 2, 4, 2, 1, 2, 7, 2, 0, 2, 7, 2, 0, 2, 0, %3, 2, 7, 2, 0, 2, 0, %3, 2, 9, 2, 2, 2, 26, 2, 1, 2, 3, 2, 1, 2, 0, 2, 0, 2, 0, %3, 2, 0, %3, 2, 7, 2, 0, 2, 0, %3, 2, 2, %3(tied-def 0), 2, 0, 2, 0, 2, 2, 0, 0, 1, 1, csr_64, implicit-def $rsp, implicit-def $ssp
602     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp