brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.7 KiB · 50d994f Raw
404 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 -mattr=+d --relocation-model=pic < %s | FileCheck %s --check-prefix=LA32PIC3; RUN: llc --mtriple=loongarch64 -mattr=+d --relocation-model=pic < %s | FileCheck %s --check-prefix=LA64PIC4; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=large --relocation-model=pic < %s | FileCheck %s --check-prefix=LA64LARGEPIC5; RUN: llc --mtriple=loongarch32 -mattr=+d < %s | FileCheck %s --check-prefix=LA32NOPIC6; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s --check-prefix=LA64NOPIC7; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=large < %s | FileCheck %s --check-prefix=LA64LARGENOPIC8; RUN: llc --mtriple=loongarch32 -mattr=+d --relocation-model=pic --enable-tlsdesc < %s \9; RUN:     | FileCheck %s --check-prefix=LA32DESC10; RUN: llc --mtriple=loongarch64 -mattr=+d --relocation-model=pic --enable-tlsdesc < %s \11; RUN:     | FileCheck %s --check-prefix=LA64DESC12; RUN: llc --mtriple=loongarch64 -mattr=+d --relocation-model=pic --enable-tlsdesc \13; RUN:     --code-model=large < %s | FileCheck %s --check-prefix=DESC6414 15;; Check that TLS symbols are lowered correctly based on the specified16;; model. Make sure they're external to avoid them all being optimised to Local17;; Exec for the executable.18 19@unspecified = external thread_local global i3220@ld = external thread_local(localdynamic) global i3221@ie = external thread_local(initialexec) global i3222@le = external thread_local(localexec) global i3223 24;; No model specified (global dynamic)25 26define ptr @f1() nounwind {27; LA32PIC-LABEL: f1:28; LA32PIC:       # %bb.0: # %entry29; LA32PIC-NEXT:    addi.w $sp, $sp, -1630; LA32PIC-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill31; LA32PIC-NEXT:    pcalau12i $a0, %gd_pc_hi20(unspecified)32; LA32PIC-NEXT:    addi.w $a0, $a0, %got_pc_lo12(unspecified)33; LA32PIC-NEXT:    bl __tls_get_addr34; LA32PIC-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload35; LA32PIC-NEXT:    addi.w $sp, $sp, 1636; LA32PIC-NEXT:    ret37;38; LA64PIC-LABEL: f1:39; LA64PIC:       # %bb.0: # %entry40; LA64PIC-NEXT:    addi.d $sp, $sp, -1641; LA64PIC-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill42; LA64PIC-NEXT:    pcalau12i $a0, %gd_pc_hi20(unspecified)43; LA64PIC-NEXT:    addi.d $a0, $a0, %got_pc_lo12(unspecified)44; LA64PIC-NEXT:    pcaddu18i $ra, %call36(__tls_get_addr)45; LA64PIC-NEXT:    jirl $ra, $ra, 046; LA64PIC-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload47; LA64PIC-NEXT:    addi.d $sp, $sp, 1648; LA64PIC-NEXT:    ret49;50; LA64LARGEPIC-LABEL: f1:51; LA64LARGEPIC:       # %bb.0: # %entry52; LA64LARGEPIC-NEXT:    addi.d $sp, $sp, -1653; LA64LARGEPIC-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill54; LA64LARGEPIC-NEXT:    pcalau12i $a0, %gd_pc_hi20(unspecified)55; LA64LARGEPIC-NEXT:    addi.d $a1, $zero, %got_pc_lo12(unspecified)56; LA64LARGEPIC-NEXT:    lu32i.d $a1, %got64_pc_lo20(unspecified)57; LA64LARGEPIC-NEXT:    lu52i.d $a1, $a1, %got64_pc_hi12(unspecified)58; LA64LARGEPIC-NEXT:    add.d $a0, $a1, $a059; LA64LARGEPIC-NEXT:    pcalau12i $a1, %got_pc_hi20(__tls_get_addr)60; LA64LARGEPIC-NEXT:    addi.d $ra, $zero, %got_pc_lo12(__tls_get_addr)61; LA64LARGEPIC-NEXT:    lu32i.d $ra, %got64_pc_lo20(__tls_get_addr)62; LA64LARGEPIC-NEXT:    lu52i.d $ra, $ra, %got64_pc_hi12(__tls_get_addr)63; LA64LARGEPIC-NEXT:    ldx.d $ra, $ra, $a164; LA64LARGEPIC-NEXT:    jirl $ra, $ra, 065; LA64LARGEPIC-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload66; LA64LARGEPIC-NEXT:    addi.d $sp, $sp, 1667; LA64LARGEPIC-NEXT:    ret68;69; LA32NOPIC-LABEL: f1:70; LA32NOPIC:       # %bb.0: # %entry71; LA32NOPIC-NEXT:    pcalau12i $a0, %ie_pc_hi20(unspecified)72; LA32NOPIC-NEXT:    ld.w $a0, $a0, %ie_pc_lo12(unspecified)73; LA32NOPIC-NEXT:    add.w $a0, $a0, $tp74; LA32NOPIC-NEXT:    ret75;76; LA64NOPIC-LABEL: f1:77; LA64NOPIC:       # %bb.0: # %entry78; LA64NOPIC-NEXT:    pcalau12i $a0, %ie_pc_hi20(unspecified)79; LA64NOPIC-NEXT:    ld.d $a0, $a0, %ie_pc_lo12(unspecified)80; LA64NOPIC-NEXT:    add.d $a0, $a0, $tp81; LA64NOPIC-NEXT:    ret82;83; LA64LARGENOPIC-LABEL: f1:84; LA64LARGENOPIC:       # %bb.0: # %entry85; LA64LARGENOPIC-NEXT:    pcalau12i $a0, %ie_pc_hi20(unspecified)86; LA64LARGENOPIC-NEXT:    addi.d $a1, $zero, %ie_pc_lo12(unspecified)87; LA64LARGENOPIC-NEXT:    lu32i.d $a1, %ie64_pc_lo20(unspecified)88; LA64LARGENOPIC-NEXT:    lu52i.d $a1, $a1, %ie64_pc_hi12(unspecified)89; LA64LARGENOPIC-NEXT:    ldx.d $a0, $a1, $a090; LA64LARGENOPIC-NEXT:    add.d $a0, $a0, $tp91; LA64LARGENOPIC-NEXT:    ret92;93; LA32DESC-LABEL: f1:94; LA32DESC:       # %bb.0: # %entry95; LA32DESC-NEXT:    addi.w $sp, $sp, -1696; LA32DESC-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill97; LA32DESC-NEXT:    pcalau12i $a0, %desc_pc_hi20(unspecified)98; LA32DESC-NEXT:    addi.w $a0, $a0, %desc_pc_lo12(unspecified)99; LA32DESC-NEXT:    ld.w $ra, $a0, %desc_ld(unspecified)100; LA32DESC-NEXT:    jirl $ra, $ra, %desc_call(unspecified)101; LA32DESC-NEXT:    add.w $a0, $a0, $tp102; LA32DESC-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload103; LA32DESC-NEXT:    addi.w $sp, $sp, 16104; LA32DESC-NEXT:    ret105;106; LA64DESC-LABEL: f1:107; LA64DESC:       # %bb.0: # %entry108; LA64DESC-NEXT:    addi.d $sp, $sp, -16109; LA64DESC-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill110; LA64DESC-NEXT:    pcalau12i $a0, %desc_pc_hi20(unspecified)111; LA64DESC-NEXT:    addi.d $a0, $a0, %desc_pc_lo12(unspecified)112; LA64DESC-NEXT:    ld.d $ra, $a0, %desc_ld(unspecified)113; LA64DESC-NEXT:    jirl $ra, $ra, %desc_call(unspecified)114; LA64DESC-NEXT:    add.d $a0, $a0, $tp115; LA64DESC-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload116; LA64DESC-NEXT:    addi.d $sp, $sp, 16117; LA64DESC-NEXT:    ret118;119; DESC64-LABEL: f1:120; DESC64:       # %bb.0: # %entry121; DESC64-NEXT:    addi.d $sp, $sp, -16122; DESC64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill123; DESC64-NEXT:    pcalau12i $a0, %desc_pc_hi20(unspecified)124; DESC64-NEXT:    addi.d $a1, $zero, %desc_pc_lo12(unspecified)125; DESC64-NEXT:    lu32i.d $a1, %desc64_pc_lo20(unspecified)126; DESC64-NEXT:    lu52i.d $a1, $a1, %desc64_pc_hi12(unspecified)127; DESC64-NEXT:    add.d $a0, $a0, $a1128; DESC64-NEXT:    ld.d $ra, $a0, %desc_ld(unspecified)129; DESC64-NEXT:    jirl $ra, $ra, %desc_call(unspecified)130; DESC64-NEXT:    add.d $a0, $a0, $tp131; DESC64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload132; DESC64-NEXT:    addi.d $sp, $sp, 16133; DESC64-NEXT:    ret134entry:135  ret ptr @unspecified136}137 138;; localdynamic specified139 140define ptr @f2() nounwind {141; LA32PIC-LABEL: f2:142; LA32PIC:       # %bb.0: # %entry143; LA32PIC-NEXT:    addi.w $sp, $sp, -16144; LA32PIC-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill145; LA32PIC-NEXT:    pcalau12i $a0, %ld_pc_hi20(ld)146; LA32PIC-NEXT:    addi.w $a0, $a0, %got_pc_lo12(ld)147; LA32PIC-NEXT:    bl __tls_get_addr148; LA32PIC-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload149; LA32PIC-NEXT:    addi.w $sp, $sp, 16150; LA32PIC-NEXT:    ret151;152; LA64PIC-LABEL: f2:153; LA64PIC:       # %bb.0: # %entry154; LA64PIC-NEXT:    addi.d $sp, $sp, -16155; LA64PIC-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill156; LA64PIC-NEXT:    pcalau12i $a0, %ld_pc_hi20(ld)157; LA64PIC-NEXT:    addi.d $a0, $a0, %got_pc_lo12(ld)158; LA64PIC-NEXT:    pcaddu18i $ra, %call36(__tls_get_addr)159; LA64PIC-NEXT:    jirl $ra, $ra, 0160; LA64PIC-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload161; LA64PIC-NEXT:    addi.d $sp, $sp, 16162; LA64PIC-NEXT:    ret163;164; LA64LARGEPIC-LABEL: f2:165; LA64LARGEPIC:       # %bb.0: # %entry166; LA64LARGEPIC-NEXT:    addi.d $sp, $sp, -16167; LA64LARGEPIC-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill168; LA64LARGEPIC-NEXT:    pcalau12i $a0, %ld_pc_hi20(ld)169; LA64LARGEPIC-NEXT:    addi.d $a1, $zero, %got_pc_lo12(ld)170; LA64LARGEPIC-NEXT:    lu32i.d $a1, %got64_pc_lo20(ld)171; LA64LARGEPIC-NEXT:    lu52i.d $a1, $a1, %got64_pc_hi12(ld)172; LA64LARGEPIC-NEXT:    add.d $a0, $a1, $a0173; LA64LARGEPIC-NEXT:    pcalau12i $a1, %got_pc_hi20(__tls_get_addr)174; LA64LARGEPIC-NEXT:    addi.d $ra, $zero, %got_pc_lo12(__tls_get_addr)175; LA64LARGEPIC-NEXT:    lu32i.d $ra, %got64_pc_lo20(__tls_get_addr)176; LA64LARGEPIC-NEXT:    lu52i.d $ra, $ra, %got64_pc_hi12(__tls_get_addr)177; LA64LARGEPIC-NEXT:    ldx.d $ra, $ra, $a1178; LA64LARGEPIC-NEXT:    jirl $ra, $ra, 0179; LA64LARGEPIC-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload180; LA64LARGEPIC-NEXT:    addi.d $sp, $sp, 16181; LA64LARGEPIC-NEXT:    ret182;183; LA32NOPIC-LABEL: f2:184; LA32NOPIC:       # %bb.0: # %entry185; LA32NOPIC-NEXT:    pcalau12i $a0, %ie_pc_hi20(ld)186; LA32NOPIC-NEXT:    ld.w $a0, $a0, %ie_pc_lo12(ld)187; LA32NOPIC-NEXT:    add.w $a0, $a0, $tp188; LA32NOPIC-NEXT:    ret189;190; LA64NOPIC-LABEL: f2:191; LA64NOPIC:       # %bb.0: # %entry192; LA64NOPIC-NEXT:    pcalau12i $a0, %ie_pc_hi20(ld)193; LA64NOPIC-NEXT:    ld.d $a0, $a0, %ie_pc_lo12(ld)194; LA64NOPIC-NEXT:    add.d $a0, $a0, $tp195; LA64NOPIC-NEXT:    ret196;197; LA64LARGENOPIC-LABEL: f2:198; LA64LARGENOPIC:       # %bb.0: # %entry199; LA64LARGENOPIC-NEXT:    pcalau12i $a0, %ie_pc_hi20(ld)200; LA64LARGENOPIC-NEXT:    addi.d $a1, $zero, %ie_pc_lo12(ld)201; LA64LARGENOPIC-NEXT:    lu32i.d $a1, %ie64_pc_lo20(ld)202; LA64LARGENOPIC-NEXT:    lu52i.d $a1, $a1, %ie64_pc_hi12(ld)203; LA64LARGENOPIC-NEXT:    ldx.d $a0, $a1, $a0204; LA64LARGENOPIC-NEXT:    add.d $a0, $a0, $tp205; LA64LARGENOPIC-NEXT:    ret206;207; LA32DESC-LABEL: f2:208; LA32DESC:       # %bb.0: # %entry209; LA32DESC-NEXT:    addi.w $sp, $sp, -16210; LA32DESC-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill211; LA32DESC-NEXT:    pcalau12i $a0, %desc_pc_hi20(ld)212; LA32DESC-NEXT:    addi.w $a0, $a0, %desc_pc_lo12(ld)213; LA32DESC-NEXT:    ld.w $ra, $a0, %desc_ld(ld)214; LA32DESC-NEXT:    jirl $ra, $ra, %desc_call(ld)215; LA32DESC-NEXT:    add.w $a0, $a0, $tp216; LA32DESC-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload217; LA32DESC-NEXT:    addi.w $sp, $sp, 16218; LA32DESC-NEXT:    ret219;220; LA64DESC-LABEL: f2:221; LA64DESC:       # %bb.0: # %entry222; LA64DESC-NEXT:    addi.d $sp, $sp, -16223; LA64DESC-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill224; LA64DESC-NEXT:    pcalau12i $a0, %desc_pc_hi20(ld)225; LA64DESC-NEXT:    addi.d $a0, $a0, %desc_pc_lo12(ld)226; LA64DESC-NEXT:    ld.d $ra, $a0, %desc_ld(ld)227; LA64DESC-NEXT:    jirl $ra, $ra, %desc_call(ld)228; LA64DESC-NEXT:    add.d $a0, $a0, $tp229; LA64DESC-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload230; LA64DESC-NEXT:    addi.d $sp, $sp, 16231; LA64DESC-NEXT:    ret232;233; DESC64-LABEL: f2:234; DESC64:       # %bb.0: # %entry235; DESC64-NEXT:    addi.d $sp, $sp, -16236; DESC64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill237; DESC64-NEXT:    pcalau12i $a0, %desc_pc_hi20(ld)238; DESC64-NEXT:    addi.d $a1, $zero, %desc_pc_lo12(ld)239; DESC64-NEXT:    lu32i.d $a1, %desc64_pc_lo20(ld)240; DESC64-NEXT:    lu52i.d $a1, $a1, %desc64_pc_hi12(ld)241; DESC64-NEXT:    add.d $a0, $a0, $a1242; DESC64-NEXT:    ld.d $ra, $a0, %desc_ld(ld)243; DESC64-NEXT:    jirl $ra, $ra, %desc_call(ld)244; DESC64-NEXT:    add.d $a0, $a0, $tp245; DESC64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload246; DESC64-NEXT:    addi.d $sp, $sp, 16247; DESC64-NEXT:    ret248entry:249  ret ptr @ld250}251 252;; initialexec specified253 254define ptr @f3() nounwind {255; LA32PIC-LABEL: f3:256; LA32PIC:       # %bb.0: # %entry257; LA32PIC-NEXT:    pcalau12i $a0, %ie_pc_hi20(ie)258; LA32PIC-NEXT:    ld.w $a0, $a0, %ie_pc_lo12(ie)259; LA32PIC-NEXT:    add.w $a0, $a0, $tp260; LA32PIC-NEXT:    ret261;262; LA64PIC-LABEL: f3:263; LA64PIC:       # %bb.0: # %entry264; LA64PIC-NEXT:    pcalau12i $a0, %ie_pc_hi20(ie)265; LA64PIC-NEXT:    ld.d $a0, $a0, %ie_pc_lo12(ie)266; LA64PIC-NEXT:    add.d $a0, $a0, $tp267; LA64PIC-NEXT:    ret268;269; LA64LARGEPIC-LABEL: f3:270; LA64LARGEPIC:       # %bb.0: # %entry271; LA64LARGEPIC-NEXT:    pcalau12i $a0, %ie_pc_hi20(ie)272; LA64LARGEPIC-NEXT:    addi.d $a1, $zero, %ie_pc_lo12(ie)273; LA64LARGEPIC-NEXT:    lu32i.d $a1, %ie64_pc_lo20(ie)274; LA64LARGEPIC-NEXT:    lu52i.d $a1, $a1, %ie64_pc_hi12(ie)275; LA64LARGEPIC-NEXT:    ldx.d $a0, $a1, $a0276; LA64LARGEPIC-NEXT:    add.d $a0, $a0, $tp277; LA64LARGEPIC-NEXT:    ret278;279; LA32NOPIC-LABEL: f3:280; LA32NOPIC:       # %bb.0: # %entry281; LA32NOPIC-NEXT:    pcalau12i $a0, %ie_pc_hi20(ie)282; LA32NOPIC-NEXT:    ld.w $a0, $a0, %ie_pc_lo12(ie)283; LA32NOPIC-NEXT:    add.w $a0, $a0, $tp284; LA32NOPIC-NEXT:    ret285;286; LA64NOPIC-LABEL: f3:287; LA64NOPIC:       # %bb.0: # %entry288; LA64NOPIC-NEXT:    pcalau12i $a0, %ie_pc_hi20(ie)289; LA64NOPIC-NEXT:    ld.d $a0, $a0, %ie_pc_lo12(ie)290; LA64NOPIC-NEXT:    add.d $a0, $a0, $tp291; LA64NOPIC-NEXT:    ret292;293; LA64LARGENOPIC-LABEL: f3:294; LA64LARGENOPIC:       # %bb.0: # %entry295; LA64LARGENOPIC-NEXT:    pcalau12i $a0, %ie_pc_hi20(ie)296; LA64LARGENOPIC-NEXT:    addi.d $a1, $zero, %ie_pc_lo12(ie)297; LA64LARGENOPIC-NEXT:    lu32i.d $a1, %ie64_pc_lo20(ie)298; LA64LARGENOPIC-NEXT:    lu52i.d $a1, $a1, %ie64_pc_hi12(ie)299; LA64LARGENOPIC-NEXT:    ldx.d $a0, $a1, $a0300; LA64LARGENOPIC-NEXT:    add.d $a0, $a0, $tp301; LA64LARGENOPIC-NEXT:    ret302;303; LA32DESC-LABEL: f3:304; LA32DESC:       # %bb.0: # %entry305; LA32DESC-NEXT:    pcalau12i $a0, %ie_pc_hi20(ie)306; LA32DESC-NEXT:    ld.w $a0, $a0, %ie_pc_lo12(ie)307; LA32DESC-NEXT:    add.w $a0, $a0, $tp308; LA32DESC-NEXT:    ret309;310; LA64DESC-LABEL: f3:311; LA64DESC:       # %bb.0: # %entry312; LA64DESC-NEXT:    pcalau12i $a0, %ie_pc_hi20(ie)313; LA64DESC-NEXT:    ld.d $a0, $a0, %ie_pc_lo12(ie)314; LA64DESC-NEXT:    add.d $a0, $a0, $tp315; LA64DESC-NEXT:    ret316;317; DESC64-LABEL: f3:318; DESC64:       # %bb.0: # %entry319; DESC64-NEXT:    pcalau12i $a0, %ie_pc_hi20(ie)320; DESC64-NEXT:    addi.d $a1, $zero, %ie_pc_lo12(ie)321; DESC64-NEXT:    lu32i.d $a1, %ie64_pc_lo20(ie)322; DESC64-NEXT:    lu52i.d $a1, $a1, %ie64_pc_hi12(ie)323; DESC64-NEXT:    ldx.d $a0, $a1, $a0324; DESC64-NEXT:    add.d $a0, $a0, $tp325; DESC64-NEXT:    ret326entry:327  ret ptr @ie328}329 330;; localexec specified331 332define ptr @f4() nounwind {333; LA32PIC-LABEL: f4:334; LA32PIC:       # %bb.0: # %entry335; LA32PIC-NEXT:    lu12i.w $a0, %le_hi20_r(le)336; LA32PIC-NEXT:    add.w $a0, $a0, $tp, %le_add_r(le)337; LA32PIC-NEXT:    addi.w $a0, $a0, %le_lo12_r(le)338; LA32PIC-NEXT:    ret339;340; LA64PIC-LABEL: f4:341; LA64PIC:       # %bb.0: # %entry342; LA64PIC-NEXT:    lu12i.w $a0, %le_hi20_r(le)343; LA64PIC-NEXT:    add.d $a0, $a0, $tp, %le_add_r(le)344; LA64PIC-NEXT:    addi.d $a0, $a0, %le_lo12_r(le)345; LA64PIC-NEXT:    ret346;347; LA64LARGEPIC-LABEL: f4:348; LA64LARGEPIC:       # %bb.0: # %entry349; LA64LARGEPIC-NEXT:    lu12i.w $a0, %le_hi20(le)350; LA64LARGEPIC-NEXT:    ori $a0, $a0, %le_lo12(le)351; LA64LARGEPIC-NEXT:    lu32i.d $a0, %le64_lo20(le)352; LA64LARGEPIC-NEXT:    lu52i.d $a0, $a0, %le64_hi12(le)353; LA64LARGEPIC-NEXT:    add.d $a0, $a0, $tp354; LA64LARGEPIC-NEXT:    ret355;356; LA32NOPIC-LABEL: f4:357; LA32NOPIC:       # %bb.0: # %entry358; LA32NOPIC-NEXT:    lu12i.w $a0, %le_hi20_r(le)359; LA32NOPIC-NEXT:    add.w $a0, $a0, $tp, %le_add_r(le)360; LA32NOPIC-NEXT:    addi.w $a0, $a0, %le_lo12_r(le)361; LA32NOPIC-NEXT:    ret362;363; LA64NOPIC-LABEL: f4:364; LA64NOPIC:       # %bb.0: # %entry365; LA64NOPIC-NEXT:    lu12i.w $a0, %le_hi20_r(le)366; LA64NOPIC-NEXT:    add.d $a0, $a0, $tp, %le_add_r(le)367; LA64NOPIC-NEXT:    addi.d $a0, $a0, %le_lo12_r(le)368; LA64NOPIC-NEXT:    ret369;370; LA64LARGENOPIC-LABEL: f4:371; LA64LARGENOPIC:       # %bb.0: # %entry372; LA64LARGENOPIC-NEXT:    lu12i.w $a0, %le_hi20(le)373; LA64LARGENOPIC-NEXT:    ori $a0, $a0, %le_lo12(le)374; LA64LARGENOPIC-NEXT:    lu32i.d $a0, %le64_lo20(le)375; LA64LARGENOPIC-NEXT:    lu52i.d $a0, $a0, %le64_hi12(le)376; LA64LARGENOPIC-NEXT:    add.d $a0, $a0, $tp377; LA64LARGENOPIC-NEXT:    ret378;379; LA32DESC-LABEL: f4:380; LA32DESC:       # %bb.0: # %entry381; LA32DESC-NEXT:    lu12i.w $a0, %le_hi20_r(le)382; LA32DESC-NEXT:    add.w $a0, $a0, $tp, %le_add_r(le)383; LA32DESC-NEXT:    addi.w $a0, $a0, %le_lo12_r(le)384; LA32DESC-NEXT:    ret385;386; LA64DESC-LABEL: f4:387; LA64DESC:       # %bb.0: # %entry388; LA64DESC-NEXT:    lu12i.w $a0, %le_hi20_r(le)389; LA64DESC-NEXT:    add.d $a0, $a0, $tp, %le_add_r(le)390; LA64DESC-NEXT:    addi.d $a0, $a0, %le_lo12_r(le)391; LA64DESC-NEXT:    ret392;393; DESC64-LABEL: f4:394; DESC64:       # %bb.0: # %entry395; DESC64-NEXT:    lu12i.w $a0, %le_hi20(le)396; DESC64-NEXT:    ori $a0, $a0, %le_lo12(le)397; DESC64-NEXT:    lu32i.d $a0, %le64_lo20(le)398; DESC64-NEXT:    lu52i.d $a0, $a0, %le64_hi12(le)399; DESC64-NEXT:    add.d $a0, $a0, $tp400; DESC64-NEXT:    ret401entry:402  ret ptr @le403}404