; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=riscv32 -verify-machineinstrs -no-integrated-as < %s \
; RUN:   | FileCheck -check-prefixes=RV32I %s
; RUN: llc -mtriple=riscv64 -verify-machineinstrs -no-integrated-as < %s \
; RUN:   | FileCheck -check-prefixes=RV64I %s
; RUN: llc -mtriple=riscv32 -code-model=medium -verify-machineinstrs -no-integrated-as < %s \
; RUN:   | FileCheck -check-prefixes=RV32I-MEDIUM %s
; RUN: llc -mtriple=riscv64 -code-model=medium -verify-machineinstrs -no-integrated-as < %s \
; RUN:   | FileCheck -check-prefixes=RV64I-MEDIUM %s

@eg = external global [4000 x i32], align 4
@ewg = extern_weak global [4000 x i32], align 4

define void @constraint_m_1(ptr %a) nounwind {
; RV32I-LABEL: constraint_m_1:
; RV32I:       # %bb.0:
; RV32I-NEXT:    #APP
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_1:
; RV64I:       # %bb.0:
; RV64I-NEXT:    #APP
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_1:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_1:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm sideeffect "", "=*m"(ptr elementtype(i32) %a)
  ret void
}

define i32 @constraint_m_2(ptr %a) nounwind {
; RV32I-LABEL: constraint_m_2:
; RV32I:       # %bb.0:
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw a0, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_2:
; RV64I:       # %bb.0:
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw a0, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_2:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw a0, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_2:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw a0, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  %1 = tail call i32 asm "lw $0, $1", "=r,*m"(ptr elementtype(i32) %a)
  ret i32 %1
}

define i32 @constraint_m_with_offset(ptr %a) nounwind {
; RV32I-LABEL: constraint_m_with_offset:
; RV32I:       # %bb.0:
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw a0, 4(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_offset:
; RV64I:       # %bb.0:
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw a0, 4(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_offset:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw a0, 4(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_offset:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw a0, 4(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  %1 = getelementptr i32, ptr %a, i32 1
  %2 = tail call i32 asm "lw $0, $1", "=r,*m"(ptr elementtype(i32) %1)
  ret i32 %2
}

define void @constraint_m_with_global_1() nounwind {
; RV32I-LABEL: constraint_m_with_global_1:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_global_1:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_global_1:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi0:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi0)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_global_1:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi0:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi0)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) @eg)
  ret void
}

define void @constraint_m_with_global_2() nounwind {
; RV32I-LABEL: constraint_m_with_global_2:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg+4)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg+4)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_global_2:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg+4)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg+4)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_global_2:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi1:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+4)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi1)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_global_2:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi1:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+4)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi1)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @eg, i32 0, i32 1))
  ret void
}

define void @constraint_m_with_global_3() nounwind {
; RV32I-LABEL: constraint_m_with_global_3:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg+8000)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg+8000)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_global_3:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg+8000)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg+8000)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_global_3:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi2:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+8000)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi2)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_global_3:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi2:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+8000)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi2)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @eg, i32 0, i32 2000))
  ret void
}

define void @constraint_m_with_extern_weak_global_1() nounwind {
; RV32I-LABEL: constraint_m_with_extern_weak_global_1:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(ewg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(ewg)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_extern_weak_global_1:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(ewg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(ewg)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_extern_weak_global_1:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi3:
; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi3)(a0)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_extern_weak_global_1:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi3:
; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi3)(a0)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) @ewg)
  ret void
}

define void @constraint_m_with_extern_weak_global_2() nounwind {
; RV32I-LABEL: constraint_m_with_extern_weak_global_2:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(ewg+4)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(ewg+4)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_extern_weak_global_2:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(ewg+4)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(ewg+4)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_extern_weak_global_2:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi4:
; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi4)(a0)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 4(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_extern_weak_global_2:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi4:
; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi4)(a0)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 4(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @ewg, i32 0, i32 1))
  ret void
}

define void @constraint_m_with_extern_weak_global_3() nounwind {
; RV32I-LABEL: constraint_m_with_extern_weak_global_3:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(ewg+8000)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(ewg+8000)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_extern_weak_global_3:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(ewg+8000)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(ewg+8000)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_extern_weak_global_3:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi5:
; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi5)(a0)
; RV32I-MEDIUM-NEXT:    lui a1, 2
; RV32I-MEDIUM-NEXT:    addi a1, a1, -192
; RV32I-MEDIUM-NEXT:    add a0, a0, a1
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_extern_weak_global_3:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi5:
; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi5)(a0)
; RV64I-MEDIUM-NEXT:    lui a1, 2
; RV64I-MEDIUM-NEXT:    addiw a1, a1, -192
; RV64I-MEDIUM-NEXT:    add a0, a0, a1
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @ewg, i32 0, i32 2000))
  ret void
}

define void @constraint_m_with_local_1() nounwind {
; RV32I-LABEL: constraint_m_with_local_1:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:  .Ltmp0: # Block address taken
; RV32I-NEXT:  # %bb.1: # %label
; RV32I-NEXT:    lui a0, %hi(.Ltmp0)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw zero, %lo(.Ltmp0)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_local_1:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:  .Ltmp0: # Block address taken
; RV64I-NEXT:  # %bb.1: # %label
; RV64I-NEXT:    lui a0, %hi(.Ltmp0)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw zero, %lo(.Ltmp0)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_local_1:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Ltmp0: # Block address taken
; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi6:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp0)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi6)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_local_1:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Ltmp0: # Block address taken
; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi6:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp0)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi6)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
entry:
  br label %label

label:
  tail call void asm sideeffect "lw zero, $0", "*m"(ptr elementtype(ptr) blockaddress(@constraint_m_with_local_1, %label))
  ret void
}

define void @constraint_m_with_local_2() nounwind {
; RV32I-LABEL: constraint_m_with_local_2:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:  .Ltmp1: # Block address taken
; RV32I-NEXT:  # %bb.1: # %label
; RV32I-NEXT:    lui a0, %hi(.Ltmp1+4)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw zero, %lo(.Ltmp1+4)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_local_2:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:  .Ltmp1: # Block address taken
; RV64I-NEXT:  # %bb.1: # %label
; RV64I-NEXT:    lui a0, %hi(.Ltmp1+4)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw zero, %lo(.Ltmp1+4)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_local_2:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Ltmp1: # Block address taken
; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi7:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp1+4)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi7)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_local_2:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Ltmp1: # Block address taken
; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi7:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp1+4)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi7)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
entry:
  br label %label

label:
  call void asm "lw zero, $0", "*m"(ptr elementtype(i32) getelementptr (i8, ptr blockaddress(@constraint_m_with_local_2, %label), i32 4))
  ret void
}

define void @constraint_m_with_local_3() nounwind {
; RV32I-LABEL: constraint_m_with_local_3:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:  .Ltmp2: # Block address taken
; RV32I-NEXT:  # %bb.1: # %label
; RV32I-NEXT:    lui a0, %hi(.Ltmp2+2000)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw zero, %lo(.Ltmp2+2000)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_local_3:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:  .Ltmp2: # Block address taken
; RV64I-NEXT:  # %bb.1: # %label
; RV64I-NEXT:    lui a0, %hi(.Ltmp2+2000)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw zero, %lo(.Ltmp2+2000)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_local_3:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Ltmp2: # Block address taken
; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi8:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp2+2000)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi8)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_local_3:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Ltmp2: # Block address taken
; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi8:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp2+2000)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi8)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
entry:
  br label %label

label:
  call void asm "lw zero, $0", "*m"(ptr elementtype(i32) getelementptr (i8, ptr blockaddress(@constraint_m_with_local_3, %label), i32 2000))
  ret void
}

define void @constraint_m_with_multi_operands() nounwind {
; RV32I-LABEL: constraint_m_with_multi_operands:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a0); sw zero, %lo(eg)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_multi_operands:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a0); sw zero, %lo(eg)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_multi_operands:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi9:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi9)(a0); sw zero, %pcrel_lo(.Lpcrel_hi9)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_multi_operands:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi9:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi9)(a0); sw zero, %pcrel_lo(.Lpcrel_hi9)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0; sw zero, $1", "=*m,=*m"(ptr elementtype(i32) @eg, ptr elementtype(i32) @eg)
  ret void
}

define void @constraint_m_with_multi_asm() nounwind {
; RV32I-LABEL: constraint_m_with_multi_asm:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_multi_asm:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_multi_asm:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi10:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi10)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi10)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_multi_asm:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi10:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi10)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi10)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) @eg)
  call void asm "sw zero, $0", "=*m"(ptr elementtype(i32) @eg)
  ret void
}

define i32 @constraint_m_with_callbr_multi_operands(i32 %a) {
; RV32I-LABEL: constraint_m_with_callbr_multi_operands:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:    lui a1, %hi(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a1); sw zero, %lo(eg)(a1); beqz a0, .LBB14_2
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:  # %bb.1: # %normal
; RV32I-NEXT:    li a0, 0
; RV32I-NEXT:    ret
; RV32I-NEXT:  .LBB14_2: # Block address taken
; RV32I-NEXT:    # %fail
; RV32I-NEXT:    # Label of block must be emitted
; RV32I-NEXT:    li a0, 1
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_callbr_multi_operands:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:    lui a1, %hi(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a1); sw zero, %lo(eg)(a1); beqz a0, .LBB14_2
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:  # %bb.1: # %normal
; RV64I-NEXT:    li a0, 0
; RV64I-NEXT:    ret
; RV64I-NEXT:  .LBB14_2: # Block address taken
; RV64I-NEXT:    # %fail
; RV64I-NEXT:    # Label of block must be emitted
; RV64I-NEXT:    li a0, 1
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_callbr_multi_operands:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi11:
; RV32I-MEDIUM-NEXT:    auipc a1, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi11)(a1); sw zero, %pcrel_lo(.Lpcrel_hi11)(a1); beqz a0, .LBB14_2
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:  # %bb.1: # %normal
; RV32I-MEDIUM-NEXT:    li a0, 0
; RV32I-MEDIUM-NEXT:    ret
; RV32I-MEDIUM-NEXT:  .LBB14_2: # Block address taken
; RV32I-MEDIUM-NEXT:    # %fail
; RV32I-MEDIUM-NEXT:    # Label of block must be emitted
; RV32I-MEDIUM-NEXT:    li a0, 1
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_callbr_multi_operands:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi11:
; RV64I-MEDIUM-NEXT:    auipc a1, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi11)(a1); sw zero, %pcrel_lo(.Lpcrel_hi11)(a1); beqz a0, .LBB14_2
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:  # %bb.1: # %normal
; RV64I-MEDIUM-NEXT:    li a0, 0
; RV64I-MEDIUM-NEXT:    ret
; RV64I-MEDIUM-NEXT:  .LBB14_2: # Block address taken
; RV64I-MEDIUM-NEXT:    # %fail
; RV64I-MEDIUM-NEXT:    # Label of block must be emitted
; RV64I-MEDIUM-NEXT:    li a0, 1
; RV64I-MEDIUM-NEXT:    ret
entry:
  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]

normal:
  ret i32 0

fail:
  ret i32 1
}

define i32 @constraint_m_with_multi_callbr_asm(i32 %a) {
; RV32I-LABEL: constraint_m_with_multi_callbr_asm:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:    lui a1, %hi(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB15_3
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:  # %bb.1: # %normal0
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB15_3
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:  # %bb.2: # %normal1
; RV32I-NEXT:    li a0, 0
; RV32I-NEXT:    ret
; RV32I-NEXT:  .LBB15_3: # Block address taken
; RV32I-NEXT:    # %fail
; RV32I-NEXT:    # Label of block must be emitted
; RV32I-NEXT:    li a0, 1
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_m_with_multi_callbr_asm:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:    lui a1, %hi(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB15_3
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:  # %bb.1: # %normal0
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB15_3
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:  # %bb.2: # %normal1
; RV64I-NEXT:    li a0, 0
; RV64I-NEXT:    ret
; RV64I-NEXT:  .LBB15_3: # Block address taken
; RV64I-NEXT:    # %fail
; RV64I-NEXT:    # Label of block must be emitted
; RV64I-NEXT:    li a0, 1
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_m_with_multi_callbr_asm:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi12:
; RV32I-MEDIUM-NEXT:    auipc a1, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi12)(a1); beqz a0, .LBB15_3
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:  # %bb.1: # %normal0
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi12)(a1); beqz a0, .LBB15_3
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:  # %bb.2: # %normal1
; RV32I-MEDIUM-NEXT:    li a0, 0
; RV32I-MEDIUM-NEXT:    ret
; RV32I-MEDIUM-NEXT:  .LBB15_3: # Block address taken
; RV32I-MEDIUM-NEXT:    # %fail
; RV32I-MEDIUM-NEXT:    # Label of block must be emitted
; RV32I-MEDIUM-NEXT:    li a0, 1
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_m_with_multi_callbr_asm:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi12:
; RV64I-MEDIUM-NEXT:    auipc a1, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi12)(a1); beqz a0, .LBB15_3
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:  # %bb.1: # %normal0
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi12)(a1); beqz a0, .LBB15_3
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:  # %bb.2: # %normal1
; RV64I-MEDIUM-NEXT:    li a0, 0
; RV64I-MEDIUM-NEXT:    ret
; RV64I-MEDIUM-NEXT:  .LBB15_3: # Block address taken
; RV64I-MEDIUM-NEXT:    # %fail
; RV64I-MEDIUM-NEXT:    # Label of block must be emitted
; RV64I-MEDIUM-NEXT:    li a0, 1
; RV64I-MEDIUM-NEXT:    ret
entry:
  callbr void asm "sw zero, $0; beqz $1, $2", "=*m,r,!i"(ptr elementtype(i32) @eg, i32 %a) to label %normal0 [label %fail]

normal0:
  callbr void asm "sw zero, $0; beqz $1, $2", "=*m,r,!i"(ptr elementtype(i32) @eg, i32 %a) to label %normal1 [label %fail]

normal1:
  ret i32 0

fail:
  ret i32 1
}

define void @constraint_o_1(ptr %a) nounwind {
; RV32I-LABEL: constraint_o_1:
; RV32I:       # %bb.0:
; RV32I-NEXT:    #APP
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_1:
; RV64I:       # %bb.0:
; RV64I-NEXT:    #APP
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_1:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_1:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm sideeffect "", "=*o"(ptr elementtype(i32) %a)
  ret void
}

define i32 @constraint_o_2(ptr %a) nounwind {
; RV32I-LABEL: constraint_o_2:
; RV32I:       # %bb.0:
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw a0, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_2:
; RV64I:       # %bb.0:
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw a0, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_2:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw a0, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_2:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw a0, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  %1 = tail call i32 asm "lw $0, $1", "=r,*o"(ptr elementtype(i32) %a)
  ret i32 %1
}

define i32 @constraint_o_with_offset(ptr %a) nounwind {
; RV32I-LABEL: constraint_o_with_offset:
; RV32I:       # %bb.0:
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw a0, 4(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_offset:
; RV64I:       # %bb.0:
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw a0, 4(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_offset:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw a0, 4(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_offset:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw a0, 4(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  %1 = getelementptr i32, ptr %a, i32 1
  %2 = tail call i32 asm "lw $0, $1", "=r,*o"(ptr elementtype(i32) %1)
  ret i32 %2
}

define void @constraint_o_with_global_1() nounwind {
; RV32I-LABEL: constraint_o_with_global_1:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_global_1:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_global_1:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi13:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi13)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_global_1:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi13:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi13)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) @eg)
  ret void
}

define void @constraint_o_with_global_2() nounwind {
; RV32I-LABEL: constraint_o_with_global_2:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg+4)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg+4)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_global_2:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg+4)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg+4)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_global_2:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi14:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+4)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi14)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_global_2:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi14:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+4)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi14)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @eg, i32 0, i32 1))
  ret void
}

define void @constraint_o_with_global_3() nounwind {
; RV32I-LABEL: constraint_o_with_global_3:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg+8000)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg+8000)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_global_3:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg+8000)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg+8000)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_global_3:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi15:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+8000)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi15)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_global_3:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi15:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+8000)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi15)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @eg, i32 0, i32 2000))
  ret void
}

define void @constraint_o_with_extern_weak_global_1() nounwind {
; RV32I-LABEL: constraint_o_with_extern_weak_global_1:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(ewg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(ewg)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_extern_weak_global_1:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(ewg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(ewg)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_extern_weak_global_1:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi16:
; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi16)(a0)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_extern_weak_global_1:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi16:
; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi16)(a0)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) @ewg)
  ret void
}

define void @constraint_o_with_extern_weak_global_2() nounwind {
; RV32I-LABEL: constraint_o_with_extern_weak_global_2:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(ewg+4)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(ewg+4)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_extern_weak_global_2:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(ewg+4)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(ewg+4)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_extern_weak_global_2:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi17:
; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi17)(a0)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 4(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_extern_weak_global_2:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi17:
; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi17)(a0)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 4(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @ewg, i32 0, i32 1))
  ret void
}

define void @constraint_o_with_extern_weak_global_3() nounwind {
; RV32I-LABEL: constraint_o_with_extern_weak_global_3:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(ewg+8000)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(ewg+8000)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_extern_weak_global_3:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(ewg+8000)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(ewg+8000)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_extern_weak_global_3:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi18:
; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi18)(a0)
; RV32I-MEDIUM-NEXT:    lui a1, 2
; RV32I-MEDIUM-NEXT:    addi a1, a1, -192
; RV32I-MEDIUM-NEXT:    add a0, a0, a1
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_extern_weak_global_3:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi18:
; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi18)(a0)
; RV64I-MEDIUM-NEXT:    lui a1, 2
; RV64I-MEDIUM-NEXT:    addiw a1, a1, -192
; RV64I-MEDIUM-NEXT:    add a0, a0, a1
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @ewg, i32 0, i32 2000))
  ret void
}

define void @constraint_o_with_multi_operands() nounwind {
; RV32I-LABEL: constraint_o_with_multi_operands:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a0) \n sw zero, %lo(eg)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_multi_operands:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a0) \n sw zero, %lo(eg)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_multi_operands:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi19:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi19)(a0) \n sw zero, %pcrel_lo(.Lpcrel_hi19)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_multi_operands:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi19:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi19)(a0) \n sw zero, %pcrel_lo(.Lpcrel_hi19)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0 \n sw zero, $1", "=*o,=*o"(ptr elementtype(i32) @eg, ptr elementtype(i32) @eg)
  ret void
}

define void @constraint_o_with_multi_asm() nounwind {
; RV32I-LABEL: constraint_o_with_multi_asm:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_multi_asm:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_multi_asm:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi20:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi20)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi20)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_multi_asm:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi20:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi20)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi20)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) @eg)
  call void asm "sw zero, $0", "=*o"(ptr elementtype(i32) @eg)
  ret void
}

define i32 @constraint_o_with_callbr_multi_operands(i32 %a) {
; RV32I-LABEL: constraint_o_with_callbr_multi_operands:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:    lui a1, %hi(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a1); sw zero, %lo(eg)(a1); beqz a0, .LBB27_2
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:  # %bb.1: # %normal
; RV32I-NEXT:    li a0, 0
; RV32I-NEXT:    ret
; RV32I-NEXT:  .LBB27_2: # Block address taken
; RV32I-NEXT:    # %fail
; RV32I-NEXT:    # Label of block must be emitted
; RV32I-NEXT:    li a0, 1
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_callbr_multi_operands:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:    lui a1, %hi(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a1); sw zero, %lo(eg)(a1); beqz a0, .LBB27_2
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:  # %bb.1: # %normal
; RV64I-NEXT:    li a0, 0
; RV64I-NEXT:    ret
; RV64I-NEXT:  .LBB27_2: # Block address taken
; RV64I-NEXT:    # %fail
; RV64I-NEXT:    # Label of block must be emitted
; RV64I-NEXT:    li a0, 1
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_callbr_multi_operands:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi21:
; RV32I-MEDIUM-NEXT:    auipc a1, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi21)(a1); sw zero, %pcrel_lo(.Lpcrel_hi21)(a1); beqz a0, .LBB27_2
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:  # %bb.1: # %normal
; RV32I-MEDIUM-NEXT:    li a0, 0
; RV32I-MEDIUM-NEXT:    ret
; RV32I-MEDIUM-NEXT:  .LBB27_2: # Block address taken
; RV32I-MEDIUM-NEXT:    # %fail
; RV32I-MEDIUM-NEXT:    # Label of block must be emitted
; RV32I-MEDIUM-NEXT:    li a0, 1
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_callbr_multi_operands:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi21:
; RV64I-MEDIUM-NEXT:    auipc a1, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi21)(a1); sw zero, %pcrel_lo(.Lpcrel_hi21)(a1); beqz a0, .LBB27_2
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:  # %bb.1: # %normal
; RV64I-MEDIUM-NEXT:    li a0, 0
; RV64I-MEDIUM-NEXT:    ret
; RV64I-MEDIUM-NEXT:  .LBB27_2: # Block address taken
; RV64I-MEDIUM-NEXT:    # %fail
; RV64I-MEDIUM-NEXT:    # Label of block must be emitted
; RV64I-MEDIUM-NEXT:    li a0, 1
; RV64I-MEDIUM-NEXT:    ret
entry:
  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]

normal:
  ret i32 0

fail:
  ret i32 1
}

define i32 @constraint_o_with_multi_callbr_asm(i32 %a) {
; RV32I-LABEL: constraint_o_with_multi_callbr_asm:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:    lui a1, %hi(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB28_3
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:  # %bb.1: # %normal0
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB28_3
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:  # %bb.2: # %normal1
; RV32I-NEXT:    li a0, 0
; RV32I-NEXT:    ret
; RV32I-NEXT:  .LBB28_3: # Block address taken
; RV32I-NEXT:    # %fail
; RV32I-NEXT:    # Label of block must be emitted
; RV32I-NEXT:    li a0, 1
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_multi_callbr_asm:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:    lui a1, %hi(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB28_3
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:  # %bb.1: # %normal0
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, %lo(eg)(a1); beqz a0, .LBB28_3
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:  # %bb.2: # %normal1
; RV64I-NEXT:    li a0, 0
; RV64I-NEXT:    ret
; RV64I-NEXT:  .LBB28_3: # Block address taken
; RV64I-NEXT:    # %fail
; RV64I-NEXT:    # Label of block must be emitted
; RV64I-NEXT:    li a0, 1
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_multi_callbr_asm:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi22:
; RV32I-MEDIUM-NEXT:    auipc a1, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi22)(a1); beqz a0, .LBB28_3
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:  # %bb.1: # %normal0
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi22)(a1); beqz a0, .LBB28_3
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:  # %bb.2: # %normal1
; RV32I-MEDIUM-NEXT:    li a0, 0
; RV32I-MEDIUM-NEXT:    ret
; RV32I-MEDIUM-NEXT:  .LBB28_3: # Block address taken
; RV32I-MEDIUM-NEXT:    # %fail
; RV32I-MEDIUM-NEXT:    # Label of block must be emitted
; RV32I-MEDIUM-NEXT:    li a0, 1
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_multi_callbr_asm:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi22:
; RV64I-MEDIUM-NEXT:    auipc a1, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi22)(a1); beqz a0, .LBB28_3
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:  # %bb.1: # %normal0
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, %pcrel_lo(.Lpcrel_hi22)(a1); beqz a0, .LBB28_3
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:  # %bb.2: # %normal1
; RV64I-MEDIUM-NEXT:    li a0, 0
; RV64I-MEDIUM-NEXT:    ret
; RV64I-MEDIUM-NEXT:  .LBB28_3: # Block address taken
; RV64I-MEDIUM-NEXT:    # %fail
; RV64I-MEDIUM-NEXT:    # Label of block must be emitted
; RV64I-MEDIUM-NEXT:    li a0, 1
; RV64I-MEDIUM-NEXT:    ret
entry:
  callbr void asm "sw zero, $0; beqz $1, $2", "=*o,r,!i"(ptr elementtype(i32) @eg, i32 %a) to label %normal0 [label %fail]

normal0:
  callbr void asm "sw zero, $0; beqz $1, $2", "=*o,r,!i"(ptr elementtype(i32) @eg, i32 %a) to label %normal1 [label %fail]

normal1:
  ret i32 0

fail:
  ret i32 1
}

define void @constraint_o_with_local_1() nounwind {
; RV32I-LABEL: constraint_o_with_local_1:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:  .Ltmp3: # Block address taken
; RV32I-NEXT:  # %bb.1: # %label
; RV32I-NEXT:    lui a0, %hi(.Ltmp3)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw zero, %lo(.Ltmp3)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_local_1:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:  .Ltmp3: # Block address taken
; RV64I-NEXT:  # %bb.1: # %label
; RV64I-NEXT:    lui a0, %hi(.Ltmp3)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw zero, %lo(.Ltmp3)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_local_1:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Ltmp3: # Block address taken
; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi23:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp3)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi23)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_local_1:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Ltmp3: # Block address taken
; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi23:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp3)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi23)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
entry:
  br label %label

label:
  tail call void asm sideeffect "lw zero, $0", "*o"(ptr elementtype(ptr) blockaddress(@constraint_o_with_local_1, %label))
  ret void
}

define void @constraint_o_with_local_2() nounwind {
; RV32I-LABEL: constraint_o_with_local_2:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:  .Ltmp4: # Block address taken
; RV32I-NEXT:  # %bb.1: # %label
; RV32I-NEXT:    lui a0, %hi(.Ltmp4+4)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw zero, %lo(.Ltmp4+4)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_local_2:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:  .Ltmp4: # Block address taken
; RV64I-NEXT:  # %bb.1: # %label
; RV64I-NEXT:    lui a0, %hi(.Ltmp4+4)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw zero, %lo(.Ltmp4+4)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_local_2:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Ltmp4: # Block address taken
; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi24:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp4+4)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi24)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_local_2:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Ltmp4: # Block address taken
; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi24:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp4+4)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi24)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
entry:
  br label %label

label:
  call void asm "lw zero, $0", "*o"(ptr elementtype(i32) getelementptr (i8, ptr blockaddress(@constraint_o_with_local_2, %label), i32 4))
  ret void
}

define void @constraint_o_with_local_3() nounwind {
; RV32I-LABEL: constraint_o_with_local_3:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:  .Ltmp5: # Block address taken
; RV32I-NEXT:  # %bb.1: # %label
; RV32I-NEXT:    lui a0, %hi(.Ltmp5+2000)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw zero, %lo(.Ltmp5+2000)(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_o_with_local_3:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:  .Ltmp5: # Block address taken
; RV64I-NEXT:  # %bb.1: # %label
; RV64I-NEXT:    lui a0, %hi(.Ltmp5+2000)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw zero, %lo(.Ltmp5+2000)(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_o_with_local_3:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Ltmp5: # Block address taken
; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi25:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp5+2000)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi25)(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_o_with_local_3:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Ltmp5: # Block address taken
; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi25:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp5+2000)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw zero, %pcrel_lo(.Lpcrel_hi25)(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
entry:
  br label %label

label:
  call void asm "lw zero, $0", "*o"(ptr elementtype(i32) getelementptr (i8, ptr blockaddress(@constraint_o_with_local_3, %label), i32 2000))
  ret void
}

define void @constraint_A(ptr %a) nounwind {
; RV32I-LABEL: constraint_A:
; RV32I:       # %bb.0:
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sb s0, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lb s1, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A:
; RV64I:       # %bb.0:
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sb s0, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lb s1, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sb s0, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lb s1, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sb s0, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lb s1, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  tail call void asm sideeffect "sb s0, $0", "*A"(ptr elementtype(i8) %a)
  tail call void asm sideeffect "lb s1, $0", "*A"(ptr elementtype(i8) %a)
  ret void
}

define i32 @constraint_A_with_offset(ptr %a) nounwind {
; RV32I-LABEL: constraint_A_with_offset:
; RV32I:       # %bb.0:
; RV32I-NEXT:    addi a0, a0, 4
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw a0, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_offset:
; RV64I:       # %bb.0:
; RV64I-NEXT:    addi a0, a0, 4
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw a0, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_offset:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:    addi a0, a0, 4
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw a0, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_offset:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:    addi a0, a0, 4
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw a0, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  %1 = getelementptr i32, ptr %a, i32 1
  %2 = tail call i32 asm "lw $0, $1", "=r,*A"(ptr elementtype(i32) %1)
  ret i32 %2
}

define void @constraint_A_with_global_1() nounwind {
; RV32I-LABEL: constraint_A_with_global_1:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg)
; RV32I-NEXT:    addi a0, a0, %lo(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_global_1:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg)
; RV64I-NEXT:    addi a0, a0, %lo(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_global_1:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi26:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi26)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_global_1:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi26:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi26)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) @eg)
  ret void
}

define void @constraint_A_with_global_2() nounwind {
; RV32I-LABEL: constraint_A_with_global_2:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg+4)
; RV32I-NEXT:    addi a0, a0, %lo(eg+4)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_global_2:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg+4)
; RV64I-NEXT:    addi a0, a0, %lo(eg+4)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_global_2:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi27:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+4)
; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi27)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_global_2:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi27:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+4)
; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi27)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @eg, i32 0, i32 1))
  ret void
}

define void @constraint_A_with_global_3() nounwind {
; RV32I-LABEL: constraint_A_with_global_3:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg+8000)
; RV32I-NEXT:    addi a0, a0, %lo(eg+8000)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_global_3:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg+8000)
; RV64I-NEXT:    addi a0, a0, %lo(eg+8000)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_global_3:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi28:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+8000)
; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi28)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_global_3:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi28:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg+8000)
; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi28)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @eg, i32 0, i32 2000))
  ret void
}

define void @constraint_A_with_extern_weak_global_1() nounwind {
; RV32I-LABEL: constraint_A_with_extern_weak_global_1:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(ewg)
; RV32I-NEXT:    addi a0, a0, %lo(ewg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_extern_weak_global_1:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(ewg)
; RV64I-NEXT:    addi a0, a0, %lo(ewg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_extern_weak_global_1:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi29:
; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi29)(a0)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_extern_weak_global_1:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi29:
; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi29)(a0)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) @ewg)
  ret void
}

define void @constraint_A_with_extern_weak_global_2() nounwind {
; RV32I-LABEL: constraint_A_with_extern_weak_global_2:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(ewg+4)
; RV32I-NEXT:    addi a0, a0, %lo(ewg+4)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_extern_weak_global_2:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(ewg+4)
; RV64I-NEXT:    addi a0, a0, %lo(ewg+4)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_extern_weak_global_2:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi30:
; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi30)(a0)
; RV32I-MEDIUM-NEXT:    addi a0, a0, 4
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_extern_weak_global_2:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi30:
; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi30)(a0)
; RV64I-MEDIUM-NEXT:    addi a0, a0, 4
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @ewg, i32 0, i32 1))
  ret void
}

define void @constraint_A_with_extern_weak_global_3() nounwind {
; RV32I-LABEL: constraint_A_with_extern_weak_global_3:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(ewg+8000)
; RV32I-NEXT:    addi a0, a0, %lo(ewg+8000)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_extern_weak_global_3:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(ewg+8000)
; RV64I-NEXT:    addi a0, a0, %lo(ewg+8000)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_extern_weak_global_3:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi31:
; RV32I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV32I-MEDIUM-NEXT:    lw a0, %pcrel_lo(.Lpcrel_hi31)(a0)
; RV32I-MEDIUM-NEXT:    lui a1, 2
; RV32I-MEDIUM-NEXT:    addi a1, a1, -192
; RV32I-MEDIUM-NEXT:    add a0, a0, a1
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_extern_weak_global_3:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi31:
; RV64I-MEDIUM-NEXT:    auipc a0, %got_pcrel_hi(ewg)
; RV64I-MEDIUM-NEXT:    ld a0, %pcrel_lo(.Lpcrel_hi31)(a0)
; RV64I-MEDIUM-NEXT:    lui a1, 2
; RV64I-MEDIUM-NEXT:    addiw a1, a1, -192
; RV64I-MEDIUM-NEXT:    add a0, a0, a1
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) getelementptr ([400000 x i32], ptr @ewg, i32 0, i32 2000))
  ret void
}

define void @constraint_A_with_multi_operands() nounwind {
; RV32I-LABEL: constraint_A_with_multi_operands:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg)
; RV32I-NEXT:    addi a0, a0, %lo(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, 0(a0) \n sw zero, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_multi_operands:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg)
; RV64I-NEXT:    addi a0, a0, %lo(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, 0(a0) \n sw zero, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_multi_operands:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi32:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi32)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a0) \n sw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_multi_operands:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi32:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi32)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a0) \n sw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0 \n sw zero, $1", "=*A,=*A"(ptr elementtype(i32) @eg, ptr elementtype(i32) @eg)
  ret void
}

define void @constraint_A_with_multi_asm() nounwind {
; RV32I-LABEL: constraint_A_with_multi_asm:
; RV32I:       # %bb.0:
; RV32I-NEXT:    lui a0, %hi(eg)
; RV32I-NEXT:    addi a0, a0, %lo(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_multi_asm:
; RV64I:       # %bb.0:
; RV64I-NEXT:    lui a0, %hi(eg)
; RV64I-NEXT:    addi a0, a0, %lo(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_multi_asm:
; RV32I-MEDIUM:       # %bb.0:
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi33:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi33)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_multi_asm:
; RV64I-MEDIUM:       # %bb.0:
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi33:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi33)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) @eg)
  call void asm "sw zero, $0", "=*A"(ptr elementtype(i32) @eg)
  ret void
}

define i32 @constraint_A_with_callbr_multi_operands(i32 %a) {
; RV32I-LABEL: constraint_A_with_callbr_multi_operands:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:    lui a1, %hi(eg)
; RV32I-NEXT:    addi a1, a1, %lo(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, 0(a1); sw zero, 0(a1); beqz a0, .LBB42_2
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:  # %bb.1: # %normal
; RV32I-NEXT:    li a0, 0
; RV32I-NEXT:    ret
; RV32I-NEXT:  .LBB42_2: # Block address taken
; RV32I-NEXT:    # %fail
; RV32I-NEXT:    # Label of block must be emitted
; RV32I-NEXT:    li a0, 1
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_callbr_multi_operands:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:    lui a1, %hi(eg)
; RV64I-NEXT:    addi a1, a1, %lo(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, 0(a1); sw zero, 0(a1); beqz a0, .LBB42_2
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:  # %bb.1: # %normal
; RV64I-NEXT:    li a0, 0
; RV64I-NEXT:    ret
; RV64I-NEXT:  .LBB42_2: # Block address taken
; RV64I-NEXT:    # %fail
; RV64I-NEXT:    # Label of block must be emitted
; RV64I-NEXT:    li a0, 1
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_callbr_multi_operands:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi34:
; RV32I-MEDIUM-NEXT:    auipc a1, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    addi a1, a1, %pcrel_lo(.Lpcrel_hi34)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a1); sw zero, 0(a1); beqz a0, .LBB42_2
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:  # %bb.1: # %normal
; RV32I-MEDIUM-NEXT:    li a0, 0
; RV32I-MEDIUM-NEXT:    ret
; RV32I-MEDIUM-NEXT:  .LBB42_2: # Block address taken
; RV32I-MEDIUM-NEXT:    # %fail
; RV32I-MEDIUM-NEXT:    # Label of block must be emitted
; RV32I-MEDIUM-NEXT:    li a0, 1
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_callbr_multi_operands:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi34:
; RV64I-MEDIUM-NEXT:    auipc a1, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    addi a1, a1, %pcrel_lo(.Lpcrel_hi34)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a1); sw zero, 0(a1); beqz a0, .LBB42_2
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:  # %bb.1: # %normal
; RV64I-MEDIUM-NEXT:    li a0, 0
; RV64I-MEDIUM-NEXT:    ret
; RV64I-MEDIUM-NEXT:  .LBB42_2: # Block address taken
; RV64I-MEDIUM-NEXT:    # %fail
; RV64I-MEDIUM-NEXT:    # Label of block must be emitted
; RV64I-MEDIUM-NEXT:    li a0, 1
; RV64I-MEDIUM-NEXT:    ret
entry:
  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]

normal:
  ret i32 0

fail:
  ret i32 1
}

define i32 @constraint_A_with_multi_callbr_asm(i32 %a) {
; RV32I-LABEL: constraint_A_with_multi_callbr_asm:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:    lui a1, %hi(eg)
; RV32I-NEXT:    addi a1, a1, %lo(eg)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, 0(a1); beqz a0, .LBB43_3
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:  # %bb.1: # %normal0
; RV32I-NEXT:    #APP
; RV32I-NEXT:    sw zero, 0(a1); beqz a0, .LBB43_3
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:  # %bb.2: # %normal1
; RV32I-NEXT:    li a0, 0
; RV32I-NEXT:    ret
; RV32I-NEXT:  .LBB43_3: # Block address taken
; RV32I-NEXT:    # %fail
; RV32I-NEXT:    # Label of block must be emitted
; RV32I-NEXT:    li a0, 1
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_multi_callbr_asm:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:    lui a1, %hi(eg)
; RV64I-NEXT:    addi a1, a1, %lo(eg)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, 0(a1); beqz a0, .LBB43_3
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:  # %bb.1: # %normal0
; RV64I-NEXT:    #APP
; RV64I-NEXT:    sw zero, 0(a1); beqz a0, .LBB43_3
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:  # %bb.2: # %normal1
; RV64I-NEXT:    li a0, 0
; RV64I-NEXT:    ret
; RV64I-NEXT:  .LBB43_3: # Block address taken
; RV64I-NEXT:    # %fail
; RV64I-NEXT:    # Label of block must be emitted
; RV64I-NEXT:    li a0, 1
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_multi_callbr_asm:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi35:
; RV32I-MEDIUM-NEXT:    auipc a1, %pcrel_hi(eg)
; RV32I-MEDIUM-NEXT:    addi a1, a1, %pcrel_lo(.Lpcrel_hi35)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a1); beqz a0, .LBB43_3
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:  # %bb.1: # %normal0
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    sw zero, 0(a1); beqz a0, .LBB43_3
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:  # %bb.2: # %normal1
; RV32I-MEDIUM-NEXT:    li a0, 0
; RV32I-MEDIUM-NEXT:    ret
; RV32I-MEDIUM-NEXT:  .LBB43_3: # Block address taken
; RV32I-MEDIUM-NEXT:    # %fail
; RV32I-MEDIUM-NEXT:    # Label of block must be emitted
; RV32I-MEDIUM-NEXT:    li a0, 1
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_multi_callbr_asm:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi35:
; RV64I-MEDIUM-NEXT:    auipc a1, %pcrel_hi(eg)
; RV64I-MEDIUM-NEXT:    addi a1, a1, %pcrel_lo(.Lpcrel_hi35)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a1); beqz a0, .LBB43_3
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:  # %bb.1: # %normal0
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    sw zero, 0(a1); beqz a0, .LBB43_3
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:  # %bb.2: # %normal1
; RV64I-MEDIUM-NEXT:    li a0, 0
; RV64I-MEDIUM-NEXT:    ret
; RV64I-MEDIUM-NEXT:  .LBB43_3: # Block address taken
; RV64I-MEDIUM-NEXT:    # %fail
; RV64I-MEDIUM-NEXT:    # Label of block must be emitted
; RV64I-MEDIUM-NEXT:    li a0, 1
; RV64I-MEDIUM-NEXT:    ret
entry:
  callbr void asm "sw zero, $0; beqz $1, $2", "=*A,r,!i"(ptr elementtype(i32) @eg, i32 %a) to label %normal0 [label %fail]

normal0:
  callbr void asm "sw zero, $0; beqz $1, $2", "=*A,r,!i"(ptr elementtype(i32) @eg, i32 %a) to label %normal1 [label %fail]

normal1:
  ret i32 0

fail:
  ret i32 1
}

define void @constraint_A_with_local_1() nounwind {
; RV32I-LABEL: constraint_A_with_local_1:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:  .Ltmp6: # Block address taken
; RV32I-NEXT:  # %bb.1: # %label
; RV32I-NEXT:    lui a0, %hi(.Ltmp6)
; RV32I-NEXT:    addi a0, a0, %lo(.Ltmp6)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw zero, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_local_1:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:  .Ltmp6: # Block address taken
; RV64I-NEXT:  # %bb.1: # %label
; RV64I-NEXT:    lui a0, %hi(.Ltmp6)
; RV64I-NEXT:    addi a0, a0, %lo(.Ltmp6)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw zero, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_local_1:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Ltmp6: # Block address taken
; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi36:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp6)
; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi36)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_local_1:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Ltmp6: # Block address taken
; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi36:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp6)
; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi36)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
entry:
  br label %label

label:
  tail call void asm sideeffect "lw zero, $0", "*A"(ptr elementtype(ptr) blockaddress(@constraint_A_with_local_1, %label))
  ret void
}

define void @constraint_A_with_local_2() nounwind {
; RV32I-LABEL: constraint_A_with_local_2:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:  .Ltmp7: # Block address taken
; RV32I-NEXT:  # %bb.1: # %label
; RV32I-NEXT:    lui a0, %hi(.Ltmp7+4)
; RV32I-NEXT:    addi a0, a0, %lo(.Ltmp7+4)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw zero, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_local_2:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:  .Ltmp7: # Block address taken
; RV64I-NEXT:  # %bb.1: # %label
; RV64I-NEXT:    lui a0, %hi(.Ltmp7+4)
; RV64I-NEXT:    addi a0, a0, %lo(.Ltmp7+4)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw zero, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_local_2:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Ltmp7: # Block address taken
; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi37:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp7+4)
; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi37)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_local_2:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Ltmp7: # Block address taken
; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi37:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp7+4)
; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi37)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
entry:
  br label %label

label:
  call void asm "lw zero, $0", "*A"(ptr elementtype(i32) getelementptr (i8, ptr blockaddress(@constraint_A_with_local_2, %label), i32 4))
  ret void
}

define void @constraint_A_with_local_3() nounwind {
; RV32I-LABEL: constraint_A_with_local_3:
; RV32I:       # %bb.0: # %entry
; RV32I-NEXT:  .Ltmp8: # Block address taken
; RV32I-NEXT:  # %bb.1: # %label
; RV32I-NEXT:    lui a0, %hi(.Ltmp8+2000)
; RV32I-NEXT:    addi a0, a0, %lo(.Ltmp8+2000)
; RV32I-NEXT:    #APP
; RV32I-NEXT:    lw zero, 0(a0)
; RV32I-NEXT:    #NO_APP
; RV32I-NEXT:    ret
;
; RV64I-LABEL: constraint_A_with_local_3:
; RV64I:       # %bb.0: # %entry
; RV64I-NEXT:  .Ltmp8: # Block address taken
; RV64I-NEXT:  # %bb.1: # %label
; RV64I-NEXT:    lui a0, %hi(.Ltmp8+2000)
; RV64I-NEXT:    addi a0, a0, %lo(.Ltmp8+2000)
; RV64I-NEXT:    #APP
; RV64I-NEXT:    lw zero, 0(a0)
; RV64I-NEXT:    #NO_APP
; RV64I-NEXT:    ret
;
; RV32I-MEDIUM-LABEL: constraint_A_with_local_3:
; RV32I-MEDIUM:       # %bb.0: # %entry
; RV32I-MEDIUM-NEXT:  .Ltmp8: # Block address taken
; RV32I-MEDIUM-NEXT:  # %bb.1: # %label
; RV32I-MEDIUM-NEXT:  .Lpcrel_hi38:
; RV32I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp8+2000)
; RV32I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi38)
; RV32I-MEDIUM-NEXT:    #APP
; RV32I-MEDIUM-NEXT:    lw zero, 0(a0)
; RV32I-MEDIUM-NEXT:    #NO_APP
; RV32I-MEDIUM-NEXT:    ret
;
; RV64I-MEDIUM-LABEL: constraint_A_with_local_3:
; RV64I-MEDIUM:       # %bb.0: # %entry
; RV64I-MEDIUM-NEXT:  .Ltmp8: # Block address taken
; RV64I-MEDIUM-NEXT:  # %bb.1: # %label
; RV64I-MEDIUM-NEXT:  .Lpcrel_hi38:
; RV64I-MEDIUM-NEXT:    auipc a0, %pcrel_hi(.Ltmp8+2000)
; RV64I-MEDIUM-NEXT:    addi a0, a0, %pcrel_lo(.Lpcrel_hi38)
; RV64I-MEDIUM-NEXT:    #APP
; RV64I-MEDIUM-NEXT:    lw zero, 0(a0)
; RV64I-MEDIUM-NEXT:    #NO_APP
; RV64I-MEDIUM-NEXT:    ret
entry:
  br label %label

label:
  call void asm "lw zero, $0", "*A"(ptr elementtype(i32) getelementptr (i8, ptr blockaddress(@constraint_A_with_local_3, %label), i32 2000))
  ret void
}
