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