xref: /llvm-project/llvm/test/CodeGen/RISCV/inline-asm-mem-constraint.ll (revision 97982a8c605fac7c86d02e641a6cd7898b3ca343)
1a3b11ce7Swangpc; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2a3b11ce7Swangpc; RUN: llc -mtriple=riscv32 -verify-machineinstrs -no-integrated-as < %s \
34bf68aacSAnton Sidorenko; RUN:   | FileCheck -check-prefixes=RV32I,RV32I-NO-INTEGRATED %s
4a3b11ce7Swangpc; RUN: llc -mtriple=riscv64 -verify-machineinstrs -no-integrated-as < %s \
54bf68aacSAnton Sidorenko; RUN:   | FileCheck -check-prefixes=RV64I,RV64I-NO-INTEGRATED %s
6a3b11ce7Swangpc; RUN: llc -mtriple=riscv32 -code-model=medium -verify-machineinstrs -no-integrated-as < %s \
74bf68aacSAnton Sidorenko; RUN:   | FileCheck -check-prefixes=RV32I-MEDIUM,RV32I-MEDIUM-NO-INTEGRATED %s
8a3b11ce7Swangpc; RUN: llc -mtriple=riscv64 -code-model=medium -verify-machineinstrs -no-integrated-as < %s \
94bf68aacSAnton Sidorenko; RUN:   | FileCheck -check-prefixes=RV64I-MEDIUM,RV64I-MEDIUM-NO-INTEGRATED %s
10*fef84c56SJim Lin; RUN: llc -mtriple=riscv64 -code-model=large -verify-machineinstrs -no-integrated-as < %s \
11*fef84c56SJim Lin; RUN:   | FileCheck -check-prefixes=RV64I-LARGE,RV64I-LARGE-NO-INTEGRATED %s
124bf68aacSAnton Sidorenko; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \
134bf68aacSAnton Sidorenko; RUN:   | FileCheck -check-prefixes=RV32I,RV32I-INTEGRATED %s
144bf68aacSAnton Sidorenko; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
154bf68aacSAnton Sidorenko; RUN:   | FileCheck -check-prefixes=RV64I,RV64I-INTEGRATED %s
164bf68aacSAnton Sidorenko; RUN: llc -mtriple=riscv32 -code-model=medium -verify-machineinstrs < %s \
174bf68aacSAnton Sidorenko; RUN:   | FileCheck -check-prefixes=RV32I-MEDIUM,RV32I-MEDIUM-INTEGRATED %s
184bf68aacSAnton Sidorenko; RUN: llc -mtriple=riscv64 -code-model=medium -verify-machineinstrs < %s \
194bf68aacSAnton Sidorenko; RUN:   | FileCheck -check-prefixes=RV64I-MEDIUM,RV64I-MEDIUM-INTEGRATED %s
20*fef84c56SJim Lin; RUN: llc -mtriple=riscv64 -code-model=large -verify-machineinstrs < %s \
21*fef84c56SJim Lin; RUN:   | FileCheck -check-prefixes=RV64I-LARGE,RV64I-LARGE-INTEGRATED %s
22a3b11ce7Swangpc
23dc60003eSwangpc@eg = external global [4000 x i32], align 4
24dc60003eSwangpc@ewg = extern_weak global [4000 x i32], align 4
25dc60003eSwangpc
26a3b11ce7Swangpcdefine void @constraint_m_1(ptr %a) nounwind {
27a3b11ce7Swangpc; RV32I-LABEL: constraint_m_1:
28a3b11ce7Swangpc; RV32I:       # %bb.0:
29a3b11ce7Swangpc; RV32I-NEXT:    #APP
30a3b11ce7Swangpc; RV32I-NEXT:    #NO_APP
31a3b11ce7Swangpc; RV32I-NEXT:    ret
32a3b11ce7Swangpc;
33a3b11ce7Swangpc; RV64I-LABEL: constraint_m_1:
34a3b11ce7Swangpc; RV64I:       # %bb.0:
35a3b11ce7Swangpc; RV64I-NEXT:    #APP
36a3b11ce7Swangpc; RV64I-NEXT:    #NO_APP
37a3b11ce7Swangpc; RV64I-NEXT:    ret
38a3b11ce7Swangpc;
39a3b11ce7Swangpc; RV32I-MEDIUM-LABEL: constraint_m_1:
40a3b11ce7Swangpc; RV32I-MEDIUM:       # %bb.0:
41a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #APP
42a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #NO_APP
43a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    ret
44a3b11ce7Swangpc;
45a3b11ce7Swangpc; RV64I-MEDIUM-LABEL: constraint_m_1:
46a3b11ce7Swangpc; RV64I-MEDIUM:       # %bb.0:
47a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #APP
48a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #NO_APP
49a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    ret
50*fef84c56SJim Lin;
51*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_m_1:
52*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
53*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
54*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
55*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
56a3b11ce7Swangpc  call void asm sideeffect "", "=*m"(ptr elementtype(i32) %a)
57a3b11ce7Swangpc  ret void
58a3b11ce7Swangpc}
59a3b11ce7Swangpc
60a3b11ce7Swangpcdefine i32 @constraint_m_2(ptr %a) nounwind {
61a3b11ce7Swangpc; RV32I-LABEL: constraint_m_2:
62a3b11ce7Swangpc; RV32I:       # %bb.0:
63a3b11ce7Swangpc; RV32I-NEXT:    #APP
64a3b11ce7Swangpc; RV32I-NEXT:    lw a0, 0(a0)
65a3b11ce7Swangpc; RV32I-NEXT:    #NO_APP
66a3b11ce7Swangpc; RV32I-NEXT:    ret
67a3b11ce7Swangpc;
68a3b11ce7Swangpc; RV64I-LABEL: constraint_m_2:
69a3b11ce7Swangpc; RV64I:       # %bb.0:
70a3b11ce7Swangpc; RV64I-NEXT:    #APP
71a3b11ce7Swangpc; RV64I-NEXT:    lw a0, 0(a0)
72a3b11ce7Swangpc; RV64I-NEXT:    #NO_APP
73a3b11ce7Swangpc; RV64I-NEXT:    ret
74a3b11ce7Swangpc;
75a3b11ce7Swangpc; RV32I-MEDIUM-LABEL: constraint_m_2:
76a3b11ce7Swangpc; RV32I-MEDIUM:       # %bb.0:
77a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #APP
78a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    lw a0, 0(a0)
79a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #NO_APP
80a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    ret
81a3b11ce7Swangpc;
82a3b11ce7Swangpc; RV64I-MEDIUM-LABEL: constraint_m_2:
83a3b11ce7Swangpc; RV64I-MEDIUM:       # %bb.0:
84a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #APP
85a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    lw a0, 0(a0)
86a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #NO_APP
87a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    ret
88*fef84c56SJim Lin;
89*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_m_2:
90*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
91*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
92*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw a0, 0(a0)
93*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
94*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
95a3b11ce7Swangpc  %1 = tail call i32 asm "lw $0, $1", "=r,*m"(ptr elementtype(i32) %a)
96a3b11ce7Swangpc  ret i32 %1
97a3b11ce7Swangpc}
98a3b11ce7Swangpc
99a3b11ce7Swangpcdefine i32 @constraint_m_with_offset(ptr %a) nounwind {
100a3b11ce7Swangpc; RV32I-LABEL: constraint_m_with_offset:
101a3b11ce7Swangpc; RV32I:       # %bb.0:
102a3b11ce7Swangpc; RV32I-NEXT:    #APP
103a3b11ce7Swangpc; RV32I-NEXT:    lw a0, 4(a0)
104a3b11ce7Swangpc; RV32I-NEXT:    #NO_APP
105a3b11ce7Swangpc; RV32I-NEXT:    ret
106a3b11ce7Swangpc;
107a3b11ce7Swangpc; RV64I-LABEL: constraint_m_with_offset:
108a3b11ce7Swangpc; RV64I:       # %bb.0:
109a3b11ce7Swangpc; RV64I-NEXT:    #APP
110a3b11ce7Swangpc; RV64I-NEXT:    lw a0, 4(a0)
111a3b11ce7Swangpc; RV64I-NEXT:    #NO_APP
112a3b11ce7Swangpc; RV64I-NEXT:    ret
113a3b11ce7Swangpc;
114a3b11ce7Swangpc; RV32I-MEDIUM-LABEL: constraint_m_with_offset:
115a3b11ce7Swangpc; RV32I-MEDIUM:       # %bb.0:
116a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #APP
117a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    lw a0, 4(a0)
118a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #NO_APP
119a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    ret
120a3b11ce7Swangpc;
121a3b11ce7Swangpc; RV64I-MEDIUM-LABEL: constraint_m_with_offset:
122a3b11ce7Swangpc; RV64I-MEDIUM:       # %bb.0:
123a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #APP
124a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    lw a0, 4(a0)
125a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #NO_APP
126a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    ret
127*fef84c56SJim Lin;
128*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_m_with_offset:
129*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
130*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
131*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw a0, 4(a0)
132*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
133*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
134a3b11ce7Swangpc  %1 = getelementptr i32, ptr %a, i32 1
135a3b11ce7Swangpc  %2 = tail call i32 asm "lw $0, $1", "=r,*m"(ptr elementtype(i32) %1)
136a3b11ce7Swangpc  ret i32 %2
137a3b11ce7Swangpc}
138a3b11ce7Swangpc
139dc60003eSwangpcdefine void @constraint_m_with_global_1() nounwind {
140dc60003eSwangpc; RV32I-LABEL: constraint_m_with_global_1:
141dc60003eSwangpc; RV32I:       # %bb.0:
142dc60003eSwangpc; RV32I-NEXT:    lui a0, %hi(eg)
143dc60003eSwangpc; RV32I-NEXT:    #APP
144dc60003eSwangpc; RV32I-NEXT:    sw zero, %lo(eg)(a0)
145dc60003eSwangpc; RV32I-NEXT:    #NO_APP
146dc60003eSwangpc; RV32I-NEXT:    ret
147dc60003eSwangpc;
148dc60003eSwangpc; RV64I-LABEL: constraint_m_with_global_1:
149dc60003eSwangpc; RV64I:       # %bb.0:
150dc60003eSwangpc; RV64I-NEXT:    lui a0, %hi(eg)
151dc60003eSwangpc; RV64I-NEXT:    #APP
152dc60003eSwangpc; RV64I-NEXT:    sw zero, %lo(eg)(a0)
153dc60003eSwangpc; RV64I-NEXT:    #NO_APP
154dc60003eSwangpc; RV64I-NEXT:    ret
155dc60003eSwangpc;
1562f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_m_with_global_1:
1572f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0:
1582f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi0:
1592f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
1602f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
1612f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi0)(a0)
1622f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
1632f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
164dc60003eSwangpc;
1652f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_m_with_global_1:
1662f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0:
1672f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi0:
1682f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
1692f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
1702f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi0)(a0)
1712f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
1722f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
173*fef84c56SJim Lin;
174*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_m_with_global_1:
175*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
176*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi0:
177*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI3_0)
178*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi0)(a0)
179*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
180*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
181*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
182*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
183dc60003eSwangpc  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) @eg)
184dc60003eSwangpc  ret void
185dc60003eSwangpc}
186dc60003eSwangpc
187dc60003eSwangpcdefine void @constraint_m_with_global_2() nounwind {
188dc60003eSwangpc; RV32I-LABEL: constraint_m_with_global_2:
189dc60003eSwangpc; RV32I:       # %bb.0:
1905cd8d53cSWang Pengcheng; RV32I-NEXT:    lui a0, %hi(eg+4)
191dc60003eSwangpc; RV32I-NEXT:    #APP
1925cd8d53cSWang Pengcheng; RV32I-NEXT:    sw zero, %lo(eg+4)(a0)
193dc60003eSwangpc; RV32I-NEXT:    #NO_APP
194dc60003eSwangpc; RV32I-NEXT:    ret
195dc60003eSwangpc;
196dc60003eSwangpc; RV64I-LABEL: constraint_m_with_global_2:
197dc60003eSwangpc; RV64I:       # %bb.0:
1985cd8d53cSWang Pengcheng; RV64I-NEXT:    lui a0, %hi(eg+4)
199dc60003eSwangpc; RV64I-NEXT:    #APP
2005cd8d53cSWang Pengcheng; RV64I-NEXT:    sw zero, %lo(eg+4)(a0)
201dc60003eSwangpc; RV64I-NEXT:    #NO_APP
202dc60003eSwangpc; RV64I-NEXT:    ret
203dc60003eSwangpc;
2042f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_m_with_global_2:
2052f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0:
2062f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi1:
2072f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+4)
2082f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
2092f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi1)(a0)
2102f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
2112f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
212dc60003eSwangpc;
2132f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_m_with_global_2:
2142f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0:
2152f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi1:
2162f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+4)
2172f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
2182f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi1)(a0)
2192f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
2202f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
221*fef84c56SJim Lin;
222*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_m_with_global_2:
223*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
224*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi1:
225*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI4_0)
226*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi1)(a0)
227*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
228*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 4(a0)
229*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
230*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
23161d819ddSwangpc  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @eg, i32 0, i32 1))
232dc60003eSwangpc  ret void
233dc60003eSwangpc}
234dc60003eSwangpc
235dc60003eSwangpcdefine void @constraint_m_with_global_3() nounwind {
236dc60003eSwangpc; RV32I-LABEL: constraint_m_with_global_3:
237dc60003eSwangpc; RV32I:       # %bb.0:
238dc60003eSwangpc; RV32I-NEXT:    lui a0, %hi(eg+8000)
239dc60003eSwangpc; RV32I-NEXT:    #APP
2405cd8d53cSWang Pengcheng; RV32I-NEXT:    sw zero, %lo(eg+8000)(a0)
241dc60003eSwangpc; RV32I-NEXT:    #NO_APP
242dc60003eSwangpc; RV32I-NEXT:    ret
243dc60003eSwangpc;
244dc60003eSwangpc; RV64I-LABEL: constraint_m_with_global_3:
245dc60003eSwangpc; RV64I:       # %bb.0:
246dc60003eSwangpc; RV64I-NEXT:    lui a0, %hi(eg+8000)
247dc60003eSwangpc; RV64I-NEXT:    #APP
2485cd8d53cSWang Pengcheng; RV64I-NEXT:    sw zero, %lo(eg+8000)(a0)
249dc60003eSwangpc; RV64I-NEXT:    #NO_APP
250dc60003eSwangpc; RV64I-NEXT:    ret
251dc60003eSwangpc;
2522f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_m_with_global_3:
2532f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0:
2542f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi2:
2552f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+8000)
2562f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
2572f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi2)(a0)
2582f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
2592f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
260dc60003eSwangpc;
2612f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_m_with_global_3:
2622f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0:
2632f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi2:
2642f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+8000)
2652f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
2662f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi2)(a0)
2672f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
2682f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
269*fef84c56SJim Lin;
270*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_m_with_global_3:
271*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
272*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi2:
273*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI5_0)
274*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi2)(a0)
275*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lui a1, 2
276*fef84c56SJim Lin; RV64I-LARGE-NEXT:    addiw a1, a1, -192
277*fef84c56SJim Lin; RV64I-LARGE-NEXT:    add a0, a0, a1
278*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
279*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
280*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
281*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
28261d819ddSwangpc  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @eg, i32 0, i32 2000))
283dc60003eSwangpc  ret void
284dc60003eSwangpc}
285dc60003eSwangpc
286dc60003eSwangpcdefine void @constraint_m_with_extern_weak_global_1() nounwind {
287dc60003eSwangpc; RV32I-LABEL: constraint_m_with_extern_weak_global_1:
288dc60003eSwangpc; RV32I:       # %bb.0:
289dc60003eSwangpc; RV32I-NEXT:    lui a0, %hi(ewg)
290dc60003eSwangpc; RV32I-NEXT:    #APP
291dc60003eSwangpc; RV32I-NEXT:    sw zero, %lo(ewg)(a0)
292dc60003eSwangpc; RV32I-NEXT:    #NO_APP
293dc60003eSwangpc; RV32I-NEXT:    ret
294dc60003eSwangpc;
295dc60003eSwangpc; RV64I-LABEL: constraint_m_with_extern_weak_global_1:
296dc60003eSwangpc; RV64I:       # %bb.0:
297dc60003eSwangpc; RV64I-NEXT:    lui a0, %hi(ewg)
298dc60003eSwangpc; RV64I-NEXT:    #APP
299dc60003eSwangpc; RV64I-NEXT:    sw zero, %lo(ewg)(a0)
300dc60003eSwangpc; RV64I-NEXT:    #NO_APP
301dc60003eSwangpc; RV64I-NEXT:    ret
302dc60003eSwangpc;
303dc60003eSwangpc; RV32I-MEDIUM-LABEL: constraint_m_with_extern_weak_global_1:
304dc60003eSwangpc; RV32I-MEDIUM:       # %bb.0:
305dc60003eSwangpc; RV32I-MEDIUM-NEXT:  .Lpcrel_hi3:
306dc60003eSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
307dc60003eSwangpc; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi3)(a0)
308dc60003eSwangpc; RV32I-MEDIUM-NEXT:    #APP
309dc60003eSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
310dc60003eSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
311dc60003eSwangpc; RV32I-MEDIUM-NEXT:    ret
312dc60003eSwangpc;
313dc60003eSwangpc; RV64I-MEDIUM-LABEL: constraint_m_with_extern_weak_global_1:
314dc60003eSwangpc; RV64I-MEDIUM:       # %bb.0:
315dc60003eSwangpc; RV64I-MEDIUM-NEXT:  .Lpcrel_hi3:
316dc60003eSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
317dc60003eSwangpc; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi3)(a0)
318dc60003eSwangpc; RV64I-MEDIUM-NEXT:    #APP
319dc60003eSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
320dc60003eSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
321dc60003eSwangpc; RV64I-MEDIUM-NEXT:    ret
322*fef84c56SJim Lin;
323*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_m_with_extern_weak_global_1:
324*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
325*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi3:
326*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI6_0)
327*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi3)(a0)
328*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
329*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
330*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
331*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
332dc60003eSwangpc  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) @ewg)
333dc60003eSwangpc  ret void
334dc60003eSwangpc}
335dc60003eSwangpc
336dc60003eSwangpcdefine void @constraint_m_with_extern_weak_global_2() nounwind {
337dc60003eSwangpc; RV32I-LABEL: constraint_m_with_extern_weak_global_2:
338dc60003eSwangpc; RV32I:       # %bb.0:
3395cd8d53cSWang Pengcheng; RV32I-NEXT:    lui a0, %hi(ewg+4)
340dc60003eSwangpc; RV32I-NEXT:    #APP
3415cd8d53cSWang Pengcheng; RV32I-NEXT:    sw zero, %lo(ewg+4)(a0)
342dc60003eSwangpc; RV32I-NEXT:    #NO_APP
343dc60003eSwangpc; RV32I-NEXT:    ret
344dc60003eSwangpc;
345dc60003eSwangpc; RV64I-LABEL: constraint_m_with_extern_weak_global_2:
346dc60003eSwangpc; RV64I:       # %bb.0:
3475cd8d53cSWang Pengcheng; RV64I-NEXT:    lui a0, %hi(ewg+4)
348dc60003eSwangpc; RV64I-NEXT:    #APP
3495cd8d53cSWang Pengcheng; RV64I-NEXT:    sw zero, %lo(ewg+4)(a0)
350dc60003eSwangpc; RV64I-NEXT:    #NO_APP
351dc60003eSwangpc; RV64I-NEXT:    ret
352dc60003eSwangpc;
353dc60003eSwangpc; RV32I-MEDIUM-LABEL: constraint_m_with_extern_weak_global_2:
354dc60003eSwangpc; RV32I-MEDIUM:       # %bb.0:
355dc60003eSwangpc; RV32I-MEDIUM-NEXT:  .Lpcrel_hi4:
356dc60003eSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
357dc60003eSwangpc; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi4)(a0)
358dc60003eSwangpc; RV32I-MEDIUM-NEXT:    #APP
359dc60003eSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 4(a0)
360dc60003eSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
361dc60003eSwangpc; RV32I-MEDIUM-NEXT:    ret
362dc60003eSwangpc;
363dc60003eSwangpc; RV64I-MEDIUM-LABEL: constraint_m_with_extern_weak_global_2:
364dc60003eSwangpc; RV64I-MEDIUM:       # %bb.0:
365dc60003eSwangpc; RV64I-MEDIUM-NEXT:  .Lpcrel_hi4:
366dc60003eSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
367dc60003eSwangpc; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi4)(a0)
368dc60003eSwangpc; RV64I-MEDIUM-NEXT:    #APP
369dc60003eSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 4(a0)
370dc60003eSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
371dc60003eSwangpc; RV64I-MEDIUM-NEXT:    ret
372*fef84c56SJim Lin;
373*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_m_with_extern_weak_global_2:
374*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
375*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi4:
376*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI7_0)
377*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi4)(a0)
378*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
379*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 4(a0)
380*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
381*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
38261d819ddSwangpc  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @ewg, i32 0, i32 1))
383dc60003eSwangpc  ret void
384dc60003eSwangpc}
385dc60003eSwangpc
386dc60003eSwangpcdefine void @constraint_m_with_extern_weak_global_3() nounwind {
387dc60003eSwangpc; RV32I-LABEL: constraint_m_with_extern_weak_global_3:
388dc60003eSwangpc; RV32I:       # %bb.0:
389dc60003eSwangpc; RV32I-NEXT:    lui a0, %hi(ewg+8000)
390dc60003eSwangpc; RV32I-NEXT:    #APP
3915cd8d53cSWang Pengcheng; RV32I-NEXT:    sw zero, %lo(ewg+8000)(a0)
392dc60003eSwangpc; RV32I-NEXT:    #NO_APP
393dc60003eSwangpc; RV32I-NEXT:    ret
394dc60003eSwangpc;
395dc60003eSwangpc; RV64I-LABEL: constraint_m_with_extern_weak_global_3:
396dc60003eSwangpc; RV64I:       # %bb.0:
397dc60003eSwangpc; RV64I-NEXT:    lui a0, %hi(ewg+8000)
398dc60003eSwangpc; RV64I-NEXT:    #APP
3995cd8d53cSWang Pengcheng; RV64I-NEXT:    sw zero, %lo(ewg+8000)(a0)
400dc60003eSwangpc; RV64I-NEXT:    #NO_APP
401dc60003eSwangpc; RV64I-NEXT:    ret
402dc60003eSwangpc;
403dc60003eSwangpc; RV32I-MEDIUM-LABEL: constraint_m_with_extern_weak_global_3:
404dc60003eSwangpc; RV32I-MEDIUM:       # %bb.0:
405dc60003eSwangpc; RV32I-MEDIUM-NEXT:  .Lpcrel_hi5:
406dc60003eSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
407dc60003eSwangpc; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi5)(a0)
408dc60003eSwangpc; RV32I-MEDIUM-NEXT:    lui a1, 2
409dc60003eSwangpc; RV32I-MEDIUM-NEXT:    addi a1, a1, -192
410dc60003eSwangpc; RV32I-MEDIUM-NEXT:    add a0, a0, a1
411dc60003eSwangpc; RV32I-MEDIUM-NEXT:    #APP
412dc60003eSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
413dc60003eSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
414dc60003eSwangpc; RV32I-MEDIUM-NEXT:    ret
415dc60003eSwangpc;
416dc60003eSwangpc; RV64I-MEDIUM-LABEL: constraint_m_with_extern_weak_global_3:
417dc60003eSwangpc; RV64I-MEDIUM:       # %bb.0:
418dc60003eSwangpc; RV64I-MEDIUM-NEXT:  .Lpcrel_hi5:
419dc60003eSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
420dc60003eSwangpc; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi5)(a0)
421dc60003eSwangpc; RV64I-MEDIUM-NEXT:    lui a1, 2
422dc60003eSwangpc; RV64I-MEDIUM-NEXT:    addiw a1, a1, -192
423dc60003eSwangpc; RV64I-MEDIUM-NEXT:    add a0, a0, a1
424dc60003eSwangpc; RV64I-MEDIUM-NEXT:    #APP
425dc60003eSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
426dc60003eSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
427dc60003eSwangpc; RV64I-MEDIUM-NEXT:    ret
428*fef84c56SJim Lin;
429*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_m_with_extern_weak_global_3:
430*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
431*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi5:
432*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI8_0)
433*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi5)(a0)
434*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lui a1, 2
435*fef84c56SJim Lin; RV64I-LARGE-NEXT:    addiw a1, a1, -192
436*fef84c56SJim Lin; RV64I-LARGE-NEXT:    add a0, a0, a1
437*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
438*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
439*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
440*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
44161d819ddSwangpc  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @ewg, i32 0, i32 2000))
442dc60003eSwangpc  ret void
443dc60003eSwangpc}
444dc60003eSwangpc
4453017545eSWang Pengchengdefine void @constraint_m_with_local_1() nounwind {
4462f91e981SAnton Sidorenko; RV32I-LABEL: constraint_m_with_local_1:
4472f91e981SAnton Sidorenko; RV32I:       # %bb.0: # %entry
4482f91e981SAnton Sidorenko; RV32I-NEXT:  .Ltmp0: # Block address taken
4492f91e981SAnton Sidorenko; RV32I-NEXT:  # %bb.1: # %label
4502f91e981SAnton Sidorenko; RV32I-NEXT:    lui a0, %hi(.Ltmp0)
4512f91e981SAnton Sidorenko; RV32I-NEXT:    #APP
4522f91e981SAnton Sidorenko; RV32I-NEXT:    lw zero, %lo(.Ltmp0)(a0)
4532f91e981SAnton Sidorenko; RV32I-NEXT:    #NO_APP
4542f91e981SAnton Sidorenko; RV32I-NEXT:    ret
4553017545eSWang Pengcheng;
4562f91e981SAnton Sidorenko; RV64I-LABEL: constraint_m_with_local_1:
4572f91e981SAnton Sidorenko; RV64I:       # %bb.0: # %entry
4582f91e981SAnton Sidorenko; RV64I-NEXT:  .Ltmp0: # Block address taken
4592f91e981SAnton Sidorenko; RV64I-NEXT:  # %bb.1: # %label
4602f91e981SAnton Sidorenko; RV64I-NEXT:    lui a0, %hi(.Ltmp0)
4612f91e981SAnton Sidorenko; RV64I-NEXT:    #APP
4622f91e981SAnton Sidorenko; RV64I-NEXT:    lw zero, %lo(.Ltmp0)(a0)
4632f91e981SAnton Sidorenko; RV64I-NEXT:    #NO_APP
4642f91e981SAnton Sidorenko; RV64I-NEXT:    ret
4653017545eSWang Pengcheng;
4662f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_m_with_local_1:
4672f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0: # %entry
4682f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Ltmp0: # Block address taken
4692f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
4702f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi6:
4712f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp0)
4722f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
4732f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi6)(a0)
4742f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
4752f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
4763017545eSWang Pengcheng;
4772f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_m_with_local_1:
4782f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0: # %entry
4792f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Ltmp0: # Block address taken
4802f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
4812f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi6:
4822f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp0)
4832f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
4842f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi6)(a0)
4852f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
4862f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
487*fef84c56SJim Lin;
488*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_m_with_local_1:
489*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0: # %entry
490*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Ltmp0: # Block address taken
491*fef84c56SJim Lin; RV64I-LARGE-NEXT:  # %bb.1: # %label
492*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi6:
493*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.Ltmp0)
494*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
495*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi6)(a0)
496*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
497*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
4983017545eSWang Pengchengentry:
4993017545eSWang Pengcheng  br label %label
5003017545eSWang Pengcheng
5013017545eSWang Pengchenglabel:
5023017545eSWang Pengcheng  tail call void asm sideeffect "lw zero, $0", "*m"(ptr elementtype(ptr) blockaddress(@constraint_m_with_local_1, %label))
5033017545eSWang Pengcheng  ret void
5043017545eSWang Pengcheng}
5053017545eSWang Pengcheng
5063017545eSWang Pengchengdefine void @constraint_m_with_local_2() nounwind {
5072f91e981SAnton Sidorenko; RV32I-LABEL: constraint_m_with_local_2:
5082f91e981SAnton Sidorenko; RV32I:       # %bb.0: # %entry
5092f91e981SAnton Sidorenko; RV32I-NEXT:  .Ltmp1: # Block address taken
5102f91e981SAnton Sidorenko; RV32I-NEXT:  # %bb.1: # %label
5112f91e981SAnton Sidorenko; RV32I-NEXT:    lui a0, %hi(.Ltmp1+4)
5122f91e981SAnton Sidorenko; RV32I-NEXT:    #APP
5132f91e981SAnton Sidorenko; RV32I-NEXT:    lw zero, %lo(.Ltmp1+4)(a0)
5142f91e981SAnton Sidorenko; RV32I-NEXT:    #NO_APP
5152f91e981SAnton Sidorenko; RV32I-NEXT:    ret
5163017545eSWang Pengcheng;
5172f91e981SAnton Sidorenko; RV64I-LABEL: constraint_m_with_local_2:
5182f91e981SAnton Sidorenko; RV64I:       # %bb.0: # %entry
5192f91e981SAnton Sidorenko; RV64I-NEXT:  .Ltmp1: # Block address taken
5202f91e981SAnton Sidorenko; RV64I-NEXT:  # %bb.1: # %label
5212f91e981SAnton Sidorenko; RV64I-NEXT:    lui a0, %hi(.Ltmp1+4)
5222f91e981SAnton Sidorenko; RV64I-NEXT:    #APP
5232f91e981SAnton Sidorenko; RV64I-NEXT:    lw zero, %lo(.Ltmp1+4)(a0)
5242f91e981SAnton Sidorenko; RV64I-NEXT:    #NO_APP
5252f91e981SAnton Sidorenko; RV64I-NEXT:    ret
5263017545eSWang Pengcheng;
5272f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_m_with_local_2:
5282f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0: # %entry
5292f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Ltmp1: # Block address taken
5302f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
5312f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi7:
5322f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp1+4)
5332f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
5342f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi7)(a0)
5352f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
5362f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
5373017545eSWang Pengcheng;
5382f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_m_with_local_2:
5392f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0: # %entry
5402f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Ltmp1: # Block address taken
5412f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
5422f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi7:
5432f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp1+4)
5442f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
5452f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi7)(a0)
5462f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
5472f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
548*fef84c56SJim Lin;
549*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_m_with_local_2:
550*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0: # %entry
551*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Ltmp1: # Block address taken
552*fef84c56SJim Lin; RV64I-LARGE-NEXT:  # %bb.1: # %label
553*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi7:
554*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.Ltmp1+4)
555*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
556*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi7)(a0)
557*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
558*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
5593017545eSWang Pengchengentry:
5603017545eSWang Pengcheng  br label %label
5613017545eSWang Pengcheng
5623017545eSWang Pengchenglabel:
56361d819ddSwangpc  call void asm "lw zero, $0", "*m"(ptr elementtype(i32) getelementptr (i8, ptr blockaddress(@constraint_m_with_local_2, %label), i32 4))
5643017545eSWang Pengcheng  ret void
5653017545eSWang Pengcheng}
5663017545eSWang Pengcheng
5673017545eSWang Pengchengdefine void @constraint_m_with_local_3() nounwind {
5682f91e981SAnton Sidorenko; RV32I-LABEL: constraint_m_with_local_3:
5692f91e981SAnton Sidorenko; RV32I:       # %bb.0: # %entry
5702f91e981SAnton Sidorenko; RV32I-NEXT:  .Ltmp2: # Block address taken
5712f91e981SAnton Sidorenko; RV32I-NEXT:  # %bb.1: # %label
5722f91e981SAnton Sidorenko; RV32I-NEXT:    lui a0, %hi(.Ltmp2+2000)
5732f91e981SAnton Sidorenko; RV32I-NEXT:    #APP
5742f91e981SAnton Sidorenko; RV32I-NEXT:    lw zero, %lo(.Ltmp2+2000)(a0)
5752f91e981SAnton Sidorenko; RV32I-NEXT:    #NO_APP
5762f91e981SAnton Sidorenko; RV32I-NEXT:    ret
5773017545eSWang Pengcheng;
5782f91e981SAnton Sidorenko; RV64I-LABEL: constraint_m_with_local_3:
5792f91e981SAnton Sidorenko; RV64I:       # %bb.0: # %entry
5802f91e981SAnton Sidorenko; RV64I-NEXT:  .Ltmp2: # Block address taken
5812f91e981SAnton Sidorenko; RV64I-NEXT:  # %bb.1: # %label
5822f91e981SAnton Sidorenko; RV64I-NEXT:    lui a0, %hi(.Ltmp2+2000)
5832f91e981SAnton Sidorenko; RV64I-NEXT:    #APP
5842f91e981SAnton Sidorenko; RV64I-NEXT:    lw zero, %lo(.Ltmp2+2000)(a0)
5852f91e981SAnton Sidorenko; RV64I-NEXT:    #NO_APP
5862f91e981SAnton Sidorenko; RV64I-NEXT:    ret
5873017545eSWang Pengcheng;
5882f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_m_with_local_3:
5892f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0: # %entry
5902f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Ltmp2: # Block address taken
5912f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
5922f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi8:
5932f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp2+2000)
5942f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
5952f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi8)(a0)
5962f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
5972f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
5983017545eSWang Pengcheng;
5992f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_m_with_local_3:
6002f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0: # %entry
6012f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Ltmp2: # Block address taken
6022f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
6032f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi8:
6042f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp2+2000)
6052f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
6062f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi8)(a0)
6072f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
6082f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
609*fef84c56SJim Lin;
610*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_m_with_local_3:
611*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0: # %entry
612*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Ltmp2: # Block address taken
613*fef84c56SJim Lin; RV64I-LARGE-NEXT:  # %bb.1: # %label
614*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi8:
615*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.Ltmp2+2000)
616*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
617*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi8)(a0)
618*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
619*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
6203017545eSWang Pengchengentry:
6213017545eSWang Pengcheng  br label %label
6223017545eSWang Pengcheng
6233017545eSWang Pengchenglabel:
62461d819ddSwangpc  call void asm "lw zero, $0", "*m"(ptr elementtype(i32) getelementptr (i8, ptr blockaddress(@constraint_m_with_local_3, %label), i32 2000))
6253017545eSWang Pengcheng  ret void
6263017545eSWang Pengcheng}
6273017545eSWang Pengcheng
6280d73259cSwangpcdefine void @constraint_m_with_multi_operands() nounwind {
6294bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-LABEL: constraint_m_with_multi_operands:
6304bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED:       # %bb.0:
6314bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    lui a0, %hi(eg)
6324bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #APP
6334bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a0); sw zero, %lo(eg)(a0)
6344bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #NO_APP
6354bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    ret
6360d73259cSwangpc;
6374bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-LABEL: constraint_m_with_multi_operands:
6384bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED:       # %bb.0:
6394bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    lui a0, %hi(eg)
6404bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #APP
6414bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a0); sw zero, %lo(eg)(a0)
6424bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #NO_APP
6434bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    ret
6440d73259cSwangpc;
6454bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-LABEL: constraint_m_with_multi_operands:
6464bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED:       # %bb.0:
6474bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi9:
6484bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a0, %pcrel_hi(eg)
6494bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
6504bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi9)(a0); sw zero, %pcrel_lo(.Lpcrel_hi9)(a0)
6514bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
6524bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    ret
6530d73259cSwangpc;
6544bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-LABEL: constraint_m_with_multi_operands:
6554bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED:       # %bb.0:
6564bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi9:
6574bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a0, %pcrel_hi(eg)
6584bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
6594bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi9)(a0); sw zero, %pcrel_lo(.Lpcrel_hi9)(a0)
6604bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
6614bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    ret
6624bf68aacSAnton Sidorenko;
663*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-LABEL: constraint_m_with_multi_operands:
664*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED:       # %bb.0:
665*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  .Lpcrel_hi9:
666*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    auipc a0, %pcrel_hi(.LCPI12_0)
667*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi9)(a0)
668*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #APP
669*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    sw zero, 0(a0); sw zero, 0(a0)
670*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #NO_APP
671*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ret
672*fef84c56SJim Lin;
6734bf68aacSAnton Sidorenko; RV32I-INTEGRATED-LABEL: constraint_m_with_multi_operands:
6744bf68aacSAnton Sidorenko; RV32I-INTEGRATED:       # %bb.0:
6754bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    lui a0, %hi(eg)
6764bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #APP
6774bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a0)
6784bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a0)
6794bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #NO_APP
6804bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    ret
6814bf68aacSAnton Sidorenko;
6824bf68aacSAnton Sidorenko; RV64I-INTEGRATED-LABEL: constraint_m_with_multi_operands:
6834bf68aacSAnton Sidorenko; RV64I-INTEGRATED:       # %bb.0:
6844bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    lui a0, %hi(eg)
6854bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #APP
6864bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a0)
6874bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a0)
6884bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #NO_APP
6894bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    ret
6904bf68aacSAnton Sidorenko;
6914bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-LABEL: constraint_m_with_multi_operands:
6924bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED:       # %bb.0:
6934bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi9:
6944bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    auipc a0, %pcrel_hi(eg)
6954bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #APP
6962f91e981SAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi9)(a0)
6972f91e981SAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi9)(a0)
6984bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
6994bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    ret
7004bf68aacSAnton Sidorenko;
7014bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-LABEL: constraint_m_with_multi_operands:
7024bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED:       # %bb.0:
7034bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi9:
7044bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    auipc a0, %pcrel_hi(eg)
7054bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #APP
7062f91e981SAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi9)(a0)
7072f91e981SAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi9)(a0)
7084bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
7094bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    ret
710*fef84c56SJim Lin;
711*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-LABEL: constraint_m_with_multi_operands:
712*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED:       # %bb.0:
713*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  .Lpcrel_hi9:
714*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    auipc a0, %pcrel_hi(.LCPI12_0)
715*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi9)(a0)
716*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #APP
717*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a0)
718*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a0)
719*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #NO_APP
720*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ret
7210d73259cSwangpc  call void asm "sw zero, $0; sw zero, $1", "=*m,=*m"(ptr elementtype(i32) @eg, ptr elementtype(i32) @eg)
7220d73259cSwangpc  ret void
7230d73259cSwangpc}
7240d73259cSwangpc
7250d73259cSwangpcdefine void @constraint_m_with_multi_asm() nounwind {
7260d73259cSwangpc; RV32I-LABEL: constraint_m_with_multi_asm:
7270d73259cSwangpc; RV32I:       # %bb.0:
7280d73259cSwangpc; RV32I-NEXT:    lui a0, %hi(eg)
7290d73259cSwangpc; RV32I-NEXT:    #APP
7300d73259cSwangpc; RV32I-NEXT:    sw zero, %lo(eg)(a0)
7310d73259cSwangpc; RV32I-NEXT:    #NO_APP
7320d73259cSwangpc; RV32I-NEXT:    #APP
7330d73259cSwangpc; RV32I-NEXT:    sw zero, %lo(eg)(a0)
7340d73259cSwangpc; RV32I-NEXT:    #NO_APP
7350d73259cSwangpc; RV32I-NEXT:    ret
7360d73259cSwangpc;
7370d73259cSwangpc; RV64I-LABEL: constraint_m_with_multi_asm:
7380d73259cSwangpc; RV64I:       # %bb.0:
7390d73259cSwangpc; RV64I-NEXT:    lui a0, %hi(eg)
7400d73259cSwangpc; RV64I-NEXT:    #APP
7410d73259cSwangpc; RV64I-NEXT:    sw zero, %lo(eg)(a0)
7420d73259cSwangpc; RV64I-NEXT:    #NO_APP
7430d73259cSwangpc; RV64I-NEXT:    #APP
7440d73259cSwangpc; RV64I-NEXT:    sw zero, %lo(eg)(a0)
7450d73259cSwangpc; RV64I-NEXT:    #NO_APP
7460d73259cSwangpc; RV64I-NEXT:    ret
7470d73259cSwangpc;
7482f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_m_with_multi_asm:
7492f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0:
7502f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi10:
7512f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
7522f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
7532f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi10)(a0)
7542f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
7552f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
7562f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi10)(a0)
7572f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
7582f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
7590d73259cSwangpc;
7602f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_m_with_multi_asm:
7612f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0:
7622f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi10:
7632f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
7642f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
7652f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi10)(a0)
7662f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
7672f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
7682f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi10)(a0)
7692f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
7702f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
771*fef84c56SJim Lin;
772*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_m_with_multi_asm:
773*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
774*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi10:
775*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI13_0)
776*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi10)(a0)
777*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
778*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
779*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
780*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
781*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
782*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
783*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
7840d73259cSwangpc  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) @eg)
7850d73259cSwangpc  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) @eg)
7860d73259cSwangpc  ret void
7870d73259cSwangpc}
7880d73259cSwangpc
7890d73259cSwangpcdefine i32 @constraint_m_with_callbr_multi_operands(i32 %a) {
7904bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-LABEL: constraint_m_with_callbr_multi_operands:
7914bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED:       # %bb.0: # %entry
7924bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    lui a1, %hi(eg)
7934bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #APP
7944bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1); sw zero, %lo(eg)(a1); beqz a0, .LBB14_2
7954bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #NO_APP
7964bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
7974bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    li a0, 0
7984bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    ret
7994bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  .LBB14_2: # Block address taken
8004bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    # %fail
8014bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    # Label of block must be emitted
8024bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    li a0, 1
8034bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    ret
8040d73259cSwangpc;
8054bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-LABEL: constraint_m_with_callbr_multi_operands:
8064bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED:       # %bb.0: # %entry
8074bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    lui a1, %hi(eg)
8084bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #APP
8094bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1); sw zero, %lo(eg)(a1); beqz a0, .LBB14_2
8104bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #NO_APP
8114bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
8124bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    li a0, 0
8134bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    ret
8144bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  .LBB14_2: # Block address taken
8154bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    # %fail
8164bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    # Label of block must be emitted
8174bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    li a0, 1
8184bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    ret
8190d73259cSwangpc;
8204bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-LABEL: constraint_m_with_callbr_multi_operands:
8214bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED:       # %bb.0: # %entry
8224bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi11:
8234bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
8244bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
8254bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi11)(a1); sw zero, %pcrel_lo(.Lpcrel_hi11)(a1); beqz a0, .LBB14_2
8264bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
8274bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
8284bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 0
8294bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    ret
8304bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  .LBB14_2: # Block address taken
8314bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    # %fail
8324bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    # Label of block must be emitted
8334bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 1
8344bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    ret
8350d73259cSwangpc;
8364bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-LABEL: constraint_m_with_callbr_multi_operands:
8374bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED:       # %bb.0: # %entry
8384bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi11:
8394bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
8404bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
8414bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi11)(a1); sw zero, %pcrel_lo(.Lpcrel_hi11)(a1); beqz a0, .LBB14_2
8424bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
8434bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
8444bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 0
8454bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    ret
8464bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  .LBB14_2: # Block address taken
8474bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    # %fail
8484bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    # Label of block must be emitted
8494bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 1
8504bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    ret
8514bf68aacSAnton Sidorenko;
852*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-LABEL: constraint_m_with_callbr_multi_operands:
853*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED:       # %bb.0: # %entry
854*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  .Lpcrel_hi11:
855*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(.LCPI14_0)
856*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ld a1, %pcrel_lo(.Lpcrel_hi11)(a1)
857*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #APP
858*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    sw zero, 0(a1); sw zero, 0(a1); beqz a0, .LBB14_2
859*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #NO_APP
860*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
861*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    li a0, 0
862*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ret
863*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  .LBB14_2: # Block address taken
864*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    # %fail
865*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    # Label of block must be emitted
866*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    li a0, 1
867*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ret
868*fef84c56SJim Lin;
8694bf68aacSAnton Sidorenko; RV32I-INTEGRATED-LABEL: constraint_m_with_callbr_multi_operands:
8704bf68aacSAnton Sidorenko; RV32I-INTEGRATED:       # %bb.0: # %entry
8714bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    lui a1, %hi(eg)
8724bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #APP
8734bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
8744bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
8754bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    beqz a0, .LBB14_2
8764bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #NO_APP
8774bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  # %bb.1: # %normal
8784bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    li a0, 0
8794bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    ret
8804bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  .LBB14_2: # Block address taken
8814bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    # %fail
8824bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    # Label of block must be emitted
8834bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    li a0, 1
8844bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    ret
8854bf68aacSAnton Sidorenko;
8864bf68aacSAnton Sidorenko; RV64I-INTEGRATED-LABEL: constraint_m_with_callbr_multi_operands:
8874bf68aacSAnton Sidorenko; RV64I-INTEGRATED:       # %bb.0: # %entry
8884bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    lui a1, %hi(eg)
8894bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #APP
8904bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
8914bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
8924bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    beqz a0, .LBB14_2
8934bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #NO_APP
8944bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  # %bb.1: # %normal
8954bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    li a0, 0
8964bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    ret
8974bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  .LBB14_2: # Block address taken
8984bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    # %fail
8994bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    # Label of block must be emitted
9004bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    li a0, 1
9014bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    ret
9024bf68aacSAnton Sidorenko;
9034bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-LABEL: constraint_m_with_callbr_multi_operands:
9044bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED:       # %bb.0: # %entry
9054bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi11:
9064bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
9074bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #APP
9082f91e981SAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi11)(a1)
9092f91e981SAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi11)(a1)
9104bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB14_2
9114bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
9124bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  # %bb.1: # %normal
9134bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    li a0, 0
9144bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    ret
9154bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  .LBB14_2: # Block address taken
9164bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    # %fail
9174bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    # Label of block must be emitted
9184bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    li a0, 1
9194bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    ret
9204bf68aacSAnton Sidorenko;
9214bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-LABEL: constraint_m_with_callbr_multi_operands:
9224bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED:       # %bb.0: # %entry
9234bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi11:
9244bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
9254bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #APP
9262f91e981SAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi11)(a1)
9272f91e981SAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi11)(a1)
9284bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB14_2
9294bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
9304bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  # %bb.1: # %normal
9314bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    li a0, 0
9324bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    ret
9334bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  .LBB14_2: # Block address taken
9344bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    # %fail
9354bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    # Label of block must be emitted
9364bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    li a0, 1
9374bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    ret
938*fef84c56SJim Lin;
939*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-LABEL: constraint_m_with_callbr_multi_operands:
940*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED:       # %bb.0: # %entry
941*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  .Lpcrel_hi11:
942*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(.LCPI14_0)
943*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ld a1, %pcrel_lo(.Lpcrel_hi11)(a1)
944*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #APP
945*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a1)
946*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a1)
947*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    beqz a0, .LBB14_2
948*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #NO_APP
949*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  # %bb.1: # %normal
950*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    li a0, 0
951*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ret
952*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  .LBB14_2: # Block address taken
953*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    # %fail
954*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    # Label of block must be emitted
955*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    li a0, 1
956*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ret
9570d73259cSwangpcentry:
9580d73259cSwangpc  callbr void asm "sw zero, $0; sw zero, $1; beqz $2, $3", "=*m,=*m,r,!i"(ptr elementtype(i32) @eg, ptr elementtype(i32) @eg, i32 %a) to label %normal [label %fail]
9590d73259cSwangpc
9600d73259cSwangpcnormal:
9610d73259cSwangpc  ret i32 0
9620d73259cSwangpc
9630d73259cSwangpcfail:
9640d73259cSwangpc  ret i32 1
9650d73259cSwangpc}
9660d73259cSwangpc
9670d73259cSwangpcdefine i32 @constraint_m_with_multi_callbr_asm(i32 %a) {
9684bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-LABEL: constraint_m_with_multi_callbr_asm:
9694bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED:       # %bb.0: # %entry
9704bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    lui a1, %hi(eg)
9714bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #APP
9724bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB15_3
9734bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #NO_APP
9744bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
9754bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #APP
9764bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB15_3
9774bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #NO_APP
9784bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
9794bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    li a0, 0
9804bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    ret
9814bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  .LBB15_3: # Block address taken
9824bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    # %fail
9834bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    # Label of block must be emitted
9844bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    li a0, 1
9854bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    ret
9860d73259cSwangpc;
9874bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-LABEL: constraint_m_with_multi_callbr_asm:
9884bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED:       # %bb.0: # %entry
9894bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    lui a1, %hi(eg)
9904bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #APP
9914bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB15_3
9924bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #NO_APP
9934bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
9944bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #APP
9954bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB15_3
9964bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #NO_APP
9974bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
9984bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    li a0, 0
9994bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    ret
10004bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  .LBB15_3: # Block address taken
10014bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    # %fail
10024bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    # Label of block must be emitted
10034bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    li a0, 1
10044bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    ret
10050d73259cSwangpc;
10064bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-LABEL: constraint_m_with_multi_callbr_asm:
10074bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED:       # %bb.0: # %entry
10084bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi12:
10094bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
10104bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
10114bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi12)(a1); beqz a0, .LBB15_3
10124bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
10134bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
10144bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
10154bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi12)(a1); beqz a0, .LBB15_3
10164bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
10174bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
10184bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 0
10194bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    ret
10204bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  .LBB15_3: # Block address taken
10214bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    # %fail
10224bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    # Label of block must be emitted
10234bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 1
10244bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    ret
10250d73259cSwangpc;
10264bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-LABEL: constraint_m_with_multi_callbr_asm:
10274bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED:       # %bb.0: # %entry
10284bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi12:
10294bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
10304bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
10314bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi12)(a1); beqz a0, .LBB15_3
10324bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
10334bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
10344bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
10354bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi12)(a1); beqz a0, .LBB15_3
10364bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
10374bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
10384bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 0
10394bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    ret
10404bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  .LBB15_3: # Block address taken
10414bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    # %fail
10424bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    # Label of block must be emitted
10434bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 1
10444bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    ret
10454bf68aacSAnton Sidorenko;
1046*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-LABEL: constraint_m_with_multi_callbr_asm:
1047*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED:       # %bb.0: # %entry
1048*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  .Lpcrel_hi12:
1049*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(.LCPI15_0)
1050*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ld a1, %pcrel_lo(.Lpcrel_hi12)(a1)
1051*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #APP
1052*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB15_3
1053*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #NO_APP
1054*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
1055*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #APP
1056*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB15_3
1057*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #NO_APP
1058*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
1059*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    li a0, 0
1060*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ret
1061*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  .LBB15_3: # Block address taken
1062*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    # %fail
1063*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    # Label of block must be emitted
1064*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    li a0, 1
1065*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ret
1066*fef84c56SJim Lin;
10674bf68aacSAnton Sidorenko; RV32I-INTEGRATED-LABEL: constraint_m_with_multi_callbr_asm:
10684bf68aacSAnton Sidorenko; RV32I-INTEGRATED:       # %bb.0: # %entry
10694bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    lui a1, %hi(eg)
10704bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #APP
10714bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
10724bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    beqz a0, .LBB15_3
10734bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #NO_APP
10744bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  # %bb.1: # %normal0
10754bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #APP
10764bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
10774bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    beqz a0, .LBB15_3
10784bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #NO_APP
10794bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  # %bb.2: # %normal1
10804bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    li a0, 0
10814bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    ret
10824bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  .LBB15_3: # Block address taken
10834bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    # %fail
10844bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    # Label of block must be emitted
10854bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    li a0, 1
10864bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    ret
10874bf68aacSAnton Sidorenko;
10884bf68aacSAnton Sidorenko; RV64I-INTEGRATED-LABEL: constraint_m_with_multi_callbr_asm:
10894bf68aacSAnton Sidorenko; RV64I-INTEGRATED:       # %bb.0: # %entry
10904bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    lui a1, %hi(eg)
10914bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #APP
10924bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
10934bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    beqz a0, .LBB15_3
10944bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #NO_APP
10954bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  # %bb.1: # %normal0
10964bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #APP
10974bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
10984bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    beqz a0, .LBB15_3
10994bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #NO_APP
11004bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  # %bb.2: # %normal1
11014bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    li a0, 0
11024bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    ret
11034bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  .LBB15_3: # Block address taken
11044bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    # %fail
11054bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    # Label of block must be emitted
11064bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    li a0, 1
11074bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    ret
11084bf68aacSAnton Sidorenko;
11094bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-LABEL: constraint_m_with_multi_callbr_asm:
11104bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED:       # %bb.0: # %entry
11114bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi12:
11124bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
11134bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #APP
11142f91e981SAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi12)(a1)
11154bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB15_3
11164bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
11174bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  # %bb.1: # %normal0
11184bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #APP
11192f91e981SAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi12)(a1)
11204bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB15_3
11214bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
11224bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  # %bb.2: # %normal1
11234bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    li a0, 0
11244bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    ret
11254bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  .LBB15_3: # Block address taken
11264bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    # %fail
11274bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    # Label of block must be emitted
11284bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    li a0, 1
11294bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    ret
11304bf68aacSAnton Sidorenko;
11314bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-LABEL: constraint_m_with_multi_callbr_asm:
11324bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED:       # %bb.0: # %entry
11334bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi12:
11344bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
11354bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #APP
11362f91e981SAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi12)(a1)
11374bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB15_3
11384bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
11394bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  # %bb.1: # %normal0
11404bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #APP
11412f91e981SAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi12)(a1)
11424bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB15_3
11434bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
11444bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  # %bb.2: # %normal1
11454bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    li a0, 0
11464bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    ret
11474bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  .LBB15_3: # Block address taken
11484bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    # %fail
11494bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    # Label of block must be emitted
11504bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    li a0, 1
11514bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    ret
1152*fef84c56SJim Lin;
1153*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-LABEL: constraint_m_with_multi_callbr_asm:
1154*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED:       # %bb.0: # %entry
1155*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  .Lpcrel_hi12:
1156*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(.LCPI15_0)
1157*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ld a1, %pcrel_lo(.Lpcrel_hi12)(a1)
1158*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #APP
1159*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a1)
1160*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    beqz a0, .LBB15_3
1161*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #NO_APP
1162*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  # %bb.1: # %normal0
1163*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #APP
1164*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a1)
1165*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    beqz a0, .LBB15_3
1166*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #NO_APP
1167*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  # %bb.2: # %normal1
1168*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    li a0, 0
1169*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ret
1170*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  .LBB15_3: # Block address taken
1171*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    # %fail
1172*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    # Label of block must be emitted
1173*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    li a0, 1
1174*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ret
11750d73259cSwangpcentry:
11760d73259cSwangpc  callbr void asm "sw zero, $0; beqz $1, $2", "=*m,r,!i"(ptr elementtype(i32) @eg, i32 %a) to label %normal0 [label %fail]
11770d73259cSwangpc
11780d73259cSwangpcnormal0:
11790d73259cSwangpc  callbr void asm "sw zero, $0; beqz $1, $2", "=*m,r,!i"(ptr elementtype(i32) @eg, i32 %a) to label %normal1 [label %fail]
11800d73259cSwangpc
11810d73259cSwangpcnormal1:
11820d73259cSwangpc  ret i32 0
11830d73259cSwangpc
11840d73259cSwangpcfail:
11850d73259cSwangpc  ret i32 1
11860d73259cSwangpc}
11870d73259cSwangpc
1188a3b11ce7Swangpcdefine void @constraint_o_1(ptr %a) nounwind {
1189a3b11ce7Swangpc; RV32I-LABEL: constraint_o_1:
1190a3b11ce7Swangpc; RV32I:       # %bb.0:
1191a3b11ce7Swangpc; RV32I-NEXT:    #APP
1192a3b11ce7Swangpc; RV32I-NEXT:    #NO_APP
1193a3b11ce7Swangpc; RV32I-NEXT:    ret
1194a3b11ce7Swangpc;
1195a3b11ce7Swangpc; RV64I-LABEL: constraint_o_1:
1196a3b11ce7Swangpc; RV64I:       # %bb.0:
1197a3b11ce7Swangpc; RV64I-NEXT:    #APP
1198a3b11ce7Swangpc; RV64I-NEXT:    #NO_APP
1199a3b11ce7Swangpc; RV64I-NEXT:    ret
1200a3b11ce7Swangpc;
1201a3b11ce7Swangpc; RV32I-MEDIUM-LABEL: constraint_o_1:
1202a3b11ce7Swangpc; RV32I-MEDIUM:       # %bb.0:
1203a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #APP
1204a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #NO_APP
1205a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    ret
1206a3b11ce7Swangpc;
1207a3b11ce7Swangpc; RV64I-MEDIUM-LABEL: constraint_o_1:
1208a3b11ce7Swangpc; RV64I-MEDIUM:       # %bb.0:
1209a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #APP
1210a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #NO_APP
1211a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    ret
1212*fef84c56SJim Lin;
1213*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_o_1:
1214*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
1215*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
1216*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
1217*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
1218a3b11ce7Swangpc  call void asm sideeffect "", "=*o"(ptr elementtype(i32) %a)
1219a3b11ce7Swangpc  ret void
1220a3b11ce7Swangpc}
1221a3b11ce7Swangpc
1222a3b11ce7Swangpcdefine i32 @constraint_o_2(ptr %a) nounwind {
1223a3b11ce7Swangpc; RV32I-LABEL: constraint_o_2:
1224a3b11ce7Swangpc; RV32I:       # %bb.0:
1225a3b11ce7Swangpc; RV32I-NEXT:    #APP
1226a3b11ce7Swangpc; RV32I-NEXT:    lw a0, 0(a0)
1227a3b11ce7Swangpc; RV32I-NEXT:    #NO_APP
1228a3b11ce7Swangpc; RV32I-NEXT:    ret
1229a3b11ce7Swangpc;
1230a3b11ce7Swangpc; RV64I-LABEL: constraint_o_2:
1231a3b11ce7Swangpc; RV64I:       # %bb.0:
1232a3b11ce7Swangpc; RV64I-NEXT:    #APP
1233a3b11ce7Swangpc; RV64I-NEXT:    lw a0, 0(a0)
1234a3b11ce7Swangpc; RV64I-NEXT:    #NO_APP
1235a3b11ce7Swangpc; RV64I-NEXT:    ret
1236a3b11ce7Swangpc;
1237a3b11ce7Swangpc; RV32I-MEDIUM-LABEL: constraint_o_2:
1238a3b11ce7Swangpc; RV32I-MEDIUM:       # %bb.0:
1239a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #APP
1240a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    lw a0, 0(a0)
1241a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #NO_APP
1242a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    ret
1243a3b11ce7Swangpc;
1244a3b11ce7Swangpc; RV64I-MEDIUM-LABEL: constraint_o_2:
1245a3b11ce7Swangpc; RV64I-MEDIUM:       # %bb.0:
1246a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #APP
1247a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    lw a0, 0(a0)
1248a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #NO_APP
1249a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    ret
1250*fef84c56SJim Lin;
1251*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_o_2:
1252*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
1253*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
1254*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw a0, 0(a0)
1255*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
1256*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
1257a3b11ce7Swangpc  %1 = tail call i32 asm "lw $0, $1", "=r,*o"(ptr elementtype(i32) %a)
1258a3b11ce7Swangpc  ret i32 %1
1259a3b11ce7Swangpc}
1260a3b11ce7Swangpc
1261a3b11ce7Swangpcdefine i32 @constraint_o_with_offset(ptr %a) nounwind {
1262a3b11ce7Swangpc; RV32I-LABEL: constraint_o_with_offset:
1263a3b11ce7Swangpc; RV32I:       # %bb.0:
1264a3b11ce7Swangpc; RV32I-NEXT:    #APP
1265a3b11ce7Swangpc; RV32I-NEXT:    lw a0, 4(a0)
1266a3b11ce7Swangpc; RV32I-NEXT:    #NO_APP
1267a3b11ce7Swangpc; RV32I-NEXT:    ret
1268a3b11ce7Swangpc;
1269a3b11ce7Swangpc; RV64I-LABEL: constraint_o_with_offset:
1270a3b11ce7Swangpc; RV64I:       # %bb.0:
1271a3b11ce7Swangpc; RV64I-NEXT:    #APP
1272a3b11ce7Swangpc; RV64I-NEXT:    lw a0, 4(a0)
1273a3b11ce7Swangpc; RV64I-NEXT:    #NO_APP
1274a3b11ce7Swangpc; RV64I-NEXT:    ret
1275a3b11ce7Swangpc;
1276a3b11ce7Swangpc; RV32I-MEDIUM-LABEL: constraint_o_with_offset:
1277a3b11ce7Swangpc; RV32I-MEDIUM:       # %bb.0:
1278a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #APP
1279a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    lw a0, 4(a0)
1280a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #NO_APP
1281a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    ret
1282a3b11ce7Swangpc;
1283a3b11ce7Swangpc; RV64I-MEDIUM-LABEL: constraint_o_with_offset:
1284a3b11ce7Swangpc; RV64I-MEDIUM:       # %bb.0:
1285a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #APP
1286a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    lw a0, 4(a0)
1287a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #NO_APP
1288a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    ret
1289*fef84c56SJim Lin;
1290*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_o_with_offset:
1291*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
1292*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
1293*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw a0, 4(a0)
1294*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
1295*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
1296a3b11ce7Swangpc  %1 = getelementptr i32, ptr %a, i32 1
1297a3b11ce7Swangpc  %2 = tail call i32 asm "lw $0, $1", "=r,*o"(ptr elementtype(i32) %1)
1298a3b11ce7Swangpc  ret i32 %2
1299a3b11ce7Swangpc}
1300a3b11ce7Swangpc
1301dc60003eSwangpcdefine void @constraint_o_with_global_1() nounwind {
1302dc60003eSwangpc; RV32I-LABEL: constraint_o_with_global_1:
1303dc60003eSwangpc; RV32I:       # %bb.0:
1304dc60003eSwangpc; RV32I-NEXT:    lui a0, %hi(eg)
1305dc60003eSwangpc; RV32I-NEXT:    #APP
1306dc60003eSwangpc; RV32I-NEXT:    sw zero, %lo(eg)(a0)
1307dc60003eSwangpc; RV32I-NEXT:    #NO_APP
1308dc60003eSwangpc; RV32I-NEXT:    ret
1309dc60003eSwangpc;
1310dc60003eSwangpc; RV64I-LABEL: constraint_o_with_global_1:
1311dc60003eSwangpc; RV64I:       # %bb.0:
1312dc60003eSwangpc; RV64I-NEXT:    lui a0, %hi(eg)
1313dc60003eSwangpc; RV64I-NEXT:    #APP
1314dc60003eSwangpc; RV64I-NEXT:    sw zero, %lo(eg)(a0)
1315dc60003eSwangpc; RV64I-NEXT:    #NO_APP
1316dc60003eSwangpc; RV64I-NEXT:    ret
1317dc60003eSwangpc;
13182f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_o_with_global_1:
13192f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0:
13202f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi13:
13212f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
13222f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
13232f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi13)(a0)
13242f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
13252f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
1326dc60003eSwangpc;
13272f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_o_with_global_1:
13282f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0:
13292f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi13:
13302f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
13312f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
13322f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi13)(a0)
13332f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
13342f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
1335*fef84c56SJim Lin;
1336*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_o_with_global_1:
1337*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
1338*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi13:
1339*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI19_0)
1340*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi13)(a0)
1341*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
1342*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
1343*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
1344*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
1345dc60003eSwangpc  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) @eg)
1346dc60003eSwangpc  ret void
1347dc60003eSwangpc}
1348dc60003eSwangpc
1349dc60003eSwangpcdefine void @constraint_o_with_global_2() nounwind {
1350dc60003eSwangpc; RV32I-LABEL: constraint_o_with_global_2:
1351dc60003eSwangpc; RV32I:       # %bb.0:
13525cd8d53cSWang Pengcheng; RV32I-NEXT:    lui a0, %hi(eg+4)
1353dc60003eSwangpc; RV32I-NEXT:    #APP
13545cd8d53cSWang Pengcheng; RV32I-NEXT:    sw zero, %lo(eg+4)(a0)
1355dc60003eSwangpc; RV32I-NEXT:    #NO_APP
1356dc60003eSwangpc; RV32I-NEXT:    ret
1357dc60003eSwangpc;
1358dc60003eSwangpc; RV64I-LABEL: constraint_o_with_global_2:
1359dc60003eSwangpc; RV64I:       # %bb.0:
13605cd8d53cSWang Pengcheng; RV64I-NEXT:    lui a0, %hi(eg+4)
1361dc60003eSwangpc; RV64I-NEXT:    #APP
13625cd8d53cSWang Pengcheng; RV64I-NEXT:    sw zero, %lo(eg+4)(a0)
1363dc60003eSwangpc; RV64I-NEXT:    #NO_APP
1364dc60003eSwangpc; RV64I-NEXT:    ret
1365dc60003eSwangpc;
13662f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_o_with_global_2:
13672f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0:
13682f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi14:
13692f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+4)
13702f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
13712f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi14)(a0)
13722f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
13732f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
1374dc60003eSwangpc;
13752f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_o_with_global_2:
13762f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0:
13772f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi14:
13782f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+4)
13792f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
13802f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi14)(a0)
13812f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
13822f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
1383*fef84c56SJim Lin;
1384*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_o_with_global_2:
1385*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
1386*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi14:
1387*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI20_0)
1388*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi14)(a0)
1389*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
1390*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 4(a0)
1391*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
1392*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
139361d819ddSwangpc  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @eg, i32 0, i32 1))
1394dc60003eSwangpc  ret void
1395dc60003eSwangpc}
1396dc60003eSwangpc
1397dc60003eSwangpcdefine void @constraint_o_with_global_3() nounwind {
1398dc60003eSwangpc; RV32I-LABEL: constraint_o_with_global_3:
1399dc60003eSwangpc; RV32I:       # %bb.0:
1400dc60003eSwangpc; RV32I-NEXT:    lui a0, %hi(eg+8000)
1401dc60003eSwangpc; RV32I-NEXT:    #APP
14025cd8d53cSWang Pengcheng; RV32I-NEXT:    sw zero, %lo(eg+8000)(a0)
1403dc60003eSwangpc; RV32I-NEXT:    #NO_APP
1404dc60003eSwangpc; RV32I-NEXT:    ret
1405dc60003eSwangpc;
1406dc60003eSwangpc; RV64I-LABEL: constraint_o_with_global_3:
1407dc60003eSwangpc; RV64I:       # %bb.0:
1408dc60003eSwangpc; RV64I-NEXT:    lui a0, %hi(eg+8000)
1409dc60003eSwangpc; RV64I-NEXT:    #APP
14105cd8d53cSWang Pengcheng; RV64I-NEXT:    sw zero, %lo(eg+8000)(a0)
1411dc60003eSwangpc; RV64I-NEXT:    #NO_APP
1412dc60003eSwangpc; RV64I-NEXT:    ret
1413dc60003eSwangpc;
14142f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_o_with_global_3:
14152f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0:
14162f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi15:
14172f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+8000)
14182f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
14192f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi15)(a0)
14202f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
14212f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
1422dc60003eSwangpc;
14232f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_o_with_global_3:
14242f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0:
14252f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi15:
14262f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+8000)
14272f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
14282f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi15)(a0)
14292f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
14302f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
1431*fef84c56SJim Lin;
1432*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_o_with_global_3:
1433*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
1434*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi15:
1435*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI21_0)
1436*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi15)(a0)
1437*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lui a1, 2
1438*fef84c56SJim Lin; RV64I-LARGE-NEXT:    addiw a1, a1, -192
1439*fef84c56SJim Lin; RV64I-LARGE-NEXT:    add a0, a0, a1
1440*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
1441*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
1442*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
1443*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
144461d819ddSwangpc  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @eg, i32 0, i32 2000))
1445dc60003eSwangpc  ret void
1446dc60003eSwangpc}
1447dc60003eSwangpc
1448dc60003eSwangpcdefine void @constraint_o_with_extern_weak_global_1() nounwind {
1449dc60003eSwangpc; RV32I-LABEL: constraint_o_with_extern_weak_global_1:
1450dc60003eSwangpc; RV32I:       # %bb.0:
1451dc60003eSwangpc; RV32I-NEXT:    lui a0, %hi(ewg)
1452dc60003eSwangpc; RV32I-NEXT:    #APP
1453dc60003eSwangpc; RV32I-NEXT:    sw zero, %lo(ewg)(a0)
1454dc60003eSwangpc; RV32I-NEXT:    #NO_APP
1455dc60003eSwangpc; RV32I-NEXT:    ret
1456dc60003eSwangpc;
1457dc60003eSwangpc; RV64I-LABEL: constraint_o_with_extern_weak_global_1:
1458dc60003eSwangpc; RV64I:       # %bb.0:
1459dc60003eSwangpc; RV64I-NEXT:    lui a0, %hi(ewg)
1460dc60003eSwangpc; RV64I-NEXT:    #APP
1461dc60003eSwangpc; RV64I-NEXT:    sw zero, %lo(ewg)(a0)
1462dc60003eSwangpc; RV64I-NEXT:    #NO_APP
1463dc60003eSwangpc; RV64I-NEXT:    ret
1464dc60003eSwangpc;
1465dc60003eSwangpc; RV32I-MEDIUM-LABEL: constraint_o_with_extern_weak_global_1:
1466dc60003eSwangpc; RV32I-MEDIUM:       # %bb.0:
14673017545eSWang Pengcheng; RV32I-MEDIUM-NEXT:  .Lpcrel_hi16:
1468dc60003eSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
14693017545eSWang Pengcheng; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi16)(a0)
1470dc60003eSwangpc; RV32I-MEDIUM-NEXT:    #APP
1471dc60003eSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
1472dc60003eSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
1473dc60003eSwangpc; RV32I-MEDIUM-NEXT:    ret
1474dc60003eSwangpc;
1475dc60003eSwangpc; RV64I-MEDIUM-LABEL: constraint_o_with_extern_weak_global_1:
1476dc60003eSwangpc; RV64I-MEDIUM:       # %bb.0:
14773017545eSWang Pengcheng; RV64I-MEDIUM-NEXT:  .Lpcrel_hi16:
1478dc60003eSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
14793017545eSWang Pengcheng; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi16)(a0)
1480dc60003eSwangpc; RV64I-MEDIUM-NEXT:    #APP
1481dc60003eSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
1482dc60003eSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
1483dc60003eSwangpc; RV64I-MEDIUM-NEXT:    ret
1484*fef84c56SJim Lin;
1485*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_o_with_extern_weak_global_1:
1486*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
1487*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi16:
1488*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI22_0)
1489*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi16)(a0)
1490*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
1491*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
1492*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
1493*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
1494dc60003eSwangpc  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) @ewg)
1495dc60003eSwangpc  ret void
1496dc60003eSwangpc}
1497dc60003eSwangpc
1498dc60003eSwangpcdefine void @constraint_o_with_extern_weak_global_2() nounwind {
1499dc60003eSwangpc; RV32I-LABEL: constraint_o_with_extern_weak_global_2:
1500dc60003eSwangpc; RV32I:       # %bb.0:
15015cd8d53cSWang Pengcheng; RV32I-NEXT:    lui a0, %hi(ewg+4)
1502dc60003eSwangpc; RV32I-NEXT:    #APP
15035cd8d53cSWang Pengcheng; RV32I-NEXT:    sw zero, %lo(ewg+4)(a0)
1504dc60003eSwangpc; RV32I-NEXT:    #NO_APP
1505dc60003eSwangpc; RV32I-NEXT:    ret
1506dc60003eSwangpc;
1507dc60003eSwangpc; RV64I-LABEL: constraint_o_with_extern_weak_global_2:
1508dc60003eSwangpc; RV64I:       # %bb.0:
15095cd8d53cSWang Pengcheng; RV64I-NEXT:    lui a0, %hi(ewg+4)
1510dc60003eSwangpc; RV64I-NEXT:    #APP
15115cd8d53cSWang Pengcheng; RV64I-NEXT:    sw zero, %lo(ewg+4)(a0)
1512dc60003eSwangpc; RV64I-NEXT:    #NO_APP
1513dc60003eSwangpc; RV64I-NEXT:    ret
1514dc60003eSwangpc;
1515dc60003eSwangpc; RV32I-MEDIUM-LABEL: constraint_o_with_extern_weak_global_2:
1516dc60003eSwangpc; RV32I-MEDIUM:       # %bb.0:
15173017545eSWang Pengcheng; RV32I-MEDIUM-NEXT:  .Lpcrel_hi17:
1518dc60003eSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
15193017545eSWang Pengcheng; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi17)(a0)
1520dc60003eSwangpc; RV32I-MEDIUM-NEXT:    #APP
1521dc60003eSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 4(a0)
1522dc60003eSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
1523dc60003eSwangpc; RV32I-MEDIUM-NEXT:    ret
1524dc60003eSwangpc;
1525dc60003eSwangpc; RV64I-MEDIUM-LABEL: constraint_o_with_extern_weak_global_2:
1526dc60003eSwangpc; RV64I-MEDIUM:       # %bb.0:
15273017545eSWang Pengcheng; RV64I-MEDIUM-NEXT:  .Lpcrel_hi17:
1528dc60003eSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
15293017545eSWang Pengcheng; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi17)(a0)
1530dc60003eSwangpc; RV64I-MEDIUM-NEXT:    #APP
1531dc60003eSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 4(a0)
1532dc60003eSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
1533dc60003eSwangpc; RV64I-MEDIUM-NEXT:    ret
1534*fef84c56SJim Lin;
1535*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_o_with_extern_weak_global_2:
1536*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
1537*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi17:
1538*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI23_0)
1539*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi17)(a0)
1540*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
1541*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 4(a0)
1542*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
1543*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
154461d819ddSwangpc  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @ewg, i32 0, i32 1))
1545dc60003eSwangpc  ret void
1546dc60003eSwangpc}
1547dc60003eSwangpc
1548dc60003eSwangpcdefine void @constraint_o_with_extern_weak_global_3() nounwind {
1549dc60003eSwangpc; RV32I-LABEL: constraint_o_with_extern_weak_global_3:
1550dc60003eSwangpc; RV32I:       # %bb.0:
1551dc60003eSwangpc; RV32I-NEXT:    lui a0, %hi(ewg+8000)
1552dc60003eSwangpc; RV32I-NEXT:    #APP
15535cd8d53cSWang Pengcheng; RV32I-NEXT:    sw zero, %lo(ewg+8000)(a0)
1554dc60003eSwangpc; RV32I-NEXT:    #NO_APP
1555dc60003eSwangpc; RV32I-NEXT:    ret
1556dc60003eSwangpc;
1557dc60003eSwangpc; RV64I-LABEL: constraint_o_with_extern_weak_global_3:
1558dc60003eSwangpc; RV64I:       # %bb.0:
1559dc60003eSwangpc; RV64I-NEXT:    lui a0, %hi(ewg+8000)
1560dc60003eSwangpc; RV64I-NEXT:    #APP
15615cd8d53cSWang Pengcheng; RV64I-NEXT:    sw zero, %lo(ewg+8000)(a0)
1562dc60003eSwangpc; RV64I-NEXT:    #NO_APP
1563dc60003eSwangpc; RV64I-NEXT:    ret
1564dc60003eSwangpc;
1565dc60003eSwangpc; RV32I-MEDIUM-LABEL: constraint_o_with_extern_weak_global_3:
1566dc60003eSwangpc; RV32I-MEDIUM:       # %bb.0:
15673017545eSWang Pengcheng; RV32I-MEDIUM-NEXT:  .Lpcrel_hi18:
1568dc60003eSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
15693017545eSWang Pengcheng; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi18)(a0)
1570dc60003eSwangpc; RV32I-MEDIUM-NEXT:    lui a1, 2
1571dc60003eSwangpc; RV32I-MEDIUM-NEXT:    addi a1, a1, -192
1572dc60003eSwangpc; RV32I-MEDIUM-NEXT:    add a0, a0, a1
1573dc60003eSwangpc; RV32I-MEDIUM-NEXT:    #APP
1574dc60003eSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
1575dc60003eSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
1576dc60003eSwangpc; RV32I-MEDIUM-NEXT:    ret
1577dc60003eSwangpc;
1578dc60003eSwangpc; RV64I-MEDIUM-LABEL: constraint_o_with_extern_weak_global_3:
1579dc60003eSwangpc; RV64I-MEDIUM:       # %bb.0:
15803017545eSWang Pengcheng; RV64I-MEDIUM-NEXT:  .Lpcrel_hi18:
1581dc60003eSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
15823017545eSWang Pengcheng; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi18)(a0)
1583dc60003eSwangpc; RV64I-MEDIUM-NEXT:    lui a1, 2
1584dc60003eSwangpc; RV64I-MEDIUM-NEXT:    addiw a1, a1, -192
1585dc60003eSwangpc; RV64I-MEDIUM-NEXT:    add a0, a0, a1
1586dc60003eSwangpc; RV64I-MEDIUM-NEXT:    #APP
1587dc60003eSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
1588dc60003eSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
1589dc60003eSwangpc; RV64I-MEDIUM-NEXT:    ret
1590*fef84c56SJim Lin;
1591*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_o_with_extern_weak_global_3:
1592*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
1593*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi18:
1594*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI24_0)
1595*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi18)(a0)
1596*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lui a1, 2
1597*fef84c56SJim Lin; RV64I-LARGE-NEXT:    addiw a1, a1, -192
1598*fef84c56SJim Lin; RV64I-LARGE-NEXT:    add a0, a0, a1
1599*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
1600*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
1601*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
1602*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
160361d819ddSwangpc  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @ewg, i32 0, i32 2000))
1604dc60003eSwangpc  ret void
1605dc60003eSwangpc}
1606dc60003eSwangpc
16070d73259cSwangpcdefine void @constraint_o_with_multi_asm() nounwind {
16080d73259cSwangpc; RV32I-LABEL: constraint_o_with_multi_asm:
16090d73259cSwangpc; RV32I:       # %bb.0:
16100d73259cSwangpc; RV32I-NEXT:    lui a0, %hi(eg)
16110d73259cSwangpc; RV32I-NEXT:    #APP
16120d73259cSwangpc; RV32I-NEXT:    sw zero, %lo(eg)(a0)
16130d73259cSwangpc; RV32I-NEXT:    #NO_APP
16140d73259cSwangpc; RV32I-NEXT:    #APP
16150d73259cSwangpc; RV32I-NEXT:    sw zero, %lo(eg)(a0)
16160d73259cSwangpc; RV32I-NEXT:    #NO_APP
16170d73259cSwangpc; RV32I-NEXT:    ret
16180d73259cSwangpc;
16190d73259cSwangpc; RV64I-LABEL: constraint_o_with_multi_asm:
16200d73259cSwangpc; RV64I:       # %bb.0:
16210d73259cSwangpc; RV64I-NEXT:    lui a0, %hi(eg)
16220d73259cSwangpc; RV64I-NEXT:    #APP
16230d73259cSwangpc; RV64I-NEXT:    sw zero, %lo(eg)(a0)
16240d73259cSwangpc; RV64I-NEXT:    #NO_APP
16250d73259cSwangpc; RV64I-NEXT:    #APP
16260d73259cSwangpc; RV64I-NEXT:    sw zero, %lo(eg)(a0)
16270d73259cSwangpc; RV64I-NEXT:    #NO_APP
16280d73259cSwangpc; RV64I-NEXT:    ret
16290d73259cSwangpc;
16302f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_o_with_multi_asm:
16312f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0:
16322f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi19:
16332f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
16342f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
16352f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi19)(a0)
16362f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
16372f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
16382f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi19)(a0)
16392f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
16402f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
16410d73259cSwangpc;
16422f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_o_with_multi_asm:
16432f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0:
16442f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi19:
16452f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
16462f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
16472f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi19)(a0)
16482f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
16492f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
16502f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi19)(a0)
16512f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
16522f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
1653*fef84c56SJim Lin;
1654*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_o_with_multi_asm:
1655*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
1656*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi19:
1657*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI25_0)
1658*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi19)(a0)
1659*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
1660*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
1661*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
1662*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
1663*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
1664*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
1665*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
16660d73259cSwangpc  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) @eg)
16670d73259cSwangpc  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) @eg)
16680d73259cSwangpc  ret void
16690d73259cSwangpc}
16700d73259cSwangpc
16710d73259cSwangpcdefine i32 @constraint_o_with_callbr_multi_operands(i32 %a) {
16724bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-LABEL: constraint_o_with_callbr_multi_operands:
16734bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED:       # %bb.0: # %entry
16744bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    lui a1, %hi(eg)
16754bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #APP
16764bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1); sw zero, %lo(eg)(a1); beqz a0, .LBB26_2
16774bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #NO_APP
16784bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
16794bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    li a0, 0
16804bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    ret
16814bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  .LBB26_2: # Block address taken
16824bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    # %fail
16834bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    # Label of block must be emitted
16844bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    li a0, 1
16854bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    ret
16860d73259cSwangpc;
16874bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-LABEL: constraint_o_with_callbr_multi_operands:
16884bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED:       # %bb.0: # %entry
16894bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    lui a1, %hi(eg)
16904bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #APP
16914bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1); sw zero, %lo(eg)(a1); beqz a0, .LBB26_2
16924bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #NO_APP
16934bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
16944bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    li a0, 0
16954bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    ret
16964bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  .LBB26_2: # Block address taken
16974bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    # %fail
16984bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    # Label of block must be emitted
16994bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    li a0, 1
17004bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    ret
17010d73259cSwangpc;
17024bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-LABEL: constraint_o_with_callbr_multi_operands:
17034bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED:       # %bb.0: # %entry
17044bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi20:
17054bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
17064bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
17074bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi20)(a1); sw zero, %pcrel_lo(.Lpcrel_hi20)(a1); beqz a0, .LBB26_2
17084bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
17094bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
17104bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 0
17114bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    ret
17124bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  .LBB26_2: # Block address taken
17134bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    # %fail
17144bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    # Label of block must be emitted
17154bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 1
17164bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    ret
17170d73259cSwangpc;
17184bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-LABEL: constraint_o_with_callbr_multi_operands:
17194bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED:       # %bb.0: # %entry
17204bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi20:
17214bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
17224bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
17234bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi20)(a1); sw zero, %pcrel_lo(.Lpcrel_hi20)(a1); beqz a0, .LBB26_2
17244bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
17254bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
17264bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 0
17274bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    ret
17284bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  .LBB26_2: # Block address taken
17294bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    # %fail
17304bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    # Label of block must be emitted
17314bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 1
17324bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    ret
17334bf68aacSAnton Sidorenko;
1734*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-LABEL: constraint_o_with_callbr_multi_operands:
1735*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED:       # %bb.0: # %entry
1736*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  .Lpcrel_hi20:
1737*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(.LCPI26_0)
1738*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ld a1, %pcrel_lo(.Lpcrel_hi20)(a1)
1739*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #APP
1740*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    sw zero, 0(a1); sw zero, 0(a1); beqz a0, .LBB26_2
1741*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #NO_APP
1742*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
1743*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    li a0, 0
1744*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ret
1745*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  .LBB26_2: # Block address taken
1746*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    # %fail
1747*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    # Label of block must be emitted
1748*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    li a0, 1
1749*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ret
1750*fef84c56SJim Lin;
17514bf68aacSAnton Sidorenko; RV32I-INTEGRATED-LABEL: constraint_o_with_callbr_multi_operands:
17524bf68aacSAnton Sidorenko; RV32I-INTEGRATED:       # %bb.0: # %entry
17534bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    lui a1, %hi(eg)
17544bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #APP
17554bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
17564bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
17574bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    beqz a0, .LBB26_2
17584bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #NO_APP
17594bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  # %bb.1: # %normal
17604bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    li a0, 0
17614bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    ret
17624bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  .LBB26_2: # Block address taken
17634bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    # %fail
17644bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    # Label of block must be emitted
17654bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    li a0, 1
17664bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    ret
17674bf68aacSAnton Sidorenko;
17684bf68aacSAnton Sidorenko; RV64I-INTEGRATED-LABEL: constraint_o_with_callbr_multi_operands:
17694bf68aacSAnton Sidorenko; RV64I-INTEGRATED:       # %bb.0: # %entry
17704bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    lui a1, %hi(eg)
17714bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #APP
17724bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
17734bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
17744bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    beqz a0, .LBB26_2
17754bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #NO_APP
17764bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  # %bb.1: # %normal
17774bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    li a0, 0
17784bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    ret
17794bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  .LBB26_2: # Block address taken
17804bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    # %fail
17814bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    # Label of block must be emitted
17824bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    li a0, 1
17834bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    ret
17844bf68aacSAnton Sidorenko;
17854bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-LABEL: constraint_o_with_callbr_multi_operands:
17864bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED:       # %bb.0: # %entry
17874bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi20:
17884bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
17894bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #APP
17902f91e981SAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi20)(a1)
17912f91e981SAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi20)(a1)
17924bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB26_2
17934bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
17944bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  # %bb.1: # %normal
17954bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    li a0, 0
17964bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    ret
17974bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  .LBB26_2: # Block address taken
17984bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    # %fail
17994bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    # Label of block must be emitted
18004bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    li a0, 1
18014bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    ret
18024bf68aacSAnton Sidorenko;
18034bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-LABEL: constraint_o_with_callbr_multi_operands:
18044bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED:       # %bb.0: # %entry
18054bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi20:
18064bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
18074bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #APP
18082f91e981SAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi20)(a1)
18092f91e981SAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi20)(a1)
18104bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB26_2
18114bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
18124bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  # %bb.1: # %normal
18134bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    li a0, 0
18144bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    ret
18154bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  .LBB26_2: # Block address taken
18164bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    # %fail
18174bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    # Label of block must be emitted
18184bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    li a0, 1
18194bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    ret
1820*fef84c56SJim Lin;
1821*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-LABEL: constraint_o_with_callbr_multi_operands:
1822*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED:       # %bb.0: # %entry
1823*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  .Lpcrel_hi20:
1824*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(.LCPI26_0)
1825*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ld a1, %pcrel_lo(.Lpcrel_hi20)(a1)
1826*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #APP
1827*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a1)
1828*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a1)
1829*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    beqz a0, .LBB26_2
1830*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #NO_APP
1831*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  # %bb.1: # %normal
1832*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    li a0, 0
1833*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ret
1834*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  .LBB26_2: # Block address taken
1835*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    # %fail
1836*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    # Label of block must be emitted
1837*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    li a0, 1
1838*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ret
18390d73259cSwangpcentry:
18400d73259cSwangpc  callbr void asm "sw zero, $0; sw zero, $1; beqz $2, $3", "=*m,=*m,r,!i"(ptr elementtype(i32) @eg, ptr elementtype(i32) @eg, i32 %a) to label %normal [label %fail]
18410d73259cSwangpc
18420d73259cSwangpcnormal:
18430d73259cSwangpc  ret i32 0
18440d73259cSwangpc
18450d73259cSwangpcfail:
18460d73259cSwangpc  ret i32 1
18470d73259cSwangpc}
18480d73259cSwangpc
18490d73259cSwangpcdefine i32 @constraint_o_with_multi_callbr_asm(i32 %a) {
18504bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-LABEL: constraint_o_with_multi_callbr_asm:
18514bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED:       # %bb.0: # %entry
18524bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    lui a1, %hi(eg)
18534bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #APP
18544bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB27_3
18554bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #NO_APP
18564bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
18574bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #APP
18584bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB27_3
18594bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #NO_APP
18604bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
18614bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    li a0, 0
18624bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    ret
18634bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  .LBB27_3: # Block address taken
18644bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    # %fail
18654bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    # Label of block must be emitted
18664bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    li a0, 1
18674bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    ret
18680d73259cSwangpc;
18694bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-LABEL: constraint_o_with_multi_callbr_asm:
18704bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED:       # %bb.0: # %entry
18714bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    lui a1, %hi(eg)
18724bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #APP
18734bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB27_3
18744bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #NO_APP
18754bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
18764bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #APP
18774bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB27_3
18784bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #NO_APP
18794bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
18804bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    li a0, 0
18814bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    ret
18824bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  .LBB27_3: # Block address taken
18834bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    # %fail
18844bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    # Label of block must be emitted
18854bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    li a0, 1
18864bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    ret
18870d73259cSwangpc;
18884bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-LABEL: constraint_o_with_multi_callbr_asm:
18894bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED:       # %bb.0: # %entry
18904bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi21:
18914bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
18924bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
18934bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi21)(a1); beqz a0, .LBB27_3
18944bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
18954bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
18964bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
18974bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi21)(a1); beqz a0, .LBB27_3
18984bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
18994bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
19004bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 0
19014bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    ret
19024bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  .LBB27_3: # Block address taken
19034bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    # %fail
19044bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    # Label of block must be emitted
19054bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 1
19064bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    ret
19070d73259cSwangpc;
19084bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-LABEL: constraint_o_with_multi_callbr_asm:
19094bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED:       # %bb.0: # %entry
19104bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi21:
19114bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
19124bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
19134bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi21)(a1); beqz a0, .LBB27_3
19144bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
19154bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
19164bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
19174bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi21)(a1); beqz a0, .LBB27_3
19184bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
19194bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
19204bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 0
19214bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    ret
19224bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  .LBB27_3: # Block address taken
19234bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    # %fail
19244bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    # Label of block must be emitted
19254bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 1
19264bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    ret
19274bf68aacSAnton Sidorenko;
1928*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-LABEL: constraint_o_with_multi_callbr_asm:
1929*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED:       # %bb.0: # %entry
1930*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  .Lpcrel_hi21:
1931*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(.LCPI27_0)
1932*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ld a1, %pcrel_lo(.Lpcrel_hi21)(a1)
1933*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #APP
1934*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB27_3
1935*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #NO_APP
1936*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
1937*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #APP
1938*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB27_3
1939*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #NO_APP
1940*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
1941*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    li a0, 0
1942*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ret
1943*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  .LBB27_3: # Block address taken
1944*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    # %fail
1945*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    # Label of block must be emitted
1946*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    li a0, 1
1947*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ret
1948*fef84c56SJim Lin;
19494bf68aacSAnton Sidorenko; RV32I-INTEGRATED-LABEL: constraint_o_with_multi_callbr_asm:
19504bf68aacSAnton Sidorenko; RV32I-INTEGRATED:       # %bb.0: # %entry
19514bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    lui a1, %hi(eg)
19524bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #APP
19534bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
19544bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    beqz a0, .LBB27_3
19554bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #NO_APP
19564bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  # %bb.1: # %normal0
19574bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #APP
19584bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
19594bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    beqz a0, .LBB27_3
19604bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #NO_APP
19614bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  # %bb.2: # %normal1
19624bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    li a0, 0
19634bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    ret
19644bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  .LBB27_3: # Block address taken
19654bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    # %fail
19664bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    # Label of block must be emitted
19674bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    li a0, 1
19684bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    ret
19694bf68aacSAnton Sidorenko;
19704bf68aacSAnton Sidorenko; RV64I-INTEGRATED-LABEL: constraint_o_with_multi_callbr_asm:
19714bf68aacSAnton Sidorenko; RV64I-INTEGRATED:       # %bb.0: # %entry
19724bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    lui a1, %hi(eg)
19734bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #APP
19744bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
19754bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    beqz a0, .LBB27_3
19764bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #NO_APP
19774bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  # %bb.1: # %normal0
19784bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #APP
19794bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, %lo(eg)(a1)
19804bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    beqz a0, .LBB27_3
19814bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #NO_APP
19824bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  # %bb.2: # %normal1
19834bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    li a0, 0
19844bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    ret
19854bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  .LBB27_3: # Block address taken
19864bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    # %fail
19874bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    # Label of block must be emitted
19884bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    li a0, 1
19894bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    ret
19904bf68aacSAnton Sidorenko;
19914bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-LABEL: constraint_o_with_multi_callbr_asm:
19924bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED:       # %bb.0: # %entry
19934bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi21:
19944bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
19954bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #APP
19962f91e981SAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi21)(a1)
19974bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB27_3
19984bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
19994bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  # %bb.1: # %normal0
20004bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #APP
20012f91e981SAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi21)(a1)
20024bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB27_3
20034bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
20044bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  # %bb.2: # %normal1
20054bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    li a0, 0
20064bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    ret
20074bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  .LBB27_3: # Block address taken
20084bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    # %fail
20094bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    # Label of block must be emitted
20104bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    li a0, 1
20114bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    ret
20124bf68aacSAnton Sidorenko;
20134bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-LABEL: constraint_o_with_multi_callbr_asm:
20144bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED:       # %bb.0: # %entry
20154bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi21:
20164bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
20174bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #APP
20182f91e981SAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi21)(a1)
20194bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB27_3
20204bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
20214bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  # %bb.1: # %normal0
20224bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #APP
20232f91e981SAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi21)(a1)
20244bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB27_3
20254bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
20264bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  # %bb.2: # %normal1
20274bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    li a0, 0
20284bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    ret
20294bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  .LBB27_3: # Block address taken
20304bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    # %fail
20314bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    # Label of block must be emitted
20324bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    li a0, 1
20334bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    ret
2034*fef84c56SJim Lin;
2035*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-LABEL: constraint_o_with_multi_callbr_asm:
2036*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED:       # %bb.0: # %entry
2037*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  .Lpcrel_hi21:
2038*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(.LCPI27_0)
2039*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ld a1, %pcrel_lo(.Lpcrel_hi21)(a1)
2040*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #APP
2041*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a1)
2042*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    beqz a0, .LBB27_3
2043*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #NO_APP
2044*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  # %bb.1: # %normal0
2045*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #APP
2046*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a1)
2047*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    beqz a0, .LBB27_3
2048*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #NO_APP
2049*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  # %bb.2: # %normal1
2050*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    li a0, 0
2051*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ret
2052*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  .LBB27_3: # Block address taken
2053*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    # %fail
2054*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    # Label of block must be emitted
2055*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    li a0, 1
2056*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ret
20570d73259cSwangpcentry:
20580d73259cSwangpc  callbr void asm "sw zero, $0; beqz $1, $2", "=*o,r,!i"(ptr elementtype(i32) @eg, i32 %a) to label %normal0 [label %fail]
20590d73259cSwangpc
20600d73259cSwangpcnormal0:
20610d73259cSwangpc  callbr void asm "sw zero, $0; beqz $1, $2", "=*o,r,!i"(ptr elementtype(i32) @eg, i32 %a) to label %normal1 [label %fail]
20620d73259cSwangpc
20630d73259cSwangpcnormal1:
20640d73259cSwangpc  ret i32 0
20650d73259cSwangpc
20660d73259cSwangpcfail:
20670d73259cSwangpc  ret i32 1
20680d73259cSwangpc}
20690d73259cSwangpc
20703017545eSWang Pengchengdefine void @constraint_o_with_local_1() nounwind {
20712f91e981SAnton Sidorenko; RV32I-LABEL: constraint_o_with_local_1:
20722f91e981SAnton Sidorenko; RV32I:       # %bb.0: # %entry
20732f91e981SAnton Sidorenko; RV32I-NEXT:  .Ltmp3: # Block address taken
20742f91e981SAnton Sidorenko; RV32I-NEXT:  # %bb.1: # %label
20752f91e981SAnton Sidorenko; RV32I-NEXT:    lui a0, %hi(.Ltmp3)
20762f91e981SAnton Sidorenko; RV32I-NEXT:    #APP
20772f91e981SAnton Sidorenko; RV32I-NEXT:    lw zero, %lo(.Ltmp3)(a0)
20782f91e981SAnton Sidorenko; RV32I-NEXT:    #NO_APP
20792f91e981SAnton Sidorenko; RV32I-NEXT:    ret
20803017545eSWang Pengcheng;
20812f91e981SAnton Sidorenko; RV64I-LABEL: constraint_o_with_local_1:
20822f91e981SAnton Sidorenko; RV64I:       # %bb.0: # %entry
20832f91e981SAnton Sidorenko; RV64I-NEXT:  .Ltmp3: # Block address taken
20842f91e981SAnton Sidorenko; RV64I-NEXT:  # %bb.1: # %label
20852f91e981SAnton Sidorenko; RV64I-NEXT:    lui a0, %hi(.Ltmp3)
20862f91e981SAnton Sidorenko; RV64I-NEXT:    #APP
20872f91e981SAnton Sidorenko; RV64I-NEXT:    lw zero, %lo(.Ltmp3)(a0)
20882f91e981SAnton Sidorenko; RV64I-NEXT:    #NO_APP
20892f91e981SAnton Sidorenko; RV64I-NEXT:    ret
20903017545eSWang Pengcheng;
20912f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_o_with_local_1:
20922f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0: # %entry
20932f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Ltmp3: # Block address taken
20942f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
20952f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi22:
20962f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp3)
20972f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
20982f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi22)(a0)
20992f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
21002f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
21013017545eSWang Pengcheng;
21022f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_o_with_local_1:
21032f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0: # %entry
21042f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Ltmp3: # Block address taken
21052f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
21062f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi22:
21072f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp3)
21082f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
21092f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi22)(a0)
21102f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
21112f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
2112*fef84c56SJim Lin;
2113*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_o_with_local_1:
2114*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0: # %entry
2115*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Ltmp3: # Block address taken
2116*fef84c56SJim Lin; RV64I-LARGE-NEXT:  # %bb.1: # %label
2117*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi22:
2118*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.Ltmp3)
2119*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2120*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi22)(a0)
2121*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2122*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
21233017545eSWang Pengchengentry:
21243017545eSWang Pengcheng  br label %label
21253017545eSWang Pengcheng
21263017545eSWang Pengchenglabel:
21273017545eSWang Pengcheng  tail call void asm sideeffect "lw zero, $0", "*o"(ptr elementtype(ptr) blockaddress(@constraint_o_with_local_1, %label))
21283017545eSWang Pengcheng  ret void
21293017545eSWang Pengcheng}
21303017545eSWang Pengcheng
21313017545eSWang Pengchengdefine void @constraint_o_with_local_2() nounwind {
21322f91e981SAnton Sidorenko; RV32I-LABEL: constraint_o_with_local_2:
21332f91e981SAnton Sidorenko; RV32I:       # %bb.0: # %entry
21342f91e981SAnton Sidorenko; RV32I-NEXT:  .Ltmp4: # Block address taken
21352f91e981SAnton Sidorenko; RV32I-NEXT:  # %bb.1: # %label
21362f91e981SAnton Sidorenko; RV32I-NEXT:    lui a0, %hi(.Ltmp4+4)
21372f91e981SAnton Sidorenko; RV32I-NEXT:    #APP
21382f91e981SAnton Sidorenko; RV32I-NEXT:    lw zero, %lo(.Ltmp4+4)(a0)
21392f91e981SAnton Sidorenko; RV32I-NEXT:    #NO_APP
21402f91e981SAnton Sidorenko; RV32I-NEXT:    ret
21413017545eSWang Pengcheng;
21422f91e981SAnton Sidorenko; RV64I-LABEL: constraint_o_with_local_2:
21432f91e981SAnton Sidorenko; RV64I:       # %bb.0: # %entry
21442f91e981SAnton Sidorenko; RV64I-NEXT:  .Ltmp4: # Block address taken
21452f91e981SAnton Sidorenko; RV64I-NEXT:  # %bb.1: # %label
21462f91e981SAnton Sidorenko; RV64I-NEXT:    lui a0, %hi(.Ltmp4+4)
21472f91e981SAnton Sidorenko; RV64I-NEXT:    #APP
21482f91e981SAnton Sidorenko; RV64I-NEXT:    lw zero, %lo(.Ltmp4+4)(a0)
21492f91e981SAnton Sidorenko; RV64I-NEXT:    #NO_APP
21502f91e981SAnton Sidorenko; RV64I-NEXT:    ret
21513017545eSWang Pengcheng;
21522f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_o_with_local_2:
21532f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0: # %entry
21542f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Ltmp4: # Block address taken
21552f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
21562f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi23:
21572f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp4+4)
21582f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
21592f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi23)(a0)
21602f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
21612f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
21623017545eSWang Pengcheng;
21632f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_o_with_local_2:
21642f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0: # %entry
21652f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Ltmp4: # Block address taken
21662f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
21672f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi23:
21682f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp4+4)
21692f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
21702f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi23)(a0)
21712f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
21722f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
2173*fef84c56SJim Lin;
2174*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_o_with_local_2:
2175*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0: # %entry
2176*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Ltmp4: # Block address taken
2177*fef84c56SJim Lin; RV64I-LARGE-NEXT:  # %bb.1: # %label
2178*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi23:
2179*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.Ltmp4+4)
2180*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2181*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi23)(a0)
2182*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2183*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
21843017545eSWang Pengchengentry:
21853017545eSWang Pengcheng  br label %label
21863017545eSWang Pengcheng
21873017545eSWang Pengchenglabel:
218861d819ddSwangpc  call void asm "lw zero, $0", "*o"(ptr elementtype(i32) getelementptr (i8, ptr blockaddress(@constraint_o_with_local_2, %label), i32 4))
21893017545eSWang Pengcheng  ret void
21903017545eSWang Pengcheng}
21913017545eSWang Pengcheng
21923017545eSWang Pengchengdefine void @constraint_o_with_local_3() nounwind {
21932f91e981SAnton Sidorenko; RV32I-LABEL: constraint_o_with_local_3:
21942f91e981SAnton Sidorenko; RV32I:       # %bb.0: # %entry
21952f91e981SAnton Sidorenko; RV32I-NEXT:  .Ltmp5: # Block address taken
21962f91e981SAnton Sidorenko; RV32I-NEXT:  # %bb.1: # %label
21972f91e981SAnton Sidorenko; RV32I-NEXT:    lui a0, %hi(.Ltmp5+2000)
21982f91e981SAnton Sidorenko; RV32I-NEXT:    #APP
21992f91e981SAnton Sidorenko; RV32I-NEXT:    lw zero, %lo(.Ltmp5+2000)(a0)
22002f91e981SAnton Sidorenko; RV32I-NEXT:    #NO_APP
22012f91e981SAnton Sidorenko; RV32I-NEXT:    ret
22023017545eSWang Pengcheng;
22032f91e981SAnton Sidorenko; RV64I-LABEL: constraint_o_with_local_3:
22042f91e981SAnton Sidorenko; RV64I:       # %bb.0: # %entry
22052f91e981SAnton Sidorenko; RV64I-NEXT:  .Ltmp5: # Block address taken
22062f91e981SAnton Sidorenko; RV64I-NEXT:  # %bb.1: # %label
22072f91e981SAnton Sidorenko; RV64I-NEXT:    lui a0, %hi(.Ltmp5+2000)
22082f91e981SAnton Sidorenko; RV64I-NEXT:    #APP
22092f91e981SAnton Sidorenko; RV64I-NEXT:    lw zero, %lo(.Ltmp5+2000)(a0)
22102f91e981SAnton Sidorenko; RV64I-NEXT:    #NO_APP
22112f91e981SAnton Sidorenko; RV64I-NEXT:    ret
22123017545eSWang Pengcheng;
22132f91e981SAnton Sidorenko; RV32I-MEDIUM-LABEL: constraint_o_with_local_3:
22142f91e981SAnton Sidorenko; RV32I-MEDIUM:       # %bb.0: # %entry
22152f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Ltmp5: # Block address taken
22162f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
22172f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi24:
22182f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp5+2000)
22192f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #APP
22202f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi24)(a0)
22212f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    #NO_APP
22222f91e981SAnton Sidorenko; RV32I-MEDIUM-NEXT:    ret
22233017545eSWang Pengcheng;
22242f91e981SAnton Sidorenko; RV64I-MEDIUM-LABEL: constraint_o_with_local_3:
22252f91e981SAnton Sidorenko; RV64I-MEDIUM:       # %bb.0: # %entry
22262f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Ltmp5: # Block address taken
22272f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
22282f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi24:
22292f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp5+2000)
22302f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #APP
22312f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi24)(a0)
22322f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    #NO_APP
22332f91e981SAnton Sidorenko; RV64I-MEDIUM-NEXT:    ret
2234*fef84c56SJim Lin;
2235*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_o_with_local_3:
2236*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0: # %entry
2237*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Ltmp5: # Block address taken
2238*fef84c56SJim Lin; RV64I-LARGE-NEXT:  # %bb.1: # %label
2239*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi24:
2240*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.Ltmp5+2000)
2241*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2242*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi24)(a0)
2243*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2244*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
22453017545eSWang Pengchengentry:
22463017545eSWang Pengcheng  br label %label
22473017545eSWang Pengcheng
22483017545eSWang Pengchenglabel:
224961d819ddSwangpc  call void asm "lw zero, $0", "*o"(ptr elementtype(i32) getelementptr (i8, ptr blockaddress(@constraint_o_with_local_3, %label), i32 2000))
22503017545eSWang Pengcheng  ret void
22513017545eSWang Pengcheng}
22523017545eSWang Pengcheng
2253a3b11ce7Swangpcdefine void @constraint_A(ptr %a) nounwind {
2254a3b11ce7Swangpc; RV32I-LABEL: constraint_A:
2255a3b11ce7Swangpc; RV32I:       # %bb.0:
2256a3b11ce7Swangpc; RV32I-NEXT:    #APP
2257a3b11ce7Swangpc; RV32I-NEXT:    sb s0, 0(a0)
2258a3b11ce7Swangpc; RV32I-NEXT:    #NO_APP
2259a3b11ce7Swangpc; RV32I-NEXT:    #APP
2260a3b11ce7Swangpc; RV32I-NEXT:    lb s1, 0(a0)
2261a3b11ce7Swangpc; RV32I-NEXT:    #NO_APP
2262a3b11ce7Swangpc; RV32I-NEXT:    ret
2263a3b11ce7Swangpc;
2264a3b11ce7Swangpc; RV64I-LABEL: constraint_A:
2265a3b11ce7Swangpc; RV64I:       # %bb.0:
2266a3b11ce7Swangpc; RV64I-NEXT:    #APP
2267a3b11ce7Swangpc; RV64I-NEXT:    sb s0, 0(a0)
2268a3b11ce7Swangpc; RV64I-NEXT:    #NO_APP
2269a3b11ce7Swangpc; RV64I-NEXT:    #APP
2270a3b11ce7Swangpc; RV64I-NEXT:    lb s1, 0(a0)
2271a3b11ce7Swangpc; RV64I-NEXT:    #NO_APP
2272a3b11ce7Swangpc; RV64I-NEXT:    ret
2273a3b11ce7Swangpc;
2274a3b11ce7Swangpc; RV32I-MEDIUM-LABEL: constraint_A:
2275a3b11ce7Swangpc; RV32I-MEDIUM:       # %bb.0:
2276a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #APP
2277a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    sb s0, 0(a0)
2278a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #NO_APP
2279a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #APP
2280a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    lb s1, 0(a0)
2281a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #NO_APP
2282a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    ret
2283a3b11ce7Swangpc;
2284a3b11ce7Swangpc; RV64I-MEDIUM-LABEL: constraint_A:
2285a3b11ce7Swangpc; RV64I-MEDIUM:       # %bb.0:
2286a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #APP
2287a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    sb s0, 0(a0)
2288a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #NO_APP
2289a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #APP
2290a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    lb s1, 0(a0)
2291a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #NO_APP
2292a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    ret
2293*fef84c56SJim Lin;
2294*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_A:
2295*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
2296*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2297*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sb s0, 0(a0)
2298*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2299*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2300*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lb s1, 0(a0)
2301*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2302*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
2303a3b11ce7Swangpc  tail call void asm sideeffect "sb s0, $0", "*A"(ptr elementtype(i8) %a)
2304a3b11ce7Swangpc  tail call void asm sideeffect "lb s1, $0", "*A"(ptr elementtype(i8) %a)
2305a3b11ce7Swangpc  ret void
2306a3b11ce7Swangpc}
2307a3b11ce7Swangpc
2308a3b11ce7Swangpcdefine i32 @constraint_A_with_offset(ptr %a) nounwind {
2309a3b11ce7Swangpc; RV32I-LABEL: constraint_A_with_offset:
2310a3b11ce7Swangpc; RV32I:       # %bb.0:
2311a3b11ce7Swangpc; RV32I-NEXT:    addi a0, a0, 4
2312a3b11ce7Swangpc; RV32I-NEXT:    #APP
2313a3b11ce7Swangpc; RV32I-NEXT:    lw a0, 0(a0)
2314a3b11ce7Swangpc; RV32I-NEXT:    #NO_APP
2315a3b11ce7Swangpc; RV32I-NEXT:    ret
2316a3b11ce7Swangpc;
2317a3b11ce7Swangpc; RV64I-LABEL: constraint_A_with_offset:
2318a3b11ce7Swangpc; RV64I:       # %bb.0:
2319a3b11ce7Swangpc; RV64I-NEXT:    addi a0, a0, 4
2320a3b11ce7Swangpc; RV64I-NEXT:    #APP
2321a3b11ce7Swangpc; RV64I-NEXT:    lw a0, 0(a0)
2322a3b11ce7Swangpc; RV64I-NEXT:    #NO_APP
2323a3b11ce7Swangpc; RV64I-NEXT:    ret
2324a3b11ce7Swangpc;
2325a3b11ce7Swangpc; RV32I-MEDIUM-LABEL: constraint_A_with_offset:
2326a3b11ce7Swangpc; RV32I-MEDIUM:       # %bb.0:
2327a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    addi a0, a0, 4
2328a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #APP
2329a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    lw a0, 0(a0)
2330a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    #NO_APP
2331a3b11ce7Swangpc; RV32I-MEDIUM-NEXT:    ret
2332a3b11ce7Swangpc;
2333a3b11ce7Swangpc; RV64I-MEDIUM-LABEL: constraint_A_with_offset:
2334a3b11ce7Swangpc; RV64I-MEDIUM:       # %bb.0:
2335a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    addi a0, a0, 4
2336a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #APP
2337a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    lw a0, 0(a0)
2338a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    #NO_APP
2339a3b11ce7Swangpc; RV64I-MEDIUM-NEXT:    ret
2340*fef84c56SJim Lin;
2341*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_A_with_offset:
2342*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
2343*fef84c56SJim Lin; RV64I-LARGE-NEXT:    addi a0, a0, 4
2344*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2345*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw a0, 0(a0)
2346*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2347*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
2348a3b11ce7Swangpc  %1 = getelementptr i32, ptr %a, i32 1
2349a3b11ce7Swangpc  %2 = tail call i32 asm "lw $0, $1", "=r,*A"(ptr elementtype(i32) %1)
2350a3b11ce7Swangpc  ret i32 %2
2351a3b11ce7Swangpc}
235261d819ddSwangpc
235361d819ddSwangpcdefine void @constraint_A_with_global_1() nounwind {
235461d819ddSwangpc; RV32I-LABEL: constraint_A_with_global_1:
235561d819ddSwangpc; RV32I:       # %bb.0:
235661d819ddSwangpc; RV32I-NEXT:    lui a0, %hi(eg)
235761d819ddSwangpc; RV32I-NEXT:    addi a0, a0, %lo(eg)
235861d819ddSwangpc; RV32I-NEXT:    #APP
235961d819ddSwangpc; RV32I-NEXT:    sw zero, 0(a0)
236061d819ddSwangpc; RV32I-NEXT:    #NO_APP
236161d819ddSwangpc; RV32I-NEXT:    ret
236261d819ddSwangpc;
236361d819ddSwangpc; RV64I-LABEL: constraint_A_with_global_1:
236461d819ddSwangpc; RV64I:       # %bb.0:
236561d819ddSwangpc; RV64I-NEXT:    lui a0, %hi(eg)
236661d819ddSwangpc; RV64I-NEXT:    addi a0, a0, %lo(eg)
236761d819ddSwangpc; RV64I-NEXT:    #APP
236861d819ddSwangpc; RV64I-NEXT:    sw zero, 0(a0)
236961d819ddSwangpc; RV64I-NEXT:    #NO_APP
237061d819ddSwangpc; RV64I-NEXT:    ret
237161d819ddSwangpc;
237261d819ddSwangpc; RV32I-MEDIUM-LABEL: constraint_A_with_global_1:
237361d819ddSwangpc; RV32I-MEDIUM:       # %bb.0:
23744bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi25:
237561d819ddSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
23764bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi25)
237761d819ddSwangpc; RV32I-MEDIUM-NEXT:    #APP
237861d819ddSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
237961d819ddSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
238061d819ddSwangpc; RV32I-MEDIUM-NEXT:    ret
238161d819ddSwangpc;
238261d819ddSwangpc; RV64I-MEDIUM-LABEL: constraint_A_with_global_1:
238361d819ddSwangpc; RV64I-MEDIUM:       # %bb.0:
23844bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi25:
238561d819ddSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
23864bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi25)
238761d819ddSwangpc; RV64I-MEDIUM-NEXT:    #APP
238861d819ddSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
238961d819ddSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
239061d819ddSwangpc; RV64I-MEDIUM-NEXT:    ret
2391*fef84c56SJim Lin;
2392*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_A_with_global_1:
2393*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
2394*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi25:
2395*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI33_0)
2396*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi25)(a0)
2397*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2398*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
2399*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2400*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
240161d819ddSwangpc  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) @eg)
240261d819ddSwangpc  ret void
240361d819ddSwangpc}
240461d819ddSwangpc
240561d819ddSwangpcdefine void @constraint_A_with_global_2() nounwind {
240661d819ddSwangpc; RV32I-LABEL: constraint_A_with_global_2:
240761d819ddSwangpc; RV32I:       # %bb.0:
240861d819ddSwangpc; RV32I-NEXT:    lui a0, %hi(eg+4)
240961d819ddSwangpc; RV32I-NEXT:    addi a0, a0, %lo(eg+4)
241061d819ddSwangpc; RV32I-NEXT:    #APP
241161d819ddSwangpc; RV32I-NEXT:    sw zero, 0(a0)
241261d819ddSwangpc; RV32I-NEXT:    #NO_APP
241361d819ddSwangpc; RV32I-NEXT:    ret
241461d819ddSwangpc;
241561d819ddSwangpc; RV64I-LABEL: constraint_A_with_global_2:
241661d819ddSwangpc; RV64I:       # %bb.0:
241761d819ddSwangpc; RV64I-NEXT:    lui a0, %hi(eg+4)
241861d819ddSwangpc; RV64I-NEXT:    addi a0, a0, %lo(eg+4)
241961d819ddSwangpc; RV64I-NEXT:    #APP
242061d819ddSwangpc; RV64I-NEXT:    sw zero, 0(a0)
242161d819ddSwangpc; RV64I-NEXT:    #NO_APP
242261d819ddSwangpc; RV64I-NEXT:    ret
242361d819ddSwangpc;
242461d819ddSwangpc; RV32I-MEDIUM-LABEL: constraint_A_with_global_2:
242561d819ddSwangpc; RV32I-MEDIUM:       # %bb.0:
24264bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi26:
242761d819ddSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+4)
24284bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi26)
242961d819ddSwangpc; RV32I-MEDIUM-NEXT:    #APP
243061d819ddSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
243161d819ddSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
243261d819ddSwangpc; RV32I-MEDIUM-NEXT:    ret
243361d819ddSwangpc;
243461d819ddSwangpc; RV64I-MEDIUM-LABEL: constraint_A_with_global_2:
243561d819ddSwangpc; RV64I-MEDIUM:       # %bb.0:
24364bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi26:
243761d819ddSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+4)
24384bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi26)
243961d819ddSwangpc; RV64I-MEDIUM-NEXT:    #APP
244061d819ddSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
244161d819ddSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
244261d819ddSwangpc; RV64I-MEDIUM-NEXT:    ret
2443*fef84c56SJim Lin;
2444*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_A_with_global_2:
2445*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
2446*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi26:
2447*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI34_0)
2448*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi26)(a0)
2449*fef84c56SJim Lin; RV64I-LARGE-NEXT:    addi a0, a0, 4
2450*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2451*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
2452*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2453*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
245461d819ddSwangpc  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @eg, i32 0, i32 1))
245561d819ddSwangpc  ret void
245661d819ddSwangpc}
245761d819ddSwangpc
245861d819ddSwangpcdefine void @constraint_A_with_global_3() nounwind {
245961d819ddSwangpc; RV32I-LABEL: constraint_A_with_global_3:
246061d819ddSwangpc; RV32I:       # %bb.0:
246161d819ddSwangpc; RV32I-NEXT:    lui a0, %hi(eg+8000)
246261d819ddSwangpc; RV32I-NEXT:    addi a0, a0, %lo(eg+8000)
246361d819ddSwangpc; RV32I-NEXT:    #APP
246461d819ddSwangpc; RV32I-NEXT:    sw zero, 0(a0)
246561d819ddSwangpc; RV32I-NEXT:    #NO_APP
246661d819ddSwangpc; RV32I-NEXT:    ret
246761d819ddSwangpc;
246861d819ddSwangpc; RV64I-LABEL: constraint_A_with_global_3:
246961d819ddSwangpc; RV64I:       # %bb.0:
247061d819ddSwangpc; RV64I-NEXT:    lui a0, %hi(eg+8000)
247161d819ddSwangpc; RV64I-NEXT:    addi a0, a0, %lo(eg+8000)
247261d819ddSwangpc; RV64I-NEXT:    #APP
247361d819ddSwangpc; RV64I-NEXT:    sw zero, 0(a0)
247461d819ddSwangpc; RV64I-NEXT:    #NO_APP
247561d819ddSwangpc; RV64I-NEXT:    ret
247661d819ddSwangpc;
247761d819ddSwangpc; RV32I-MEDIUM-LABEL: constraint_A_with_global_3:
247861d819ddSwangpc; RV32I-MEDIUM:       # %bb.0:
24794bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi27:
248061d819ddSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+8000)
24814bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi27)
248261d819ddSwangpc; RV32I-MEDIUM-NEXT:    #APP
248361d819ddSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
248461d819ddSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
248561d819ddSwangpc; RV32I-MEDIUM-NEXT:    ret
248661d819ddSwangpc;
248761d819ddSwangpc; RV64I-MEDIUM-LABEL: constraint_A_with_global_3:
248861d819ddSwangpc; RV64I-MEDIUM:       # %bb.0:
24894bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi27:
249061d819ddSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+8000)
24914bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi27)
249261d819ddSwangpc; RV64I-MEDIUM-NEXT:    #APP
249361d819ddSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
249461d819ddSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
249561d819ddSwangpc; RV64I-MEDIUM-NEXT:    ret
2496*fef84c56SJim Lin;
2497*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_A_with_global_3:
2498*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
2499*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi27:
2500*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI35_0)
2501*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi27)(a0)
2502*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lui a1, 2
2503*fef84c56SJim Lin; RV64I-LARGE-NEXT:    addiw a1, a1, -192
2504*fef84c56SJim Lin; RV64I-LARGE-NEXT:    add a0, a0, a1
2505*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2506*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
2507*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2508*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
250961d819ddSwangpc  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @eg, i32 0, i32 2000))
251061d819ddSwangpc  ret void
251161d819ddSwangpc}
251261d819ddSwangpc
251361d819ddSwangpcdefine void @constraint_A_with_extern_weak_global_1() nounwind {
251461d819ddSwangpc; RV32I-LABEL: constraint_A_with_extern_weak_global_1:
251561d819ddSwangpc; RV32I:       # %bb.0:
251661d819ddSwangpc; RV32I-NEXT:    lui a0, %hi(ewg)
251761d819ddSwangpc; RV32I-NEXT:    addi a0, a0, %lo(ewg)
251861d819ddSwangpc; RV32I-NEXT:    #APP
251961d819ddSwangpc; RV32I-NEXT:    sw zero, 0(a0)
252061d819ddSwangpc; RV32I-NEXT:    #NO_APP
252161d819ddSwangpc; RV32I-NEXT:    ret
252261d819ddSwangpc;
252361d819ddSwangpc; RV64I-LABEL: constraint_A_with_extern_weak_global_1:
252461d819ddSwangpc; RV64I:       # %bb.0:
252561d819ddSwangpc; RV64I-NEXT:    lui a0, %hi(ewg)
252661d819ddSwangpc; RV64I-NEXT:    addi a0, a0, %lo(ewg)
252761d819ddSwangpc; RV64I-NEXT:    #APP
252861d819ddSwangpc; RV64I-NEXT:    sw zero, 0(a0)
252961d819ddSwangpc; RV64I-NEXT:    #NO_APP
253061d819ddSwangpc; RV64I-NEXT:    ret
253161d819ddSwangpc;
253261d819ddSwangpc; RV32I-MEDIUM-LABEL: constraint_A_with_extern_weak_global_1:
253361d819ddSwangpc; RV32I-MEDIUM:       # %bb.0:
25344bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi28:
253561d819ddSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
25364bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi28)(a0)
253761d819ddSwangpc; RV32I-MEDIUM-NEXT:    #APP
253861d819ddSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
253961d819ddSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
254061d819ddSwangpc; RV32I-MEDIUM-NEXT:    ret
254161d819ddSwangpc;
254261d819ddSwangpc; RV64I-MEDIUM-LABEL: constraint_A_with_extern_weak_global_1:
254361d819ddSwangpc; RV64I-MEDIUM:       # %bb.0:
25444bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi28:
254561d819ddSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
25464bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi28)(a0)
254761d819ddSwangpc; RV64I-MEDIUM-NEXT:    #APP
254861d819ddSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
254961d819ddSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
255061d819ddSwangpc; RV64I-MEDIUM-NEXT:    ret
2551*fef84c56SJim Lin;
2552*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_A_with_extern_weak_global_1:
2553*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
2554*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi28:
2555*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI36_0)
2556*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi28)(a0)
2557*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2558*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
2559*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2560*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
256161d819ddSwangpc  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) @ewg)
256261d819ddSwangpc  ret void
256361d819ddSwangpc}
256461d819ddSwangpc
256561d819ddSwangpcdefine void @constraint_A_with_extern_weak_global_2() nounwind {
256661d819ddSwangpc; RV32I-LABEL: constraint_A_with_extern_weak_global_2:
256761d819ddSwangpc; RV32I:       # %bb.0:
256861d819ddSwangpc; RV32I-NEXT:    lui a0, %hi(ewg+4)
256961d819ddSwangpc; RV32I-NEXT:    addi a0, a0, %lo(ewg+4)
257061d819ddSwangpc; RV32I-NEXT:    #APP
257161d819ddSwangpc; RV32I-NEXT:    sw zero, 0(a0)
257261d819ddSwangpc; RV32I-NEXT:    #NO_APP
257361d819ddSwangpc; RV32I-NEXT:    ret
257461d819ddSwangpc;
257561d819ddSwangpc; RV64I-LABEL: constraint_A_with_extern_weak_global_2:
257661d819ddSwangpc; RV64I:       # %bb.0:
257761d819ddSwangpc; RV64I-NEXT:    lui a0, %hi(ewg+4)
257861d819ddSwangpc; RV64I-NEXT:    addi a0, a0, %lo(ewg+4)
257961d819ddSwangpc; RV64I-NEXT:    #APP
258061d819ddSwangpc; RV64I-NEXT:    sw zero, 0(a0)
258161d819ddSwangpc; RV64I-NEXT:    #NO_APP
258261d819ddSwangpc; RV64I-NEXT:    ret
258361d819ddSwangpc;
258461d819ddSwangpc; RV32I-MEDIUM-LABEL: constraint_A_with_extern_weak_global_2:
258561d819ddSwangpc; RV32I-MEDIUM:       # %bb.0:
25864bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi29:
258761d819ddSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
25884bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi29)(a0)
258961d819ddSwangpc; RV32I-MEDIUM-NEXT:    addi a0, a0, 4
259061d819ddSwangpc; RV32I-MEDIUM-NEXT:    #APP
259161d819ddSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
259261d819ddSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
259361d819ddSwangpc; RV32I-MEDIUM-NEXT:    ret
259461d819ddSwangpc;
259561d819ddSwangpc; RV64I-MEDIUM-LABEL: constraint_A_with_extern_weak_global_2:
259661d819ddSwangpc; RV64I-MEDIUM:       # %bb.0:
25974bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi29:
259861d819ddSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
25994bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi29)(a0)
260061d819ddSwangpc; RV64I-MEDIUM-NEXT:    addi a0, a0, 4
260161d819ddSwangpc; RV64I-MEDIUM-NEXT:    #APP
260261d819ddSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
260361d819ddSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
260461d819ddSwangpc; RV64I-MEDIUM-NEXT:    ret
2605*fef84c56SJim Lin;
2606*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_A_with_extern_weak_global_2:
2607*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
2608*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi29:
2609*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI37_0)
2610*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi29)(a0)
2611*fef84c56SJim Lin; RV64I-LARGE-NEXT:    addi a0, a0, 4
2612*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2613*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
2614*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2615*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
261661d819ddSwangpc  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @ewg, i32 0, i32 1))
261761d819ddSwangpc  ret void
261861d819ddSwangpc}
261961d819ddSwangpc
262061d819ddSwangpcdefine void @constraint_A_with_extern_weak_global_3() nounwind {
262161d819ddSwangpc; RV32I-LABEL: constraint_A_with_extern_weak_global_3:
262261d819ddSwangpc; RV32I:       # %bb.0:
262361d819ddSwangpc; RV32I-NEXT:    lui a0, %hi(ewg+8000)
262461d819ddSwangpc; RV32I-NEXT:    addi a0, a0, %lo(ewg+8000)
262561d819ddSwangpc; RV32I-NEXT:    #APP
262661d819ddSwangpc; RV32I-NEXT:    sw zero, 0(a0)
262761d819ddSwangpc; RV32I-NEXT:    #NO_APP
262861d819ddSwangpc; RV32I-NEXT:    ret
262961d819ddSwangpc;
263061d819ddSwangpc; RV64I-LABEL: constraint_A_with_extern_weak_global_3:
263161d819ddSwangpc; RV64I:       # %bb.0:
263261d819ddSwangpc; RV64I-NEXT:    lui a0, %hi(ewg+8000)
263361d819ddSwangpc; RV64I-NEXT:    addi a0, a0, %lo(ewg+8000)
263461d819ddSwangpc; RV64I-NEXT:    #APP
263561d819ddSwangpc; RV64I-NEXT:    sw zero, 0(a0)
263661d819ddSwangpc; RV64I-NEXT:    #NO_APP
263761d819ddSwangpc; RV64I-NEXT:    ret
263861d819ddSwangpc;
263961d819ddSwangpc; RV32I-MEDIUM-LABEL: constraint_A_with_extern_weak_global_3:
264061d819ddSwangpc; RV32I-MEDIUM:       # %bb.0:
26414bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi30:
264261d819ddSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
26434bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi30)(a0)
264461d819ddSwangpc; RV32I-MEDIUM-NEXT:    lui a1, 2
264561d819ddSwangpc; RV32I-MEDIUM-NEXT:    addi a1, a1, -192
264661d819ddSwangpc; RV32I-MEDIUM-NEXT:    add a0, a0, a1
264761d819ddSwangpc; RV32I-MEDIUM-NEXT:    #APP
264861d819ddSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
264961d819ddSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
265061d819ddSwangpc; RV32I-MEDIUM-NEXT:    ret
265161d819ddSwangpc;
265261d819ddSwangpc; RV64I-MEDIUM-LABEL: constraint_A_with_extern_weak_global_3:
265361d819ddSwangpc; RV64I-MEDIUM:       # %bb.0:
26544bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi30:
265561d819ddSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
26564bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi30)(a0)
265761d819ddSwangpc; RV64I-MEDIUM-NEXT:    lui a1, 2
265861d819ddSwangpc; RV64I-MEDIUM-NEXT:    addiw a1, a1, -192
265961d819ddSwangpc; RV64I-MEDIUM-NEXT:    add a0, a0, a1
266061d819ddSwangpc; RV64I-MEDIUM-NEXT:    #APP
266161d819ddSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
266261d819ddSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
266361d819ddSwangpc; RV64I-MEDIUM-NEXT:    ret
2664*fef84c56SJim Lin;
2665*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_A_with_extern_weak_global_3:
2666*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
2667*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi30:
2668*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI38_0)
2669*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi30)(a0)
2670*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lui a1, 2
2671*fef84c56SJim Lin; RV64I-LARGE-NEXT:    addiw a1, a1, -192
2672*fef84c56SJim Lin; RV64I-LARGE-NEXT:    add a0, a0, a1
2673*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2674*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
2675*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2676*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
267761d819ddSwangpc  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @ewg, i32 0, i32 2000))
267861d819ddSwangpc  ret void
267961d819ddSwangpc}
268061d819ddSwangpc
268161d819ddSwangpcdefine void @constraint_A_with_multi_asm() nounwind {
268261d819ddSwangpc; RV32I-LABEL: constraint_A_with_multi_asm:
268361d819ddSwangpc; RV32I:       # %bb.0:
268461d819ddSwangpc; RV32I-NEXT:    lui a0, %hi(eg)
268561d819ddSwangpc; RV32I-NEXT:    addi a0, a0, %lo(eg)
268661d819ddSwangpc; RV32I-NEXT:    #APP
268761d819ddSwangpc; RV32I-NEXT:    sw zero, 0(a0)
268861d819ddSwangpc; RV32I-NEXT:    #NO_APP
268961d819ddSwangpc; RV32I-NEXT:    #APP
269061d819ddSwangpc; RV32I-NEXT:    sw zero, 0(a0)
269161d819ddSwangpc; RV32I-NEXT:    #NO_APP
269261d819ddSwangpc; RV32I-NEXT:    ret
269361d819ddSwangpc;
269461d819ddSwangpc; RV64I-LABEL: constraint_A_with_multi_asm:
269561d819ddSwangpc; RV64I:       # %bb.0:
269661d819ddSwangpc; RV64I-NEXT:    lui a0, %hi(eg)
269761d819ddSwangpc; RV64I-NEXT:    addi a0, a0, %lo(eg)
269861d819ddSwangpc; RV64I-NEXT:    #APP
269961d819ddSwangpc; RV64I-NEXT:    sw zero, 0(a0)
270061d819ddSwangpc; RV64I-NEXT:    #NO_APP
270161d819ddSwangpc; RV64I-NEXT:    #APP
270261d819ddSwangpc; RV64I-NEXT:    sw zero, 0(a0)
270361d819ddSwangpc; RV64I-NEXT:    #NO_APP
270461d819ddSwangpc; RV64I-NEXT:    ret
270561d819ddSwangpc;
270661d819ddSwangpc; RV32I-MEDIUM-LABEL: constraint_A_with_multi_asm:
270761d819ddSwangpc; RV32I-MEDIUM:       # %bb.0:
27084bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi31:
270961d819ddSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
27104bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi31)
271161d819ddSwangpc; RV32I-MEDIUM-NEXT:    #APP
271261d819ddSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
271361d819ddSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
271461d819ddSwangpc; RV32I-MEDIUM-NEXT:    #APP
271561d819ddSwangpc; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
271661d819ddSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
271761d819ddSwangpc; RV32I-MEDIUM-NEXT:    ret
271861d819ddSwangpc;
271961d819ddSwangpc; RV64I-MEDIUM-LABEL: constraint_A_with_multi_asm:
272061d819ddSwangpc; RV64I-MEDIUM:       # %bb.0:
27214bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi31:
272261d819ddSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
27234bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi31)
272461d819ddSwangpc; RV64I-MEDIUM-NEXT:    #APP
272561d819ddSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
272661d819ddSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
272761d819ddSwangpc; RV64I-MEDIUM-NEXT:    #APP
272861d819ddSwangpc; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
272961d819ddSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
273061d819ddSwangpc; RV64I-MEDIUM-NEXT:    ret
2731*fef84c56SJim Lin;
2732*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_A_with_multi_asm:
2733*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0:
2734*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi31:
2735*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI39_0)
2736*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi31)(a0)
2737*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2738*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
2739*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2740*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
2741*fef84c56SJim Lin; RV64I-LARGE-NEXT:    sw zero, 0(a0)
2742*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
2743*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
274461d819ddSwangpc  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) @eg)
274561d819ddSwangpc  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) @eg)
274661d819ddSwangpc  ret void
274761d819ddSwangpc}
274861d819ddSwangpc
274961d819ddSwangpcdefine i32 @constraint_A_with_callbr_multi_operands(i32 %a) {
27504bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-LABEL: constraint_A_with_callbr_multi_operands:
27514bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED:       # %bb.0: # %entry
27524bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    lui a1, %hi(eg)
27534bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    addi a1, a1, %lo(eg)
27544bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #APP
27554bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    sw zero, 0(a1); sw zero, 0(a1); beqz a0, .LBB40_2
27564bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #NO_APP
27574bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
27584bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    li a0, 0
27594bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    ret
27604bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  .LBB40_2: # Block address taken
27614bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    # %fail
27624bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    # Label of block must be emitted
27634bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    li a0, 1
27644bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    ret
276561d819ddSwangpc;
27664bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-LABEL: constraint_A_with_callbr_multi_operands:
27674bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED:       # %bb.0: # %entry
27684bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    lui a1, %hi(eg)
27694bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    addi a1, a1, %lo(eg)
27704bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #APP
27714bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    sw zero, 0(a1); sw zero, 0(a1); beqz a0, .LBB40_2
27724bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #NO_APP
27734bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
27744bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    li a0, 0
27754bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    ret
27764bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  .LBB40_2: # Block address taken
27774bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    # %fail
27784bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    # Label of block must be emitted
27794bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    li a0, 1
27804bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    ret
278161d819ddSwangpc;
27824bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-LABEL: constraint_A_with_callbr_multi_operands:
27834bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED:       # %bb.0: # %entry
27844bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi32:
27854bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
27864bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    addi a1, a1, %pcrel_lo(.Lpcrel_hi32)
27874bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
27884bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, 0(a1); sw zero, 0(a1); beqz a0, .LBB40_2
27894bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
27904bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
27914bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 0
27924bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    ret
27934bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  .LBB40_2: # Block address taken
27944bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    # %fail
27954bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    # Label of block must be emitted
27964bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 1
27974bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    ret
279861d819ddSwangpc;
27994bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-LABEL: constraint_A_with_callbr_multi_operands:
28004bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED:       # %bb.0: # %entry
28014bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi32:
28024bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
28034bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    addi a1, a1, %pcrel_lo(.Lpcrel_hi32)
28044bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
28054bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, 0(a1); sw zero, 0(a1); beqz a0, .LBB40_2
28064bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
28074bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
28084bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 0
28094bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    ret
28104bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  .LBB40_2: # Block address taken
28114bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    # %fail
28124bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    # Label of block must be emitted
28134bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 1
28144bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    ret
28154bf68aacSAnton Sidorenko;
2816*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-LABEL: constraint_A_with_callbr_multi_operands:
2817*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED:       # %bb.0: # %entry
2818*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  .Lpcrel_hi32:
2819*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(.LCPI40_0)
2820*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ld a1, %pcrel_lo(.Lpcrel_hi32)(a1)
2821*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #APP
2822*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    sw zero, 0(a1); sw zero, 0(a1); beqz a0, .LBB40_2
2823*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #NO_APP
2824*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  # %bb.1: # %normal
2825*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    li a0, 0
2826*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ret
2827*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  .LBB40_2: # Block address taken
2828*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    # %fail
2829*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    # Label of block must be emitted
2830*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    li a0, 1
2831*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ret
2832*fef84c56SJim Lin;
28334bf68aacSAnton Sidorenko; RV32I-INTEGRATED-LABEL: constraint_A_with_callbr_multi_operands:
28344bf68aacSAnton Sidorenko; RV32I-INTEGRATED:       # %bb.0: # %entry
28354bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    lui a1, %hi(eg)
28364bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    addi a1, a1, %lo(eg)
28374bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #APP
28384bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, 0(a1)
28394bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, 0(a1)
28404bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    beqz a0, .LBB40_2
28414bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #NO_APP
28424bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  # %bb.1: # %normal
28434bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    li a0, 0
28444bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    ret
28454bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  .LBB40_2: # Block address taken
28464bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    # %fail
28474bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    # Label of block must be emitted
28484bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    li a0, 1
28494bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    ret
28504bf68aacSAnton Sidorenko;
28514bf68aacSAnton Sidorenko; RV64I-INTEGRATED-LABEL: constraint_A_with_callbr_multi_operands:
28524bf68aacSAnton Sidorenko; RV64I-INTEGRATED:       # %bb.0: # %entry
28534bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    lui a1, %hi(eg)
28544bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    addi a1, a1, %lo(eg)
28554bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #APP
28564bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, 0(a1)
28574bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, 0(a1)
28584bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    beqz a0, .LBB40_2
28594bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #NO_APP
28604bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  # %bb.1: # %normal
28614bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    li a0, 0
28624bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    ret
28634bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  .LBB40_2: # Block address taken
28644bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    # %fail
28654bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    # Label of block must be emitted
28664bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    li a0, 1
28674bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    ret
28684bf68aacSAnton Sidorenko;
28694bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-LABEL: constraint_A_with_callbr_multi_operands:
28704bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED:       # %bb.0: # %entry
28714bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi32:
28724bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
28734bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    addi a1, a1, %pcrel_lo(.Lpcrel_hi32)
28744bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #APP
28754bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, 0(a1)
28764bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, 0(a1)
28774bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB40_2
28784bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
28794bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  # %bb.1: # %normal
28804bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    li a0, 0
28814bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    ret
28824bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  .LBB40_2: # Block address taken
28834bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    # %fail
28844bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    # Label of block must be emitted
28854bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    li a0, 1
28864bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    ret
28874bf68aacSAnton Sidorenko;
28884bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-LABEL: constraint_A_with_callbr_multi_operands:
28894bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED:       # %bb.0: # %entry
28904bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi32:
28914bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
28924bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    addi a1, a1, %pcrel_lo(.Lpcrel_hi32)
28934bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #APP
28944bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, 0(a1)
28954bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, 0(a1)
28964bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB40_2
28974bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
28984bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  # %bb.1: # %normal
28994bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    li a0, 0
29004bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    ret
29014bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  .LBB40_2: # Block address taken
29024bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    # %fail
29034bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    # Label of block must be emitted
29044bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    li a0, 1
29054bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    ret
2906*fef84c56SJim Lin;
2907*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-LABEL: constraint_A_with_callbr_multi_operands:
2908*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED:       # %bb.0: # %entry
2909*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  .Lpcrel_hi32:
2910*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(.LCPI40_0)
2911*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ld a1, %pcrel_lo(.Lpcrel_hi32)(a1)
2912*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #APP
2913*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a1)
2914*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a1)
2915*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    beqz a0, .LBB40_2
2916*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #NO_APP
2917*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  # %bb.1: # %normal
2918*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    li a0, 0
2919*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ret
2920*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  .LBB40_2: # Block address taken
2921*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    # %fail
2922*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    # Label of block must be emitted
2923*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    li a0, 1
2924*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ret
292561d819ddSwangpcentry:
292661d819ddSwangpc  callbr void asm "sw zero, $0; sw zero, $1; beqz $2, $3", "*A,*A,r,!i"(ptr elementtype(i32) @eg, ptr elementtype(i32) @eg, i32 %a) to label %normal [label %fail]
292761d819ddSwangpc
292861d819ddSwangpcnormal:
292961d819ddSwangpc  ret i32 0
293061d819ddSwangpc
293161d819ddSwangpcfail:
293261d819ddSwangpc  ret i32 1
293361d819ddSwangpc}
293461d819ddSwangpc
293561d819ddSwangpcdefine i32 @constraint_A_with_multi_callbr_asm(i32 %a) {
29364bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-LABEL: constraint_A_with_multi_callbr_asm:
29374bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED:       # %bb.0: # %entry
29384bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    lui a1, %hi(eg)
29394bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    addi a1, a1, %lo(eg)
29404bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #APP
29414bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB41_3
29424bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #NO_APP
29434bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
29444bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #APP
29454bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB41_3
29464bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    #NO_APP
29474bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
29484bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    li a0, 0
29494bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    ret
29504bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:  .LBB41_3: # Block address taken
29514bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    # %fail
29524bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    # Label of block must be emitted
29534bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    li a0, 1
29544bf68aacSAnton Sidorenko; RV32I-NO-INTEGRATED-NEXT:    ret
295561d819ddSwangpc;
29564bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-LABEL: constraint_A_with_multi_callbr_asm:
29574bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED:       # %bb.0: # %entry
29584bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    lui a1, %hi(eg)
29594bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    addi a1, a1, %lo(eg)
29604bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #APP
29614bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB41_3
29624bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #NO_APP
29634bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
29644bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #APP
29654bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB41_3
29664bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    #NO_APP
29674bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
29684bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    li a0, 0
29694bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    ret
29704bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:  .LBB41_3: # Block address taken
29714bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    # %fail
29724bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    # Label of block must be emitted
29734bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    li a0, 1
29744bf68aacSAnton Sidorenko; RV64I-NO-INTEGRATED-NEXT:    ret
297561d819ddSwangpc;
29764bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-LABEL: constraint_A_with_multi_callbr_asm:
29774bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED:       # %bb.0: # %entry
29784bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi33:
29794bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
29804bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    addi a1, a1, %pcrel_lo(.Lpcrel_hi33)
29814bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
29824bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB41_3
29834bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
29844bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
29854bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
29864bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB41_3
29874bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
29884bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
29894bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 0
29904bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    ret
29914bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:  .LBB41_3: # Block address taken
29924bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    # %fail
29934bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    # Label of block must be emitted
29944bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 1
29954bf68aacSAnton Sidorenko; RV32I-MEDIUM-NO-INTEGRATED-NEXT:    ret
299661d819ddSwangpc;
29974bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-LABEL: constraint_A_with_multi_callbr_asm:
29984bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED:       # %bb.0: # %entry
29994bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  .Lpcrel_hi33:
30004bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
30014bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    addi a1, a1, %pcrel_lo(.Lpcrel_hi33)
30024bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
30034bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB41_3
30044bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
30054bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
30064bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #APP
30074bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB41_3
30084bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    #NO_APP
30094bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
30104bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 0
30114bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    ret
30124bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:  .LBB41_3: # Block address taken
30134bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    # %fail
30144bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    # Label of block must be emitted
30154bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    li a0, 1
30164bf68aacSAnton Sidorenko; RV64I-MEDIUM-NO-INTEGRATED-NEXT:    ret
30174bf68aacSAnton Sidorenko;
3018*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-LABEL: constraint_A_with_multi_callbr_asm:
3019*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED:       # %bb.0: # %entry
3020*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  .Lpcrel_hi33:
3021*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(.LCPI41_0)
3022*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ld a1, %pcrel_lo(.Lpcrel_hi33)(a1)
3023*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #APP
3024*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB41_3
3025*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #NO_APP
3026*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  # %bb.1: # %normal0
3027*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #APP
3028*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    sw zero, 0(a1); beqz a0, .LBB41_3
3029*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    #NO_APP
3030*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  # %bb.2: # %normal1
3031*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    li a0, 0
3032*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ret
3033*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:  .LBB41_3: # Block address taken
3034*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    # %fail
3035*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    # Label of block must be emitted
3036*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    li a0, 1
3037*fef84c56SJim Lin; RV64I-LARGE-NO-INTEGRATED-NEXT:    ret
3038*fef84c56SJim Lin;
30394bf68aacSAnton Sidorenko; RV32I-INTEGRATED-LABEL: constraint_A_with_multi_callbr_asm:
30404bf68aacSAnton Sidorenko; RV32I-INTEGRATED:       # %bb.0: # %entry
30414bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    lui a1, %hi(eg)
30424bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    addi a1, a1, %lo(eg)
30434bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #APP
30444bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, 0(a1)
30454bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    beqz a0, .LBB41_3
30464bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #NO_APP
30474bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  # %bb.1: # %normal0
30484bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #APP
30494bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    sw zero, 0(a1)
30504bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    beqz a0, .LBB41_3
30514bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    #NO_APP
30524bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  # %bb.2: # %normal1
30534bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    li a0, 0
30544bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    ret
30554bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:  .LBB41_3: # Block address taken
30564bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    # %fail
30574bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    # Label of block must be emitted
30584bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    li a0, 1
30594bf68aacSAnton Sidorenko; RV32I-INTEGRATED-NEXT:    ret
30604bf68aacSAnton Sidorenko;
30614bf68aacSAnton Sidorenko; RV64I-INTEGRATED-LABEL: constraint_A_with_multi_callbr_asm:
30624bf68aacSAnton Sidorenko; RV64I-INTEGRATED:       # %bb.0: # %entry
30634bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    lui a1, %hi(eg)
30644bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    addi a1, a1, %lo(eg)
30654bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #APP
30664bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, 0(a1)
30674bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    beqz a0, .LBB41_3
30684bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #NO_APP
30694bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  # %bb.1: # %normal0
30704bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #APP
30714bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    sw zero, 0(a1)
30724bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    beqz a0, .LBB41_3
30734bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    #NO_APP
30744bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  # %bb.2: # %normal1
30754bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    li a0, 0
30764bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    ret
30774bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:  .LBB41_3: # Block address taken
30784bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    # %fail
30794bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    # Label of block must be emitted
30804bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    li a0, 1
30814bf68aacSAnton Sidorenko; RV64I-INTEGRATED-NEXT:    ret
30824bf68aacSAnton Sidorenko;
30834bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-LABEL: constraint_A_with_multi_callbr_asm:
30844bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED:       # %bb.0: # %entry
30854bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi33:
30864bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
30874bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    addi a1, a1, %pcrel_lo(.Lpcrel_hi33)
30884bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #APP
30894bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, 0(a1)
30904bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB41_3
30914bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
30924bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  # %bb.1: # %normal0
30934bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #APP
30944bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    sw zero, 0(a1)
30954bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB41_3
30964bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
30974bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  # %bb.2: # %normal1
30984bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    li a0, 0
30994bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    ret
31004bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:  .LBB41_3: # Block address taken
31014bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    # %fail
31024bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    # Label of block must be emitted
31034bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    li a0, 1
31044bf68aacSAnton Sidorenko; RV32I-MEDIUM-INTEGRATED-NEXT:    ret
31054bf68aacSAnton Sidorenko;
31064bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-LABEL: constraint_A_with_multi_callbr_asm:
31074bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED:       # %bb.0: # %entry
31084bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  .Lpcrel_hi33:
31094bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(eg)
31104bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    addi a1, a1, %pcrel_lo(.Lpcrel_hi33)
31114bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #APP
31124bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, 0(a1)
31134bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB41_3
31144bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
31154bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  # %bb.1: # %normal0
31164bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #APP
31174bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    sw zero, 0(a1)
31184bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    beqz a0, .LBB41_3
31194bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    #NO_APP
31204bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  # %bb.2: # %normal1
31214bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    li a0, 0
31224bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    ret
31234bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:  .LBB41_3: # Block address taken
31244bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    # %fail
31254bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    # Label of block must be emitted
31264bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    li a0, 1
31274bf68aacSAnton Sidorenko; RV64I-MEDIUM-INTEGRATED-NEXT:    ret
3128*fef84c56SJim Lin;
3129*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-LABEL: constraint_A_with_multi_callbr_asm:
3130*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED:       # %bb.0: # %entry
3131*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  .Lpcrel_hi33:
3132*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    auipc a1, %pcrel_hi(.LCPI41_0)
3133*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ld a1, %pcrel_lo(.Lpcrel_hi33)(a1)
3134*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #APP
3135*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a1)
3136*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    beqz a0, .LBB41_3
3137*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #NO_APP
3138*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  # %bb.1: # %normal0
3139*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #APP
3140*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    sw zero, 0(a1)
3141*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    beqz a0, .LBB41_3
3142*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    #NO_APP
3143*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  # %bb.2: # %normal1
3144*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    li a0, 0
3145*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ret
3146*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:  .LBB41_3: # Block address taken
3147*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    # %fail
3148*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    # Label of block must be emitted
3149*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    li a0, 1
3150*fef84c56SJim Lin; RV64I-LARGE-INTEGRATED-NEXT:    ret
315161d819ddSwangpcentry:
315261d819ddSwangpc  callbr void asm "sw zero, $0; beqz $1, $2", "=*A,r,!i"(ptr elementtype(i32) @eg, i32 %a) to label %normal0 [label %fail]
315361d819ddSwangpc
315461d819ddSwangpcnormal0:
315561d819ddSwangpc  callbr void asm "sw zero, $0; beqz $1, $2", "=*A,r,!i"(ptr elementtype(i32) @eg, i32 %a) to label %normal1 [label %fail]
315661d819ddSwangpc
315761d819ddSwangpcnormal1:
315861d819ddSwangpc  ret i32 0
315961d819ddSwangpc
316061d819ddSwangpcfail:
316161d819ddSwangpc  ret i32 1
316261d819ddSwangpc}
316361d819ddSwangpc
316461d819ddSwangpcdefine void @constraint_A_with_local_1() nounwind {
316561d819ddSwangpc; RV32I-LABEL: constraint_A_with_local_1:
316661d819ddSwangpc; RV32I:       # %bb.0: # %entry
316761d819ddSwangpc; RV32I-NEXT:  .Ltmp6: # Block address taken
316861d819ddSwangpc; RV32I-NEXT:  # %bb.1: # %label
316961d819ddSwangpc; RV32I-NEXT:    lui a0, %hi(.Ltmp6)
317061d819ddSwangpc; RV32I-NEXT:    addi a0, a0, %lo(.Ltmp6)
317161d819ddSwangpc; RV32I-NEXT:    #APP
317261d819ddSwangpc; RV32I-NEXT:    lw zero, 0(a0)
317361d819ddSwangpc; RV32I-NEXT:    #NO_APP
317461d819ddSwangpc; RV32I-NEXT:    ret
317561d819ddSwangpc;
317661d819ddSwangpc; RV64I-LABEL: constraint_A_with_local_1:
317761d819ddSwangpc; RV64I:       # %bb.0: # %entry
317861d819ddSwangpc; RV64I-NEXT:  .Ltmp6: # Block address taken
317961d819ddSwangpc; RV64I-NEXT:  # %bb.1: # %label
318061d819ddSwangpc; RV64I-NEXT:    lui a0, %hi(.Ltmp6)
318161d819ddSwangpc; RV64I-NEXT:    addi a0, a0, %lo(.Ltmp6)
318261d819ddSwangpc; RV64I-NEXT:    #APP
318361d819ddSwangpc; RV64I-NEXT:    lw zero, 0(a0)
318461d819ddSwangpc; RV64I-NEXT:    #NO_APP
318561d819ddSwangpc; RV64I-NEXT:    ret
318661d819ddSwangpc;
318761d819ddSwangpc; RV32I-MEDIUM-LABEL: constraint_A_with_local_1:
318861d819ddSwangpc; RV32I-MEDIUM:       # %bb.0: # %entry
318961d819ddSwangpc; RV32I-MEDIUM-NEXT:  .Ltmp6: # Block address taken
319061d819ddSwangpc; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
31914bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi34:
319261d819ddSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp6)
31934bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi34)
319461d819ddSwangpc; RV32I-MEDIUM-NEXT:    #APP
319561d819ddSwangpc; RV32I-MEDIUM-NEXT:    lw zero, 0(a0)
319661d819ddSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
319761d819ddSwangpc; RV32I-MEDIUM-NEXT:    ret
319861d819ddSwangpc;
319961d819ddSwangpc; RV64I-MEDIUM-LABEL: constraint_A_with_local_1:
320061d819ddSwangpc; RV64I-MEDIUM:       # %bb.0: # %entry
320161d819ddSwangpc; RV64I-MEDIUM-NEXT:  .Ltmp6: # Block address taken
320261d819ddSwangpc; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
32034bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi34:
320461d819ddSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp6)
32054bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi34)
320661d819ddSwangpc; RV64I-MEDIUM-NEXT:    #APP
320761d819ddSwangpc; RV64I-MEDIUM-NEXT:    lw zero, 0(a0)
320861d819ddSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
320961d819ddSwangpc; RV64I-MEDIUM-NEXT:    ret
3210*fef84c56SJim Lin;
3211*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_A_with_local_1:
3212*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0: # %entry
3213*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Ltmp6: # Block address taken
3214*fef84c56SJim Lin; RV64I-LARGE-NEXT:  # %bb.1: # %label
3215*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi34:
3216*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.Ltmp6)
3217*fef84c56SJim Lin; RV64I-LARGE-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi34)
3218*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
3219*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw zero, 0(a0)
3220*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
3221*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
322261d819ddSwangpcentry:
322361d819ddSwangpc  br label %label
322461d819ddSwangpc
322561d819ddSwangpclabel:
322661d819ddSwangpc  tail call void asm sideeffect "lw zero, $0", "*A"(ptr elementtype(ptr) blockaddress(@constraint_A_with_local_1, %label))
322761d819ddSwangpc  ret void
322861d819ddSwangpc}
322961d819ddSwangpc
323061d819ddSwangpcdefine void @constraint_A_with_local_2() nounwind {
323161d819ddSwangpc; RV32I-LABEL: constraint_A_with_local_2:
323261d819ddSwangpc; RV32I:       # %bb.0: # %entry
323361d819ddSwangpc; RV32I-NEXT:  .Ltmp7: # Block address taken
323461d819ddSwangpc; RV32I-NEXT:  # %bb.1: # %label
323561d819ddSwangpc; RV32I-NEXT:    lui a0, %hi(.Ltmp7+4)
323661d819ddSwangpc; RV32I-NEXT:    addi a0, a0, %lo(.Ltmp7+4)
323761d819ddSwangpc; RV32I-NEXT:    #APP
323861d819ddSwangpc; RV32I-NEXT:    lw zero, 0(a0)
323961d819ddSwangpc; RV32I-NEXT:    #NO_APP
324061d819ddSwangpc; RV32I-NEXT:    ret
324161d819ddSwangpc;
324261d819ddSwangpc; RV64I-LABEL: constraint_A_with_local_2:
324361d819ddSwangpc; RV64I:       # %bb.0: # %entry
324461d819ddSwangpc; RV64I-NEXT:  .Ltmp7: # Block address taken
324561d819ddSwangpc; RV64I-NEXT:  # %bb.1: # %label
324661d819ddSwangpc; RV64I-NEXT:    lui a0, %hi(.Ltmp7+4)
324761d819ddSwangpc; RV64I-NEXT:    addi a0, a0, %lo(.Ltmp7+4)
324861d819ddSwangpc; RV64I-NEXT:    #APP
324961d819ddSwangpc; RV64I-NEXT:    lw zero, 0(a0)
325061d819ddSwangpc; RV64I-NEXT:    #NO_APP
325161d819ddSwangpc; RV64I-NEXT:    ret
325261d819ddSwangpc;
325361d819ddSwangpc; RV32I-MEDIUM-LABEL: constraint_A_with_local_2:
325461d819ddSwangpc; RV32I-MEDIUM:       # %bb.0: # %entry
325561d819ddSwangpc; RV32I-MEDIUM-NEXT:  .Ltmp7: # Block address taken
325661d819ddSwangpc; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
32574bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi35:
325861d819ddSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp7+4)
32594bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi35)
326061d819ddSwangpc; RV32I-MEDIUM-NEXT:    #APP
326161d819ddSwangpc; RV32I-MEDIUM-NEXT:    lw zero, 0(a0)
326261d819ddSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
326361d819ddSwangpc; RV32I-MEDIUM-NEXT:    ret
326461d819ddSwangpc;
326561d819ddSwangpc; RV64I-MEDIUM-LABEL: constraint_A_with_local_2:
326661d819ddSwangpc; RV64I-MEDIUM:       # %bb.0: # %entry
326761d819ddSwangpc; RV64I-MEDIUM-NEXT:  .Ltmp7: # Block address taken
326861d819ddSwangpc; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
32694bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi35:
327061d819ddSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp7+4)
32714bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi35)
327261d819ddSwangpc; RV64I-MEDIUM-NEXT:    #APP
327361d819ddSwangpc; RV64I-MEDIUM-NEXT:    lw zero, 0(a0)
327461d819ddSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
327561d819ddSwangpc; RV64I-MEDIUM-NEXT:    ret
3276*fef84c56SJim Lin;
3277*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_A_with_local_2:
3278*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0: # %entry
3279*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Ltmp7: # Block address taken
3280*fef84c56SJim Lin; RV64I-LARGE-NEXT:  # %bb.1: # %label
3281*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi35:
3282*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.Ltmp7+4)
3283*fef84c56SJim Lin; RV64I-LARGE-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi35)
3284*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
3285*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw zero, 0(a0)
3286*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
3287*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
328861d819ddSwangpcentry:
328961d819ddSwangpc  br label %label
329061d819ddSwangpc
329161d819ddSwangpclabel:
329261d819ddSwangpc  call void asm "lw zero, $0", "*A"(ptr elementtype(i32) getelementptr (i8, ptr blockaddress(@constraint_A_with_local_2, %label), i32 4))
329361d819ddSwangpc  ret void
329461d819ddSwangpc}
329561d819ddSwangpc
329661d819ddSwangpcdefine void @constraint_A_with_local_3() nounwind {
329761d819ddSwangpc; RV32I-LABEL: constraint_A_with_local_3:
329861d819ddSwangpc; RV32I:       # %bb.0: # %entry
329961d819ddSwangpc; RV32I-NEXT:  .Ltmp8: # Block address taken
330061d819ddSwangpc; RV32I-NEXT:  # %bb.1: # %label
330161d819ddSwangpc; RV32I-NEXT:    lui a0, %hi(.Ltmp8+2000)
330261d819ddSwangpc; RV32I-NEXT:    addi a0, a0, %lo(.Ltmp8+2000)
330361d819ddSwangpc; RV32I-NEXT:    #APP
330461d819ddSwangpc; RV32I-NEXT:    lw zero, 0(a0)
330561d819ddSwangpc; RV32I-NEXT:    #NO_APP
330661d819ddSwangpc; RV32I-NEXT:    ret
330761d819ddSwangpc;
330861d819ddSwangpc; RV64I-LABEL: constraint_A_with_local_3:
330961d819ddSwangpc; RV64I:       # %bb.0: # %entry
331061d819ddSwangpc; RV64I-NEXT:  .Ltmp8: # Block address taken
331161d819ddSwangpc; RV64I-NEXT:  # %bb.1: # %label
331261d819ddSwangpc; RV64I-NEXT:    lui a0, %hi(.Ltmp8+2000)
331361d819ddSwangpc; RV64I-NEXT:    addi a0, a0, %lo(.Ltmp8+2000)
331461d819ddSwangpc; RV64I-NEXT:    #APP
331561d819ddSwangpc; RV64I-NEXT:    lw zero, 0(a0)
331661d819ddSwangpc; RV64I-NEXT:    #NO_APP
331761d819ddSwangpc; RV64I-NEXT:    ret
331861d819ddSwangpc;
331961d819ddSwangpc; RV32I-MEDIUM-LABEL: constraint_A_with_local_3:
332061d819ddSwangpc; RV32I-MEDIUM:       # %bb.0: # %entry
332161d819ddSwangpc; RV32I-MEDIUM-NEXT:  .Ltmp8: # Block address taken
332261d819ddSwangpc; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
33234bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi36:
332461d819ddSwangpc; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp8+2000)
33254bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi36)
332661d819ddSwangpc; RV32I-MEDIUM-NEXT:    #APP
332761d819ddSwangpc; RV32I-MEDIUM-NEXT:    lw zero, 0(a0)
332861d819ddSwangpc; RV32I-MEDIUM-NEXT:    #NO_APP
332961d819ddSwangpc; RV32I-MEDIUM-NEXT:    ret
333061d819ddSwangpc;
333161d819ddSwangpc; RV64I-MEDIUM-LABEL: constraint_A_with_local_3:
333261d819ddSwangpc; RV64I-MEDIUM:       # %bb.0: # %entry
333361d819ddSwangpc; RV64I-MEDIUM-NEXT:  .Ltmp8: # Block address taken
333461d819ddSwangpc; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
33354bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi36:
333661d819ddSwangpc; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp8+2000)
33374bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi36)
333861d819ddSwangpc; RV64I-MEDIUM-NEXT:    #APP
333961d819ddSwangpc; RV64I-MEDIUM-NEXT:    lw zero, 0(a0)
334061d819ddSwangpc; RV64I-MEDIUM-NEXT:    #NO_APP
334161d819ddSwangpc; RV64I-MEDIUM-NEXT:    ret
3342*fef84c56SJim Lin;
3343*fef84c56SJim Lin; RV64I-LARGE-LABEL: constraint_A_with_local_3:
3344*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0: # %entry
3345*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Ltmp8: # Block address taken
3346*fef84c56SJim Lin; RV64I-LARGE-NEXT:  # %bb.1: # %label
3347*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi36:
3348*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.Ltmp8+2000)
3349*fef84c56SJim Lin; RV64I-LARGE-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi36)
3350*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
3351*fef84c56SJim Lin; RV64I-LARGE-NEXT:    lw zero, 0(a0)
3352*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
3353*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
335461d819ddSwangpcentry:
335561d819ddSwangpc  br label %label
335661d819ddSwangpc
335761d819ddSwangpclabel:
335861d819ddSwangpc  call void asm "lw zero, $0", "*A"(ptr elementtype(i32) getelementptr (i8, ptr blockaddress(@constraint_A_with_local_3, %label), i32 2000))
335961d819ddSwangpc  ret void
336061d819ddSwangpc}
3361c901b739SCraig Topper
3362c901b739SCraig Topper@_ZN5repro9MY_BUFFER17hb0f674501d5980a6E = external global <{ [16 x i8] }>
3363c901b739SCraig Topper
3364c901b739SCraig Topper; Address is not used by a memory constraint.
3365c901b739SCraig Topperdefine void @should_not_fold() {
3366c901b739SCraig Topper; RV32I-LABEL: should_not_fold:
3367c901b739SCraig Topper; RV32I:       # %bb.0: # %start
3368c901b739SCraig Topper; RV32I-NEXT:    lui a0, %hi(_ZN5repro9MY_BUFFER17hb0f674501d5980a6E)
3369c901b739SCraig Topper; RV32I-NEXT:    addi a0, a0, %lo(_ZN5repro9MY_BUFFER17hb0f674501d5980a6E)
3370c901b739SCraig Topper; RV32I-NEXT:    #APP
3371c901b739SCraig Topper; RV32I-NEXT:    ecall
3372c901b739SCraig Topper; RV32I-NEXT:    #NO_APP
3373c901b739SCraig Topper; RV32I-NEXT:    ret
3374c901b739SCraig Topper;
3375c901b739SCraig Topper; RV64I-LABEL: should_not_fold:
3376c901b739SCraig Topper; RV64I:       # %bb.0: # %start
3377c901b739SCraig Topper; RV64I-NEXT:    lui a0, %hi(_ZN5repro9MY_BUFFER17hb0f674501d5980a6E)
3378c901b739SCraig Topper; RV64I-NEXT:    addi a0, a0, %lo(_ZN5repro9MY_BUFFER17hb0f674501d5980a6E)
3379c901b739SCraig Topper; RV64I-NEXT:    #APP
3380c901b739SCraig Topper; RV64I-NEXT:    ecall
3381c901b739SCraig Topper; RV64I-NEXT:    #NO_APP
3382c901b739SCraig Topper; RV64I-NEXT:    ret
3383c901b739SCraig Topper;
3384c901b739SCraig Topper; RV32I-MEDIUM-LABEL: should_not_fold:
3385c901b739SCraig Topper; RV32I-MEDIUM:       # %bb.0: # %start
33864bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:  .Lpcrel_hi37:
3387c901b739SCraig Topper; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(_ZN5repro9MY_BUFFER17hb0f674501d5980a6E)
33884bf68aacSAnton Sidorenko; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi37)
3389c901b739SCraig Topper; RV32I-MEDIUM-NEXT:    #APP
3390c901b739SCraig Topper; RV32I-MEDIUM-NEXT:    ecall
3391c901b739SCraig Topper; RV32I-MEDIUM-NEXT:    #NO_APP
3392c901b739SCraig Topper; RV32I-MEDIUM-NEXT:    ret
3393c901b739SCraig Topper;
3394c901b739SCraig Topper; RV64I-MEDIUM-LABEL: should_not_fold:
3395c901b739SCraig Topper; RV64I-MEDIUM:       # %bb.0: # %start
33964bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:  .Lpcrel_hi37:
3397c901b739SCraig Topper; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(_ZN5repro9MY_BUFFER17hb0f674501d5980a6E)
33984bf68aacSAnton Sidorenko; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi37)
3399c901b739SCraig Topper; RV64I-MEDIUM-NEXT:    #APP
3400c901b739SCraig Topper; RV64I-MEDIUM-NEXT:    ecall
3401c901b739SCraig Topper; RV64I-MEDIUM-NEXT:    #NO_APP
3402c901b739SCraig Topper; RV64I-MEDIUM-NEXT:    ret
3403*fef84c56SJim Lin;
3404*fef84c56SJim Lin; RV64I-LARGE-LABEL: should_not_fold:
3405*fef84c56SJim Lin; RV64I-LARGE:       # %bb.0: # %start
3406*fef84c56SJim Lin; RV64I-LARGE-NEXT:  .Lpcrel_hi37:
3407*fef84c56SJim Lin; RV64I-LARGE-NEXT:    auipc a0, %pcrel_hi(.LCPI45_0)
3408*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi37)(a0)
3409*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #APP
3410*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ecall
3411*fef84c56SJim Lin; RV64I-LARGE-NEXT:    #NO_APP
3412*fef84c56SJim Lin; RV64I-LARGE-NEXT:    ret
3413c901b739SCraig Topperstart:
3414c901b739SCraig Topper  %0 = tail call ptr asm sideeffect alignstack "ecall", "=&{x10},0,~{vtype},~{vl},~{vxsat},~{vxrm},~{memory}"(ptr @_ZN5repro9MY_BUFFER17hb0f674501d5980a6E)
3415c901b739SCraig Topper  ret void
3416c901b739SCraig Topper}
3417