Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / statepoint-invoke-ra-enter-at-end.mir
blob4efddd57cf5b0b14edde53979bc23459f20006ff
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -x mir -o - %s -run-pass=greedy -verify-regalloc 2>&1 | FileCheck %s
4 # CHECK-NOT: Bad Parent VNI
5 --- |
6   ; ModuleID = './statepoint-invoke-ra2.ll'
7   source_filename = "./statepoint-invoke-ra2.ll"
8   target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
9   target triple = "x86_64-unknown-linux-gnu"
11   @global = external global ptr addrspace(1), align 8
12   @global.1 = external global ptr addrspace(1), align 8
14   define void @bar(ptr addrspace(1) %arg) gc "statepoint-example" personality ptr @zot {
15   bb:
16     %tmp = inttoptr i64 undef to ptr addrspace(1)
17     br label %bb1
19   bb1:                                              ; preds = %bb64, %bb
20     %tmp3 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr nonnull elementtype(void ()) @wibble, i32 0, i32 0, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 1, i32 0, i32 0, i32 5, i32 0, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null), "gc-live"(ptr addrspace(1) %tmp) ]
21     %tmp4 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp3, i32 0, i32 0) ; (%tmp, %tmp)
22     %tmp5 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (ptr addrspace(1))) @barney, i32 1, i32 0, ptr addrspace(1) undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 9, i32 1, i32 9, i32 0, i32 5, i32 1, i32 7, ptr null, i32 8, i32 2, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 8, i32 2), "gc-live"(ptr addrspace(1) undef, ptr addrspace(1) %tmp4) ]
23     %tmp6 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp5, i32 1, i32 1) ; (%tmp4, %tmp4)
24     %tmp7 = call token (i64, i32, ptr addrspace(1) ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr addrspace(1) ()* nonnull elementtype(ptr addrspace(1) ()) @blam, i32 0, i32 0, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 10, i32 1, i32 9, i32 0, i32 5, i32 1, i32 7, ptr null, i32 8, i32 2, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 8, i32 2), "gc-live"(ptr addrspace(1) %tmp6, ptr addrspace(1) undef) ]
25     %tmp8 = call align 8 "java-type-kid"="69" ptr addrspace(1) @llvm.experimental.gc.result.p1(token %tmp7)
26     %tmp9 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp7, i32 0, i32 0) ; (%tmp6, %tmp6)
27     br i1 undef, label %bb64, label %bb10
29   bb10:                                             ; preds = %bb1
30     %tmp11 = inttoptr i64 undef to ptr addrspace(1)
31     %tmp12 = call ptr addrspace(1) @wobble.3(ptr addrspace(1) undef, ptr addrspace(1) undef)
32     %tmp13 = select i1 false, ptr addrspace(1) null, ptr addrspace(1) %tmp12
33     %tmp14 = extractvalue { i32, i1 } undef, 1
34     br i1 %tmp14, label %bb17, label %bb15
36   bb15:                                             ; preds = %bb10
37     %tmp16 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr nonnull elementtype(void (ptr addrspace(1))) @barney, i32 1, i32 0, ptr addrspace(1) undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 1, i32 71, i32 0, i32 5, i32 0, i32 0, ptr addrspace(1) %tmp13, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 2, i32 5, i32 1, i32 0, i32 2, i32 0, i32 0, ptr addrspace(1) %tmp8, i32 7, ptr null, i32 1, i32 6, i32 0, i32 0, i32 1, i32 1, i32 0, ptr addrspace(1) %tmp8, i32 8, i32 10), "gc-live"(ptr addrspace(1) %tmp9, ptr addrspace(1) %tmp13, ptr addrspace(1) %tmp11, ptr addrspace(1) undef, ptr addrspace(1) %tmp8) ]
38     unreachable
40   bb17:                                             ; preds = %bb10
41     %tmp18 = load atomic i32, ptr addrspace(1) undef unordered, align 4
42     %tmp19 = and i32 %tmp18, 33554431
43     %tmp20 = invoke token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 1, i32 16, ptr nonnull elementtype(void (i32, ptr addrspace(1))) @spam, i32 2, i32 0, i32 %tmp19, ptr addrspace(1) nonnull undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 1, i32 71, i32 0, i32 5, i32 0, i32 0, ptr addrspace(1) %tmp13, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 8, i32 5, i32 12, i32 0, i32 2, i32 0, i32 0, ptr addrspace(1) %tmp8, i32 7, ptr null), "gc-live"(ptr addrspace(1) %tmp9, ptr addrspace(1) %tmp13, ptr addrspace(1) %tmp13, ptr addrspace(1) %tmp11, ptr addrspace(1) %tmp8, ptr addrspace(1) undef) ]
44             to label %bb21 unwind label %bb59
46   bb21:                                             ; preds = %bb17
47     %tmp22 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp20, i32 0, i32 0) ; (%tmp9, %tmp9)
48     %tmp23 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp20, i32 1, i32 1) ; (%tmp13, %tmp13)
49     %tmp24 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp20, i32 3, i32 3) ; (%tmp11, %tmp11)
50     %tmp25 = load atomic ptr addrspace(1), ptr @global unordered, align 8
51     %tmp26 = ptrtoint ptr addrspace(1) %tmp25 to i64
52     %tmp27 = xor i64 %tmp26, -1
53     %tmp28 = inttoptr i64 %tmp27 to ptr addrspace(1)
54     %tmp29 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr nonnull elementtype(void (ptr addrspace(1))) @baz, i32 1, i32 0, ptr addrspace(1) undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 10, i32 1, i32 83, i32 0, i32 5, i32 1, i32 0, ptr addrspace(1) %tmp23, i32 7, ptr null, i32 8, i32 2, i32 7, ptr null, i32 7, ptr null, i32 8, i32 2), "gc-live"(ptr addrspace(1) %tmp22, ptr addrspace(1) %tmp23, ptr addrspace(1) %tmp23, ptr addrspace(1) %tmp24, ptr addrspace(1) %tmp28) ]
55     %tmp30 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp29, i32 1, i32 2) ; (%tmp23, %tmp23)
56     %tmp31 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp29, i32 4, i32 4) ; (%tmp28, %tmp28)
57     %tmp45 = load atomic ptr addrspace(1), ptr @global.1 unordered, align 8
58     %tmp49 = load i32, ptr addrspace(256) inttoptr (i64 660 to ptr addrspace(256)), align 4
59     %tmp32 = icmp eq ptr addrspace(1) %tmp30, null
60     br i1 %tmp32, label %bb64, label %bb33.preheader
62   bb33.preheader:                                   ; preds = %bb21
63     br label %bb33
65   bb33:                                             ; preds = %bb33.preheader, %bb33
66     %tmp34 = phi ptr addrspace(1) [ %tmp57, %bb33 ], [ undef, %bb33.preheader ]
67     %tmp35 = phi i64 [ %tmp37, %bb33 ], [ 0, %bb33.preheader ]
68     %tmp37 = add nuw nsw i64 %tmp35, 1
69     %tmp38 = load atomic ptr addrspace(1), ptr addrspace(1) undef unordered, align 8
70     %tmp39 = ptrtoint ptr addrspace(1) %tmp38 to i64
71     %tmp40 = xor i64 %tmp39, -1
72     %tmp41 = inttoptr i64 %tmp40 to ptr addrspace(1)
73     %tmp42 = select i1 false, ptr addrspace(1) null, ptr addrspace(1) %tmp41
74     %tmp43 = icmp eq ptr addrspace(1) %tmp42, %tmp30
75     %tmp44 = select i1 %tmp43, ptr addrspace(1) null, ptr addrspace(1) %tmp42
76     call void asm sideeffect "lock btsq $0,($1)", "r,r,~{cc},~{dirflag},~{fpsr},~{flags}"(i64 0, ptr undef)
77     %tmp46 = ptrtoint ptr addrspace(1) %tmp45 to i64
78     %tmp47 = xor i64 %tmp46, -1
79     %tmp48 = inttoptr i64 %tmp47 to ptr addrspace(1)
80     %tmp50 = or i32 %tmp49, 268435456
81     %tmp51 = cmpxchg ptr addrspace(1) undef, i32 undef, i32 %tmp50 acquire monotonic, align 4
82     call void @wobble(ptr addrspace(1) nonnull %tmp48)
83     %tmp52 = load atomic ptr addrspace(1), ptr @global unordered, align 8
84     %tmp53 = ptrtoint ptr addrspace(1) %tmp52 to i64
85     %tmp54 = xor i64 %tmp53, -1
86     %tmp55 = inttoptr i64 %tmp54 to ptr addrspace(1)
87     %tmp56 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr nonnull elementtype(void (ptr addrspace(1))) @baz, i32 1, i32 0, ptr addrspace(1) %tmp55, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 10, i32 1, i32 83, i32 0, i32 5, i32 1, i32 0, ptr addrspace(1) %tmp44, i32 7, ptr null, i32 8, i32 2, i32 7, ptr null, i32 7, ptr null, i32 8, i32 2), "gc-live"(ptr addrspace(1) undef, ptr addrspace(1) %tmp44, ptr addrspace(1) %tmp44, ptr addrspace(1) %tmp34, ptr addrspace(1) undef) ]
88     %tmp57 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp56, i32 3, i32 3) ; (%tmp34, %tmp34)
89     br label %bb33
91   bb59:                                             ; preds = %bb17
92     %tmp60 = landingpad token
93             cleanup
94     %tmp61 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp60, i32 1, i32 2) ; (%tmp13, %tmp13)
95     %tmp62 = call coldcc ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token %tmp60, i32 4, i32 4) ; (%tmp8, %tmp8)
96     %tmp63 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2882400000, i32 0, ptr elementtype(void (i32)) @barney.2, i32 1, i32 2, i32 -13, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 2, i32 1, i32 71, i32 0, i32 5, i32 0, i32 0, ptr addrspace(1) %tmp61, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 1, i32 5, i32 21, i32 0, i32 2, i32 0, i32 0, ptr addrspace(1) %tmp62, i32 0, ptr addrspace(1) undef), "gc-live"() ]
97     unreachable
99   bb64:                                             ; preds = %bb21, %bb1
100     %tmp65 = or i32 undef, 268435456
101     %tmp66 = cmpxchg ptr addrspace(1) undef, i32 undef, i32 %tmp65 acquire monotonic, align 4
102     %tmp67 = call token (i64, i32, ptr, i32, i32, ...) @llvm.experimental.gc.statepoint.p0(i64 2, i32 5, ptr nonnull elementtype(void (ptr addrspace(1))) @baz, i32 1, i32 0, ptr addrspace(1) undef, i32 0, i32 0) [ "deopt"(i32 0, i32 2, i32 0, i32 0, i32 0, i32 1, i32 0, i32 7, ptr null, i32 10, i32 1, i32 133, i32 0, i32 5, i32 1, i32 7, ptr null, i32 8, i32 2, i32 7, ptr null, i32 7, ptr null, i32 7, ptr null, i32 8, i32 2), "gc-live"(ptr addrspace(1) undef, ptr addrspace(1) undef) ]
103     br label %bb1
104   }
106   declare ptr @zot()
108   declare void @wibble() gc "statepoint-example"
110   declare ptr addrspace(1) @blam() gc "statepoint-example"
112   declare void @baz(ptr addrspace(1)) gc "statepoint-example"
114   declare void @spam(i32, ptr addrspace(1))
116   declare void @wobble(ptr addrspace(1))
118   declare void @barney(ptr addrspace(1))
120   declare token @llvm.experimental.gc.statepoint.p0(i64 immarg, i32 immarg, ptr, i32 immarg, i32 immarg, ...)
122   ; Function Attrs: nounwind readnone
123   declare ptr addrspace(1) @llvm.experimental.gc.relocate.p1(token, i32 immarg, i32 immarg) #0
125   
126   
127   ; Function Attrs: nounwind readnone
128   declare ptr addrspace(1) @llvm.experimental.gc.result.p1(token) #0
130   
131   declare void @barney.2(i64)
133   
134   declare ptr addrspace(1) @wobble.3(ptr addrspace(1), ptr addrspace(1))
136   attributes #0 = { nounwind readnone }
140 name:            bar
141 alignment:       16
142 exposesReturnsTwice: false
143 legalized:       false
144 regBankSelected: false
145 selected:        false
146 failedISel:      false
147 tracksRegLiveness: true
148 hasWinCFI:       false
149 registers:
150   - { id: 0, class: gr64, preferred-register: '' }
151   - { id: 1, class: gr64, preferred-register: '' }
152   - { id: 2, class: gr64, preferred-register: '' }
153   - { id: 3, class: gr64, preferred-register: '' }
154   - { id: 4, class: gr64, preferred-register: '' }
155   - { id: 5, class: gr64, preferred-register: '' }
156   - { id: 6, class: gr64, preferred-register: '' }
157   - { id: 7, class: gr32, preferred-register: '' }
158   - { id: 8, class: gr64, preferred-register: '' }
159   - { id: 9, class: gr64, preferred-register: '' }
160   - { id: 10, class: gr64, preferred-register: '' }
161   - { id: 11, class: gr64, preferred-register: '' }
162   - { id: 12, class: gr64, preferred-register: '' }
163   - { id: 13, class: gr64, preferred-register: '' }
164   - { id: 14, class: gr64, preferred-register: '' }
165   - { id: 15, class: gr64, preferred-register: '' }
166   - { id: 16, class: gr64, preferred-register: '' }
167   - { id: 17, class: gr64, preferred-register: '' }
168   - { id: 18, class: gr64, preferred-register: '' }
169   - { id: 19, class: gr64, preferred-register: '' }
170   - { id: 20, class: gr32, preferred-register: '' }
171   - { id: 21, class: gr8, preferred-register: '' }
172   - { id: 22, class: gr64, preferred-register: '' }
173   - { id: 23, class: gr64, preferred-register: '' }
174   - { id: 24, class: gr64, preferred-register: '' }
175   - { id: 25, class: gr32, preferred-register: '' }
176   - { id: 26, class: gr8, preferred-register: '' }
177   - { id: 27, class: gr64, preferred-register: '' }
178   - { id: 28, class: gr64, preferred-register: '' }
179   - { id: 29, class: gr64, preferred-register: '' }
180   - { id: 30, class: gr64, preferred-register: '' }
181   - { id: 31, class: gr64, preferred-register: '' }
182   - { id: 32, class: gr64, preferred-register: '' }
183   - { id: 33, class: gr64, preferred-register: '' }
184   - { id: 34, class: gr32, preferred-register: '' }
185   - { id: 35, class: gr64, preferred-register: '' }
186   - { id: 36, class: gr32, preferred-register: '' }
187   - { id: 37, class: gr64, preferred-register: '' }
188   - { id: 38, class: gr64, preferred-register: '' }
189   - { id: 39, class: gr64, preferred-register: '' }
190   - { id: 40, class: gr64, preferred-register: '' }
191   - { id: 41, class: gr32, preferred-register: '' }
192   - { id: 42, class: gr64, preferred-register: '' }
193   - { id: 43, class: gr64, preferred-register: '' }
194   - { id: 44, class: gr64, preferred-register: '' }
195   - { id: 45, class: gr64, preferred-register: '' }
196   - { id: 46, class: gr64, preferred-register: '' }
197   - { id: 47, class: gr64, preferred-register: '' }
198   - { id: 48, class: gr64, preferred-register: '' }
199   - { id: 49, class: gr64, preferred-register: '' }
200   - { id: 50, class: gr64, preferred-register: '' }
201   - { id: 51, class: gr64, preferred-register: '' }
202   - { id: 52, class: gr64, preferred-register: '' }
203   - { id: 53, class: gr64_with_sub_8bit, preferred-register: '' }
204   - { id: 54, class: gr32, preferred-register: '' }
205   - { id: 55, class: gr64_with_sub_8bit, preferred-register: '' }
206   - { id: 56, class: gr64, preferred-register: '' }
207   - { id: 57, class: gr64, preferred-register: '' }
208   - { id: 58, class: gr64, preferred-register: '' }
209   - { id: 59, class: gr64, preferred-register: '' }
210   - { id: 60, class: gr64, preferred-register: '' }
211   - { id: 61, class: gr32, preferred-register: '' }
212   - { id: 62, class: gr64, preferred-register: '' }
213   - { id: 63, class: gr64, preferred-register: '' }
214   - { id: 64, class: gr64, preferred-register: '' }
215   - { id: 65, class: gr32, preferred-register: '' }
216   - { id: 66, class: gr32, preferred-register: '' }
217   - { id: 67, class: gr64, preferred-register: '' }
218   - { id: 68, class: gr32, preferred-register: '' }
219   - { id: 69, class: gr64, preferred-register: '' }
220   - { id: 70, class: gr64, preferred-register: '' }
221   - { id: 71, class: gr64, preferred-register: '' }
222   - { id: 72, class: gr64, preferred-register: '' }
223   - { id: 73, class: gr64, preferred-register: '' }
224   - { id: 74, class: gr32, preferred-register: '' }
225   - { id: 75, class: gr32, preferred-register: '' }
226   - { id: 76, class: gr64, preferred-register: '' }
227   - { id: 77, class: gr32, preferred-register: '' }
228   - { id: 78, class: gr64, preferred-register: '' }
229   - { id: 79, class: gr64, preferred-register: '' }
230   - { id: 80, class: gr64, preferred-register: '' }
231   - { id: 81, class: gr64_with_sub_8bit, preferred-register: '' }
232 liveins:         []
233 frameInfo:
234   isFrameAddressTaken: false
235   isReturnAddressTaken: false
236   hasStackMap:     false
237   hasPatchPoint:   false
238   stackSize:       0
239   offsetAdjustment: 0
240   maxAlignment:    1
241   adjustsStack:    false
242   hasCalls:        true
243   stackProtector:  ''
244   maxCallFrameSize: 4294967295
245   cvBytesOfCalleeSavedRegisters: 0
246   hasOpaqueSPAdjustment: false
247   hasVAStart:      false
248   hasMustTailInVarArgFunc: false
249   hasTailCall:     false
250   localFrameSize:  0
251   savePoint:       ''
252   restorePoint:    ''
253 fixedStack:      []
254 stack:           []
255 callSites:       []
256 debugValueSubstitutions: []
257 constants:       []
258 machineFunctionInfo: {}
259 body:             |
260   ; CHECK-LABEL: name: bar
261   ; CHECK: bb.0.bb:
262   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
263   ; CHECK-NEXT: {{  $}}
264   ; CHECK-NEXT:   [[MOV32r0_:%[0-9]+]]:gr32 = MOV32r0 implicit-def dead $eflags
265   ; CHECK-NEXT:   [[MOV32ri:%[0-9]+]]:gr32 = MOV32ri -1
266   ; CHECK-NEXT: {{  $}}
267   ; CHECK-NEXT: bb.1.bb1:
268   ; CHECK-NEXT:   successors: %bb.9(0x40000000), %bb.2(0x40000000)
269   ; CHECK-NEXT: {{  $}}
270   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
271   ; CHECK-NEXT:   [[STATEPOINT:%[0-9]+]]:gr64 = STATEPOINT 2, 5, 0, undef %16:gr64, 2, 0, 2, 0, 2, 25, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 1, 2, 0, 2, 0, 2, 5, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 1, undef [[STATEPOINT]](tied-def 0), 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp
272   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
273   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
274   ; CHECK-NEXT:   [[STATEPOINT1:%[0-9]+]]:gr64 = STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @barney, undef $rdi, 2, 0, 2, 0, 2, 27, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 9, 2, 1, 2, 9, 2, 0, 2, 5, 2, 1, 2, 7, 2, 0, 2, 8, 2, 2, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 2, 2, 1, [[STATEPOINT1]](tied-def 0), 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp
275   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
276   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
277   ; CHECK-NEXT:   [[STATEPOINT1:%[0-9]+]]:gr64 = STATEPOINT 2, 5, 0, undef %18:gr64, 2, 0, 2, 0, 2, 27, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 10, 2, 1, 2, 9, 2, 0, 2, 5, 2, 1, 2, 7, 2, 0, 2, 8, 2, 2, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 2, 2, 1, [[STATEPOINT1]](tied-def 0), 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp, implicit-def $rax
278   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
279   ; CHECK-NEXT:   [[COPY:%[0-9]+]]:gr64 = COPY $rax
280   ; CHECK-NEXT:   TEST8rr [[MOV32r0_]].sub_8bit, [[MOV32r0_]].sub_8bit, implicit-def $eflags
281   ; CHECK-NEXT:   JCC_1 %bb.9, 5, implicit killed $eflags
282   ; CHECK-NEXT:   JMP_1 %bb.2
283   ; CHECK-NEXT: {{  $}}
284   ; CHECK-NEXT: bb.2.bb10:
285   ; CHECK-NEXT:   successors: %bb.4(0x80000000), %bb.3(0x00000000)
286   ; CHECK-NEXT: {{  $}}
287   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
288   ; CHECK-NEXT:   CALL64pcrel32 target-flags(x86-plt) @wobble.3, csr_64, implicit $rsp, implicit $ssp, implicit undef $rdi, implicit undef $rsi, implicit-def $rsp, implicit-def $ssp, implicit-def $rax
289   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
290   ; CHECK-NEXT:   [[COPY1:%[0-9]+]]:gr64 = COPY $rax
291   ; CHECK-NEXT:   TEST8rr [[MOV32r0_]].sub_8bit, [[MOV32r0_]].sub_8bit, implicit-def $eflags
292   ; CHECK-NEXT:   JCC_1 %bb.4, 5, implicit killed $eflags
293   ; CHECK-NEXT:   JMP_1 %bb.3
294   ; CHECK-NEXT: {{  $}}
295   ; CHECK-NEXT: bb.3.bb15:
296   ; CHECK-NEXT:   successors: {{$}}
297   ; CHECK-NEXT: {{  $}}
298   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
299   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gr64 = COPY [[COPY1]]
300   ; CHECK-NEXT:   dead [[COPY2]]:gr64, dead [[COPY]]:gr64 = STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @barney, undef $rdi, 2, 0, 2, 0, 2, 45, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 1, 2, 71, 2, 0, 2, 5, 2, 0, 2, 0, [[COPY2]], 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 2, 2, 5, 2, 1, 2, 0, 2, 2, 2, 0, 2, 0, [[COPY]], 2, 7, 2, 0, 2, 1, 2, 6, 2, 0, 2, 0, 2, 1, 2, 1, 2, 0, [[COPY]], 2, 8, 2, 10, 2, 2, [[COPY2]](tied-def 0), [[COPY]](tied-def 1), 2, 0, 2, 2, 0, 0, 1, 1, csr_64, implicit-def $rsp, implicit-def $ssp
301   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
302   ; CHECK-NEXT: {{  $}}
303   ; CHECK-NEXT: bb.4.bb17:
304   ; CHECK-NEXT:   successors: %bb.5(0x80000000), %bb.8(0x00000000)
305   ; CHECK-NEXT: {{  $}}
306   ; CHECK-NEXT:   [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm undef %35:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `ptr addrspace(1) undef`, addrspace 1)
307   ; CHECK-NEXT:   [[AND32ri:%[0-9]+]]:gr32 = AND32ri [[AND32ri]], 33554431, implicit-def dead $eflags
308   ; CHECK-NEXT:   EH_LABEL <mcsymbol .Ltmp0>
309   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
310   ; CHECK-NEXT:   $edi = COPY [[AND32ri]]
311   ; CHECK-NEXT:   [[COPY2:%[0-9]+]]:gr64 = COPY [[COPY1]]
312   ; CHECK-NEXT:   dead %30:gr64, [[COPY2]]:gr64, dead [[STATEPOINT1]]:gr64, [[COPY]]:gr64 = STATEPOINT 1, 16, 2, undef %38:gr64, $edi, undef $rsi, 2, 0, 2, 0, 2, 35, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 1, 2, 71, 2, 0, 2, 5, 2, 0, 2, 0, [[COPY2]], 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 5, 2, 12, 2, 0, 2, 2, 2, 0, 2, 0, [[COPY]], 2, 7, 2, 0, 2, 4, undef %30(tied-def 0), [[COPY2]](tied-def 1), [[STATEPOINT1]](tied-def 2), [[COPY]](tied-def 3), 2, 0, 2, 4, 0, 0, 1, 1, 2, 2, 3, 3, csr_64, implicit-def $rsp, implicit-def $ssp
313   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
314   ; CHECK-NEXT:   EH_LABEL <mcsymbol .Ltmp1>
315   ; CHECK-NEXT:   JMP_1 %bb.5
316   ; CHECK-NEXT: {{  $}}
317   ; CHECK-NEXT: bb.5.bb21:
318   ; CHECK-NEXT:   successors: %bb.9(0x7c000000), %bb.6(0x04000000)
319   ; CHECK-NEXT: {{  $}}
320   ; CHECK-NEXT:   [[MOV64rm:%[0-9]+]]:gr64 = MOV64rm $rip, 1, $noreg, target-flags(x86-gotpcrel) @global, $noreg :: (load (s64) from got)
321   ; CHECK-NEXT:   [[MOV64rm1:%[0-9]+]]:gr64 = MOV64rm [[MOV64rm]], 1, $noreg, 0, $noreg :: (dereferenceable load unordered (s64) from @global)
322   ; CHECK-NEXT:   [[NOT64r:%[0-9]+]]:gr64 = NOT64r [[NOT64r]]
323   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
324   ; CHECK-NEXT:   dead [[NOT64r]]:gr64, [[COPY2]]:gr64 = STATEPOINT 2, 5, 1, undef %50:gr64, undef $rdi, 2, 0, 2, 0, 2, 27, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 10, 2, 1, 2, 83, 2, 0, 2, 5, 2, 1, 2, 0, [[COPY2]], 2, 7, 2, 0, 2, 8, 2, 2, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 2, 2, 2, [[NOT64r]](tied-def 0), [[COPY2]](tied-def 1), 2, 0, 2, 2, 0, 0, 1, 1, csr_64, implicit-def $rsp, implicit-def $ssp
325   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
326   ; CHECK-NEXT:   TEST64rr [[COPY2]], [[COPY2]], implicit-def $eflags
327   ; CHECK-NEXT:   [[COPY3:%[0-9]+]]:gr64 = COPY [[COPY2]]
328   ; CHECK-NEXT:   JCC_1 %bb.9, 4, implicit killed $eflags
329   ; CHECK-NEXT:   JMP_1 %bb.6
330   ; CHECK-NEXT: {{  $}}
331   ; CHECK-NEXT: bb.6.bb33.preheader:
332   ; CHECK-NEXT:   successors: %bb.7(0x80000000)
333   ; CHECK-NEXT: {{  $}}
334   ; CHECK-NEXT:   [[MOV64rm1:%[0-9]+]]:gr64 = MOV64rm $rip, 1, $noreg, target-flags(x86-gotpcrel) @global.1, $noreg :: (load (s64) from got)
335   ; CHECK-NEXT:   [[MOV64rm2:%[0-9]+]]:gr64 = MOV64rm [[MOV64rm1]], 1, $noreg, 0, $noreg :: (dereferenceable load unordered (s64) from @global.1)
336   ; CHECK-NEXT:   [[MOV32rm:%[0-9]+]]:gr32 = MOV32rm $noreg, 1, $noreg, 660, $gs :: (load (s32) from `ptr addrspace(256) inttoptr (i64 660 to ptr addrspace(256))`, addrspace 256)
337   ; CHECK-NEXT:   [[NOT64r1:%[0-9]+]]:gr64 = NOT64r [[NOT64r1]]
338   ; CHECK-NEXT:   [[COPY4:%[0-9]+]]:gr64 = COPY [[NOT64r1]]
339   ; CHECK-NEXT:   [[OR32ri:%[0-9]+]]:gr32 = OR32ri [[OR32ri]], 268435456, implicit-def dead $eflags
340   ; CHECK-NEXT:   [[COPY5:%[0-9]+]]:gr32 = COPY [[OR32ri]]
341   ; CHECK-NEXT:   [[DEF:%[0-9]+]]:gr64 = IMPLICIT_DEF
342   ; CHECK-NEXT:   [[COPY6:%[0-9]+]]:gr64 = COPY [[COPY3]]
343   ; CHECK-NEXT:   undef %81.sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
344   ; CHECK-NEXT: {{  $}}
345   ; CHECK-NEXT: bb.7.bb33:
346   ; CHECK-NEXT:   successors: %bb.7(0x80000000)
347   ; CHECK-NEXT: {{  $}}
348   ; CHECK-NEXT:   [[INC64r:%[0-9]+]]:gr64_with_sub_8bit = nuw nsw INC64r [[INC64r]], implicit-def dead $eflags
349   ; CHECK-NEXT:   [[MOV64rm2:%[0-9]+]]:gr64 = MOV64rm undef %59:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `ptr addrspace(1) undef`, addrspace 1)
350   ; CHECK-NEXT:   [[NOT64r2:%[0-9]+]]:gr64 = NOT64r [[NOT64r2]]
351   ; CHECK-NEXT:   CMP64rr [[NOT64r2]], [[COPY6]], implicit-def $eflags
352   ; CHECK-NEXT:   undef [[MOV32ri2:%[0-9]+]].sub_32bit:gr64_with_sub_8bit = MOV32ri 0
353   ; CHECK-NEXT:   [[CMOV64rr:%[0-9]+]]:gr64 = CMOV64rr [[CMOV64rr]], [[MOV32ri2]], 4, implicit killed $eflags
354   ; CHECK-NEXT:   INLINEASM &"lock btsq $0,($1)", 1 /* sideeffect attdialect */, 4521993 /* reguse:GR64 */, [[MOV32ri2]], 4521993 /* reguse:GR64 */, undef %56:gr64, 12 /* clobber */, implicit-def dead early-clobber $df, 12 /* clobber */, implicit-def early-clobber $fpsw, 12 /* clobber */, implicit-def dead early-clobber $eflags
355   ; CHECK-NEXT:   LCMPXCHG32 undef %67:gr64, 1, $noreg, 0, $noreg, [[COPY5]], implicit-def dead $eax, implicit-def dead $eflags, implicit undef $eax :: (load store acquire monotonic (s32) on `ptr addrspace(1) undef`, addrspace 1)
356   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
357   ; CHECK-NEXT:   $rdi = COPY [[COPY4]]
358   ; CHECK-NEXT:   CALL64pcrel32 target-flags(x86-plt) @wobble, csr_64, implicit $rsp, implicit $ssp, implicit $rdi, implicit-def $rsp, implicit-def $ssp
359   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
360   ; CHECK-NEXT:   [[MOV64rm2:%[0-9]+]]:gr64 = MOV64rm $rip, 1, $noreg, target-flags(x86-gotpcrel) @global, $noreg :: (load (s64) from got)
361   ; CHECK-NEXT:   [[MOV64rm3:%[0-9]+]]:gr64 = MOV64rm [[MOV64rm2]], 1, $noreg, 0, $noreg :: (dereferenceable load unordered (s64) from @global)
362   ; CHECK-NEXT:   [[NOT64r2:%[0-9]+]]:gr64 = NOT64r [[NOT64r2]]
363   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
364   ; CHECK-NEXT:   $rdi = COPY [[NOT64r2]]
365   ; CHECK-NEXT:   [[DEF]]:gr64, dead [[CMOV64rr]]:gr64 = STATEPOINT 2, 5, 1, undef %73:gr64, $rdi, 2, 0, 2, 0, 2, 27, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 10, 2, 1, 2, 83, 2, 0, 2, 5, 2, 1, 2, 0, [[CMOV64rr]], 2, 7, 2, 0, 2, 8, 2, 2, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 2, 2, 2, [[DEF]](tied-def 0), [[CMOV64rr]](tied-def 1), 2, 0, 2, 2, 0, 0, 1, 1, csr_64, implicit-def $rsp, implicit-def $ssp
366   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
367   ; CHECK-NEXT:   JMP_1 %bb.7
368   ; CHECK-NEXT: {{  $}}
369   ; CHECK-NEXT: bb.8.bb59 (landing-pad):
370   ; CHECK-NEXT:   successors:
371   ; CHECK-NEXT:   liveins: $rax, $rdx
372   ; CHECK-NEXT: {{  $}}
373   ; CHECK-NEXT:   EH_LABEL <mcsymbol .Ltmp2>
374   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
375   ; CHECK-NEXT:   $edi = MOV32ri -13
376   ; CHECK-NEXT:   dead [[COPY2]]:gr64, dead [[COPY]]:gr64 = STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @barney.2, $edi, 2, 0, 2, 2, 2, 35, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 1, 2, 71, 2, 0, 2, 5, 2, 0, 2, 0, [[COPY2]], 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 1, 2, 5, 2, 21, 2, 0, 2, 2, 2, 0, 2, 0, [[COPY]], 2, 0, 2, 4278124286, 2, 3, [[COPY2]](tied-def 0), [[COPY]](tied-def 1), 2, 4278124286, 2, 0, 2, 3, 0, 0, 1, 1, 2, 2, csr_64, implicit-def $rsp, implicit-def $ssp
377   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
378   ; CHECK-NEXT: {{  $}}
379   ; CHECK-NEXT: bb.9.bb64:
380   ; CHECK-NEXT:   successors: %bb.1(0x80000000)
381   ; CHECK-NEXT: {{  $}}
382   ; CHECK-NEXT:   LCMPXCHG32 undef %76:gr64, 1, $noreg, 0, $noreg, [[MOV32ri]], implicit-def dead $eax, implicit-def dead $eflags, implicit undef $eax :: (load store acquire monotonic (s32) on `ptr addrspace(1) undef`, addrspace 1)
383   ; CHECK-NEXT:   ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
384   ; CHECK-NEXT:   STATEPOINT 2, 5, 1, undef %79:gr64, undef $rdi, 2, 0, 2, 0, 2, 27, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 10, 2, 1, 2, 133, 2, 0, 2, 5, 2, 1, 2, 7, 2, 0, 2, 8, 2, 2, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 2, 2, 0, 2, 0, 2, 0, csr_64, implicit-def $rsp, implicit-def $ssp
385   ; CHECK-NEXT:   ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
386   ; CHECK-NEXT:   JMP_1 %bb.1
387   bb.0.bb:
388     successors: %bb.1(0x80000000)
390     %20:gr32 = MOV32r0 implicit-def dead $eflags
391     %74:gr32 = MOV32ri -1
392     %46:gr64 = MOV64rm $rip, 1, $noreg, target-flags(x86-gotpcrel) @global, $noreg :: (load (s64) from got)
393     %51:gr64 = MOV64rm $rip, 1, $noreg, target-flags(x86-gotpcrel) @global.1, $noreg :: (load (s64) from got)
395   bb.1.bb1:
396     successors: %bb.9(0x40000000), %bb.2(0x40000000)
398     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
399     %15:gr64 = STATEPOINT 2, 5, 0, undef %16:gr64, 2, 0, 2, 0, 2, 25, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 1, 2, 0, 2, 0, 2, 5, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 1, undef %15(tied-def 0), 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp
400     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
401     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
402     %15:gr64 = STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @barney, undef $rdi, 2, 0, 2, 0, 2, 27, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 9, 2, 1, 2, 9, 2, 0, 2, 5, 2, 1, 2, 7, 2, 0, 2, 8, 2, 2, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 2, 2, 1, %15(tied-def 0), 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp
403     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
404     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
405     %15:gr64 = STATEPOINT 2, 5, 0, undef %18:gr64, 2, 0, 2, 0, 2, 27, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 10, 2, 1, 2, 9, 2, 0, 2, 5, 2, 1, 2, 7, 2, 0, 2, 8, 2, 2, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 2, 2, 1, %15(tied-def 0), 2, 0, 2, 1, 0, 0, csr_64, implicit-def $rsp, implicit-def $ssp, implicit-def $rax
406     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
407     %33:gr64 = COPY $rax
408     TEST8rr %20.sub_8bit, %20.sub_8bit, implicit-def $eflags
409     JCC_1 %bb.9, 5, implicit killed $eflags
410     JMP_1 %bb.2
412   bb.2.bb10:
413     successors: %bb.4(0x80000000), %bb.3(0x00000000)
415     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
416     CALL64pcrel32 target-flags(x86-plt) @wobble.3, csr_64, implicit $rsp, implicit $ssp, implicit undef $rdi, implicit undef $rsi, implicit-def $rsp, implicit-def $ssp, implicit-def $rax
417     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
418     %31:gr64 = COPY $rax
419     TEST8rr %20.sub_8bit, %20.sub_8bit, implicit-def $eflags
420     JCC_1 %bb.4, 5, implicit killed $eflags
421     JMP_1 %bb.3
423   bb.3.bb15:
424     successors:
426     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
427     dead %31:gr64, dead %33:gr64 = STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @barney, undef $rdi, 2, 0, 2, 0, 2, 45, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 1, 2, 71, 2, 0, 2, 5, 2, 0, 2, 0, %31, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 2, 2, 5, 2, 1, 2, 0, 2, 2, 2, 0, 2, 0, %33, 2, 7, 2, 0, 2, 1, 2, 6, 2, 0, 2, 0, 2, 1, 2, 1, 2, 0, %33, 2, 8, 2, 10, 2, 2, %31(tied-def 0), %33(tied-def 1), 2, 0, 2, 2, 0, 0, 1, 1, csr_64, implicit-def $rsp, implicit-def $ssp
428     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
430   bb.4.bb17:
431     successors: %bb.5(0x80000000), %bb.8(0x00000000)
433     %36:gr32 = MOV32rm undef %35:gr64, 1, $noreg, 0, $noreg :: (load unordered (s32) from `ptr addrspace(1) undef`, addrspace 1)
434     %36:gr32 = AND32ri %36, 33554431, implicit-def dead $eflags
435     EH_LABEL <mcsymbol .Ltmp0>
436     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
437     $edi = COPY %36
438     dead %30:gr64, %31:gr64, dead %15:gr64, %33:gr64 = STATEPOINT 1, 16, 2, undef %38:gr64, killed $edi, undef $rsi, 2, 0, 2, 0, 2, 35, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 1, 2, 71, 2, 0, 2, 5, 2, 0, 2, 0, %31, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 5, 2, 12, 2, 0, 2, 2, 2, 0, 2, 0, %33, 2, 7, 2, 0, 2, 4, undef %30(tied-def 0), %31(tied-def 1), %15(tied-def 2), %33(tied-def 3), 2, 0, 2, 4, 0, 0, 1, 1, 2, 2, 3, 3, csr_64, implicit-def $rsp, implicit-def $ssp
439     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
440     EH_LABEL <mcsymbol .Ltmp1>
441     JMP_1 %bb.5
443   bb.5.bb21:
444     successors: %bb.9(0x7c000000), %bb.6(0x04000000)
446     %44:gr64 = MOV64rm %46, 1, $noreg, 0, $noreg :: (dereferenceable load unordered (s64) from @global)
447     %44:gr64 = NOT64r %44
448     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
449     dead %44:gr64, %31:gr64 = STATEPOINT 2, 5, 1, undef %50:gr64, undef $rdi, 2, 0, 2, 0, 2, 27, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 10, 2, 1, 2, 83, 2, 0, 2, 5, 2, 1, 2, 0, %31, 2, 7, 2, 0, 2, 8, 2, 2, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 2, 2, 2, %44(tied-def 0), %31(tied-def 1), 2, 0, 2, 2, 0, 0, 1, 1, csr_64, implicit-def $rsp, implicit-def $ssp
450     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
451     TEST64rr %31, %31, implicit-def $eflags
452     JCC_1 %bb.9, 4, implicit killed $eflags
453     JMP_1 %bb.6
455   bb.6.bb33.preheader:
456     successors: %bb.7(0x80000000)
458     %64:gr64 = MOV64rm %51, 1, $noreg, 0, $noreg :: (dereferenceable load unordered (s64) from @global.1)
459     %65:gr32 = MOV32rm $noreg, 1, $noreg, 660, $gs :: (load (s32) from `ptr addrspace(256) inttoptr (i64 660 to ptr addrspace(256))`, addrspace 256)
460     undef %53.sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
461     %64:gr64 = NOT64r %64
462     %65:gr32 = OR32ri %65, 268435456, implicit-def dead $eflags
463     %80:gr64 = IMPLICIT_DEF
464     undef %81.sub_32bit:gr64_with_sub_8bit = MOV32r0 implicit-def dead $eflags
466   bb.7.bb33:
467     successors: %bb.7(0x80000000)
469     %81:gr64_with_sub_8bit = nuw nsw INC64r %81, implicit-def dead $eflags
470     %63:gr64 = MOV64rm undef %59:gr64, 1, $noreg, 0, $noreg :: (load unordered (s64) from `ptr addrspace(1) undef`, addrspace 1)
471     %63:gr64 = NOT64r %63
472     CMP64rr %63, %31, implicit-def $eflags
473     %63:gr64 = CMOV64rr %63, %53, 4, implicit killed $eflags
474     INLINEASM &"lock btsq $0,($1)", 1 /* sideeffect attdialect */, 4521993 /* reguse:GR64 */, %53, 4521993 /* reguse:GR64 */, undef %56:gr64, 12 /* clobber */, implicit-def dead early-clobber $df, 12 /* clobber */, implicit-def early-clobber $fpsw, 12 /* clobber */, implicit-def dead early-clobber $eflags
475     LCMPXCHG32 undef %67:gr64, 1, $noreg, 0, $noreg, %65, implicit-def dead $eax, implicit-def dead $eflags, implicit undef $eax :: (load store acquire monotonic (s32) on `ptr addrspace(1) undef`, addrspace 1)
476     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
477     $rdi = COPY %64
478     CALL64pcrel32 target-flags(x86-plt) @wobble, csr_64, implicit $rsp, implicit $ssp, implicit killed $rdi, implicit-def $rsp, implicit-def $ssp
479     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
480     %71:gr64 = MOV64rm %46, 1, $noreg, 0, $noreg :: (dereferenceable load unordered (s64) from @global)
481     %71:gr64 = NOT64r %71
482     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
483     $rdi = COPY %71
484     %80:gr64, dead %63:gr64 = STATEPOINT 2, 5, 1, undef %73:gr64, killed $rdi, 2, 0, 2, 0, 2, 27, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 10, 2, 1, 2, 83, 2, 0, 2, 5, 2, 1, 2, 0, %63, 2, 7, 2, 0, 2, 8, 2, 2, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 2, 2, 2, %80(tied-def 0), %63(tied-def 1), 2, 0, 2, 2, 0, 0, 1, 1, csr_64, implicit-def $rsp, implicit-def $ssp
485     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
486     JMP_1 %bb.7
488   bb.8.bb59 (landing-pad):
489     successors:
490     liveins: $rax, $rdx
492     EH_LABEL <mcsymbol .Ltmp2>
493     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
494     $edi = MOV32ri -13
495     dead %31:gr64, dead %33:gr64 = STATEPOINT 2882400000, 0, 1, target-flags(x86-plt) @barney.2, killed $edi, 2, 0, 2, 2, 2, 35, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 2, 2, 1, 2, 71, 2, 0, 2, 5, 2, 0, 2, 0, %31, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 1, 2, 5, 2, 21, 2, 0, 2, 2, 2, 0, 2, 0, %33, 2, 0, 2, 4278124286, 2, 3, %31(tied-def 0), %33(tied-def 1), 2, 4278124286, 2, 0, 2, 3, 0, 0, 1, 1, 2, 2, csr_64, implicit-def $rsp, implicit-def $ssp
496     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
498   bb.9.bb64:
499     successors: %bb.1(0x80000000)
501     LCMPXCHG32 undef %76:gr64, 1, $noreg, 0, $noreg, %74, implicit-def dead $eax, implicit-def dead $eflags, implicit undef $eax :: (load store acquire monotonic (s32) on `ptr addrspace(1) undef`, addrspace 1)
502     ADJCALLSTACKDOWN64 0, 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
503     STATEPOINT 2, 5, 1, undef %79:gr64, undef $rdi, 2, 0, 2, 0, 2, 27, 2, 0, 2, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 7, 2, 0, 2, 10, 2, 1, 2, 133, 2, 0, 2, 5, 2, 1, 2, 7, 2, 0, 2, 8, 2, 2, 2, 7, 2, 0, 2, 7, 2, 0, 2, 7, 2, 0, 2, 8, 2, 2, 2, 0, 2, 0, 2, 0, csr_64, implicit-def $rsp, implicit-def $ssp
504     ADJCALLSTACKUP64 0, 0, implicit-def dead $rsp, implicit-def dead $eflags, implicit-def dead $ssp, implicit $rsp, implicit $ssp
505     JMP_1 %bb.1