[AArch64,ELF] Restrict MOVZ/MOVK to non-PIC large code model (#70178)
[llvm-project.git] / llvm / test / CodeGen / X86 / statepoint-invoke-ra-remove-back-copies.mir
blobf72bac86f0a0b324a6bb71f43432b8e9e5b5a7db
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(ptr addrspace(1) %arg) gc "statepoint-example" personality ptr @widget {
13   bb:
14     %tmp = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr nonnull elementtype(void (ptr addrspace(1), ptr addrspace(1))) @quux, i32 2, i32 0, ptr addrspace(1) %arg, ptr addrspace(1) undef, i32 0, i32 0) [ "deopt"(i32 0, i32 10, i32 0, i32 6, i32 0, i32 4, i32 1, i32 0, ptr addrspace(1) %arg, i32 7, ptr null, i32 0, ptr addrspace(1) %arg, i32 7, ptr null, i32 0, ptr addrspace(1) %arg, i32 2, i32 1, i32 5, i32 0, i32 2, i32 0, i32 7, ptr null, i32 7, ptr null), "gc-live"(ptr addrspace(1) %arg) ]
15     %tmp1 = load atomic ptr addrspace(1), ptr addrspace(1) undef unordered, align 8
16     %tmp2 = ptrtoint ptr addrspace(1) %tmp1 to i64
17     %tmp3 = xor i64 %tmp2, -1
18     %tmp4 = inttoptr i64 %tmp3 to ptr addrspace(1)
19     %tmp5 = select i1 false, ptr addrspace(1) null, ptr 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 ptr addrspace(1) [ undef, %bb6 ], [ %tmp28, %bb27 ]
27     %tmp10 = phi ptr addrspace(1) [ undef, %bb6 ], [ %tmp29, %bb27 ]
28     %tmp11 = phi ptr addrspace(1) [ undef, %bb6 ], [ %tmp30, %bb27 ]
29     %tmp12 = phi i32 [ 0, %bb6 ], [ %tmp16, %bb27 ]
30     %tmp13 = load atomic i32, ptr 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, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 1, i32 16, ptr nonnull elementtype(void (i32, ptr addrspace(1), ptr addrspace(1), i32, i32)) @barney, i32 5, i32 0, i32 undef, ptr addrspace(1) nonnull undef, ptr 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, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp11, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp11, i32 10, i32 2, i32 12, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) %tmp11, i32 0, ptr addrspace(1) %tmp11, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp11, i32 2, i32 8, i32 4, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 12, i32 7, i32 0, i32 2, i32 0, i32 7, ptr null, i32 7, ptr null, i32 10, i32 18, i32 96, i32 0, i32 9, i32 1, i32 0, ptr addrspace(1) %tmp10, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp9, i32 3, i32 %tmp16, i32 3, i32 0, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp9, i32 8, i32 9, i32 34, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) %tmp10, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef), "gc-live"(ptr addrspace(1) %tmp11, ptr addrspace(1) %tmp9, ptr addrspace(1) undef, ptr addrspace(1) %tmp10, ptr addrspace(1) undef, ptr addrspace(1) %tmp5) ]
44             to label %bb25 unwind label %bb35
46   bb25:                                             ; preds = %bb23
47     %tmp26 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp24, i32 5, i32 5) ; (%tmp5, %tmp5)
48     br label %bb27
50   bb27:                                             ; preds = %bb25, %bb20
51     %tmp28 = phi ptr addrspace(1) [ %tmp9, %bb20 ], [ undef, %bb25 ]
52     %tmp29 = phi ptr addrspace(1) [ %tmp10, %bb20 ], [ undef, %bb25 ]
53     %tmp30 = phi ptr 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, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (i32)) @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, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 10, i32 2, i32 12, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) undef, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 2, i32 8, i32 4, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 12, i32 7, i32 0, i32 2, i32 0, i32 7, ptr null, i32 7, ptr null, i32 10, i32 18, i32 96, i32 0, i32 9, i32 1, i32 0, ptr addrspace(1) undef, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 3, i32 %tmp16, i32 3, i32 0, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 0, i32 9, i32 51, i32 0, i32 3, i32 0, i32 7, ptr null, i32 7, ptr null, i32 7, ptr 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, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (i32)) @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, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 10, i32 2, i32 12, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) undef, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 2, i32 8, i32 4, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 12, i32 7, i32 0, i32 2, i32 0, i32 7, ptr null, i32 7, ptr null, i32 10, i32 18, i32 63, i32 0, i32 9, i32 1, i32 0, ptr addrspace(1) undef, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 3, i32 %tmp42, i32 3, i32 0, i32 3, i32 undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef, i32 2, i32 33, i32 6, i32 0, i32 5, i32 0, i32 0, ptr addrspace(1) undef, i32 3, i32 %tmp42, i32 3, i32 undef, i32 0, ptr 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, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 1, i32 16, ptr nonnull elementtype(void (i32, ptr addrspace(1), ptr addrspace(1), i32, i32)) @barney, i32 5, i32 0, i32 undef, ptr addrspace(1) nonnull undef, ptr 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, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp30, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp30, i32 10, i32 2, i32 19, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) %tmp30, i32 0, ptr addrspace(1) %tmp30, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp30, i32 8, i32 9, i32 34, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) undef, i32 0, ptr addrspace(1) undef, i32 7, ptr null, i32 0, ptr addrspace(1) undef), "gc-live"(ptr addrspace(1) %tmp30, ptr addrspace(1) undef, ptr addrspace(1) undef) ]
87             to label %bb48 unwind label %bb52
89   bb48:                                             ; preds = %bb46
90     %tmp49 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp47, i32 0, i32 0) ; (%tmp30, %tmp30)
91     br label %bb56
93   bb50:                                             ; preds = %bb44
94     %tmp51 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (i32)) @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, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp30, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp30, i32 10, i32 2, i32 19, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) %tmp30, i32 0, ptr addrspace(1) %tmp30, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp30, i32 1, i32 9, i32 6, i32 1, i32 3, i32 0, i32 0, ptr addrspace(1) null, i32 0, ptr addrspace(1) undef, i32 0, ptr addrspace(1) null, i32 7, ptr null), "gc-live"() ]
95     unreachable
97   bb52:                                             ; preds = %bb46
98     %tmp53 = landingpad token
99             cleanup
100     %tmp54 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp53, i32 0, i32 0) ; (%tmp30, %tmp30)
101     %tmp55 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (i32)) @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, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp54, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp54, i32 10, i32 2, i32 19, i32 0, i32 3, i32 1, i32 0, ptr addrspace(1) %tmp54, i32 0, ptr addrspace(1) %tmp54, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp54, i32 0, i32 9, i32 51, i32 0, i32 3, i32 0, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null), "gc-live"() ]
102     unreachable
104   bb56:                                             ; preds = %bb48, %bb45
105     %tmp57 = phi ptr addrspace(1) [ %tmp30, %bb45 ], [ %tmp49, %bb48 ]
106     %tmp58 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (i32)) @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, ptr null, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp57, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp57, i32 9, i32 2, i32 26, i32 1, i32 3, i32 1, i32 0, ptr addrspace(1) null, i32 0, ptr addrspace(1) %tmp57, i32 0, ptr addrspace(1) %tmp57, i32 7, ptr null, i32 0, ptr addrspace(1) %tmp57), "gc-live"() ]
107     unreachable
108   }
110   declare ptr @widget()
112   declare void @quux(ptr addrspace(1), ptr addrspace(1))
114   declare void @hoge.1()
116   declare void @barney(i32, ptr addrspace(1), ptr addrspace(1), i32, i32)
118   ; Function Attrs: nounwind readnone
119   declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #0
121   declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...)
123   declare void @ham(i32)
125   
126   
127   declare void @wombat()
129   attributes #0 = { nounwind readnone }
133 name:            hoge
134 alignment:       16
135 exposesReturnsTwice: false
136 legalized:       false
137 regBankSelected: false
138 selected:        false
139 failedISel:      false
140 tracksRegLiveness: true
141 hasWinCFI:       false
142 registers:
143   - { id: 0, class: gr64, preferred-register: '' }
144   - { id: 1, class: gr64, preferred-register: '' }
145   - { id: 2, class: gr64, preferred-register: '' }
146   - { id: 3, class: gr64_with_sub_8bit, preferred-register: '' }
147   - { id: 4, class: gr32, preferred-register: '' }
148   - { id: 5, class: gr32, preferred-register: '' }
149   - { id: 6, class: gr64, preferred-register: '' }
150   - { id: 7, class: gr64, preferred-register: '' }
151   - { id: 8, class: gr64, preferred-register: '' }
152   - { id: 9, class: gr32, preferred-register: '' }
153   - { id: 10, class: gr64, preferred-register: '' }
154   - { id: 11, class: gr64, preferred-register: '' }
155   - { id: 12, class: gr64, preferred-register: '' }
156   - { id: 13, class: gr64, preferred-register: '' }
157   - { id: 14, class: gr64, preferred-register: '' }
158   - { id: 15, class: gr64, preferred-register: '' }
159   - { id: 16, class: gr64, preferred-register: '' }
160   - { id: 17, class: gr64, preferred-register: '' }
161   - { id: 18, class: gr32, preferred-register: '' }
162   - { id: 19, class: gr8, preferred-register: '' }
163   - { id: 20, class: gr32, preferred-register: '' }
164   - { id: 21, class: gr64, preferred-register: '' }
165   - { id: 22, class: gr32, preferred-register: '' }
166   - { id: 23, class: gr32, preferred-register: '' }
167   - { id: 24, class: gr64, preferred-register: '' }
168   - { id: 25, class: gr32, preferred-register: '' }
169   - { id: 26, class: gr8, preferred-register: '' }
170   - { id: 27, class: gr32, preferred-register: '' }
171   - { id: 28, class: gr8, preferred-register: '' }
172   - { id: 29, class: gr32, preferred-register: '' }
173   - { id: 30, class: gr32, preferred-register: '' }
174   - { id: 31, class: gr8, preferred-register: '' }
175   - { id: 32, class: gr64, preferred-register: '' }
176   - { id: 33, class: gr32, preferred-register: '' }
177   - { id: 34, class: gr64_with_sub_8bit, preferred-register: '' }
178   - { id: 35, class: gr32, preferred-register: '' }
179   - { id: 36, class: gr64, preferred-register: '' }
180   - { id: 37, class: gr32, preferred-register: '' }
181   - { id: 38, class: gr64, preferred-register: '' }
182   - { id: 39, class: gr64, preferred-register: '' }
183   - { id: 40, class: gr64, preferred-register: '' }
184   - { id: 41, class: gr64, preferred-register: '' }
185   - { id: 42, class: gr64, preferred-register: '' }
186   - { id: 43, class: gr64, preferred-register: '' }
187   - { id: 44, class: gr32, preferred-register: '' }
188   - { id: 45, class: gr8, preferred-register: '' }
189   - { id: 46, class: gr32, preferred-register: '' }
190   - { id: 47, class: gr64, preferred-register: '' }
191   - { id: 48, class: gr64_with_sub_8bit, preferred-register: '' }
192   - { id: 49, class: gr32, preferred-register: '' }
193   - { id: 50, class: gr32, preferred-register: '' }
194   - { id: 51, class: gr8, preferred-register: '' }
195   - { id: 52, class: gr32, preferred-register: '' }
196   - { id: 53, class: gr8, preferred-register: '' }
197   - { id: 54, class: gr64, preferred-register: '' }
198   - { id: 55, class: gr32, preferred-register: '' }
199   - { id: 56, class: gr32, preferred-register: '' }
200   - { id: 57, class: gr64, preferred-register: '' }
201   - { id: 58, class: gr64, preferred-register: '' }
202   - { id: 59, class: gr32, preferred-register: '' }
203   - { id: 60, class: gr64, preferred-register: '' }
204   - { id: 61, class: gr64, preferred-register: '' }
205   - { id: 62, class: gr64, preferred-register: '' }
206   - { id: 63, class: gr32, preferred-register: '' }
207   - { id: 64, class: gr64, preferred-register: '' }
208   - { id: 65, class: gr32, preferred-register: '' }
209   - { id: 66, class: gr64, preferred-register: '' }
210   - { id: 67, class: gr32, preferred-register: '' }
211   - { id: 68, class: gr64, preferred-register: '' }
212   - { id: 69, class: gr32, preferred-register: '' }
213   - { id: 70, class: gr64, preferred-register: '' }
214   - { id: 71, class: gr64, preferred-register: '' }
215   - { id: 72, class: gr64, preferred-register: '' }
216   - { id: 73, class: gr32, preferred-register: '' }
217   - { id: 74, class: gr64, preferred-register: '' }
218   - { id: 75, class: gr64, preferred-register: '' }
219   - { id: 76, class: gr64, preferred-register: '' }
220   - { id: 77, class: gr32, preferred-register: '' }
221   - { id: 78, class: gr64, preferred-register: '' }
222   - { id: 79, class: gr32, preferred-register: '' }
223 liveins:
224   - { reg: '$rdi', virtual-reg: '%12' }
225 frameInfo:
226   isFrameAddressTaken: false
227   isReturnAddressTaken: false
228   hasStackMap:     false
229   hasPatchPoint:   false
230   stackSize:       0
231   offsetAdjustment: 0
232   maxAlignment:    4
233   adjustsStack:    false
234   hasCalls:        true
235   stackProtector:  ''
236   maxCallFrameSize: 4294967295
237   cvBytesOfCalleeSavedRegisters: 0
238   hasOpaqueSPAdjustment: false
239   hasVAStart:      false
240   hasMustTailInVarArgFunc: false
241   hasTailCall:     false
242   localFrameSize:  0
243   savePoint:       ''
244   restorePoint:    ''
245 fixedStack:      []
246 stack:
247   - { id: 0, name: '', type: default, offset: 0, size: 4, alignment: 4,
248       stack-id: default, callee-saved-register: '', callee-saved-restored: true,
249       debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
250 callSites:       []
251 debugValueSubstitutions: []
252 constants:       []
253 machineFunctionInfo: {}
254 body:             |
255   ; CHECK-LABEL: name: hoge
256   ; CHECK: bb.0.bb:
257   ; CHECK-NEXT:   successors: %bb.1(0x80000000), %bb.15(0x00000000)
258   ; CHECK-NEXT:   liveins: $rdi
259   ; CHECK-NEXT: {{  $}}
260   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gr64 = COPY $rdi
261   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
262   ; CHECK-NEXT:   $rdi = COPY [[COPY]]
263   ; CHECK-NEXT:   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
264   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
265   ; CHECK-NEXT:   [[MOV32r0_:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags
266   ; CHECK-NEXT:   TEST8rr [[MOV32r0_]].sub_8bit, [[MOV32r0_]].sub_8bit, implicit-def $eflags
267   ; CHECK-NEXT:   JCC_1 %bb.15, 5, implicit $eflags
268   ; CHECK-NEXT:   JMP_1 %bb.1
269   ; CHECK-NEXT: {{  $}}
270   ; CHECK-NEXT: bb.1.bb6:
271   ; CHECK-NEXT:   successors: %bb.2(0x80000000)
272   ; CHECK-NEXT: {{  $}}
273   ; CHECK-NEXT:   [[MOV64rm:%[0-9]+]]:gr64 = MOV64rm undef %17:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `ptr addrspace(1) undef`, addrspace 1)
274   ; CHECK-NEXT:   [[NOT64r:%[0-9]+]]:gr64 = NOT64r [[MOV64rm]]
275   ; CHECK-NEXT:   MOV64mr %stack.1, 1, $noreg, 0, $noreg, [[NOT64r]] :: (store (s64) into %stack.1)
276   ; CHECK-NEXT:   undef %48.sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
277   ; CHECK-NEXT:   [[DEF:%[0-9]+]]:gr64 = IMPLICIT_DEF
278   ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:gr64 = IMPLICIT_DEF
279   ; CHECK-NEXT:   [[DEF2:%[0-9]+]]:gr64_with_sub_8bit = IMPLICIT_DEF
280   ; CHECK-NEXT:   [[MOV32r0_1:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags
281   ; CHECK-NEXT: {{  $}}
282   ; CHECK-NEXT: bb.2.bb7:
283   ; CHECK-NEXT:   successors: %bb.3(0x00000000), %bb.4(0x80000000)
284   ; CHECK-NEXT: {{  $}}
285   ; CHECK-NEXT:   TEST8rr %48.sub_8bit, %48.sub_8bit, implicit-def $eflags
286   ; CHECK-NEXT:   JCC_1 %bb.4, 4, implicit $eflags
287   ; CHECK-NEXT: {{  $}}
288   ; CHECK-NEXT: bb.3:
289   ; CHECK-NEXT:   successors: %bb.16(0x80000000)
290   ; CHECK-NEXT: {{  $}}
291   ; CHECK-NEXT:   JMP_1 %bb.16
292   ; CHECK-NEXT: {{  $}}
293   ; CHECK-NEXT: bb.4.bb7:
294   ; CHECK-NEXT:   successors: %bb.5(0x00000000), %bb.6(0x80000000)
295   ; CHECK-NEXT: {{  $}}
296   ; CHECK-NEXT:   TEST8rr %48.sub_8bit, %48.sub_8bit, implicit-def $eflags
297   ; CHECK-NEXT:   JCC_1 %bb.6, 4, implicit $eflags
298   ; CHECK-NEXT: {{  $}}
299   ; CHECK-NEXT: bb.5:
300   ; CHECK-NEXT:   successors: %bb.16(0x80000000)
301   ; CHECK-NEXT: {{  $}}
302   ; CHECK-NEXT:   JMP_1 %bb.16
303   ; CHECK-NEXT: {{  $}}
304   ; CHECK-NEXT: bb.6.bb7:
305   ; CHECK-NEXT:   successors: %bb.16(0x00000000), %bb.7(0x80000000)
306   ; CHECK-NEXT: {{  $}}
307   ; CHECK-NEXT:   [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm undef %24:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `ptr addrspace(1) undef`, align 8, addrspace 1)
308   ; CHECK-NEXT:   [[ADD32rr:%[0-9]+]]:gr32 = ADD32rr [[ADD32rr]], [[MOV32r0_1]], implicit-def dead $eflags
309   ; CHECK-NEXT:   CMP32rr [[MOV32r0_1]], [[ADD32rr]], implicit-def $eflags
310   ; CHECK-NEXT:   JCC_1 %bb.16, 15, implicit $eflags
311   ; CHECK-NEXT:   JMP_1 %bb.7
312   ; CHECK-NEXT: {{  $}}
313   ; CHECK-NEXT: bb.7.bb20:
314   ; CHECK-NEXT:   successors: %bb.8(0x40000000), %bb.9(0x40000000)
315   ; CHECK-NEXT: {{  $}}
316   ; CHECK-NEXT:   TEST8rr %48.sub_8bit, %48.sub_8bit, implicit-def $eflags
317   ; CHECK-NEXT:   JCC_1 %bb.9, 4, implicit $eflags
318   ; CHECK-NEXT: {{  $}}
319   ; CHECK-NEXT: bb.8:
320   ; CHECK-NEXT:   successors: %bb.11(0x80000000)
321   ; CHECK-NEXT: {{  $}}
322   ; CHECK-NEXT:   JMP_1 %bb.11
323   ; CHECK-NEXT: {{  $}}
324   ; CHECK-NEXT: bb.9.bb23:
325   ; CHECK-NEXT:   successors: %bb.10(0x7ffff800), %bb.12(0x00000800)
326   ; CHECK-NEXT: {{  $}}
327   ; CHECK-NEXT:   MOV32mr %stack.0, 1, $noreg, 0, $noreg, [[ADD32rr]] :: (store (s32) into %stack.0)
328   ; CHECK-NEXT:   EH_LABEL <mcsymbol .Ltmp0>
329   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
330   ; CHECK-NEXT:   [[MOV64rm:%[0-9]+]]:gr64 = MOV64rm %stack.1, 1, $noreg, 0, $noreg :: (load (s64) from %stack.1)
331   ; CHECK-NEXT:   dead $edx = MOV32r0 implicit-def dead $eflags, implicit-def $rdx
332   ; CHECK-NEXT:   $ecx = MOV32r0 implicit-def dead $eflags
333   ; CHECK-NEXT:   dead [[MOV64rm]]:gr64, dead [[DEF2]]:gr64_with_sub_8bit, 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, [[DEF2]], 2, 7, 2, 0, 2, 0, [[DEF2]], 2, 10, 2, 2, 2, 12, 2, 0, 2, 3, 2, 1, 2, 0, [[DEF2]], 2, 0, [[DEF2]], 2, 7, 2, 0, 2, 0, [[DEF2]], 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), [[DEF2]](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)
334   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
335   ; CHECK-NEXT:   EH_LABEL <mcsymbol .Ltmp1>
336   ; CHECK-NEXT:   JMP_1 %bb.10
337   ; CHECK-NEXT: {{  $}}
338   ; CHECK-NEXT: bb.10.bb25:
339   ; CHECK-NEXT:   successors: %bb.11(0x80000000)
340   ; CHECK-NEXT: {{  $}}
341   ; CHECK-NEXT:   [[DEF3:%[0-9]+]]:gr64 = IMPLICIT_DEF
342   ; CHECK-NEXT:   [[DEF4:%[0-9]+]]:gr64 = IMPLICIT_DEF
343   ; CHECK-NEXT:   undef [[DEF2]].sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
344   ; CHECK-NEXT: {{  $}}
345   ; CHECK-NEXT: bb.11.bb27:
346   ; CHECK-NEXT:   successors: %bb.2(0x80000000), %bb.17(0x00000000)
347   ; CHECK-NEXT: {{  $}}
348   ; CHECK-NEXT:   TEST32rr [[ADD32rr]], [[ADD32rr]], implicit-def $eflags
349   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gr32 = COPY [[ADD32rr]]
350   ; CHECK-NEXT:   JCC_1 %bb.2, 8, implicit $eflags
351   ; CHECK-NEXT:   JMP_1 %bb.17
352   ; CHECK-NEXT: {{  $}}
353   ; CHECK-NEXT: bb.12.bb35 (landing-pad):
354   ; CHECK-NEXT:   successors: %bb.14(0x40000000), %bb.13(0x40000000)
355   ; CHECK-NEXT:   liveins: $rax, $rdx
356   ; CHECK-NEXT: {{  $}}
357   ; CHECK-NEXT:   EH_LABEL <mcsymbol .Ltmp2>
358   ; CHECK-NEXT:   [[MOV32r0_:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags
359   ; CHECK-NEXT:   TEST8rr [[MOV32r0_]].sub_8bit, [[MOV32r0_]].sub_8bit, implicit-def $eflags
360   ; CHECK-NEXT:   JCC_1 %bb.14, 5, implicit $eflags
361   ; CHECK-NEXT:   JMP_1 %bb.13
362   ; CHECK-NEXT: {{  $}}
363   ; CHECK-NEXT: bb.13.bb37:
364   ; CHECK-NEXT:   successors: {{$}}
365   ; CHECK-NEXT: {{  $}}
366   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
367   ; CHECK-NEXT:   $edi = MOV32ri 3
368   ; CHECK-NEXT:   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
369   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
370   ; CHECK-NEXT: {{  $}}
371   ; CHECK-NEXT: bb.14.bb39:
372   ; CHECK-NEXT:   successors: {{$}}
373   ; CHECK-NEXT: {{  $}}
374   ; CHECK-NEXT: {{  $}}
375   ; CHECK-NEXT: bb.15.bb40:
376   ; CHECK-NEXT:   successors: %bb.16(0x80000000)
377   ; CHECK-NEXT: {{  $}}
378   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
379   ; CHECK-NEXT:   CALL64pcrel32 target-flags(x86-plt) @wombat, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp
380   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
381   ; CHECK-NEXT: {{  $}}
382   ; CHECK-NEXT: bb.16.bb41:
383   ; CHECK-NEXT:   successors: {{$}}
384   ; CHECK-NEXT: {{  $}}
385   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
386   ; CHECK-NEXT:   $edi = MOV32ri -39
387   ; CHECK-NEXT:   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, [[COPY1]], 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, [[COPY1]], 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, [[COPY1]], 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
388   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
389   ; CHECK-NEXT: {{  $}}
390   ; CHECK-NEXT: bb.17.bb44:
391   ; CHECK-NEXT:   successors: %bb.22(0x40000000), %bb.18(0x40000000)
392   ; CHECK-NEXT: {{  $}}
393   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
394   ; CHECK-NEXT:   CALL64pcrel32 target-flags(x86-plt) @hoge.1, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp
395   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
396   ; CHECK-NEXT:   [[MOV32r0_1:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags
397   ; CHECK-NEXT:   TEST8rr [[MOV32r0_1]].sub_8bit, [[MOV32r0_1]].sub_8bit, implicit-def $eflags
398   ; CHECK-NEXT:   JCC_1 %bb.22, 5, implicit $eflags
399   ; CHECK-NEXT:   JMP_1 %bb.18
400   ; CHECK-NEXT: {{  $}}
401   ; CHECK-NEXT: bb.18.bb45:
402   ; CHECK-NEXT:   successors: %bb.19(0x40000000), %bb.20(0x40000000)
403   ; CHECK-NEXT: {{  $}}
404   ; CHECK-NEXT:   [[MOV32r0_2:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags
405   ; CHECK-NEXT:   TEST8rr [[MOV32r0_2]].sub_8bit, [[MOV32r0_2]].sub_8bit, implicit-def $eflags
406   ; CHECK-NEXT:   JCC_1 %bb.20, 4, implicit $eflags
407   ; CHECK-NEXT: {{  $}}
408   ; CHECK-NEXT: bb.19:
409   ; CHECK-NEXT:   successors: %bb.24(0x80000000)
410   ; CHECK-NEXT: {{  $}}
411   ; CHECK-NEXT:   JMP_1 %bb.24
412   ; CHECK-NEXT: {{  $}}
413   ; CHECK-NEXT: bb.20.bb46:
414   ; CHECK-NEXT:   successors: %bb.21(0x40000000), %bb.23(0x40000000)
415   ; CHECK-NEXT: {{  $}}
416   ; CHECK-NEXT:   EH_LABEL <mcsymbol .Ltmp3>
417   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
418   ; CHECK-NEXT:   $ecx = MOV32r0 implicit-def dead $eflags
419   ; CHECK-NEXT:   [[STATEPOINT:%[0-9]+]]: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, [[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
420   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
421   ; CHECK-NEXT:   EH_LABEL <mcsymbol .Ltmp4>
422   ; CHECK-NEXT:   JMP_1 %bb.21
423   ; CHECK-NEXT: {{  $}}
424   ; CHECK-NEXT: bb.21.bb48:
425   ; CHECK-NEXT:   successors: %bb.24(0x80000000)
426   ; CHECK-NEXT: {{  $}}
427   ; CHECK-NEXT:   JMP_1 %bb.24
428   ; CHECK-NEXT: {{  $}}
429   ; CHECK-NEXT: bb.22.bb50:
430   ; CHECK-NEXT:   successors: {{$}}
431   ; CHECK-NEXT: {{  $}}
432   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
433   ; CHECK-NEXT:   $edi = MOV32ri 10
434   ; CHECK-NEXT:   dead [[STATEPOINT]]: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, [[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
435   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
436   ; CHECK-NEXT: {{  $}}
437   ; CHECK-NEXT: bb.23.bb52 (landing-pad):
438   ; CHECK-NEXT:   successors:
439   ; CHECK-NEXT:   liveins: $rax, $rdx
440   ; CHECK-NEXT: {{  $}}
441   ; CHECK-NEXT:   EH_LABEL <mcsymbol .Ltmp5>
442   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
443   ; CHECK-NEXT:   $edi = MOV32ri 3
444   ; CHECK-NEXT:   dead [[STATEPOINT]]: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, [[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
445   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
446   ; CHECK-NEXT: {{  $}}
447   ; CHECK-NEXT: bb.24.bb56:
448   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
449   ; CHECK-NEXT:   $edi = MOV32ri 10
450   ; CHECK-NEXT:   dead [[STATEPOINT]]: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, [[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
451   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
452   bb.0.bb:
453     successors: %bb.1(0x80000000), %bb.12(0x00000000)
454     liveins: $rdi
456     %14:gr64 = COPY $rdi
457     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
458     $rdi = COPY %14
459     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
460     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
461     %77:gr32 = MOV32r0 implicit-def dead $eflags
462     TEST8rr %77.sub_8bit, %77.sub_8bit, implicit-def $eflags
463     JCC_1 %bb.12, 5, implicit $eflags
464     JMP_1 %bb.1
466   bb.1.bb6:
467     successors: %bb.2(0x80000000)
469     %0:gr64 = MOV64rm undef %17:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `ptr addrspace(1) undef`, addrspace 1)
470     %0:gr64 = NOT64r %0
471     undef %48.sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
472     %1:gr64 = IMPLICIT_DEF
473     %2:gr64 = IMPLICIT_DEF
474     %3:gr64_with_sub_8bit = IMPLICIT_DEF
475     %77:gr32 = MOV32r0 implicit-def dead $eflags
477   bb.2.bb7:
478     successors: %bb.22(0x00000000), %bb.3(0x80000000)
480     TEST8rr %48.sub_8bit, %48.sub_8bit, implicit-def $eflags
481     JCC_1 %bb.3, 4, implicit $eflags
483   bb.22:
484     successors: %bb.13(0x80000000)
486     JMP_1 %bb.13
488   bb.3.bb7:
489     successors: %bb.23(0x00000000), %bb.4(0x80000000)
491     TEST8rr %48.sub_8bit, %48.sub_8bit, implicit-def $eflags
492     JCC_1 %bb.4, 4, implicit $eflags
494   bb.23:
495     successors: %bb.13(0x80000000)
497     JMP_1 %bb.13
499   bb.4.bb7:
500     successors: %bb.13(0x00000000), %bb.5(0x80000000)
502     %5:gr32 = MOV32rm undef %24:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `ptr addrspace(1) undef`, align 8, addrspace 1)
503     %5:gr32 = ADD32rr %5, %77, implicit-def dead $eflags
504     CMP32rr %77, %5, implicit-def $eflags
505     JCC_1 %bb.13, 15, implicit $eflags
506     JMP_1 %bb.5
508   bb.5.bb20:
509     successors: %bb.21(0x40000000), %bb.6(0x40000000)
511     TEST8rr %48.sub_8bit, %48.sub_8bit, implicit-def $eflags
512     JCC_1 %bb.6, 4, implicit $eflags
514   bb.21:
515     successors: %bb.8(0x80000000)
517     JMP_1 %bb.8
519   bb.6.bb23:
520     successors: %bb.7(0x7ffff800), %bb.9(0x00000800)
522     MOV32mr %stack.0, 1, $noreg, 0, $noreg, %5 :: (store (s32) into %stack.0)
523     EH_LABEL <mcsymbol .Ltmp0>
524     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
525     %32:gr64 = COPY %0
526     dead $edx = MOV32r0 implicit-def dead $eflags, implicit-def $rdx
527     $ecx = MOV32r0 implicit-def dead $eflags
528     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)
529     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
530     EH_LABEL <mcsymbol .Ltmp1>
531     JMP_1 %bb.7
533   bb.7.bb25:
534     successors: %bb.8(0x80000000)
536     %1:gr64 = IMPLICIT_DEF
537     %2:gr64 = IMPLICIT_DEF
538     undef %3.sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
540   bb.8.bb27:
541     successors: %bb.2(0x80000000), %bb.14(0x00000000)
543     TEST32rr %5, %5, implicit-def $eflags
544     %77:gr32 = COPY %5
545     JCC_1 %bb.2, 8, implicit $eflags
546     JMP_1 %bb.14
548   bb.9.bb35 (landing-pad):
549     successors: %bb.11(0x40000000), %bb.10(0x40000000)
550     liveins: $rax, $rdx
552     EH_LABEL <mcsymbol .Ltmp2>
553     %44:gr32 = MOV32r0 implicit-def dead $eflags
554     TEST8rr %44.sub_8bit, %44.sub_8bit, implicit-def $eflags
555     JCC_1 %bb.11, 5, implicit $eflags
556     JMP_1 %bb.10
558   bb.10.bb37:
559     successors:
561     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
562     $edi = MOV32ri 3
563     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
564     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
566   bb.11.bb39:
567     successors:
570   bb.12.bb40:
571     successors: %bb.13(0x80000000)
573     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
574     CALL64pcrel32 target-flags(x86-plt) @wombat, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp
575     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
577   bb.13.bb41:
578     successors:
580     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
581     $edi = MOV32ri -39
582     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
583     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
585   bb.14.bb44:
586     successors: %bb.18(0x40000000), %bb.15(0x40000000)
588     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
589     CALL64pcrel32 target-flags(x86-plt) @hoge.1, csr_64, implicit $rsp, implicit $ssp, implicit-def $rsp, implicit-def $ssp
590     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
591     %50:gr32 = MOV32r0 implicit-def dead $eflags
592     TEST8rr %50.sub_8bit, %50.sub_8bit, implicit-def $eflags
593     JCC_1 %bb.18, 5, implicit $eflags
594     JMP_1 %bb.15
596   bb.15.bb45:
597     successors: %bb.24(0x40000000), %bb.16(0x40000000)
599     %52:gr32 = MOV32r0 implicit-def dead $eflags
600     TEST8rr %52.sub_8bit, %52.sub_8bit, implicit-def $eflags
601     JCC_1 %bb.16, 4, implicit $eflags
603   bb.24:
604     successors: %bb.20(0x80000000)
606     JMP_1 %bb.20
608   bb.16.bb46:
609     successors: %bb.17(0x40000000), %bb.19(0x40000000)
611     EH_LABEL <mcsymbol .Ltmp3>
612     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
613     $ecx = MOV32r0 implicit-def dead $eflags
614     %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
615     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
616     EH_LABEL <mcsymbol .Ltmp4>
617     JMP_1 %bb.17
619   bb.17.bb48:
620     successors: %bb.20(0x80000000)
622     JMP_1 %bb.20
624   bb.18.bb50:
625     successors:
627     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
628     $edi = MOV32ri 10
629     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
630     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
632   bb.19.bb52 (landing-pad):
633     successors:
634     liveins: $rax, $rdx
636     EH_LABEL <mcsymbol .Ltmp5>
637     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
638     $edi = MOV32ri 3
639     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
640     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
642   bb.20.bb56:
643     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
644     $edi = MOV32ri 10
645     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
646     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp