brintos

brintos / llvm-project-archived public Read only

0
0
Text · 30.3 KiB · 97d3337 Raw
882 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc --mtriple=loongarch32 --mattr=+lasx --verify-machineinstrs < %s \3; RUN:   | FileCheck --check-prefix=LA32 %s4; RUN: llc --mtriple=loongarch64 --mattr=+lasx --verify-machineinstrs < %s \5; RUN:   | FileCheck --check-prefix=LA64 %s6 7@g_i8 = dso_local thread_local(localexec) global i8 08 9define dso_local signext i8 @tlsle_load_s8() nounwind {10; LA32-LABEL: tlsle_load_s8:11; LA32:       # %bb.0: # %entry12; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8)13; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i8)14; LA32-NEXT:    ld.b $a0, $a0, %le_lo12_r(g_i8)15; LA32-NEXT:    ret16;17; LA64-LABEL: tlsle_load_s8:18; LA64:       # %bb.0: # %entry19; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8)20; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i8)21; LA64-NEXT:    ld.b $a0, $a0, %le_lo12_r(g_i8)22; LA64-NEXT:    ret23entry:24  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i8)25  %1 = load i8, ptr %026  ret i8 %127}28 29define dso_local zeroext i8 @tlsle_load_u8() nounwind {30; LA32-LABEL: tlsle_load_u8:31; LA32:       # %bb.0: # %entry32; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8)33; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i8)34; LA32-NEXT:    ld.bu $a0, $a0, %le_lo12_r(g_i8)35; LA32-NEXT:    ret36;37; LA64-LABEL: tlsle_load_u8:38; LA64:       # %bb.0: # %entry39; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8)40; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i8)41; LA64-NEXT:    ld.bu $a0, $a0, %le_lo12_r(g_i8)42; LA64-NEXT:    ret43entry:44  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i8)45  %1 = load i8, ptr %046  ret i8 %147}48 49define dso_local void @tlsle_store_i8() nounwind {50; LA32-LABEL: tlsle_store_i8:51; LA32:       # %bb.0: # %entry52; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8)53; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i8)54; LA32-NEXT:    ori $a1, $zero, 155; LA32-NEXT:    st.b $a1, $a0, %le_lo12_r(g_i8)56; LA32-NEXT:    ret57;58; LA64-LABEL: tlsle_store_i8:59; LA64:       # %bb.0: # %entry60; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8)61; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i8)62; LA64-NEXT:    ori $a1, $zero, 163; LA64-NEXT:    st.b $a1, $a0, %le_lo12_r(g_i8)64; LA64-NEXT:    ret65entry:66  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i8)67  store i8 1, ptr %068  ret void69}70 71@g_i16 = dso_local thread_local(localexec) global i16 072 73define dso_local signext i16 @tlsle_load_s16() nounwind {74; LA32-LABEL: tlsle_load_s16:75; LA32:       # %bb.0: # %entry76; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i16)77; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i16)78; LA32-NEXT:    ld.h $a0, $a0, %le_lo12_r(g_i16)79; LA32-NEXT:    ret80;81; LA64-LABEL: tlsle_load_s16:82; LA64:       # %bb.0: # %entry83; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i16)84; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i16)85; LA64-NEXT:    ld.h $a0, $a0, %le_lo12_r(g_i16)86; LA64-NEXT:    ret87entry:88  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i16)89  %1 = load i16, ptr %090  ret i16 %191}92 93define dso_local zeroext i16 @tlsle_load_u16() nounwind {94; LA32-LABEL: tlsle_load_u16:95; LA32:       # %bb.0: # %entry96; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i16)97; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i16)98; LA32-NEXT:    ld.hu $a0, $a0, %le_lo12_r(g_i16)99; LA32-NEXT:    ret100;101; LA64-LABEL: tlsle_load_u16:102; LA64:       # %bb.0: # %entry103; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i16)104; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i16)105; LA64-NEXT:    ld.hu $a0, $a0, %le_lo12_r(g_i16)106; LA64-NEXT:    ret107entry:108  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i16)109  %1 = load i16, ptr %0110  ret i16 %1111}112 113define dso_local void @tlsle_store_i16() nounwind {114; LA32-LABEL: tlsle_store_i16:115; LA32:       # %bb.0: # %entry116; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i16)117; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i16)118; LA32-NEXT:    ori $a1, $zero, 1119; LA32-NEXT:    st.h $a1, $a0, %le_lo12_r(g_i16)120; LA32-NEXT:    ret121;122; LA64-LABEL: tlsle_store_i16:123; LA64:       # %bb.0: # %entry124; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i16)125; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i16)126; LA64-NEXT:    ori $a1, $zero, 1127; LA64-NEXT:    st.h $a1, $a0, %le_lo12_r(g_i16)128; LA64-NEXT:    ret129entry:130  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i16)131  store i16 1, ptr %0132  ret void133}134 135@g_i32 = dso_local thread_local(localexec) global i32 0136 137define dso_local signext i32 @tlsle_load_s32() nounwind {138; LA32-LABEL: tlsle_load_s32:139; LA32:       # %bb.0: # %entry140; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32)141; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i32)142; LA32-NEXT:    ld.w $a0, $a0, %le_lo12_r(g_i32)143; LA32-NEXT:    ret144;145; LA64-LABEL: tlsle_load_s32:146; LA64:       # %bb.0: # %entry147; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32)148; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i32)149; LA64-NEXT:    ld.w $a0, $a0, %le_lo12_r(g_i32)150; LA64-NEXT:    ret151entry:152  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i32)153  %1 = load i32, ptr %0154  ret i32 %1155}156 157define dso_local zeroext i32 @tlsle_load_u32() nounwind {158; LA32-LABEL: tlsle_load_u32:159; LA32:       # %bb.0: # %entry160; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32)161; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i32)162; LA32-NEXT:    ld.w $a0, $a0, %le_lo12_r(g_i32)163; LA32-NEXT:    ret164;165; LA64-LABEL: tlsle_load_u32:166; LA64:       # %bb.0: # %entry167; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32)168; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i32)169; LA64-NEXT:    ld.wu $a0, $a0, %le_lo12_r(g_i32)170; LA64-NEXT:    ret171entry:172  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i32)173  %1 = load i32, ptr %0174  ret i32 %1175}176 177define dso_local void @tlsle_store_i32() nounwind {178; LA32-LABEL: tlsle_store_i32:179; LA32:       # %bb.0: # %entry180; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32)181; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i32)182; LA32-NEXT:    ori $a1, $zero, 1183; LA32-NEXT:    st.w $a1, $a0, %le_lo12_r(g_i32)184; LA32-NEXT:    ret185;186; LA64-LABEL: tlsle_store_i32:187; LA64:       # %bb.0: # %entry188; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32)189; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i32)190; LA64-NEXT:    ori $a1, $zero, 1191; LA64-NEXT:    st.w $a1, $a0, %le_lo12_r(g_i32)192; LA64-NEXT:    ret193entry:194  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i32)195  store i32 1, ptr %0196  ret void197}198 199@g_i64 = dso_local thread_local(localexec) global i64 0200 201define dso_local i64 @tlsle_load_i64() nounwind {202; LA32-LABEL: tlsle_load_i64:203; LA32:       # %bb.0: # %entry204; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i64)205; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i64)206; LA32-NEXT:    addi.w $a1, $a0, %le_lo12_r(g_i64)207; LA32-NEXT:    ld.w $a0, $a1, 0208; LA32-NEXT:    ld.w $a1, $a1, 4209; LA32-NEXT:    ret210;211; LA64-LABEL: tlsle_load_i64:212; LA64:       # %bb.0: # %entry213; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i64)214; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i64)215; LA64-NEXT:    ld.d $a0, $a0, %le_lo12_r(g_i64)216; LA64-NEXT:    ret217entry:218  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i64)219  %1 = load i64, ptr %0220  ret i64 %1221}222 223define dso_local void @tlsle_store_i64() nounwind {224; LA32-LABEL: tlsle_store_i64:225; LA32:       # %bb.0: # %entry226; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i64)227; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i64)228; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_i64)229; LA32-NEXT:    st.w $zero, $a0, 4230; LA32-NEXT:    ori $a1, $zero, 1231; LA32-NEXT:    st.w $a1, $a0, 0232; LA32-NEXT:    ret233;234; LA64-LABEL: tlsle_store_i64:235; LA64:       # %bb.0: # %entry236; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i64)237; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i64)238; LA64-NEXT:    ori $a1, $zero, 1239; LA64-NEXT:    st.d $a1, $a0, %le_lo12_r(g_i64)240; LA64-NEXT:    ret241entry:242  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i64)243  store i64 1, ptr %0244  ret void245}246 247@g_f32 = dso_local thread_local(localexec) global float 0.0248 249define dso_local float @tlsle_load_f32() nounwind {250; LA32-LABEL: tlsle_load_f32:251; LA32:       # %bb.0: # %entry252; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_f32)253; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_f32)254; LA32-NEXT:    fld.s $fa0, $a0, %le_lo12_r(g_f32)255; LA32-NEXT:    ret256;257; LA64-LABEL: tlsle_load_f32:258; LA64:       # %bb.0: # %entry259; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_f32)260; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_f32)261; LA64-NEXT:    fld.s $fa0, $a0, %le_lo12_r(g_f32)262; LA64-NEXT:    ret263entry:264  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_f32)265  %1 = load float, ptr %0266  ret float %1267}268 269define dso_local void @tlsle_store_f32() nounwind {270; LA32-LABEL: tlsle_store_f32:271; LA32:       # %bb.0: # %entry272; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_f32)273; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_f32)274; LA32-NEXT:    lu12i.w $a1, 260096275; LA32-NEXT:    st.w $a1, $a0, %le_lo12_r(g_f32)276; LA32-NEXT:    ret277;278; LA64-LABEL: tlsle_store_f32:279; LA64:       # %bb.0: # %entry280; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_f32)281; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_f32)282; LA64-NEXT:    lu12i.w $a1, 260096283; LA64-NEXT:    st.w $a1, $a0, %le_lo12_r(g_f32)284; LA64-NEXT:    ret285entry:286  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_f32)287  store float 1.0, ptr %0288  ret void289}290 291@g_f64 = dso_local thread_local(localexec) global double 0.0292 293define dso_local double @tlsle_load_f64() nounwind {294; LA32-LABEL: tlsle_load_f64:295; LA32:       # %bb.0: # %entry296; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_f64)297; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_f64)298; LA32-NEXT:    fld.d $fa0, $a0, %le_lo12_r(g_f64)299; LA32-NEXT:    ret300;301; LA64-LABEL: tlsle_load_f64:302; LA64:       # %bb.0: # %entry303; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_f64)304; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_f64)305; LA64-NEXT:    fld.d $fa0, $a0, %le_lo12_r(g_f64)306; LA64-NEXT:    ret307entry:308  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_f64)309  %1 = load double, ptr %0310  ret double %1311}312 313define dso_local void @tlsle_store_f64() nounwind {314; LA32-LABEL: tlsle_store_f64:315; LA32:       # %bb.0: # %entry316; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_f64)317; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_f64)318; LA32-NEXT:    vldi $vr0, -912319; LA32-NEXT:    fst.d $fa0, $a0, %le_lo12_r(g_f64)320; LA32-NEXT:    ret321;322; LA64-LABEL: tlsle_store_f64:323; LA64:       # %bb.0: # %entry324; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_f64)325; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_f64)326; LA64-NEXT:    lu52i.d $a1, $zero, 1023327; LA64-NEXT:    st.d $a1, $a0, %le_lo12_r(g_f64)328; LA64-NEXT:    ret329entry:330  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_f64)331  store double 1.0, ptr %0332  ret void333}334 335@g_m64 = dso_local thread_local(localexec) global i64 0336 337define dso_local void @tlsle_store_multi() nounwind {338; LA32-LABEL: tlsle_store_multi:339; LA32:       # %bb.0: # %entry340; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_m64)341; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_m64)342; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_m64)343; LA32-NEXT:    st.w $zero, $a0, 4344; LA32-NEXT:    ori $a1, $zero, 1345; LA32-NEXT:    st.w $a1, $a0, 0346; LA32-NEXT:    st.w $zero, $a0, 4347; LA32-NEXT:    ori $a1, $zero, 2348; LA32-NEXT:    st.w $a1, $a0, 0349; LA32-NEXT:    ret350;351; LA64-LABEL: tlsle_store_multi:352; LA64:       # %bb.0: # %entry353; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_m64)354; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_m64)355; LA64-NEXT:    ori $a1, $zero, 1356; LA64-NEXT:    st.d $a1, $a0, %le_lo12_r(g_m64)357; LA64-NEXT:    ori $a1, $zero, 2358; LA64-NEXT:    st.d $a1, $a0, %le_lo12_r(g_m64)359; LA64-NEXT:    ret360entry:361  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_m64)362  store volatile i64 1, ptr %0363  store volatile i64 2, ptr %0364  ret void365}366 367@g_sf32 = dso_local thread_local(localexec) global float 0.0368 369define dso_local void @tlsle_store_sf32() nounwind {370; LA32-LABEL: tlsle_store_sf32:371; LA32:       # %bb.0: # %entry372; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_sf32)373; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_sf32)374; LA32-NEXT:    fld.s $fa0, $a0, %le_lo12_r(g_sf32)375; LA32-NEXT:    fst.s $fa0, $a0, %le_lo12_r(g_sf32)376; LA32-NEXT:    ret377;378; LA64-LABEL: tlsle_store_sf32:379; LA64:       # %bb.0: # %entry380; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_sf32)381; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_sf32)382; LA64-NEXT:    fld.s $fa0, $a0, %le_lo12_r(g_sf32)383; LA64-NEXT:    fst.s $fa0, $a0, %le_lo12_r(g_sf32)384; LA64-NEXT:    ret385entry:386  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_sf32)387  %1 = load float, ptr %0388  store volatile float %1, ptr %0389  ret void390}391 392@g_sf64 = dso_local thread_local(localexec) global double 0.0393 394define dso_local void @tlsle_store_sf64() nounwind {395; LA32-LABEL: tlsle_store_sf64:396; LA32:       # %bb.0: # %entry397; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_sf64)398; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_sf64)399; LA32-NEXT:    fld.d $fa0, $a0, %le_lo12_r(g_sf64)400; LA32-NEXT:    fst.d $fa0, $a0, %le_lo12_r(g_sf64)401; LA32-NEXT:    ret402;403; LA64-LABEL: tlsle_store_sf64:404; LA64:       # %bb.0: # %entry405; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_sf64)406; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_sf64)407; LA64-NEXT:    fld.d $fa0, $a0, %le_lo12_r(g_sf64)408; LA64-NEXT:    fst.d $fa0, $a0, %le_lo12_r(g_sf64)409; LA64-NEXT:    ret410entry:411  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_sf64)412  %1 = load double, ptr %0413  store volatile double %1, ptr %0414  ret void415}416 417@g_i32x4_src = dso_local thread_local(localexec) global [4 x i32] zeroinitializer, align 16418@g_i32x4_dst = dso_local thread_local(localexec) global [4 x i32] zeroinitializer, align 16419 420define dso_local void @tlsle_copy_i32x4() nounwind {421; LA32-LABEL: tlsle_copy_i32x4:422; LA32:       # %bb.0: # %entry423; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32x4_src)424; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i32x4_src)425; LA32-NEXT:    vld $vr0, $a0, %le_lo12_r(g_i32x4_src)426; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32x4_dst)427; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i32x4_dst)428; LA32-NEXT:    vst $vr0, $a0, %le_lo12_r(g_i32x4_dst)429; LA32-NEXT:    ret430;431; LA64-LABEL: tlsle_copy_i32x4:432; LA64:       # %bb.0: # %entry433; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32x4_src)434; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i32x4_src)435; LA64-NEXT:    vld $vr0, $a0, %le_lo12_r(g_i32x4_src)436; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32x4_dst)437; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i32x4_dst)438; LA64-NEXT:    vst $vr0, $a0, %le_lo12_r(g_i32x4_dst)439; LA64-NEXT:    ret440entry:441  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i32x4_src)442  %1 = load <4 x i32>, ptr %0, align 16443  %2 = call ptr @llvm.threadlocal.address.p0(ptr @g_i32x4_dst)444  store <4 x i32> %1, ptr %2, align 16445  ret void446}447 448@g_i32x8_src = dso_local thread_local(localexec) global [8 x i32] zeroinitializer, align 32449@g_i32x8_dst = dso_local thread_local(localexec) global [8 x i32] zeroinitializer, align 32450 451define dso_local void @tlsle_copy_i32x8() nounwind {452; LA32-LABEL: tlsle_copy_i32x8:453; LA32:       # %bb.0: # %entry454; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32x8_src)455; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i32x8_src)456; LA32-NEXT:    xvld $xr0, $a0, %le_lo12_r(g_i32x8_src)457; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32x8_dst)458; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i32x8_dst)459; LA32-NEXT:    xvst $xr0, $a0, %le_lo12_r(g_i32x8_dst)460; LA32-NEXT:    ret461;462; LA64-LABEL: tlsle_copy_i32x8:463; LA64:       # %bb.0: # %entry464; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32x8_src)465; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i32x8_src)466; LA64-NEXT:    xvld $xr0, $a0, %le_lo12_r(g_i32x8_src)467; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i32x8_dst)468; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i32x8_dst)469; LA64-NEXT:    xvst $xr0, $a0, %le_lo12_r(g_i32x8_dst)470; LA64-NEXT:    ret471entry:472  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i32x8_src)473  %1 = load <8 x i32>, ptr %0, align 32474  %2 = call ptr @llvm.threadlocal.address.p0(ptr @g_i32x8_dst)475  store <8 x i32> %1, ptr %2, align 32476  ret void477}478 479@g_i8x16 = dso_local thread_local(localexec) global <16 x i8> zeroinitializer, align 16480 481define dso_local void @tlsle_copy_i8_to_i8x16() nounwind {482; LA32-LABEL: tlsle_copy_i8_to_i8x16:483; LA32:       # %bb.0: # %entry484; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8)485; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i8)486; LA32-NEXT:    vldrepl.b $vr0, $a0, %le_lo12_r(g_i8)487; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8x16)488; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i8x16)489; LA32-NEXT:    vst $vr0, $a0, %le_lo12_r(g_i8x16)490; LA32-NEXT:    ret491;492; LA64-LABEL: tlsle_copy_i8_to_i8x16:493; LA64:       # %bb.0: # %entry494; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8)495; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i8)496; LA64-NEXT:    vldrepl.b $vr0, $a0, %le_lo12_r(g_i8)497; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8x16)498; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i8x16)499; LA64-NEXT:    vst $vr0, $a0, %le_lo12_r(g_i8x16)500; LA64-NEXT:    ret501entry:502  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i8)503  %1 = call <16 x i8> @llvm.loongarch.lsx.vldrepl.b(ptr %0, i32 0)504  %2 = call ptr @llvm.threadlocal.address.p0(ptr @g_i8x16)505  store <16 x i8> %1, ptr %2, align 16506  ret void507}508 509@g_i8x32 = dso_local thread_local(localexec) global <32 x i8> zeroinitializer, align 32510 511define dso_local void @tlsle_copy_i8_to_i8x32() nounwind {512; LA32-LABEL: tlsle_copy_i8_to_i8x32:513; LA32:       # %bb.0: # %entry514; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8)515; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i8)516; LA32-NEXT:    xvldrepl.b $xr0, $a0, %le_lo12_r(g_i8)517; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8x32)518; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_i8x32)519; LA32-NEXT:    xvst $xr0, $a0, %le_lo12_r(g_i8x32)520; LA32-NEXT:    ret521;522; LA64-LABEL: tlsle_copy_i8_to_i8x32:523; LA64:       # %bb.0: # %entry524; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8)525; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i8)526; LA64-NEXT:    xvldrepl.b $xr0, $a0, %le_lo12_r(g_i8)527; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_i8x32)528; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_i8x32)529; LA64-NEXT:    xvst $xr0, $a0, %le_lo12_r(g_i8x32)530; LA64-NEXT:    ret531entry:532  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_i8)533  %1 = call <32 x i8> @llvm.loongarch.lasx.xvldrepl.b(ptr %0, i32 0)534  %2 = call ptr @llvm.threadlocal.address.p0(ptr @g_i8x32)535  store <32 x i8> %1, ptr %2, align 32536  ret void537}538 539@g_rmw = dso_local thread_local(localexec) global i64 0540 541define dso_local void @tlsle_rmw() nounwind {542; LA32-LABEL: tlsle_rmw:543; LA32:       # %bb.0: # %entry544; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_rmw)545; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_rmw)546; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_rmw)547; LA32-NEXT:    ld.w $a1, $a0, 0548; LA32-NEXT:    ld.w $a2, $a0, 4549; LA32-NEXT:    addi.w $a1, $a1, 1550; LA32-NEXT:    sltui $a3, $a1, 1551; LA32-NEXT:    add.w $a2, $a2, $a3552; LA32-NEXT:    st.w $a1, $a0, 0553; LA32-NEXT:    st.w $a2, $a0, 4554; LA32-NEXT:    ret555;556; LA64-LABEL: tlsle_rmw:557; LA64:       # %bb.0: # %entry558; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_rmw)559; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_rmw)560; LA64-NEXT:    ld.d $a1, $a0, %le_lo12_r(g_rmw)561; LA64-NEXT:    addi.d $a1, $a1, 1562; LA64-NEXT:    st.d $a1, $a0, %le_lo12_r(g_rmw)563; LA64-NEXT:    ret564entry:565  %0 = call ptr @llvm.threadlocal.address.p0(ptr @g_rmw)566  %1 = load i64, ptr %0567  %2 = add i64 %1, 1568  store i64 %2, ptr %0569  ret void570}571 572@g_a32 = dso_local thread_local(localexec) global [2048 x i32] zeroinitializer, align 4573 574define dso_local void @tlsle_store_a32() nounwind {575; LA32-LABEL: tlsle_store_a32:576; LA32:       # %bb.0: # %entry577; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a32+4096)578; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a32+4096)579; LA32-NEXT:    ori $a1, $zero, 1580; LA32-NEXT:    st.w $a1, $a0, %le_lo12_r(g_a32+4096)581; LA32-NEXT:    ret582;583; LA64-LABEL: tlsle_store_a32:584; LA64:       # %bb.0: # %entry585; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a32+4096)586; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a32+4096)587; LA64-NEXT:    ori $a1, $zero, 1588; LA64-NEXT:    st.w $a1, $a0, %le_lo12_r(g_a32+4096)589; LA64-NEXT:    ret590entry:591  store i32 1, ptr getelementptr inbounds ([1 x i32], ptr @g_a32, i32 1024), align 4592  ret void593}594 595define dso_local void @tlsle_store_a32_2() nounwind {596; LA32-LABEL: tlsle_store_a32_2:597; LA32:       # %bb.0: # %entry598; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a32)599; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a32)600; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_a32)601; LA32-NEXT:    lu12i.w $a1, 1602; LA32-NEXT:    add.w $a2, $a0, $a1603; LA32-NEXT:    ori $a3, $zero, 1604; LA32-NEXT:    st.w $a3, $a2, 0605; LA32-NEXT:    ori $a1, $a1, 8606; LA32-NEXT:    add.w $a0, $a0, $a1607; LA32-NEXT:    ori $a1, $zero, 2608; LA32-NEXT:    st.w $a1, $a0, 0609; LA32-NEXT:    ret610;611; LA64-LABEL: tlsle_store_a32_2:612; LA64:       # %bb.0: # %entry613; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a32)614; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a32)615; LA64-NEXT:    addi.d $a0, $a0, %le_lo12_r(g_a32)616; LA64-NEXT:    ori $a1, $zero, 1617; LA64-NEXT:    stptr.w $a1, $a0, 4096618; LA64-NEXT:    ori $a1, $zero, 2619; LA64-NEXT:    stptr.w $a1, $a0, 4104620; LA64-NEXT:    ret621entry:622  store i32 1, ptr getelementptr inbounds ([1 x i32], ptr @g_a32, i32 1024), align 4623  store i32 2, ptr getelementptr inbounds ([1 x i32], ptr @g_a32, i32 1026), align 4624  ret void625}626 627define dso_local void @tlsle_control_flow_with_mem_access() nounwind {628; LA32-LABEL: tlsle_control_flow_with_mem_access:629; LA32:       # %bb.0: # %entry630; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a32+4)631; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a32+4)632; LA32-NEXT:    ld.w $a1, $a0, %le_lo12_r(g_a32+4)633; LA32-NEXT:    blez $a1, .LBB25_2634; LA32-NEXT:  # %bb.1: # %if.then635; LA32-NEXT:    ori $a1, $zero, 10636; LA32-NEXT:    st.w $a1, $a0, %le_lo12_r(g_a32+4)637; LA32-NEXT:  .LBB25_2: # %if.end638; LA32-NEXT:    ret639;640; LA64-LABEL: tlsle_control_flow_with_mem_access:641; LA64:       # %bb.0: # %entry642; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a32+4)643; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a32+4)644; LA64-NEXT:    ld.w $a1, $a0, %le_lo12_r(g_a32+4)645; LA64-NEXT:    blez $a1, .LBB25_2646; LA64-NEXT:  # %bb.1: # %if.then647; LA64-NEXT:    ori $a1, $zero, 10648; LA64-NEXT:    st.w $a1, $a0, %le_lo12_r(g_a32+4)649; LA64-NEXT:  .LBB25_2: # %if.end650; LA64-NEXT:    ret651entry:652  %0 = load i32, ptr getelementptr inbounds ([1 x i32], ptr @g_a32, i32 1), align 4653  %cmp = icmp sgt i32 %0, 0654  br i1 %cmp, label %if.then, label %if.end655 656if.then:657  store i32 10, ptr getelementptr inbounds ([1 x i32], ptr @g_a32, i32 1), align 4658  br label %if.end659 660if.end:661  ret void662}663 664@g_a64 = dso_local thread_local(localexec) global [614750729487779976 x i64] zeroinitializer, align 8665 666define dso_local ptr @tlsle_load_addr_offset_1() nounwind {667; LA32-LABEL: tlsle_load_addr_offset_1:668; LA32:       # %bb.0: # %entry669; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+8)670; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a64+8)671; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_a64+8)672; LA32-NEXT:    ret673;674; LA64-LABEL: tlsle_load_addr_offset_1:675; LA64:       # %bb.0: # %entry676; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+8)677; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a64+8)678; LA64-NEXT:    addi.d $a0, $a0, %le_lo12_r(g_a64+8)679; LA64-NEXT:    ret680entry:681  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 1)682}683 684define dso_local ptr @tlsle_load_addr_offset_257() nounwind {685; LA32-LABEL: tlsle_load_addr_offset_257:686; LA32:       # %bb.0: # %entry687; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+2056)688; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a64+2056)689; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_a64+2056)690; LA32-NEXT:    ret691;692; LA64-LABEL: tlsle_load_addr_offset_257:693; LA64:       # %bb.0: # %entry694; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+2056)695; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a64+2056)696; LA64-NEXT:    addi.d $a0, $a0, %le_lo12_r(g_a64+2056)697; LA64-NEXT:    ret698entry:699  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 257)700}701 702define dso_local ptr @tlsle_load_addr_offset_1048576() nounwind {703; LA32-LABEL: tlsle_load_addr_offset_1048576:704; LA32:       # %bb.0: # %entry705; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+8388608)706; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a64+8388608)707; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_a64+8388608)708; LA32-NEXT:    ret709;710; LA64-LABEL: tlsle_load_addr_offset_1048576:711; LA64:       # %bb.0: # %entry712; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+8388608)713; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a64+8388608)714; LA64-NEXT:    addi.d $a0, $a0, %le_lo12_r(g_a64+8388608)715; LA64-NEXT:    ret716entry:717  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 1048576)718}719 720define dso_local ptr @tlsle_load_addr_offset_1048577() nounwind {721; LA32-LABEL: tlsle_load_addr_offset_1048577:722; LA32:       # %bb.0: # %entry723; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+8388616)724; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a64+8388616)725; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_a64+8388616)726; LA32-NEXT:    ret727;728; LA64-LABEL: tlsle_load_addr_offset_1048577:729; LA64:       # %bb.0: # %entry730; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+8388616)731; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a64+8388616)732; LA64-NEXT:    addi.d $a0, $a0, %le_lo12_r(g_a64+8388616)733; LA64-NEXT:    ret734entry:735  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 1048577)736}737 738define dso_local ptr @tlsle_load_addr_offset_268432896() nounwind {739; LA32-LABEL: tlsle_load_addr_offset_268432896:740; LA32:       # %bb.0: # %entry741; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+2147463168)742; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a64+2147463168)743; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_a64+2147463168)744; LA32-NEXT:    ret745;746; LA64-LABEL: tlsle_load_addr_offset_268432896:747; LA64:       # %bb.0: # %entry748; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+2147463168)749; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a64+2147463168)750; LA64-NEXT:    addi.d $a0, $a0, %le_lo12_r(g_a64+2147463168)751; LA64-NEXT:    ret752entry:753  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 268432896)754}755 756define dso_local ptr @tlsle_load_addr_offset_268432897() nounwind {757; LA32-LABEL: tlsle_load_addr_offset_268432897:758; LA32:       # %bb.0: # %entry759; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+2147463176)760; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a64+2147463176)761; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_a64+2147463176)762; LA32-NEXT:    ret763;764; LA64-LABEL: tlsle_load_addr_offset_268432897:765; LA64:       # %bb.0: # %entry766; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+2147463176)767; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a64+2147463176)768; LA64-NEXT:    addi.d $a0, $a0, %le_lo12_r(g_a64+2147463176)769; LA64-NEXT:    ret770entry:771  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 268432897)772}773 774define dso_local ptr @tlsle_load_addr_offset_281474439839744() nounwind {775; LA32-LABEL: tlsle_load_addr_offset_281474439839744:776; LA32:       # %bb.0: # %entry777; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64)778; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a64)779; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_a64)780; LA32-NEXT:    ret781;782; LA64-LABEL: tlsle_load_addr_offset_281474439839744:783; LA64:       # %bb.0: # %entry784; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64)785; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a64)786; LA64-NEXT:    addi.d $a0, $a0, %le_lo12_r(g_a64)787; LA64-NEXT:    ori $a1, $zero, 0788; LA64-NEXT:    lu32i.d $a1, 524287789; LA64-NEXT:    add.d $a0, $a0, $a1790; LA64-NEXT:    ret791entry:792  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 281474439839744)793}794 795define dso_local ptr @tlsle_load_addr_offset_248792680471040() nounwind {796; LA32-LABEL: tlsle_load_addr_offset_248792680471040:797; LA32:       # %bb.0: # %entry798; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+2059194368)799; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a64+2059194368)800; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_a64+2059194368)801; LA32-NEXT:    ret802;803; LA64-LABEL: tlsle_load_addr_offset_248792680471040:804; LA64:       # %bb.0: # %entry805; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64)806; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a64)807; LA64-NEXT:    addi.d $a0, $a0, %le_lo12_r(g_a64)808; LA64-NEXT:    lu12i.w $a1, 502733809; LA64-NEXT:    lu32i.d $a1, 463412810; LA64-NEXT:    add.d $a0, $a0, $a1811; LA64-NEXT:    ret812entry:813  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 248792680471040)814}815 816define dso_local ptr @tlsle_load_addr_offset_9380351707272() nounwind {817; LA32-LABEL: tlsle_load_addr_offset_9380351707272:818; LA32:       # %bb.0: # %entry819; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+1145062464)820; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a64+1145062464)821; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_a64+1145062464)822; LA32-NEXT:    ret823;824; LA64-LABEL: tlsle_load_addr_offset_9380351707272:825; LA64:       # %bb.0: # %entry826; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64)827; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a64)828; LA64-NEXT:    addi.d $a0, $a0, %le_lo12_r(g_a64)829; LA64-NEXT:    lu12i.w $a1, 279556830; LA64-NEXT:    ori $a1, $a1, 1088831; LA64-NEXT:    lu32i.d $a1, 17472832; LA64-NEXT:    add.d $a0, $a0, $a1833; LA64-NEXT:    ret834entry:835  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 9380351707272)836}837 838define dso_local ptr @tlsle_load_addr_offset_562949953421312() nounwind {839; LA32-LABEL: tlsle_load_addr_offset_562949953421312:840; LA32:       # %bb.0: # %entry841; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64)842; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a64)843; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_a64)844; LA32-NEXT:    ret845;846; LA64-LABEL: tlsle_load_addr_offset_562949953421312:847; LA64:       # %bb.0: # %entry848; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64)849; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a64)850; LA64-NEXT:    addi.d $a0, $a0, %le_lo12_r(g_a64)851; LA64-NEXT:    lu52i.d $a1, $zero, 1852; LA64-NEXT:    add.d $a0, $a0, $a1853; LA64-NEXT:    ret854entry:855  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 562949953421312)856}857 858define dso_local ptr @tlsle_load_addr_offset_614749556925924693() nounwind {859; LA32-LABEL: tlsle_load_addr_offset_614749556925924693:860; LA32:       # %bb.0: # %entry861; LA32-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64+858794664)862; LA32-NEXT:    add.w $a0, $a0, $tp, %le_add_r(g_a64+858794664)863; LA32-NEXT:    addi.w $a0, $a0, %le_lo12_r(g_a64+858794664)864; LA32-NEXT:    ret865;866; LA64-LABEL: tlsle_load_addr_offset_614749556925924693:867; LA64:       # %bb.0: # %entry868; LA64-NEXT:    lu12i.w $a0, %le_hi20_r(g_a64)869; LA64-NEXT:    add.d $a0, $a0, $tp, %le_add_r(g_a64)870; LA64-NEXT:    addi.d $a0, $a0, %le_lo12_r(g_a64)871; LA64-NEXT:    lu12i.w $a1, 209666872; LA64-NEXT:    ori $a1, $a1, 2728873; LA64-NEXT:    lu32i.d $a1, 15288874; LA64-NEXT:    lu52i.d $a1, $a1, 1092875; LA64-NEXT:    add.d $a0, $a0, $a1876; LA64-NEXT:    ret877entry:878  ret ptr getelementptr inbounds ([1 x i64], ptr @g_a64, i64 614749556925924693)879}880 881declare nonnull ptr @llvm.threadlocal.address.p0(ptr nonnull)882