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