xref: /llvm-project/llvm/test/CodeGen/LoongArch/merge-base-offset.ll (revision b225b15a3d5ff28e4848369ef14ea63f9e418a9d)
184ad292fSWANG Rui; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
282cf6558SWANG Rui; RUN: llc --mtriple=loongarch32 --mattr=+lasx --verify-machineinstrs < %s \
384ad292fSWANG Rui; RUN:   | FileCheck --check-prefix=LA32 %s
482cf6558SWANG Rui; RUN: llc --mtriple=loongarch64 --mattr=+lasx --verify-machineinstrs < %s \
584ad292fSWANG Rui; RUN:   | FileCheck --check-prefix=LA64 %s
682cf6558SWANG Rui; RUN: llc --mtriple=loongarch64 --mattr=+lasx --verify-machineinstrs \
784ad292fSWANG Rui; RUN:   --code-model=large < %s | FileCheck --check-prefix=LA64-LARGE %s
884ad292fSWANG Rui
984ad292fSWANG Rui@g_i8 = dso_local global i8 0
1084ad292fSWANG Rui
1184ad292fSWANG Ruidefine dso_local signext i8 @load_s8() nounwind {
1284ad292fSWANG Rui; LA32-LABEL: load_s8:
1384ad292fSWANG Rui; LA32:       # %bb.0: # %entry
1484ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
15b2e69f52Shev; LA32-NEXT:    ld.b $a0, $a0, %pc_lo12(g_i8)
1684ad292fSWANG Rui; LA32-NEXT:    ret
1784ad292fSWANG Rui;
1884ad292fSWANG Rui; LA64-LABEL: load_s8:
1984ad292fSWANG Rui; LA64:       # %bb.0: # %entry
2084ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
21b2e69f52Shev; LA64-NEXT:    ld.b $a0, $a0, %pc_lo12(g_i8)
2284ad292fSWANG Rui; LA64-NEXT:    ret
2384ad292fSWANG Rui;
2484ad292fSWANG Rui; LA64-LARGE-LABEL: load_s8:
2584ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
2684ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
2784ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i8)
2884ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i8)
2984ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i8)
30b2e69f52Shev; LA64-LARGE-NEXT:    ldx.b $a0, $a1, $a0
3184ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
3284ad292fSWANG Ruientry:
3384ad292fSWANG Rui  %0 = load i8, ptr @g_i8
3484ad292fSWANG Rui  ret i8 %0
3584ad292fSWANG Rui}
3684ad292fSWANG Rui
3784ad292fSWANG Ruidefine dso_local zeroext i8 @load_u8() nounwind {
3884ad292fSWANG Rui; LA32-LABEL: load_u8:
3984ad292fSWANG Rui; LA32:       # %bb.0: # %entry
4084ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
41b2e69f52Shev; LA32-NEXT:    ld.bu $a0, $a0, %pc_lo12(g_i8)
4284ad292fSWANG Rui; LA32-NEXT:    ret
4384ad292fSWANG Rui;
4484ad292fSWANG Rui; LA64-LABEL: load_u8:
4584ad292fSWANG Rui; LA64:       # %bb.0: # %entry
4684ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
47b2e69f52Shev; LA64-NEXT:    ld.bu $a0, $a0, %pc_lo12(g_i8)
4884ad292fSWANG Rui; LA64-NEXT:    ret
4984ad292fSWANG Rui;
5084ad292fSWANG Rui; LA64-LARGE-LABEL: load_u8:
5184ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
5284ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
5384ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i8)
5484ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i8)
5584ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i8)
56b2e69f52Shev; LA64-LARGE-NEXT:    ldx.bu $a0, $a1, $a0
5784ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
5884ad292fSWANG Ruientry:
5984ad292fSWANG Rui  %0 = load i8, ptr @g_i8
6084ad292fSWANG Rui  ret i8 %0
6184ad292fSWANG Rui}
6284ad292fSWANG Rui
6384ad292fSWANG Ruidefine dso_local void @store_i8() nounwind {
6484ad292fSWANG Rui; LA32-LABEL: store_i8:
6584ad292fSWANG Rui; LA32:       # %bb.0: # %entry
6684ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
6784ad292fSWANG Rui; LA32-NEXT:    ori $a1, $zero, 1
68b2e69f52Shev; LA32-NEXT:    st.b $a1, $a0, %pc_lo12(g_i8)
6984ad292fSWANG Rui; LA32-NEXT:    ret
7084ad292fSWANG Rui;
7184ad292fSWANG Rui; LA64-LABEL: store_i8:
7284ad292fSWANG Rui; LA64:       # %bb.0: # %entry
7384ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
7484ad292fSWANG Rui; LA64-NEXT:    ori $a1, $zero, 1
75b2e69f52Shev; LA64-NEXT:    st.b $a1, $a0, %pc_lo12(g_i8)
7684ad292fSWANG Rui; LA64-NEXT:    ret
7784ad292fSWANG Rui;
7884ad292fSWANG Rui; LA64-LARGE-LABEL: store_i8:
7984ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
8084ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
8184ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i8)
8284ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i8)
8384ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i8)
84b2e69f52Shev; LA64-LARGE-NEXT:    ori $a2, $zero, 1
85b2e69f52Shev; LA64-LARGE-NEXT:    stx.b $a2, $a1, $a0
8684ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
8784ad292fSWANG Ruientry:
8884ad292fSWANG Rui  store i8 1, ptr @g_i8
8984ad292fSWANG Rui  ret void
9084ad292fSWANG Rui}
9184ad292fSWANG Rui
9284ad292fSWANG Rui@g_i16 = dso_local global i16 0
9384ad292fSWANG Rui
9484ad292fSWANG Ruidefine dso_local signext i16 @load_s16() nounwind {
9584ad292fSWANG Rui; LA32-LABEL: load_s16:
9684ad292fSWANG Rui; LA32:       # %bb.0: # %entry
9784ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i16)
98b2e69f52Shev; LA32-NEXT:    ld.h $a0, $a0, %pc_lo12(g_i16)
9984ad292fSWANG Rui; LA32-NEXT:    ret
10084ad292fSWANG Rui;
10184ad292fSWANG Rui; LA64-LABEL: load_s16:
10284ad292fSWANG Rui; LA64:       # %bb.0: # %entry
10384ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i16)
104b2e69f52Shev; LA64-NEXT:    ld.h $a0, $a0, %pc_lo12(g_i16)
10584ad292fSWANG Rui; LA64-NEXT:    ret
10684ad292fSWANG Rui;
10784ad292fSWANG Rui; LA64-LARGE-LABEL: load_s16:
10884ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
10984ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i16)
11084ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i16)
11184ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i16)
11284ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i16)
113b2e69f52Shev; LA64-LARGE-NEXT:    ldx.h $a0, $a1, $a0
11484ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
11584ad292fSWANG Ruientry:
11684ad292fSWANG Rui  %0 = load i16, ptr @g_i16
11784ad292fSWANG Rui  ret i16 %0
11884ad292fSWANG Rui}
11984ad292fSWANG Rui
12084ad292fSWANG Ruidefine dso_local zeroext i16 @load_u16() nounwind {
12184ad292fSWANG Rui; LA32-LABEL: load_u16:
12284ad292fSWANG Rui; LA32:       # %bb.0: # %entry
12384ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i16)
124b2e69f52Shev; LA32-NEXT:    ld.hu $a0, $a0, %pc_lo12(g_i16)
12584ad292fSWANG Rui; LA32-NEXT:    ret
12684ad292fSWANG Rui;
12784ad292fSWANG Rui; LA64-LABEL: load_u16:
12884ad292fSWANG Rui; LA64:       # %bb.0: # %entry
12984ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i16)
130b2e69f52Shev; LA64-NEXT:    ld.hu $a0, $a0, %pc_lo12(g_i16)
13184ad292fSWANG Rui; LA64-NEXT:    ret
13284ad292fSWANG Rui;
13384ad292fSWANG Rui; LA64-LARGE-LABEL: load_u16:
13484ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
13584ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i16)
13684ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i16)
13784ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i16)
13884ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i16)
139b2e69f52Shev; LA64-LARGE-NEXT:    ldx.hu $a0, $a1, $a0
14084ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
14184ad292fSWANG Ruientry:
14284ad292fSWANG Rui  %0 = load i16, ptr @g_i16
14384ad292fSWANG Rui  ret i16 %0
14484ad292fSWANG Rui}
14584ad292fSWANG Rui
14684ad292fSWANG Ruidefine dso_local void @store_i16() nounwind {
14784ad292fSWANG Rui; LA32-LABEL: store_i16:
14884ad292fSWANG Rui; LA32:       # %bb.0: # %entry
14984ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i16)
15084ad292fSWANG Rui; LA32-NEXT:    ori $a1, $zero, 1
151b2e69f52Shev; LA32-NEXT:    st.h $a1, $a0, %pc_lo12(g_i16)
15284ad292fSWANG Rui; LA32-NEXT:    ret
15384ad292fSWANG Rui;
15484ad292fSWANG Rui; LA64-LABEL: store_i16:
15584ad292fSWANG Rui; LA64:       # %bb.0: # %entry
15684ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i16)
15784ad292fSWANG Rui; LA64-NEXT:    ori $a1, $zero, 1
158b2e69f52Shev; LA64-NEXT:    st.h $a1, $a0, %pc_lo12(g_i16)
15984ad292fSWANG Rui; LA64-NEXT:    ret
16084ad292fSWANG Rui;
16184ad292fSWANG Rui; LA64-LARGE-LABEL: store_i16:
16284ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
16384ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i16)
16484ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i16)
16584ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i16)
16684ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i16)
167b2e69f52Shev; LA64-LARGE-NEXT:    ori $a2, $zero, 1
168b2e69f52Shev; LA64-LARGE-NEXT:    stx.h $a2, $a1, $a0
16984ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
17084ad292fSWANG Ruientry:
17184ad292fSWANG Rui  store i16 1, ptr @g_i16
17284ad292fSWANG Rui  ret void
17384ad292fSWANG Rui}
17484ad292fSWANG Rui
17584ad292fSWANG Rui@g_i32 = dso_local global i32 0
17684ad292fSWANG Rui
17784ad292fSWANG Ruidefine dso_local signext i32 @load_s32() nounwind {
17884ad292fSWANG Rui; LA32-LABEL: load_s32:
17984ad292fSWANG Rui; LA32:       # %bb.0: # %entry
18084ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i32)
181b2e69f52Shev; LA32-NEXT:    ld.w $a0, $a0, %pc_lo12(g_i32)
18284ad292fSWANG Rui; LA32-NEXT:    ret
18384ad292fSWANG Rui;
18484ad292fSWANG Rui; LA64-LABEL: load_s32:
18584ad292fSWANG Rui; LA64:       # %bb.0: # %entry
18684ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i32)
187b2e69f52Shev; LA64-NEXT:    ld.w $a0, $a0, %pc_lo12(g_i32)
18884ad292fSWANG Rui; LA64-NEXT:    ret
18984ad292fSWANG Rui;
19084ad292fSWANG Rui; LA64-LARGE-LABEL: load_s32:
19184ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
19284ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i32)
19384ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i32)
19484ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i32)
19584ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i32)
196b2e69f52Shev; LA64-LARGE-NEXT:    ldx.w $a0, $a1, $a0
19784ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
19884ad292fSWANG Ruientry:
19984ad292fSWANG Rui  %0 = load i32, ptr @g_i32
20084ad292fSWANG Rui  ret i32 %0
20184ad292fSWANG Rui}
20284ad292fSWANG Rui
20384ad292fSWANG Ruidefine dso_local zeroext i32 @load_u32() nounwind {
20484ad292fSWANG Rui; LA32-LABEL: load_u32:
20584ad292fSWANG Rui; LA32:       # %bb.0: # %entry
20684ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i32)
207b2e69f52Shev; LA32-NEXT:    ld.w $a0, $a0, %pc_lo12(g_i32)
20884ad292fSWANG Rui; LA32-NEXT:    ret
20984ad292fSWANG Rui;
21084ad292fSWANG Rui; LA64-LABEL: load_u32:
21184ad292fSWANG Rui; LA64:       # %bb.0: # %entry
21284ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i32)
213b2e69f52Shev; LA64-NEXT:    ld.wu $a0, $a0, %pc_lo12(g_i32)
21484ad292fSWANG Rui; LA64-NEXT:    ret
21584ad292fSWANG Rui;
21684ad292fSWANG Rui; LA64-LARGE-LABEL: load_u32:
21784ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
21884ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i32)
21984ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i32)
22084ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i32)
22184ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i32)
222b2e69f52Shev; LA64-LARGE-NEXT:    ldx.wu $a0, $a1, $a0
22384ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
22484ad292fSWANG Ruientry:
22584ad292fSWANG Rui  %0 = load i32, ptr @g_i32
22684ad292fSWANG Rui  ret i32 %0
22784ad292fSWANG Rui}
22884ad292fSWANG Rui
22984ad292fSWANG Ruidefine dso_local void @store_i32() nounwind {
23084ad292fSWANG Rui; LA32-LABEL: store_i32:
23184ad292fSWANG Rui; LA32:       # %bb.0: # %entry
23284ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i32)
23384ad292fSWANG Rui; LA32-NEXT:    ori $a1, $zero, 1
234b2e69f52Shev; LA32-NEXT:    st.w $a1, $a0, %pc_lo12(g_i32)
23584ad292fSWANG Rui; LA32-NEXT:    ret
23684ad292fSWANG Rui;
23784ad292fSWANG Rui; LA64-LABEL: store_i32:
23884ad292fSWANG Rui; LA64:       # %bb.0: # %entry
23984ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i32)
24084ad292fSWANG Rui; LA64-NEXT:    ori $a1, $zero, 1
241b2e69f52Shev; LA64-NEXT:    st.w $a1, $a0, %pc_lo12(g_i32)
24284ad292fSWANG Rui; LA64-NEXT:    ret
24384ad292fSWANG Rui;
24484ad292fSWANG Rui; LA64-LARGE-LABEL: store_i32:
24584ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
24684ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i32)
24784ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i32)
24884ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i32)
24984ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i32)
250b2e69f52Shev; LA64-LARGE-NEXT:    ori $a2, $zero, 1
251b2e69f52Shev; LA64-LARGE-NEXT:    stx.w $a2, $a1, $a0
25284ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
25384ad292fSWANG Ruientry:
25484ad292fSWANG Rui  store i32 1, ptr @g_i32
25584ad292fSWANG Rui  ret void
25684ad292fSWANG Rui}
25784ad292fSWANG Rui
25884ad292fSWANG Rui@g_i64 = dso_local global i64 0
25984ad292fSWANG Rui
26084ad292fSWANG Ruidefine dso_local i64 @load_64() nounwind {
26184ad292fSWANG Rui; LA32-LABEL: load_64:
26284ad292fSWANG Rui; LA32:       # %bb.0: # %entry
26384ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i64)
26484ad292fSWANG Rui; LA32-NEXT:    addi.w $a1, $a0, %pc_lo12(g_i64)
26584ad292fSWANG Rui; LA32-NEXT:    ld.w $a0, $a1, 0
26684ad292fSWANG Rui; LA32-NEXT:    ld.w $a1, $a1, 4
26784ad292fSWANG Rui; LA32-NEXT:    ret
26884ad292fSWANG Rui;
26984ad292fSWANG Rui; LA64-LABEL: load_64:
27084ad292fSWANG Rui; LA64:       # %bb.0: # %entry
27184ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i64)
272b2e69f52Shev; LA64-NEXT:    ld.d $a0, $a0, %pc_lo12(g_i64)
27384ad292fSWANG Rui; LA64-NEXT:    ret
27484ad292fSWANG Rui;
27584ad292fSWANG Rui; LA64-LARGE-LABEL: load_64:
27684ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
27784ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i64)
27884ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i64)
27984ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i64)
28084ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i64)
281b2e69f52Shev; LA64-LARGE-NEXT:    ldx.d $a0, $a1, $a0
28284ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
28384ad292fSWANG Ruientry:
28484ad292fSWANG Rui  %0 = load i64, ptr @g_i64
28584ad292fSWANG Rui  ret i64 %0
28684ad292fSWANG Rui}
28784ad292fSWANG Rui
28884ad292fSWANG Ruidefine dso_local void @store_i64() nounwind {
28984ad292fSWANG Rui; LA32-LABEL: store_i64:
29084ad292fSWANG Rui; LA32:       # %bb.0: # %entry
29184ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i64)
29284ad292fSWANG Rui; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_i64)
29384ad292fSWANG Rui; LA32-NEXT:    st.w $zero, $a0, 4
29484ad292fSWANG Rui; LA32-NEXT:    ori $a1, $zero, 1
29584ad292fSWANG Rui; LA32-NEXT:    st.w $a1, $a0, 0
29684ad292fSWANG Rui; LA32-NEXT:    ret
29784ad292fSWANG Rui;
29884ad292fSWANG Rui; LA64-LABEL: store_i64:
29984ad292fSWANG Rui; LA64:       # %bb.0: # %entry
30084ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i64)
30184ad292fSWANG Rui; LA64-NEXT:    ori $a1, $zero, 1
302b2e69f52Shev; LA64-NEXT:    st.d $a1, $a0, %pc_lo12(g_i64)
30384ad292fSWANG Rui; LA64-NEXT:    ret
30484ad292fSWANG Rui;
30584ad292fSWANG Rui; LA64-LARGE-LABEL: store_i64:
30684ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
30784ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i64)
30884ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i64)
30984ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i64)
31084ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i64)
311b2e69f52Shev; LA64-LARGE-NEXT:    ori $a2, $zero, 1
312b2e69f52Shev; LA64-LARGE-NEXT:    stx.d $a2, $a1, $a0
31384ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
31484ad292fSWANG Ruientry:
31584ad292fSWANG Rui  store i64 1, ptr @g_i64
31684ad292fSWANG Rui  ret void
31784ad292fSWANG Rui}
31884ad292fSWANG Rui
31984ad292fSWANG Rui@g_f32 = dso_local global float 0.0
32084ad292fSWANG Rui
32184ad292fSWANG Ruidefine dso_local float @load_f32() nounwind {
32284ad292fSWANG Rui; LA32-LABEL: load_f32:
32384ad292fSWANG Rui; LA32:       # %bb.0: # %entry
32484ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_f32)
325b2e69f52Shev; LA32-NEXT:    fld.s $fa0, $a0, %pc_lo12(g_f32)
32684ad292fSWANG Rui; LA32-NEXT:    ret
32784ad292fSWANG Rui;
32884ad292fSWANG Rui; LA64-LABEL: load_f32:
32984ad292fSWANG Rui; LA64:       # %bb.0: # %entry
33084ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_f32)
331b2e69f52Shev; LA64-NEXT:    fld.s $fa0, $a0, %pc_lo12(g_f32)
33284ad292fSWANG Rui; LA64-NEXT:    ret
33384ad292fSWANG Rui;
33484ad292fSWANG Rui; LA64-LARGE-LABEL: load_f32:
33584ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
33684ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_f32)
33784ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_f32)
33884ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_f32)
33984ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_f32)
340b2e69f52Shev; LA64-LARGE-NEXT:    fldx.s $fa0, $a1, $a0
34184ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
34284ad292fSWANG Ruientry:
34384ad292fSWANG Rui  %0 = load float, ptr @g_f32
34484ad292fSWANG Rui  ret float %0
34584ad292fSWANG Rui}
34684ad292fSWANG Rui
34784ad292fSWANG Ruidefine dso_local void @store_f32() nounwind {
34884ad292fSWANG Rui; LA32-LABEL: store_f32:
34984ad292fSWANG Rui; LA32:       # %bb.0: # %entry
35084ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_f32)
35184ad292fSWANG Rui; LA32-NEXT:    lu12i.w $a1, 260096
352b2e69f52Shev; LA32-NEXT:    st.w $a1, $a0, %pc_lo12(g_f32)
35384ad292fSWANG Rui; LA32-NEXT:    ret
35484ad292fSWANG Rui;
35584ad292fSWANG Rui; LA64-LABEL: store_f32:
35684ad292fSWANG Rui; LA64:       # %bb.0: # %entry
35784ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_f32)
35884ad292fSWANG Rui; LA64-NEXT:    lu12i.w $a1, 260096
359b2e69f52Shev; LA64-NEXT:    st.w $a1, $a0, %pc_lo12(g_f32)
36084ad292fSWANG Rui; LA64-NEXT:    ret
36184ad292fSWANG Rui;
36284ad292fSWANG Rui; LA64-LARGE-LABEL: store_f32:
36384ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
36484ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_f32)
36584ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_f32)
36684ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_f32)
36784ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_f32)
368b2e69f52Shev; LA64-LARGE-NEXT:    lu12i.w $a2, 260096
369b2e69f52Shev; LA64-LARGE-NEXT:    stx.w $a2, $a1, $a0
37084ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
37184ad292fSWANG Ruientry:
37284ad292fSWANG Rui  store float 1.0, ptr @g_f32
37384ad292fSWANG Rui  ret void
37484ad292fSWANG Rui}
37584ad292fSWANG Rui
37684ad292fSWANG Rui@g_f64 = dso_local global double 0.0
37784ad292fSWANG Rui
37884ad292fSWANG Ruidefine dso_local double @load_f64() nounwind {
37984ad292fSWANG Rui; LA32-LABEL: load_f64:
38084ad292fSWANG Rui; LA32:       # %bb.0: # %entry
38184ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_f64)
382b2e69f52Shev; LA32-NEXT:    fld.d $fa0, $a0, %pc_lo12(g_f64)
38384ad292fSWANG Rui; LA32-NEXT:    ret
38484ad292fSWANG Rui;
38584ad292fSWANG Rui; LA64-LABEL: load_f64:
38684ad292fSWANG Rui; LA64:       # %bb.0: # %entry
38784ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_f64)
388b2e69f52Shev; LA64-NEXT:    fld.d $fa0, $a0, %pc_lo12(g_f64)
38984ad292fSWANG Rui; LA64-NEXT:    ret
39084ad292fSWANG Rui;
39184ad292fSWANG Rui; LA64-LARGE-LABEL: load_f64:
39284ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
39384ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_f64)
39484ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_f64)
39584ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_f64)
39684ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_f64)
397b2e69f52Shev; LA64-LARGE-NEXT:    fldx.d $fa0, $a1, $a0
39884ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
39984ad292fSWANG Ruientry:
40084ad292fSWANG Rui  %0 = load double, ptr @g_f64
40184ad292fSWANG Rui  ret double %0
40284ad292fSWANG Rui}
40384ad292fSWANG Rui
40484ad292fSWANG Ruidefine dso_local void @store_f64() nounwind {
40584ad292fSWANG Rui; LA32-LABEL: store_f64:
40684ad292fSWANG Rui; LA32:       # %bb.0: # %entry
40784ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_f64)
40882cf6558SWANG Rui; LA32-NEXT:    vldi $vr0, -912
409b2e69f52Shev; LA32-NEXT:    fst.d $fa0, $a0, %pc_lo12(g_f64)
41084ad292fSWANG Rui; LA32-NEXT:    ret
41184ad292fSWANG Rui;
41284ad292fSWANG Rui; LA64-LABEL: store_f64:
41384ad292fSWANG Rui; LA64:       # %bb.0: # %entry
41484ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_f64)
41584ad292fSWANG Rui; LA64-NEXT:    lu52i.d $a1, $zero, 1023
416b2e69f52Shev; LA64-NEXT:    st.d $a1, $a0, %pc_lo12(g_f64)
41784ad292fSWANG Rui; LA64-NEXT:    ret
41884ad292fSWANG Rui;
41984ad292fSWANG Rui; LA64-LARGE-LABEL: store_f64:
42084ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
42184ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_f64)
42284ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_f64)
42384ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_f64)
42484ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_f64)
425b2e69f52Shev; LA64-LARGE-NEXT:    lu52i.d $a2, $zero, 1023
426b2e69f52Shev; LA64-LARGE-NEXT:    stx.d $a2, $a1, $a0
42784ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
42884ad292fSWANG Ruientry:
42984ad292fSWANG Rui  store double 1.0, ptr @g_f64
43084ad292fSWANG Rui  ret void
43184ad292fSWANG Rui}
43284ad292fSWANG Rui
43384ad292fSWANG Rui@g_m64 = dso_local global i64 0
43484ad292fSWANG Rui
43584ad292fSWANG Ruidefine dso_local void @store_multi() nounwind {
43684ad292fSWANG Rui; LA32-LABEL: store_multi:
43784ad292fSWANG Rui; LA32:       # %bb.0: # %entry
43884ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_m64)
43984ad292fSWANG Rui; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_m64)
44084ad292fSWANG Rui; LA32-NEXT:    st.w $zero, $a0, 4
44184ad292fSWANG Rui; LA32-NEXT:    ori $a1, $zero, 1
44284ad292fSWANG Rui; LA32-NEXT:    st.w $a1, $a0, 0
44384ad292fSWANG Rui; LA32-NEXT:    st.w $zero, $a0, 4
44484ad292fSWANG Rui; LA32-NEXT:    ori $a1, $zero, 2
44584ad292fSWANG Rui; LA32-NEXT:    st.w $a1, $a0, 0
44684ad292fSWANG Rui; LA32-NEXT:    ret
44784ad292fSWANG Rui;
44884ad292fSWANG Rui; LA64-LABEL: store_multi:
44984ad292fSWANG Rui; LA64:       # %bb.0: # %entry
45084ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_m64)
45184ad292fSWANG Rui; LA64-NEXT:    ori $a1, $zero, 1
452b2e69f52Shev; LA64-NEXT:    st.d $a1, $a0, %pc_lo12(g_m64)
45384ad292fSWANG Rui; LA64-NEXT:    ori $a1, $zero, 2
454b2e69f52Shev; LA64-NEXT:    st.d $a1, $a0, %pc_lo12(g_m64)
45584ad292fSWANG Rui; LA64-NEXT:    ret
45684ad292fSWANG Rui;
45784ad292fSWANG Rui; LA64-LARGE-LABEL: store_multi:
45884ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
45984ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_m64)
46084ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_m64)
46184ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_m64)
46284ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_m64)
463b2e69f52Shev; LA64-LARGE-NEXT:    ori $a2, $zero, 1
464b2e69f52Shev; LA64-LARGE-NEXT:    stx.d $a2, $a1, $a0
465b2e69f52Shev; LA64-LARGE-NEXT:    ori $a2, $zero, 2
466b2e69f52Shev; LA64-LARGE-NEXT:    stx.d $a2, $a1, $a0
46784ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
46884ad292fSWANG Ruientry:
46984ad292fSWANG Rui  store volatile i64 1, ptr @g_m64
47084ad292fSWANG Rui  store volatile i64 2, ptr @g_m64
47184ad292fSWANG Rui  ret void
47284ad292fSWANG Rui}
47384ad292fSWANG Rui
47484ad292fSWANG Rui@g_sf32 = dso_local global float 0.0
47584ad292fSWANG Rui
47684ad292fSWANG Ruidefine dso_local void @store_sf32() nounwind {
47784ad292fSWANG Rui; LA32-LABEL: store_sf32:
47884ad292fSWANG Rui; LA32:       # %bb.0: # %entry
47984ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_sf32)
480b2e69f52Shev; LA32-NEXT:    fld.s $fa0, $a0, %pc_lo12(g_sf32)
481b2e69f52Shev; LA32-NEXT:    fst.s $fa0, $a0, %pc_lo12(g_sf32)
48284ad292fSWANG Rui; LA32-NEXT:    ret
48384ad292fSWANG Rui;
48484ad292fSWANG Rui; LA64-LABEL: store_sf32:
48584ad292fSWANG Rui; LA64:       # %bb.0: # %entry
48684ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_sf32)
487b2e69f52Shev; LA64-NEXT:    fld.s $fa0, $a0, %pc_lo12(g_sf32)
488b2e69f52Shev; LA64-NEXT:    fst.s $fa0, $a0, %pc_lo12(g_sf32)
48984ad292fSWANG Rui; LA64-NEXT:    ret
49084ad292fSWANG Rui;
49184ad292fSWANG Rui; LA64-LARGE-LABEL: store_sf32:
49284ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
49384ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_sf32)
49484ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_sf32)
49584ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_sf32)
49684ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_sf32)
497b2e69f52Shev; LA64-LARGE-NEXT:    fldx.s $fa0, $a1, $a0
498b2e69f52Shev; LA64-LARGE-NEXT:    fstx.s $fa0, $a1, $a0
49984ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
50084ad292fSWANG Ruientry:
50184ad292fSWANG Rui  %0 = load float, ptr @g_sf32
50284ad292fSWANG Rui  store volatile float %0, ptr @g_sf32
50384ad292fSWANG Rui  ret void
50484ad292fSWANG Rui}
50584ad292fSWANG Rui
50684ad292fSWANG Rui@g_sf64 = dso_local global double 0.0
50784ad292fSWANG Rui
50884ad292fSWANG Ruidefine dso_local void @store_sf64() nounwind {
50984ad292fSWANG Rui; LA32-LABEL: store_sf64:
51084ad292fSWANG Rui; LA32:       # %bb.0: # %entry
51184ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_sf64)
512b2e69f52Shev; LA32-NEXT:    fld.d $fa0, $a0, %pc_lo12(g_sf64)
513b2e69f52Shev; LA32-NEXT:    fst.d $fa0, $a0, %pc_lo12(g_sf64)
51484ad292fSWANG Rui; LA32-NEXT:    ret
51584ad292fSWANG Rui;
51684ad292fSWANG Rui; LA64-LABEL: store_sf64:
51784ad292fSWANG Rui; LA64:       # %bb.0: # %entry
51884ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_sf64)
519b2e69f52Shev; LA64-NEXT:    fld.d $fa0, $a0, %pc_lo12(g_sf64)
520b2e69f52Shev; LA64-NEXT:    fst.d $fa0, $a0, %pc_lo12(g_sf64)
52184ad292fSWANG Rui; LA64-NEXT:    ret
52284ad292fSWANG Rui;
52384ad292fSWANG Rui; LA64-LARGE-LABEL: store_sf64:
52484ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
52584ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_sf64)
52684ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_sf64)
52784ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_sf64)
52884ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_sf64)
529b2e69f52Shev; LA64-LARGE-NEXT:    fldx.d $fa0, $a1, $a0
530b2e69f52Shev; LA64-LARGE-NEXT:    fstx.d $fa0, $a1, $a0
53184ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
53284ad292fSWANG Ruientry:
53384ad292fSWANG Rui  %0 = load double, ptr @g_sf64
53484ad292fSWANG Rui  store volatile double %0, ptr @g_sf64
53584ad292fSWANG Rui  ret void
53684ad292fSWANG Rui}
53784ad292fSWANG Rui
53882cf6558SWANG Rui@g_i32x4_src = dso_local global [4 x i32] zeroinitializer, align 16
53982cf6558SWANG Rui@g_i32x4_dst = dso_local global [4 x i32] zeroinitializer, align 16
54082cf6558SWANG Rui
54182cf6558SWANG Ruidefine dso_local void @copy_i32x4() nounwind {
54282cf6558SWANG Rui; LA32-LABEL: copy_i32x4:
54382cf6558SWANG Rui; LA32:       # %bb.0: # %entry
54482cf6558SWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i32x4_src)
545985d64b0Shev; LA32-NEXT:    vld $vr0, $a0, %pc_lo12(g_i32x4_src)
54682cf6558SWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i32x4_dst)
547985d64b0Shev; LA32-NEXT:    vst $vr0, $a0, %pc_lo12(g_i32x4_dst)
54882cf6558SWANG Rui; LA32-NEXT:    ret
54982cf6558SWANG Rui;
55082cf6558SWANG Rui; LA64-LABEL: copy_i32x4:
55182cf6558SWANG Rui; LA64:       # %bb.0: # %entry
55282cf6558SWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i32x4_src)
553985d64b0Shev; LA64-NEXT:    vld $vr0, $a0, %pc_lo12(g_i32x4_src)
55482cf6558SWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i32x4_dst)
555985d64b0Shev; LA64-NEXT:    vst $vr0, $a0, %pc_lo12(g_i32x4_dst)
55682cf6558SWANG Rui; LA64-NEXT:    ret
55782cf6558SWANG Rui;
55882cf6558SWANG Rui; LA64-LARGE-LABEL: copy_i32x4:
55982cf6558SWANG Rui; LA64-LARGE:       # %bb.0: # %entry
56082cf6558SWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i32x4_src)
56182cf6558SWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i32x4_src)
56282cf6558SWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i32x4_src)
56382cf6558SWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i32x4_src)
564985d64b0Shev; LA64-LARGE-NEXT:    vldx $vr0, $a1, $a0
56582cf6558SWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i32x4_dst)
56682cf6558SWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i32x4_dst)
56782cf6558SWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i32x4_dst)
56882cf6558SWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i32x4_dst)
569985d64b0Shev; LA64-LARGE-NEXT:    vstx $vr0, $a1, $a0
57082cf6558SWANG Rui; LA64-LARGE-NEXT:    ret
57182cf6558SWANG Ruientry:
57282cf6558SWANG Rui  %0 = load <4 x i32>, ptr @g_i32x4_src, align 16
57382cf6558SWANG Rui  store <4 x i32> %0, ptr @g_i32x4_dst, align 16
57482cf6558SWANG Rui  ret void
57582cf6558SWANG Rui}
57682cf6558SWANG Rui
57782cf6558SWANG Rui@g_i32x8_src = dso_local global [8 x i32] zeroinitializer, align 32
57882cf6558SWANG Rui@g_i32x8_dst = dso_local global [8 x i32] zeroinitializer, align 32
57982cf6558SWANG Rui
58082cf6558SWANG Ruidefine dso_local void @copy_i32x8() nounwind {
58182cf6558SWANG Rui; LA32-LABEL: copy_i32x8:
58282cf6558SWANG Rui; LA32:       # %bb.0: # %entry
58382cf6558SWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i32x4_src)
584985d64b0Shev; LA32-NEXT:    xvld $xr0, $a0, %pc_lo12(g_i32x4_src)
58582cf6558SWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i32x4_dst)
586985d64b0Shev; LA32-NEXT:    xvst $xr0, $a0, %pc_lo12(g_i32x4_dst)
58782cf6558SWANG Rui; LA32-NEXT:    ret
58882cf6558SWANG Rui;
58982cf6558SWANG Rui; LA64-LABEL: copy_i32x8:
59082cf6558SWANG Rui; LA64:       # %bb.0: # %entry
59182cf6558SWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i32x4_src)
592985d64b0Shev; LA64-NEXT:    xvld $xr0, $a0, %pc_lo12(g_i32x4_src)
59382cf6558SWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i32x4_dst)
594985d64b0Shev; LA64-NEXT:    xvst $xr0, $a0, %pc_lo12(g_i32x4_dst)
59582cf6558SWANG Rui; LA64-NEXT:    ret
59682cf6558SWANG Rui;
59782cf6558SWANG Rui; LA64-LARGE-LABEL: copy_i32x8:
59882cf6558SWANG Rui; LA64-LARGE:       # %bb.0: # %entry
59982cf6558SWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i32x4_src)
60082cf6558SWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i32x4_src)
60182cf6558SWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i32x4_src)
60282cf6558SWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i32x4_src)
603985d64b0Shev; LA64-LARGE-NEXT:    xvldx $xr0, $a1, $a0
60482cf6558SWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i32x4_dst)
60582cf6558SWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i32x4_dst)
60682cf6558SWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i32x4_dst)
60782cf6558SWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i32x4_dst)
608985d64b0Shev; LA64-LARGE-NEXT:    xvstx $xr0, $a1, $a0
60982cf6558SWANG Rui; LA64-LARGE-NEXT:    ret
61082cf6558SWANG Ruientry:
61182cf6558SWANG Rui  %0 = load <8 x i32>, ptr @g_i32x4_src, align 32
61282cf6558SWANG Rui  store <8 x i32> %0, ptr @g_i32x4_dst, align 32
61382cf6558SWANG Rui  ret void
61482cf6558SWANG Rui}
61582cf6558SWANG Rui
61682cf6558SWANG Rui@g_i8x16 = dso_local global <16 x i8> zeroinitializer, align 16
61782cf6558SWANG Rui
61882cf6558SWANG Ruidefine void @copy_i8_to_i8x16() {
61982cf6558SWANG Rui; LA32-LABEL: copy_i8_to_i8x16:
62082cf6558SWANG Rui; LA32:       # %bb.0: # %entry
62182cf6558SWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
622985d64b0Shev; LA32-NEXT:    vldrepl.b $vr0, $a0, %pc_lo12(g_i8)
62382cf6558SWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i8x16)
624985d64b0Shev; LA32-NEXT:    vst $vr0, $a0, %pc_lo12(g_i8x16)
62582cf6558SWANG Rui; LA32-NEXT:    ret
62682cf6558SWANG Rui;
62782cf6558SWANG Rui; LA64-LABEL: copy_i8_to_i8x16:
62882cf6558SWANG Rui; LA64:       # %bb.0: # %entry
62982cf6558SWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
630985d64b0Shev; LA64-NEXT:    vldrepl.b $vr0, $a0, %pc_lo12(g_i8)
63182cf6558SWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i8x16)
632985d64b0Shev; LA64-NEXT:    vst $vr0, $a0, %pc_lo12(g_i8x16)
63382cf6558SWANG Rui; LA64-NEXT:    ret
63482cf6558SWANG Rui;
63582cf6558SWANG Rui; LA64-LARGE-LABEL: copy_i8_to_i8x16:
63682cf6558SWANG Rui; LA64-LARGE:       # %bb.0: # %entry
63782cf6558SWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
63882cf6558SWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i8)
63982cf6558SWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i8)
64082cf6558SWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i8)
64182cf6558SWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
64282cf6558SWANG Rui; LA64-LARGE-NEXT:    vldrepl.b $vr0, $a0, 0
64382cf6558SWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i8x16)
64482cf6558SWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i8x16)
64582cf6558SWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i8x16)
64682cf6558SWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i8x16)
647985d64b0Shev; LA64-LARGE-NEXT:    vstx $vr0, $a1, $a0
64882cf6558SWANG Rui; LA64-LARGE-NEXT:    ret
64982cf6558SWANG Ruientry:
65082cf6558SWANG Rui  %0 = call <16 x i8> @llvm.loongarch.lsx.vldrepl.b(ptr @g_i8, i32 0)
65182cf6558SWANG Rui  store <16 x i8> %0, ptr @g_i8x16, align 16
65282cf6558SWANG Rui  ret void
65382cf6558SWANG Rui}
65482cf6558SWANG Rui
65582cf6558SWANG Rui@g_i8x32 = dso_local global <32 x i8> zeroinitializer, align 32
65682cf6558SWANG Rui
65782cf6558SWANG Ruidefine void @copy_i8_to_i8x32() {
65882cf6558SWANG Rui; LA32-LABEL: copy_i8_to_i8x32:
65982cf6558SWANG Rui; LA32:       # %bb.0: # %entry
66082cf6558SWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
661985d64b0Shev; LA32-NEXT:    xvldrepl.b $xr0, $a0, %pc_lo12(g_i8)
66282cf6558SWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_i8x32)
663985d64b0Shev; LA32-NEXT:    xvst $xr0, $a0, %pc_lo12(g_i8x32)
66482cf6558SWANG Rui; LA32-NEXT:    ret
66582cf6558SWANG Rui;
66682cf6558SWANG Rui; LA64-LABEL: copy_i8_to_i8x32:
66782cf6558SWANG Rui; LA64:       # %bb.0: # %entry
66882cf6558SWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
669985d64b0Shev; LA64-NEXT:    xvldrepl.b $xr0, $a0, %pc_lo12(g_i8)
67082cf6558SWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_i8x32)
671985d64b0Shev; LA64-NEXT:    xvst $xr0, $a0, %pc_lo12(g_i8x32)
67282cf6558SWANG Rui; LA64-NEXT:    ret
67382cf6558SWANG Rui;
67482cf6558SWANG Rui; LA64-LARGE-LABEL: copy_i8_to_i8x32:
67582cf6558SWANG Rui; LA64-LARGE:       # %bb.0: # %entry
67682cf6558SWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i8)
67782cf6558SWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i8)
67882cf6558SWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i8)
67982cf6558SWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i8)
68082cf6558SWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
68182cf6558SWANG Rui; LA64-LARGE-NEXT:    xvldrepl.b $xr0, $a0, 0
68282cf6558SWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_i8x32)
68382cf6558SWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_i8x32)
68482cf6558SWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_i8x32)
68582cf6558SWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_i8x32)
686985d64b0Shev; LA64-LARGE-NEXT:    xvstx $xr0, $a1, $a0
68782cf6558SWANG Rui; LA64-LARGE-NEXT:    ret
68882cf6558SWANG Ruientry:
68982cf6558SWANG Rui  %0 = call <32 x i8> @llvm.loongarch.lasx.xvldrepl.b(ptr @g_i8, i32 0)
69082cf6558SWANG Rui  store <32 x i8> %0, ptr @g_i8x32, align 32
69182cf6558SWANG Rui  ret void
69282cf6558SWANG Rui}
69382cf6558SWANG Rui
69484ad292fSWANG Rui@g_rmw = dso_local global i64 0
69584ad292fSWANG Rui
69684ad292fSWANG Ruidefine dso_local void @rmw() nounwind {
69784ad292fSWANG Rui; LA32-LABEL: rmw:
69884ad292fSWANG Rui; LA32:       # %bb.0: # %entry
69984ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_rmw)
70084ad292fSWANG Rui; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_rmw)
70184ad292fSWANG Rui; LA32-NEXT:    ld.w $a1, $a0, 0
70284ad292fSWANG Rui; LA32-NEXT:    ld.w $a2, $a0, 4
70384ad292fSWANG Rui; LA32-NEXT:    addi.w $a1, $a1, 1
70484ad292fSWANG Rui; LA32-NEXT:    sltui $a3, $a1, 1
70584ad292fSWANG Rui; LA32-NEXT:    add.w $a2, $a2, $a3
70684ad292fSWANG Rui; LA32-NEXT:    st.w $a1, $a0, 0
70784ad292fSWANG Rui; LA32-NEXT:    st.w $a2, $a0, 4
70884ad292fSWANG Rui; LA32-NEXT:    ret
70984ad292fSWANG Rui;
71084ad292fSWANG Rui; LA64-LABEL: rmw:
71184ad292fSWANG Rui; LA64:       # %bb.0: # %entry
71284ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_rmw)
713b2e69f52Shev; LA64-NEXT:    ld.d $a1, $a0, %pc_lo12(g_rmw)
71484ad292fSWANG Rui; LA64-NEXT:    addi.d $a1, $a1, 1
715b2e69f52Shev; LA64-NEXT:    st.d $a1, $a0, %pc_lo12(g_rmw)
71684ad292fSWANG Rui; LA64-NEXT:    ret
71784ad292fSWANG Rui;
71884ad292fSWANG Rui; LA64-LARGE-LABEL: rmw:
71984ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
72084ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_rmw)
72184ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_rmw)
72284ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_rmw)
72384ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_rmw)
724b2e69f52Shev; LA64-LARGE-NEXT:    ldx.d $a2, $a1, $a0
725b2e69f52Shev; LA64-LARGE-NEXT:    addi.d $a2, $a2, 1
726b2e69f52Shev; LA64-LARGE-NEXT:    stx.d $a2, $a1, $a0
72784ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
72884ad292fSWANG Ruientry:
72984ad292fSWANG Rui  %0 = load i64, ptr @g_rmw
73084ad292fSWANG Rui  %1 = add i64 %0, 1
73184ad292fSWANG Rui  store i64 %1, ptr @g_rmw
73284ad292fSWANG Rui  ret void
73384ad292fSWANG Rui}
73484ad292fSWANG Rui
73584ad292fSWANG Rui@g_a32 = dso_local global [2048 x i32] zeroinitializer, align 4
73684ad292fSWANG Rui
73784ad292fSWANG Ruidefine dso_local void @store_a32() nounwind {
73884ad292fSWANG Rui; LA32-LABEL: store_a32:
73984ad292fSWANG Rui; LA32:       # %bb.0: # %entry
740b2e69f52Shev; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a32+4096)
74184ad292fSWANG Rui; LA32-NEXT:    ori $a1, $zero, 1
742b2e69f52Shev; LA32-NEXT:    st.w $a1, $a0, %pc_lo12(g_a32+4096)
74384ad292fSWANG Rui; LA32-NEXT:    ret
74484ad292fSWANG Rui;
74584ad292fSWANG Rui; LA64-LABEL: store_a32:
74684ad292fSWANG Rui; LA64:       # %bb.0: # %entry
747b2e69f52Shev; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a32+4096)
74884ad292fSWANG Rui; LA64-NEXT:    ori $a1, $zero, 1
749b2e69f52Shev; LA64-NEXT:    st.w $a1, $a0, %pc_lo12(g_a32+4096)
75084ad292fSWANG Rui; LA64-NEXT:    ret
75184ad292fSWANG Rui;
75284ad292fSWANG Rui; LA64-LARGE-LABEL: store_a32:
75384ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
754b2e69f52Shev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a32+4096)
755b2e69f52Shev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a32+4096)
756b2e69f52Shev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a32+4096)
757b2e69f52Shev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a32+4096)
758b2e69f52Shev; LA64-LARGE-NEXT:    ori $a2, $zero, 1
759b2e69f52Shev; LA64-LARGE-NEXT:    stx.w $a2, $a1, $a0
76084ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
76184ad292fSWANG Ruientry:
76284ad292fSWANG Rui  store i32 1, ptr getelementptr inbounds ([1 x i32], ptr @g_a32, i32 1024), align 4
76384ad292fSWANG Rui  ret void
76484ad292fSWANG Rui}
76584ad292fSWANG Rui
76684ad292fSWANG Ruidefine dso_local void @store_a32_2() nounwind {
76784ad292fSWANG Rui; LA32-LABEL: store_a32_2:
76884ad292fSWANG Rui; LA32:       # %bb.0: # %entry
76984ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a32)
77084ad292fSWANG Rui; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_a32)
77184ad292fSWANG Rui; LA32-NEXT:    lu12i.w $a1, 1
77284ad292fSWANG Rui; LA32-NEXT:    add.w $a2, $a0, $a1
77384ad292fSWANG Rui; LA32-NEXT:    ori $a3, $zero, 1
77484ad292fSWANG Rui; LA32-NEXT:    st.w $a3, $a2, 0
77584ad292fSWANG Rui; LA32-NEXT:    ori $a1, $a1, 8
77684ad292fSWANG Rui; LA32-NEXT:    add.w $a0, $a0, $a1
77784ad292fSWANG Rui; LA32-NEXT:    ori $a1, $zero, 2
77884ad292fSWANG Rui; LA32-NEXT:    st.w $a1, $a0, 0
77984ad292fSWANG Rui; LA32-NEXT:    ret
78084ad292fSWANG Rui;
78184ad292fSWANG Rui; LA64-LABEL: store_a32_2:
78284ad292fSWANG Rui; LA64:       # %bb.0: # %entry
78384ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a32)
78484ad292fSWANG Rui; LA64-NEXT:    addi.d $a0, $a0, %pc_lo12(g_a32)
78584ad292fSWANG Rui; LA64-NEXT:    ori $a1, $zero, 1
78684ad292fSWANG Rui; LA64-NEXT:    stptr.w $a1, $a0, 4096
78784ad292fSWANG Rui; LA64-NEXT:    ori $a1, $zero, 2
78884ad292fSWANG Rui; LA64-NEXT:    stptr.w $a1, $a0, 4104
78984ad292fSWANG Rui; LA64-NEXT:    ret
79084ad292fSWANG Rui;
79184ad292fSWANG Rui; LA64-LARGE-LABEL: store_a32_2:
79284ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
79384ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a32)
79484ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a32)
79584ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a32)
79684ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a32)
79784ad292fSWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
79884ad292fSWANG Rui; LA64-LARGE-NEXT:    ori $a1, $zero, 1
79984ad292fSWANG Rui; LA64-LARGE-NEXT:    stptr.w $a1, $a0, 4096
80084ad292fSWANG Rui; LA64-LARGE-NEXT:    ori $a1, $zero, 2
80184ad292fSWANG Rui; LA64-LARGE-NEXT:    stptr.w $a1, $a0, 4104
80284ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
80384ad292fSWANG Ruientry:
80484ad292fSWANG Rui  store i32 1, ptr getelementptr inbounds ([1 x i32], ptr @g_a32, i32 1024), align 4
80584ad292fSWANG Rui  store i32 2, ptr getelementptr inbounds ([1 x i32], ptr @g_a32, i32 1026), align 4
80684ad292fSWANG Rui  ret void
80784ad292fSWANG Rui}
80884ad292fSWANG Rui
80984ad292fSWANG Ruidefine dso_local void @control_flow_with_mem_access() nounwind {
81084ad292fSWANG Rui; LA32-LABEL: control_flow_with_mem_access:
81184ad292fSWANG Rui; LA32:       # %bb.0: # %entry
812b2e69f52Shev; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a32+4)
813b2e69f52Shev; LA32-NEXT:    ld.w $a1, $a0, %pc_lo12(g_a32+4)
81484ad292fSWANG Rui; LA32-NEXT:    ori $a2, $zero, 1
81582cf6558SWANG Rui; LA32-NEXT:    blt $a1, $a2, .LBB25_2
81684ad292fSWANG Rui; LA32-NEXT:  # %bb.1: # %if.then
81784ad292fSWANG Rui; LA32-NEXT:    ori $a1, $zero, 10
818b2e69f52Shev; LA32-NEXT:    st.w $a1, $a0, %pc_lo12(g_a32+4)
81982cf6558SWANG Rui; LA32-NEXT:  .LBB25_2: # %if.end
82084ad292fSWANG Rui; LA32-NEXT:    ret
82184ad292fSWANG Rui;
82284ad292fSWANG Rui; LA64-LABEL: control_flow_with_mem_access:
82384ad292fSWANG Rui; LA64:       # %bb.0: # %entry
824b2e69f52Shev; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a32+4)
825b2e69f52Shev; LA64-NEXT:    ld.w $a1, $a0, %pc_lo12(g_a32+4)
82684ad292fSWANG Rui; LA64-NEXT:    ori $a2, $zero, 1
82782cf6558SWANG Rui; LA64-NEXT:    blt $a1, $a2, .LBB25_2
82884ad292fSWANG Rui; LA64-NEXT:  # %bb.1: # %if.then
82984ad292fSWANG Rui; LA64-NEXT:    ori $a1, $zero, 10
830b2e69f52Shev; LA64-NEXT:    st.w $a1, $a0, %pc_lo12(g_a32+4)
83182cf6558SWANG Rui; LA64-NEXT:  .LBB25_2: # %if.end
83284ad292fSWANG Rui; LA64-NEXT:    ret
83384ad292fSWANG Rui;
83484ad292fSWANG Rui; LA64-LARGE-LABEL: control_flow_with_mem_access:
83584ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
836b2e69f52Shev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a32+4)
837b2e69f52Shev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a32+4)
838b2e69f52Shev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a32+4)
839b2e69f52Shev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a32+4)
840b2e69f52Shev; LA64-LARGE-NEXT:    ldx.w $a0, $a1, $a0
84184ad292fSWANG Rui; LA64-LARGE-NEXT:    ori $a1, $zero, 1
84282cf6558SWANG Rui; LA64-LARGE-NEXT:    blt $a0, $a1, .LBB25_2
84384ad292fSWANG Rui; LA64-LARGE-NEXT:  # %bb.1: # %if.then
844b2e69f52Shev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a32+4)
845b2e69f52Shev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a32+4)
846b2e69f52Shev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a32+4)
847b2e69f52Shev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a32+4)
848b2e69f52Shev; LA64-LARGE-NEXT:    ori $a2, $zero, 10
849b2e69f52Shev; LA64-LARGE-NEXT:    stx.w $a2, $a1, $a0
85082cf6558SWANG Rui; LA64-LARGE-NEXT:  .LBB25_2: # %if.end
85184ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
85284ad292fSWANG Ruientry:
85384ad292fSWANG Rui  %0 = load i32, ptr getelementptr inbounds ([1 x i32], ptr @g_a32, i32 1), align 4
85484ad292fSWANG Rui  %cmp = icmp sgt i32 %0, 0
85584ad292fSWANG Rui  br i1 %cmp, label %if.then, label %if.end
85684ad292fSWANG Rui
85784ad292fSWANG Ruiif.then:
85884ad292fSWANG Rui  store i32 10, ptr getelementptr inbounds ([1 x i32], ptr @g_a32, i32 1), align 4
85984ad292fSWANG Rui  br label %if.end
86084ad292fSWANG Rui
86184ad292fSWANG Ruiif.end:
86284ad292fSWANG Rui  ret void
86384ad292fSWANG Rui}
86484ad292fSWANG Rui
86584ad292fSWANG Ruidefine dso_local ptr @load_ba_1() nounwind {
86684ad292fSWANG Rui; LA32-LABEL: load_ba_1:
86784ad292fSWANG Rui; LA32:       # %bb.0: # %entry
86884ad292fSWANG Rui; LA32-NEXT:  .Ltmp0: # Block address taken
86984ad292fSWANG Rui; LA32-NEXT:  # %bb.1: # %label
87084ad292fSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(.Ltmp0)
871b2e69f52Shev; LA32-NEXT:    ld.w $a0, $a0, %pc_lo12(.Ltmp0)
87284ad292fSWANG Rui; LA32-NEXT:    ret
87384ad292fSWANG Rui;
87484ad292fSWANG Rui; LA64-LABEL: load_ba_1:
87584ad292fSWANG Rui; LA64:       # %bb.0: # %entry
87684ad292fSWANG Rui; LA64-NEXT:  .Ltmp0: # Block address taken
87784ad292fSWANG Rui; LA64-NEXT:  # %bb.1: # %label
87884ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(.Ltmp0)
879b2e69f52Shev; LA64-NEXT:    ld.d $a0, $a0, %pc_lo12(.Ltmp0)
88084ad292fSWANG Rui; LA64-NEXT:    ret
88184ad292fSWANG Rui;
88284ad292fSWANG Rui; LA64-LARGE-LABEL: load_ba_1:
88384ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
88484ad292fSWANG Rui; LA64-LARGE-NEXT:  .Ltmp0: # Block address taken
88584ad292fSWANG Rui; LA64-LARGE-NEXT:  # %bb.1: # %label
88684ad292fSWANG Rui; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(.Ltmp0)
88784ad292fSWANG Rui; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(.Ltmp0)
88884ad292fSWANG Rui; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(.Ltmp0)
88984ad292fSWANG Rui; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(.Ltmp0)
890b2e69f52Shev; LA64-LARGE-NEXT:    ldx.d $a0, $a1, $a0
89184ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
89284ad292fSWANG Ruientry:
89384ad292fSWANG Rui  br label %label
89484ad292fSWANG Ruilabel:
89584ad292fSWANG Rui  %0 = load ptr, ptr blockaddress(@load_ba_1, %label)
89684ad292fSWANG Rui  ret ptr %0
89784ad292fSWANG Rui}
89884ad292fSWANG Rui
89984ad292fSWANG Ruidefine dso_local ptr @load_ba_2() nounwind {
90084ad292fSWANG Rui; LA32-LABEL: load_ba_2:
90184ad292fSWANG Rui; LA32:       # %bb.0: # %entry
90284ad292fSWANG Rui; LA32-NEXT:  .Ltmp1: # Block address taken
90384ad292fSWANG Rui; LA32-NEXT:  # %bb.1: # %label
904b2e69f52Shev; LA32-NEXT:    pcalau12i $a0, %pc_hi20(.Ltmp1+8)
905b2e69f52Shev; LA32-NEXT:    ld.w $a0, $a0, %pc_lo12(.Ltmp1+8)
90684ad292fSWANG Rui; LA32-NEXT:    ret
90784ad292fSWANG Rui;
90884ad292fSWANG Rui; LA64-LABEL: load_ba_2:
90984ad292fSWANG Rui; LA64:       # %bb.0: # %entry
91084ad292fSWANG Rui; LA64-NEXT:  .Ltmp1: # Block address taken
91184ad292fSWANG Rui; LA64-NEXT:  # %bb.1: # %label
912b2e69f52Shev; LA64-NEXT:    pcalau12i $a0, %pc_hi20(.Ltmp1+8)
913b2e69f52Shev; LA64-NEXT:    ld.d $a0, $a0, %pc_lo12(.Ltmp1+8)
91484ad292fSWANG Rui; LA64-NEXT:    ret
91584ad292fSWANG Rui;
91684ad292fSWANG Rui; LA64-LARGE-LABEL: load_ba_2:
91784ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
91884ad292fSWANG Rui; LA64-LARGE-NEXT:  .Ltmp1: # Block address taken
91984ad292fSWANG Rui; LA64-LARGE-NEXT:  # %bb.1: # %label
920b2e69f52Shev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(.Ltmp1+8)
921b2e69f52Shev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(.Ltmp1+8)
922b2e69f52Shev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(.Ltmp1+8)
923b2e69f52Shev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(.Ltmp1+8)
924b2e69f52Shev; LA64-LARGE-NEXT:    ldx.d $a0, $a1, $a0
92584ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
92684ad292fSWANG Ruientry:
92784ad292fSWANG Rui  br label %label
92884ad292fSWANG Ruilabel:
92984ad292fSWANG Rui  %0 = load ptr, ptr getelementptr inbounds (i8, ptr blockaddress(@load_ba_2, %label), i32 8)
93084ad292fSWANG Rui  ret ptr %0
93184ad292fSWANG Rui}
93284ad292fSWANG Rui
93384ad292fSWANG Rui@g_a64 = dso_local global [614750729487779976 x i64] zeroinitializer, align 8
93484ad292fSWANG Rui
93584ad292fSWANG Ruidefine dso_local ptr @load_addr_offset_1() nounwind {
93684ad292fSWANG Rui; LA32-LABEL: load_addr_offset_1:
93784ad292fSWANG Rui; LA32:       # %bb.0: # %entry
938b2e69f52Shev; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+8)
939b2e69f52Shev; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_a64+8)
94084ad292fSWANG Rui; LA32-NEXT:    ret
94184ad292fSWANG Rui;
94284ad292fSWANG Rui; LA64-LABEL: load_addr_offset_1:
94384ad292fSWANG Rui; LA64:       # %bb.0: # %entry
944b2e69f52Shev; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+8)
945b2e69f52Shev; LA64-NEXT:    addi.d $a0, $a0, %pc_lo12(g_a64+8)
94684ad292fSWANG Rui; LA64-NEXT:    ret
94784ad292fSWANG Rui;
94884ad292fSWANG Rui; LA64-LARGE-LABEL: load_addr_offset_1:
94984ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
950b2e69f52Shev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+8)
951b2e69f52Shev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a64+8)
952b2e69f52Shev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a64+8)
953b2e69f52Shev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a64+8)
95484ad292fSWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
95584ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
95684ad292fSWANG Ruientry:
95784ad292fSWANG Rui  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 1)
95884ad292fSWANG Rui}
95984ad292fSWANG Rui
96084ad292fSWANG Ruidefine dso_local ptr @load_addr_offset_257() nounwind {
96184ad292fSWANG Rui; LA32-LABEL: load_addr_offset_257:
96284ad292fSWANG Rui; LA32:       # %bb.0: # %entry
963b2e69f52Shev; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+2056)
964b2e69f52Shev; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_a64+2056)
96584ad292fSWANG Rui; LA32-NEXT:    ret
96684ad292fSWANG Rui;
96784ad292fSWANG Rui; LA64-LABEL: load_addr_offset_257:
96884ad292fSWANG Rui; LA64:       # %bb.0: # %entry
969b2e69f52Shev; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+2056)
970b2e69f52Shev; LA64-NEXT:    addi.d $a0, $a0, %pc_lo12(g_a64+2056)
97184ad292fSWANG Rui; LA64-NEXT:    ret
97284ad292fSWANG Rui;
97384ad292fSWANG Rui; LA64-LARGE-LABEL: load_addr_offset_257:
97484ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
975b2e69f52Shev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+2056)
976b2e69f52Shev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a64+2056)
977b2e69f52Shev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a64+2056)
978b2e69f52Shev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a64+2056)
97984ad292fSWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
98084ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
98184ad292fSWANG Ruientry:
98284ad292fSWANG Rui  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 257)
98384ad292fSWANG Rui}
98484ad292fSWANG Rui
98584ad292fSWANG Ruidefine dso_local ptr @load_addr_offset_1048576() nounwind {
98684ad292fSWANG Rui; LA32-LABEL: load_addr_offset_1048576:
98784ad292fSWANG Rui; LA32:       # %bb.0: # %entry
988b2e69f52Shev; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+8388608)
989b2e69f52Shev; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_a64+8388608)
99084ad292fSWANG Rui; LA32-NEXT:    ret
99184ad292fSWANG Rui;
99284ad292fSWANG Rui; LA64-LABEL: load_addr_offset_1048576:
99384ad292fSWANG Rui; LA64:       # %bb.0: # %entry
994b2e69f52Shev; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+8388608)
995b2e69f52Shev; LA64-NEXT:    addi.d $a0, $a0, %pc_lo12(g_a64+8388608)
99684ad292fSWANG Rui; LA64-NEXT:    ret
99784ad292fSWANG Rui;
99884ad292fSWANG Rui; LA64-LARGE-LABEL: load_addr_offset_1048576:
99984ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
1000b2e69f52Shev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+8388608)
1001b2e69f52Shev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a64+8388608)
1002b2e69f52Shev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a64+8388608)
1003b2e69f52Shev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a64+8388608)
100484ad292fSWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
100584ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
100684ad292fSWANG Ruientry:
100784ad292fSWANG Rui  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 1048576)
100884ad292fSWANG Rui}
100984ad292fSWANG Rui
101084ad292fSWANG Ruidefine dso_local ptr @load_addr_offset_1048577() nounwind {
101184ad292fSWANG Rui; LA32-LABEL: load_addr_offset_1048577:
101284ad292fSWANG Rui; LA32:       # %bb.0: # %entry
1013b2e69f52Shev; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+8388616)
1014b2e69f52Shev; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_a64+8388616)
101584ad292fSWANG Rui; LA32-NEXT:    ret
101684ad292fSWANG Rui;
101784ad292fSWANG Rui; LA64-LABEL: load_addr_offset_1048577:
101884ad292fSWANG Rui; LA64:       # %bb.0: # %entry
1019b2e69f52Shev; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+8388616)
1020b2e69f52Shev; LA64-NEXT:    addi.d $a0, $a0, %pc_lo12(g_a64+8388616)
102184ad292fSWANG Rui; LA64-NEXT:    ret
102284ad292fSWANG Rui;
102384ad292fSWANG Rui; LA64-LARGE-LABEL: load_addr_offset_1048577:
102484ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
1025b2e69f52Shev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+8388616)
1026b2e69f52Shev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a64+8388616)
1027b2e69f52Shev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a64+8388616)
1028b2e69f52Shev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a64+8388616)
102984ad292fSWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
103084ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
103184ad292fSWANG Ruientry:
103284ad292fSWANG Rui  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 1048577)
103384ad292fSWANG Rui}
103484ad292fSWANG Rui
103584ad292fSWANG Ruidefine dso_local ptr @load_addr_offset_268432896() nounwind {
103684ad292fSWANG Rui; LA32-LABEL: load_addr_offset_268432896:
103784ad292fSWANG Rui; LA32:       # %bb.0: # %entry
1038b2e69f52Shev; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+2147463168)
1039b2e69f52Shev; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_a64+2147463168)
104084ad292fSWANG Rui; LA32-NEXT:    ret
104184ad292fSWANG Rui;
104284ad292fSWANG Rui; LA64-LABEL: load_addr_offset_268432896:
104384ad292fSWANG Rui; LA64:       # %bb.0: # %entry
1044b2e69f52Shev; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+2147463168)
1045b2e69f52Shev; LA64-NEXT:    addi.d $a0, $a0, %pc_lo12(g_a64+2147463168)
104684ad292fSWANG Rui; LA64-NEXT:    ret
104784ad292fSWANG Rui;
104884ad292fSWANG Rui; LA64-LARGE-LABEL: load_addr_offset_268432896:
104984ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
1050b2e69f52Shev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+2147463168)
1051b2e69f52Shev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a64+2147463168)
1052b2e69f52Shev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a64+2147463168)
1053b2e69f52Shev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a64+2147463168)
105484ad292fSWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
105584ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
105684ad292fSWANG Ruientry:
105784ad292fSWANG Rui  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 268432896)
105884ad292fSWANG Rui}
105984ad292fSWANG Rui
106084ad292fSWANG Ruidefine dso_local ptr @load_addr_offset_268432897() nounwind {
106184ad292fSWANG Rui; LA32-LABEL: load_addr_offset_268432897:
106284ad292fSWANG Rui; LA32:       # %bb.0: # %entry
1063b2e69f52Shev; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+2147463176)
1064b2e69f52Shev; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_a64+2147463176)
106584ad292fSWANG Rui; LA32-NEXT:    ret
106684ad292fSWANG Rui;
106784ad292fSWANG Rui; LA64-LABEL: load_addr_offset_268432897:
106884ad292fSWANG Rui; LA64:       # %bb.0: # %entry
1069b2e69f52Shev; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+2147463176)
1070b2e69f52Shev; LA64-NEXT:    addi.d $a0, $a0, %pc_lo12(g_a64+2147463176)
107184ad292fSWANG Rui; LA64-NEXT:    ret
107284ad292fSWANG Rui;
107384ad292fSWANG Rui; LA64-LARGE-LABEL: load_addr_offset_268432897:
107484ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
1075b2e69f52Shev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+2147463176)
1076b2e69f52Shev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a64+2147463176)
1077b2e69f52Shev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a64+2147463176)
1078b2e69f52Shev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a64+2147463176)
107984ad292fSWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
108084ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
108184ad292fSWANG Ruientry:
108284ad292fSWANG Rui  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 268432897)
108384ad292fSWANG Rui}
108484ad292fSWANG Rui
10854614b80cSWANG Ruidefine dso_local ptr @load_addr_offset_281474439839744() nounwind {
10864614b80cSWANG Rui; LA32-LABEL: load_addr_offset_281474439839744:
10874614b80cSWANG Rui; LA32:       # %bb.0: # %entry
10884614b80cSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a64)
10894614b80cSWANG Rui; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_a64)
10904614b80cSWANG Rui; LA32-NEXT:    ret
10914614b80cSWANG Rui;
10924614b80cSWANG Rui; LA64-LABEL: load_addr_offset_281474439839744:
10934614b80cSWANG Rui; LA64:       # %bb.0: # %entry
10944614b80cSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a64)
10954614b80cSWANG Rui; LA64-NEXT:    addi.d $a0, $a0, %pc_lo12(g_a64)
10964614b80cSWANG Rui; LA64-NEXT:    ori $a1, $zero, 0
10974614b80cSWANG Rui; LA64-NEXT:    lu32i.d $a1, 524287
10984614b80cSWANG Rui; LA64-NEXT:    add.d $a0, $a0, $a1
10994614b80cSWANG Rui; LA64-NEXT:    ret
11004614b80cSWANG Rui;
11014614b80cSWANG Rui; LA64-LARGE-LABEL: load_addr_offset_281474439839744:
11024614b80cSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
1103*b225b15aShev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+2251795518717952)
1104*b225b15aShev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a64+2251795518717952)
1105*b225b15aShev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a64+2251795518717952)
1106*b225b15aShev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a64+2251795518717952)
11074614b80cSWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
11084614b80cSWANG Rui; LA64-LARGE-NEXT:    ret
11094614b80cSWANG Ruientry:
11104614b80cSWANG Rui  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 281474439839744)
11114614b80cSWANG Rui}
11124614b80cSWANG Rui
11134614b80cSWANG Ruidefine dso_local ptr @load_addr_offset_248792680471040() nounwind {
11144614b80cSWANG Rui; LA32-LABEL: load_addr_offset_248792680471040:
11154614b80cSWANG Rui; LA32:       # %bb.0: # %entry
11164614b80cSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+2059194368)
11174614b80cSWANG Rui; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_a64+2059194368)
11184614b80cSWANG Rui; LA32-NEXT:    ret
11194614b80cSWANG Rui;
11204614b80cSWANG Rui; LA64-LABEL: load_addr_offset_248792680471040:
11214614b80cSWANG Rui; LA64:       # %bb.0: # %entry
11224614b80cSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a64)
11234614b80cSWANG Rui; LA64-NEXT:    addi.d $a0, $a0, %pc_lo12(g_a64)
11244614b80cSWANG Rui; LA64-NEXT:    lu12i.w $a1, 502733
11254614b80cSWANG Rui; LA64-NEXT:    lu32i.d $a1, 463412
11264614b80cSWANG Rui; LA64-NEXT:    add.d $a0, $a0, $a1
11274614b80cSWANG Rui; LA64-NEXT:    ret
11284614b80cSWANG Rui;
11294614b80cSWANG Rui; LA64-LARGE-LABEL: load_addr_offset_248792680471040:
11304614b80cSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
1131*b225b15aShev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+1990341443768320)
1132*b225b15aShev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a64+1990341443768320)
1133*b225b15aShev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a64+1990341443768320)
1134*b225b15aShev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a64+1990341443768320)
11354614b80cSWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
11364614b80cSWANG Rui; LA64-LARGE-NEXT:    ret
11374614b80cSWANG Ruientry:
11384614b80cSWANG Rui  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 248792680471040)
11394614b80cSWANG Rui}
11404614b80cSWANG Rui
114184ad292fSWANG Ruidefine dso_local ptr @load_addr_offset_9380351707272() nounwind {
114284ad292fSWANG Rui; LA32-LABEL: load_addr_offset_9380351707272:
114384ad292fSWANG Rui; LA32:       # %bb.0: # %entry
1144b2e69f52Shev; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+1145062464)
1145b2e69f52Shev; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_a64+1145062464)
114684ad292fSWANG Rui; LA32-NEXT:    ret
114784ad292fSWANG Rui;
114884ad292fSWANG Rui; LA64-LABEL: load_addr_offset_9380351707272:
114984ad292fSWANG Rui; LA64:       # %bb.0: # %entry
115084ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a64)
115184ad292fSWANG Rui; LA64-NEXT:    addi.d $a0, $a0, %pc_lo12(g_a64)
115284ad292fSWANG Rui; LA64-NEXT:    lu12i.w $a1, 279556
115384ad292fSWANG Rui; LA64-NEXT:    ori $a1, $a1, 1088
115484ad292fSWANG Rui; LA64-NEXT:    lu32i.d $a1, 17472
115584ad292fSWANG Rui; LA64-NEXT:    add.d $a0, $a0, $a1
115684ad292fSWANG Rui; LA64-NEXT:    ret
115784ad292fSWANG Rui;
115884ad292fSWANG Rui; LA64-LARGE-LABEL: load_addr_offset_9380351707272:
115984ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
1160*b225b15aShev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+75042813658176)
1161*b225b15aShev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a64+75042813658176)
1162*b225b15aShev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a64+75042813658176)
1163*b225b15aShev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a64+75042813658176)
116484ad292fSWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
116584ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
116684ad292fSWANG Ruientry:
116784ad292fSWANG Rui  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 9380351707272)
116884ad292fSWANG Rui}
116984ad292fSWANG Rui
11704614b80cSWANG Ruidefine dso_local ptr @load_addr_offset_562949953421312() nounwind {
11714614b80cSWANG Rui; LA32-LABEL: load_addr_offset_562949953421312:
117284ad292fSWANG Rui; LA32:       # %bb.0: # %entry
11734614b80cSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a64)
11744614b80cSWANG Rui; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_a64)
117584ad292fSWANG Rui; LA32-NEXT:    ret
117684ad292fSWANG Rui;
11774614b80cSWANG Rui; LA64-LABEL: load_addr_offset_562949953421312:
117884ad292fSWANG Rui; LA64:       # %bb.0: # %entry
117984ad292fSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a64)
118084ad292fSWANG Rui; LA64-NEXT:    addi.d $a0, $a0, %pc_lo12(g_a64)
11814614b80cSWANG Rui; LA64-NEXT:    lu52i.d $a1, $zero, 1
118284ad292fSWANG Rui; LA64-NEXT:    add.d $a0, $a0, $a1
118384ad292fSWANG Rui; LA64-NEXT:    ret
118484ad292fSWANG Rui;
11854614b80cSWANG Rui; LA64-LARGE-LABEL: load_addr_offset_562949953421312:
118684ad292fSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
1187*b225b15aShev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+4503599627370496)
1188*b225b15aShev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a64+4503599627370496)
1189*b225b15aShev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a64+4503599627370496)
1190*b225b15aShev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a64+4503599627370496)
119184ad292fSWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
119284ad292fSWANG Rui; LA64-LARGE-NEXT:    ret
119384ad292fSWANG Ruientry:
11944614b80cSWANG Rui  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 562949953421312)
11954614b80cSWANG Rui}
11964614b80cSWANG Rui
11974614b80cSWANG Ruidefine dso_local ptr @load_addr_offset_614749556925924693() nounwind {
11984614b80cSWANG Rui; LA32-LABEL: load_addr_offset_614749556925924693:
11994614b80cSWANG Rui; LA32:       # %bb.0: # %entry
12004614b80cSWANG Rui; LA32-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+858794664)
12014614b80cSWANG Rui; LA32-NEXT:    addi.w $a0, $a0, %pc_lo12(g_a64+858794664)
12024614b80cSWANG Rui; LA32-NEXT:    ret
12034614b80cSWANG Rui;
12044614b80cSWANG Rui; LA64-LABEL: load_addr_offset_614749556925924693:
12054614b80cSWANG Rui; LA64:       # %bb.0: # %entry
12064614b80cSWANG Rui; LA64-NEXT:    pcalau12i $a0, %pc_hi20(g_a64)
12074614b80cSWANG Rui; LA64-NEXT:    addi.d $a0, $a0, %pc_lo12(g_a64)
12084614b80cSWANG Rui; LA64-NEXT:    lu12i.w $a1, 209666
12094614b80cSWANG Rui; LA64-NEXT:    ori $a1, $a1, 2728
12104614b80cSWANG Rui; LA64-NEXT:    lu32i.d $a1, 15288
12114614b80cSWANG Rui; LA64-NEXT:    lu52i.d $a1, $a1, 1092
12124614b80cSWANG Rui; LA64-NEXT:    add.d $a0, $a0, $a1
12134614b80cSWANG Rui; LA64-NEXT:    ret
12144614b80cSWANG Rui;
12154614b80cSWANG Rui; LA64-LARGE-LABEL: load_addr_offset_614749556925924693:
12164614b80cSWANG Rui; LA64-LARGE:       # %bb.0: # %entry
1217*b225b15aShev; LA64-LARGE-NEXT:    pcalau12i $a0, %pc_hi20(g_a64+4917996455407397544)
1218*b225b15aShev; LA64-LARGE-NEXT:    addi.d $a1, $zero, %pc_lo12(g_a64+4917996455407397544)
1219*b225b15aShev; LA64-LARGE-NEXT:    lu32i.d $a1, %pc64_lo20(g_a64+4917996455407397544)
1220*b225b15aShev; LA64-LARGE-NEXT:    lu52i.d $a1, $a1, %pc64_hi12(g_a64+4917996455407397544)
12214614b80cSWANG Rui; LA64-LARGE-NEXT:    add.d $a0, $a1, $a0
12224614b80cSWANG Rui; LA64-LARGE-NEXT:    ret
12234614b80cSWANG Ruientry:
12244614b80cSWANG Rui  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 614749556925924693)
122584ad292fSWANG Rui}
1226