[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / CodeGen / RISCV / inline-asm-S-constraint.ll
blob2387978e76144d6dc342a508f5a8cc455b819b4c
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=riscv32 < %s | FileCheck %s --check-prefix=RV32
3 ; RUN: llc -mtriple=riscv64 < %s | FileCheck %s --check-prefix=RV64
5 @var = external dso_local global i32, align 4
7 define dso_local i8* @constraint_S() {
8 ; RV32-LABEL: constraint_S:
9 ; RV32:       # %bb.0:
10 ; RV32-NEXT:    #APP
11 ; RV32-NEXT:    lui a0, %hi(var)
12 ; RV32-NEXT:    addi a0, a0, %lo(var)
13 ; RV32-NEXT:    #NO_APP
14 ; RV32-NEXT:    ret
16 ; RV64-LABEL: constraint_S:
17 ; RV64:       # %bb.0:
18 ; RV64-NEXT:    #APP
19 ; RV64-NEXT:    lui a0, %hi(var)
20 ; RV64-NEXT:    addi a0, a0, %lo(var)
21 ; RV64-NEXT:    #NO_APP
22 ; RV64-NEXT:    ret
23   %ret = tail call i8* asm "lui $0, %hi($1)\0Aaddi $0, $0, %lo($1)", "=r,S"(i32* nonnull @var)
24   ret i8* %ret
27 ; Function Attrs: nofree nosync nounwind readnone
28 define dso_local i8* @constraint_S_label() {
29 ; RV32-LABEL: constraint_S_label:
30 ; RV32:       # %bb.0: # %entry
31 ; RV32-NEXT:  .Ltmp0: # Block address taken
32 ; RV32-NEXT:  # %bb.1: # %L1
33 ; RV32-NEXT:    #APP
34 ; RV32-NEXT:    lui a0, %hi(.Ltmp0)
35 ; RV32-NEXT:    addi a0, a0, %lo(.Ltmp0)
36 ; RV32-NEXT:    #NO_APP
37 ; RV32-NEXT:    ret
39 ; RV64-LABEL: constraint_S_label:
40 ; RV64:       # %bb.0: # %entry
41 ; RV64-NEXT:  .Ltmp0: # Block address taken
42 ; RV64-NEXT:  # %bb.1: # %L1
43 ; RV64-NEXT:    #APP
44 ; RV64-NEXT:    lui a0, %hi(.Ltmp0)
45 ; RV64-NEXT:    addi a0, a0, %lo(.Ltmp0)
46 ; RV64-NEXT:    #NO_APP
47 ; RV64-NEXT:    ret
48 entry:
49   br label %L1
51 L1:
52   %ret = tail call i8* asm "lui $0, %hi($1)\0Aaddi $0, $0, %lo($1)", "=r,S"(i8* blockaddress(@constraint_S_label, %L1))
53   ret i8* %ret