1d1b526fbSwanglei; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 29d4f7f44Swanglei; RUN: llc --mtriple=loongarch32 -mattr=+d --relocation-model=pic < %s | FileCheck %s --check-prefix=LA32PIC 39d4f7f44Swanglei; RUN: llc --mtriple=loongarch64 -mattr=+d --relocation-model=pic < %s | FileCheck %s --check-prefix=LA64PIC 49d4f7f44Swanglei; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=large --relocation-model=pic < %s | FileCheck %s --check-prefix=LA64LARGEPIC 59d4f7f44Swanglei; RUN: llc --mtriple=loongarch32 -mattr=+d < %s | FileCheck %s --check-prefix=LA32NOPIC 69d4f7f44Swanglei; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s --check-prefix=LA64NOPIC 79d4f7f44Swanglei; RUN: llc --mtriple=loongarch64 -mattr=+d --code-model=large < %s | FileCheck %s --check-prefix=LA64LARGENOPIC 89d4f7f44Swanglei; RUN: llc --mtriple=loongarch32 -mattr=+d --relocation-model=pic --enable-tlsdesc < %s \ 9eb148aecSwanglei; RUN: | FileCheck %s --check-prefix=LA32DESC 109d4f7f44Swanglei; RUN: llc --mtriple=loongarch64 -mattr=+d --relocation-model=pic --enable-tlsdesc < %s \ 11eb148aecSwanglei; RUN: | FileCheck %s --check-prefix=LA64DESC 129d4f7f44Swanglei; RUN: llc --mtriple=loongarch64 -mattr=+d --relocation-model=pic --enable-tlsdesc \ 13eb148aecSwanglei; RUN: --code-model=large < %s | FileCheck %s --check-prefix=DESC64 14d1b526fbSwanglei 15d1b526fbSwanglei;; Check that TLS symbols are lowered correctly based on the specified 16d1b526fbSwanglei;; model. Make sure they're external to avoid them all being optimised to Local 17d1b526fbSwanglei;; Exec for the executable. 18d1b526fbSwanglei 19d1b526fbSwanglei@unspecified = external thread_local global i32 20d1b526fbSwanglei@ld = external thread_local(localdynamic) global i32 21d1b526fbSwanglei@ie = external thread_local(initialexec) global i32 22d1b526fbSwanglei@le = external thread_local(localexec) global i32 23d1b526fbSwanglei 24d1b526fbSwanglei;; No model specified (global dynamic) 25d1b526fbSwanglei 26d1b526fbSwangleidefine ptr @f1() nounwind { 27d1b526fbSwanglei; LA32PIC-LABEL: f1: 28d1b526fbSwanglei; LA32PIC: # %bb.0: # %entry 29d1b526fbSwanglei; LA32PIC-NEXT: addi.w $sp, $sp, -16 30d1b526fbSwanglei; LA32PIC-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 31d1b526fbSwanglei; LA32PIC-NEXT: pcalau12i $a0, %gd_pc_hi20(unspecified) 32506e9368Swanglei; LA32PIC-NEXT: addi.w $a0, $a0, %got_pc_lo12(unspecified) 33d1b526fbSwanglei; LA32PIC-NEXT: bl %plt(__tls_get_addr) 34d1b526fbSwanglei; LA32PIC-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 35d1b526fbSwanglei; LA32PIC-NEXT: addi.w $sp, $sp, 16 36d1b526fbSwanglei; LA32PIC-NEXT: ret 37d1b526fbSwanglei; 38d1b526fbSwanglei; LA64PIC-LABEL: f1: 39d1b526fbSwanglei; LA64PIC: # %bb.0: # %entry 40d1b526fbSwanglei; LA64PIC-NEXT: addi.d $sp, $sp, -16 41d1b526fbSwanglei; LA64PIC-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 42d1b526fbSwanglei; LA64PIC-NEXT: pcalau12i $a0, %gd_pc_hi20(unspecified) 43506e9368Swanglei; LA64PIC-NEXT: addi.d $a0, $a0, %got_pc_lo12(unspecified) 44d1b526fbSwanglei; LA64PIC-NEXT: bl %plt(__tls_get_addr) 45d1b526fbSwanglei; LA64PIC-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 46d1b526fbSwanglei; LA64PIC-NEXT: addi.d $sp, $sp, 16 47d1b526fbSwanglei; LA64PIC-NEXT: ret 48d1b526fbSwanglei; 4900786d3aSWANG Xuerui; LA64LARGEPIC-LABEL: f1: 5000786d3aSWANG Xuerui; LA64LARGEPIC: # %bb.0: # %entry 5100786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: addi.d $sp, $sp, -16 5200786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 5300786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: pcalau12i $a0, %gd_pc_hi20(unspecified) 540e6f64cdShev; LA64LARGEPIC-NEXT: addi.d $a1, $zero, %got_pc_lo12(unspecified) 550e6f64cdShev; LA64LARGEPIC-NEXT: lu32i.d $a1, %got64_pc_lo20(unspecified) 560e6f64cdShev; LA64LARGEPIC-NEXT: lu52i.d $a1, $a1, %got64_pc_hi12(unspecified) 570e6f64cdShev; LA64LARGEPIC-NEXT: add.d $a0, $a1, $a0 586377ae46Swanglei; LA64LARGEPIC-NEXT: pcalau12i $a1, %got_pc_hi20(__tls_get_addr) 596377ae46Swanglei; LA64LARGEPIC-NEXT: addi.d $ra, $zero, %got_pc_lo12(__tls_get_addr) 606377ae46Swanglei; LA64LARGEPIC-NEXT: lu32i.d $ra, %got64_pc_lo20(__tls_get_addr) 616377ae46Swanglei; LA64LARGEPIC-NEXT: lu52i.d $ra, $ra, %got64_pc_hi12(__tls_get_addr) 626377ae46Swanglei; LA64LARGEPIC-NEXT: ldx.d $ra, $ra, $a1 6300786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: jirl $ra, $ra, 0 6400786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 6500786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: addi.d $sp, $sp, 16 6600786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: ret 6700786d3aSWANG Xuerui; 68d1b526fbSwanglei; LA32NOPIC-LABEL: f1: 69d1b526fbSwanglei; LA32NOPIC: # %bb.0: # %entry 70d1b526fbSwanglei; LA32NOPIC-NEXT: pcalau12i $a0, %ie_pc_hi20(unspecified) 71d1b526fbSwanglei; LA32NOPIC-NEXT: ld.w $a0, $a0, %ie_pc_lo12(unspecified) 72d1b526fbSwanglei; LA32NOPIC-NEXT: add.w $a0, $a0, $tp 73d1b526fbSwanglei; LA32NOPIC-NEXT: ret 74d1b526fbSwanglei; 75d1b526fbSwanglei; LA64NOPIC-LABEL: f1: 76d1b526fbSwanglei; LA64NOPIC: # %bb.0: # %entry 77d1b526fbSwanglei; LA64NOPIC-NEXT: pcalau12i $a0, %ie_pc_hi20(unspecified) 78d1b526fbSwanglei; LA64NOPIC-NEXT: ld.d $a0, $a0, %ie_pc_lo12(unspecified) 79d1b526fbSwanglei; LA64NOPIC-NEXT: add.d $a0, $a0, $tp 80d1b526fbSwanglei; LA64NOPIC-NEXT: ret 8100786d3aSWANG Xuerui; 8200786d3aSWANG Xuerui; LA64LARGENOPIC-LABEL: f1: 8300786d3aSWANG Xuerui; LA64LARGENOPIC: # %bb.0: # %entry 8400786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: pcalau12i $a0, %ie_pc_hi20(unspecified) 850e6f64cdShev; LA64LARGENOPIC-NEXT: addi.d $a1, $zero, %ie_pc_lo12(unspecified) 860e6f64cdShev; LA64LARGENOPIC-NEXT: lu32i.d $a1, %ie64_pc_lo20(unspecified) 870e6f64cdShev; LA64LARGENOPIC-NEXT: lu52i.d $a1, $a1, %ie64_pc_hi12(unspecified) 880e6f64cdShev; LA64LARGENOPIC-NEXT: ldx.d $a0, $a1, $a0 8900786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: add.d $a0, $a0, $tp 9000786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: ret 91eb148aecSwanglei; 92eb148aecSwanglei; LA32DESC-LABEL: f1: 93eb148aecSwanglei; LA32DESC: # %bb.0: # %entry 94eb148aecSwanglei; LA32DESC-NEXT: addi.w $sp, $sp, -16 95eb148aecSwanglei; LA32DESC-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 96eb148aecSwanglei; LA32DESC-NEXT: pcalau12i $a0, %desc_pc_hi20(unspecified) 97eb148aecSwanglei; LA32DESC-NEXT: addi.w $a0, $a0, %desc_pc_lo12(unspecified) 98eb148aecSwanglei; LA32DESC-NEXT: ld.w $ra, $a0, %desc_ld(unspecified) 99eb148aecSwanglei; LA32DESC-NEXT: jirl $ra, $ra, %desc_call(unspecified) 100eb148aecSwanglei; LA32DESC-NEXT: add.w $a0, $a0, $tp 101eb148aecSwanglei; LA32DESC-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 102eb148aecSwanglei; LA32DESC-NEXT: addi.w $sp, $sp, 16 103eb148aecSwanglei; LA32DESC-NEXT: ret 104eb148aecSwanglei; 105eb148aecSwanglei; LA64DESC-LABEL: f1: 106eb148aecSwanglei; LA64DESC: # %bb.0: # %entry 107eb148aecSwanglei; LA64DESC-NEXT: addi.d $sp, $sp, -16 108eb148aecSwanglei; LA64DESC-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 109eb148aecSwanglei; LA64DESC-NEXT: pcalau12i $a0, %desc_pc_hi20(unspecified) 110eb148aecSwanglei; LA64DESC-NEXT: addi.d $a0, $a0, %desc_pc_lo12(unspecified) 111eb148aecSwanglei; LA64DESC-NEXT: ld.d $ra, $a0, %desc_ld(unspecified) 112eb148aecSwanglei; LA64DESC-NEXT: jirl $ra, $ra, %desc_call(unspecified) 113eb148aecSwanglei; LA64DESC-NEXT: add.d $a0, $a0, $tp 114eb148aecSwanglei; LA64DESC-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 115eb148aecSwanglei; LA64DESC-NEXT: addi.d $sp, $sp, 16 116eb148aecSwanglei; LA64DESC-NEXT: ret 117eb148aecSwanglei; 118eb148aecSwanglei; DESC64-LABEL: f1: 119eb148aecSwanglei; DESC64: # %bb.0: # %entry 120eb148aecSwanglei; DESC64-NEXT: addi.d $sp, $sp, -16 121eb148aecSwanglei; DESC64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 122eb148aecSwanglei; DESC64-NEXT: pcalau12i $a0, %desc_pc_hi20(unspecified) 1230e6f64cdShev; DESC64-NEXT: addi.d $a1, $zero, %desc_pc_lo12(unspecified) 1240e6f64cdShev; DESC64-NEXT: lu32i.d $a1, %desc64_pc_lo20(unspecified) 1250e6f64cdShev; DESC64-NEXT: lu52i.d $a1, $a1, %desc64_pc_hi12(unspecified) 1260e6f64cdShev; DESC64-NEXT: add.d $a0, $a0, $a1 127eb148aecSwanglei; DESC64-NEXT: ld.d $ra, $a0, %desc_ld(unspecified) 128eb148aecSwanglei; DESC64-NEXT: jirl $ra, $ra, %desc_call(unspecified) 1290e6f64cdShev; DESC64-NEXT: add.d $a0, $a0, $tp 130eb148aecSwanglei; DESC64-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 131eb148aecSwanglei; DESC64-NEXT: addi.d $sp, $sp, 16 132eb148aecSwanglei; DESC64-NEXT: ret 133d1b526fbSwangleientry: 134d1b526fbSwanglei ret ptr @unspecified 135d1b526fbSwanglei} 136d1b526fbSwanglei 137d1b526fbSwanglei;; localdynamic specified 138d1b526fbSwanglei 139d1b526fbSwangleidefine ptr @f2() nounwind { 140d1b526fbSwanglei; LA32PIC-LABEL: f2: 141d1b526fbSwanglei; LA32PIC: # %bb.0: # %entry 142d1b526fbSwanglei; LA32PIC-NEXT: addi.w $sp, $sp, -16 143d1b526fbSwanglei; LA32PIC-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 144d1b526fbSwanglei; LA32PIC-NEXT: pcalau12i $a0, %ld_pc_hi20(ld) 145506e9368Swanglei; LA32PIC-NEXT: addi.w $a0, $a0, %got_pc_lo12(ld) 146d1b526fbSwanglei; LA32PIC-NEXT: bl %plt(__tls_get_addr) 147d1b526fbSwanglei; LA32PIC-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 148d1b526fbSwanglei; LA32PIC-NEXT: addi.w $sp, $sp, 16 149d1b526fbSwanglei; LA32PIC-NEXT: ret 150d1b526fbSwanglei; 151d1b526fbSwanglei; LA64PIC-LABEL: f2: 152d1b526fbSwanglei; LA64PIC: # %bb.0: # %entry 153d1b526fbSwanglei; LA64PIC-NEXT: addi.d $sp, $sp, -16 154d1b526fbSwanglei; LA64PIC-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 155d1b526fbSwanglei; LA64PIC-NEXT: pcalau12i $a0, %ld_pc_hi20(ld) 156506e9368Swanglei; LA64PIC-NEXT: addi.d $a0, $a0, %got_pc_lo12(ld) 157d1b526fbSwanglei; LA64PIC-NEXT: bl %plt(__tls_get_addr) 158d1b526fbSwanglei; LA64PIC-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 159d1b526fbSwanglei; LA64PIC-NEXT: addi.d $sp, $sp, 16 160d1b526fbSwanglei; LA64PIC-NEXT: ret 161d1b526fbSwanglei; 16200786d3aSWANG Xuerui; LA64LARGEPIC-LABEL: f2: 16300786d3aSWANG Xuerui; LA64LARGEPIC: # %bb.0: # %entry 16400786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: addi.d $sp, $sp, -16 16500786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 16600786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: pcalau12i $a0, %ld_pc_hi20(ld) 1670e6f64cdShev; LA64LARGEPIC-NEXT: addi.d $a1, $zero, %got_pc_lo12(ld) 1680e6f64cdShev; LA64LARGEPIC-NEXT: lu32i.d $a1, %got64_pc_lo20(ld) 1690e6f64cdShev; LA64LARGEPIC-NEXT: lu52i.d $a1, $a1, %got64_pc_hi12(ld) 1700e6f64cdShev; LA64LARGEPIC-NEXT: add.d $a0, $a1, $a0 1716377ae46Swanglei; LA64LARGEPIC-NEXT: pcalau12i $a1, %got_pc_hi20(__tls_get_addr) 1726377ae46Swanglei; LA64LARGEPIC-NEXT: addi.d $ra, $zero, %got_pc_lo12(__tls_get_addr) 1736377ae46Swanglei; LA64LARGEPIC-NEXT: lu32i.d $ra, %got64_pc_lo20(__tls_get_addr) 1746377ae46Swanglei; LA64LARGEPIC-NEXT: lu52i.d $ra, $ra, %got64_pc_hi12(__tls_get_addr) 1756377ae46Swanglei; LA64LARGEPIC-NEXT: ldx.d $ra, $ra, $a1 17600786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: jirl $ra, $ra, 0 17700786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 17800786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: addi.d $sp, $sp, 16 17900786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: ret 18000786d3aSWANG Xuerui; 181d1b526fbSwanglei; LA32NOPIC-LABEL: f2: 182d1b526fbSwanglei; LA32NOPIC: # %bb.0: # %entry 183d1b526fbSwanglei; LA32NOPIC-NEXT: pcalau12i $a0, %ie_pc_hi20(ld) 184d1b526fbSwanglei; LA32NOPIC-NEXT: ld.w $a0, $a0, %ie_pc_lo12(ld) 185d1b526fbSwanglei; LA32NOPIC-NEXT: add.w $a0, $a0, $tp 186d1b526fbSwanglei; LA32NOPIC-NEXT: ret 187d1b526fbSwanglei; 188d1b526fbSwanglei; LA64NOPIC-LABEL: f2: 189d1b526fbSwanglei; LA64NOPIC: # %bb.0: # %entry 190d1b526fbSwanglei; LA64NOPIC-NEXT: pcalau12i $a0, %ie_pc_hi20(ld) 191d1b526fbSwanglei; LA64NOPIC-NEXT: ld.d $a0, $a0, %ie_pc_lo12(ld) 192d1b526fbSwanglei; LA64NOPIC-NEXT: add.d $a0, $a0, $tp 193d1b526fbSwanglei; LA64NOPIC-NEXT: ret 19400786d3aSWANG Xuerui; 19500786d3aSWANG Xuerui; LA64LARGENOPIC-LABEL: f2: 19600786d3aSWANG Xuerui; LA64LARGENOPIC: # %bb.0: # %entry 19700786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: pcalau12i $a0, %ie_pc_hi20(ld) 1980e6f64cdShev; LA64LARGENOPIC-NEXT: addi.d $a1, $zero, %ie_pc_lo12(ld) 1990e6f64cdShev; LA64LARGENOPIC-NEXT: lu32i.d $a1, %ie64_pc_lo20(ld) 2000e6f64cdShev; LA64LARGENOPIC-NEXT: lu52i.d $a1, $a1, %ie64_pc_hi12(ld) 2010e6f64cdShev; LA64LARGENOPIC-NEXT: ldx.d $a0, $a1, $a0 20200786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: add.d $a0, $a0, $tp 20300786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: ret 204eb148aecSwanglei; 205eb148aecSwanglei; LA32DESC-LABEL: f2: 206eb148aecSwanglei; LA32DESC: # %bb.0: # %entry 207eb148aecSwanglei; LA32DESC-NEXT: addi.w $sp, $sp, -16 208eb148aecSwanglei; LA32DESC-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 209eb148aecSwanglei; LA32DESC-NEXT: pcalau12i $a0, %desc_pc_hi20(ld) 210eb148aecSwanglei; LA32DESC-NEXT: addi.w $a0, $a0, %desc_pc_lo12(ld) 211eb148aecSwanglei; LA32DESC-NEXT: ld.w $ra, $a0, %desc_ld(ld) 212eb148aecSwanglei; LA32DESC-NEXT: jirl $ra, $ra, %desc_call(ld) 213eb148aecSwanglei; LA32DESC-NEXT: add.w $a0, $a0, $tp 214eb148aecSwanglei; LA32DESC-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 215eb148aecSwanglei; LA32DESC-NEXT: addi.w $sp, $sp, 16 216eb148aecSwanglei; LA32DESC-NEXT: ret 217eb148aecSwanglei; 218eb148aecSwanglei; LA64DESC-LABEL: f2: 219eb148aecSwanglei; LA64DESC: # %bb.0: # %entry 220eb148aecSwanglei; LA64DESC-NEXT: addi.d $sp, $sp, -16 221eb148aecSwanglei; LA64DESC-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 222eb148aecSwanglei; LA64DESC-NEXT: pcalau12i $a0, %desc_pc_hi20(ld) 223eb148aecSwanglei; LA64DESC-NEXT: addi.d $a0, $a0, %desc_pc_lo12(ld) 224eb148aecSwanglei; LA64DESC-NEXT: ld.d $ra, $a0, %desc_ld(ld) 225eb148aecSwanglei; LA64DESC-NEXT: jirl $ra, $ra, %desc_call(ld) 226eb148aecSwanglei; LA64DESC-NEXT: add.d $a0, $a0, $tp 227eb148aecSwanglei; LA64DESC-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 228eb148aecSwanglei; LA64DESC-NEXT: addi.d $sp, $sp, 16 229eb148aecSwanglei; LA64DESC-NEXT: ret 230eb148aecSwanglei; 231eb148aecSwanglei; DESC64-LABEL: f2: 232eb148aecSwanglei; DESC64: # %bb.0: # %entry 233eb148aecSwanglei; DESC64-NEXT: addi.d $sp, $sp, -16 234eb148aecSwanglei; DESC64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 235eb148aecSwanglei; DESC64-NEXT: pcalau12i $a0, %desc_pc_hi20(ld) 2360e6f64cdShev; DESC64-NEXT: addi.d $a1, $zero, %desc_pc_lo12(ld) 2370e6f64cdShev; DESC64-NEXT: lu32i.d $a1, %desc64_pc_lo20(ld) 2380e6f64cdShev; DESC64-NEXT: lu52i.d $a1, $a1, %desc64_pc_hi12(ld) 2390e6f64cdShev; DESC64-NEXT: add.d $a0, $a0, $a1 240eb148aecSwanglei; DESC64-NEXT: ld.d $ra, $a0, %desc_ld(ld) 241eb148aecSwanglei; DESC64-NEXT: jirl $ra, $ra, %desc_call(ld) 2420e6f64cdShev; DESC64-NEXT: add.d $a0, $a0, $tp 243eb148aecSwanglei; DESC64-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 244eb148aecSwanglei; DESC64-NEXT: addi.d $sp, $sp, 16 245eb148aecSwanglei; DESC64-NEXT: ret 246d1b526fbSwangleientry: 247d1b526fbSwanglei ret ptr @ld 248d1b526fbSwanglei} 249d1b526fbSwanglei 250d1b526fbSwanglei;; initialexec specified 251d1b526fbSwanglei 252d1b526fbSwangleidefine ptr @f3() nounwind { 253d1b526fbSwanglei; LA32PIC-LABEL: f3: 254d1b526fbSwanglei; LA32PIC: # %bb.0: # %entry 255d1b526fbSwanglei; LA32PIC-NEXT: pcalau12i $a0, %ie_pc_hi20(ie) 256d1b526fbSwanglei; LA32PIC-NEXT: ld.w $a0, $a0, %ie_pc_lo12(ie) 257d1b526fbSwanglei; LA32PIC-NEXT: add.w $a0, $a0, $tp 258d1b526fbSwanglei; LA32PIC-NEXT: ret 259d1b526fbSwanglei; 260d1b526fbSwanglei; LA64PIC-LABEL: f3: 261d1b526fbSwanglei; LA64PIC: # %bb.0: # %entry 262d1b526fbSwanglei; LA64PIC-NEXT: pcalau12i $a0, %ie_pc_hi20(ie) 263d1b526fbSwanglei; LA64PIC-NEXT: ld.d $a0, $a0, %ie_pc_lo12(ie) 264d1b526fbSwanglei; LA64PIC-NEXT: add.d $a0, $a0, $tp 265d1b526fbSwanglei; LA64PIC-NEXT: ret 266d1b526fbSwanglei; 26700786d3aSWANG Xuerui; LA64LARGEPIC-LABEL: f3: 26800786d3aSWANG Xuerui; LA64LARGEPIC: # %bb.0: # %entry 26900786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: pcalau12i $a0, %ie_pc_hi20(ie) 2700e6f64cdShev; LA64LARGEPIC-NEXT: addi.d $a1, $zero, %ie_pc_lo12(ie) 2710e6f64cdShev; LA64LARGEPIC-NEXT: lu32i.d $a1, %ie64_pc_lo20(ie) 2720e6f64cdShev; LA64LARGEPIC-NEXT: lu52i.d $a1, $a1, %ie64_pc_hi12(ie) 2730e6f64cdShev; LA64LARGEPIC-NEXT: ldx.d $a0, $a1, $a0 27400786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: add.d $a0, $a0, $tp 27500786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: ret 27600786d3aSWANG Xuerui; 277d1b526fbSwanglei; LA32NOPIC-LABEL: f3: 278d1b526fbSwanglei; LA32NOPIC: # %bb.0: # %entry 279d1b526fbSwanglei; LA32NOPIC-NEXT: pcalau12i $a0, %ie_pc_hi20(ie) 280d1b526fbSwanglei; LA32NOPIC-NEXT: ld.w $a0, $a0, %ie_pc_lo12(ie) 281d1b526fbSwanglei; LA32NOPIC-NEXT: add.w $a0, $a0, $tp 282d1b526fbSwanglei; LA32NOPIC-NEXT: ret 283d1b526fbSwanglei; 284d1b526fbSwanglei; LA64NOPIC-LABEL: f3: 285d1b526fbSwanglei; LA64NOPIC: # %bb.0: # %entry 286d1b526fbSwanglei; LA64NOPIC-NEXT: pcalau12i $a0, %ie_pc_hi20(ie) 287d1b526fbSwanglei; LA64NOPIC-NEXT: ld.d $a0, $a0, %ie_pc_lo12(ie) 288d1b526fbSwanglei; LA64NOPIC-NEXT: add.d $a0, $a0, $tp 289d1b526fbSwanglei; LA64NOPIC-NEXT: ret 29000786d3aSWANG Xuerui; 29100786d3aSWANG Xuerui; LA64LARGENOPIC-LABEL: f3: 29200786d3aSWANG Xuerui; LA64LARGENOPIC: # %bb.0: # %entry 29300786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: pcalau12i $a0, %ie_pc_hi20(ie) 2940e6f64cdShev; LA64LARGENOPIC-NEXT: addi.d $a1, $zero, %ie_pc_lo12(ie) 2950e6f64cdShev; LA64LARGENOPIC-NEXT: lu32i.d $a1, %ie64_pc_lo20(ie) 2960e6f64cdShev; LA64LARGENOPIC-NEXT: lu52i.d $a1, $a1, %ie64_pc_hi12(ie) 2970e6f64cdShev; LA64LARGENOPIC-NEXT: ldx.d $a0, $a1, $a0 29800786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: add.d $a0, $a0, $tp 29900786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: ret 300eb148aecSwanglei; 301eb148aecSwanglei; LA32DESC-LABEL: f3: 302eb148aecSwanglei; LA32DESC: # %bb.0: # %entry 303eb148aecSwanglei; LA32DESC-NEXT: pcalau12i $a0, %ie_pc_hi20(ie) 304eb148aecSwanglei; LA32DESC-NEXT: ld.w $a0, $a0, %ie_pc_lo12(ie) 305eb148aecSwanglei; LA32DESC-NEXT: add.w $a0, $a0, $tp 306eb148aecSwanglei; LA32DESC-NEXT: ret 307eb148aecSwanglei; 308eb148aecSwanglei; LA64DESC-LABEL: f3: 309eb148aecSwanglei; LA64DESC: # %bb.0: # %entry 310eb148aecSwanglei; LA64DESC-NEXT: pcalau12i $a0, %ie_pc_hi20(ie) 311eb148aecSwanglei; LA64DESC-NEXT: ld.d $a0, $a0, %ie_pc_lo12(ie) 312eb148aecSwanglei; LA64DESC-NEXT: add.d $a0, $a0, $tp 313eb148aecSwanglei; LA64DESC-NEXT: ret 314eb148aecSwanglei; 315eb148aecSwanglei; DESC64-LABEL: f3: 316eb148aecSwanglei; DESC64: # %bb.0: # %entry 317eb148aecSwanglei; DESC64-NEXT: pcalau12i $a0, %ie_pc_hi20(ie) 3180e6f64cdShev; DESC64-NEXT: addi.d $a1, $zero, %ie_pc_lo12(ie) 3190e6f64cdShev; DESC64-NEXT: lu32i.d $a1, %ie64_pc_lo20(ie) 3200e6f64cdShev; DESC64-NEXT: lu52i.d $a1, $a1, %ie64_pc_hi12(ie) 3210e6f64cdShev; DESC64-NEXT: ldx.d $a0, $a1, $a0 322eb148aecSwanglei; DESC64-NEXT: add.d $a0, $a0, $tp 323eb148aecSwanglei; DESC64-NEXT: ret 324d1b526fbSwangleientry: 325d1b526fbSwanglei ret ptr @ie 326d1b526fbSwanglei} 327d1b526fbSwanglei 328d1b526fbSwanglei;; localexec specified 329d1b526fbSwanglei 330d1b526fbSwangleidefine ptr @f4() nounwind { 331d1b526fbSwanglei; LA32PIC-LABEL: f4: 332d1b526fbSwanglei; LA32PIC: # %bb.0: # %entry 333*b53866feSZhaoQi; LA32PIC-NEXT: lu12i.w $a0, %le_hi20_r(le) 334*b53866feSZhaoQi; LA32PIC-NEXT: add.w $a0, $a0, $tp, %le_add_r(le) 335*b53866feSZhaoQi; LA32PIC-NEXT: addi.w $a0, $a0, %le_lo12_r(le) 336d1b526fbSwanglei; LA32PIC-NEXT: ret 337d1b526fbSwanglei; 338d1b526fbSwanglei; LA64PIC-LABEL: f4: 339d1b526fbSwanglei; LA64PIC: # %bb.0: # %entry 340*b53866feSZhaoQi; LA64PIC-NEXT: lu12i.w $a0, %le_hi20_r(le) 341*b53866feSZhaoQi; LA64PIC-NEXT: add.d $a0, $a0, $tp, %le_add_r(le) 342*b53866feSZhaoQi; LA64PIC-NEXT: addi.d $a0, $a0, %le_lo12_r(le) 343d1b526fbSwanglei; LA64PIC-NEXT: ret 344d1b526fbSwanglei; 34500786d3aSWANG Xuerui; LA64LARGEPIC-LABEL: f4: 34600786d3aSWANG Xuerui; LA64LARGEPIC: # %bb.0: # %entry 34700786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: lu12i.w $a0, %le_hi20(le) 34800786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: ori $a0, $a0, %le_lo12(le) 34900786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: lu32i.d $a0, %le64_lo20(le) 35000786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: lu52i.d $a0, $a0, %le64_hi12(le) 35100786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: add.d $a0, $a0, $tp 35200786d3aSWANG Xuerui; LA64LARGEPIC-NEXT: ret 35300786d3aSWANG Xuerui; 354d1b526fbSwanglei; LA32NOPIC-LABEL: f4: 355d1b526fbSwanglei; LA32NOPIC: # %bb.0: # %entry 356*b53866feSZhaoQi; LA32NOPIC-NEXT: lu12i.w $a0, %le_hi20_r(le) 357*b53866feSZhaoQi; LA32NOPIC-NEXT: add.w $a0, $a0, $tp, %le_add_r(le) 358*b53866feSZhaoQi; LA32NOPIC-NEXT: addi.w $a0, $a0, %le_lo12_r(le) 359d1b526fbSwanglei; LA32NOPIC-NEXT: ret 360d1b526fbSwanglei; 361d1b526fbSwanglei; LA64NOPIC-LABEL: f4: 362d1b526fbSwanglei; LA64NOPIC: # %bb.0: # %entry 363*b53866feSZhaoQi; LA64NOPIC-NEXT: lu12i.w $a0, %le_hi20_r(le) 364*b53866feSZhaoQi; LA64NOPIC-NEXT: add.d $a0, $a0, $tp, %le_add_r(le) 365*b53866feSZhaoQi; LA64NOPIC-NEXT: addi.d $a0, $a0, %le_lo12_r(le) 366d1b526fbSwanglei; LA64NOPIC-NEXT: ret 36700786d3aSWANG Xuerui; 36800786d3aSWANG Xuerui; LA64LARGENOPIC-LABEL: f4: 36900786d3aSWANG Xuerui; LA64LARGENOPIC: # %bb.0: # %entry 37000786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: lu12i.w $a0, %le_hi20(le) 37100786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: ori $a0, $a0, %le_lo12(le) 37200786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: lu32i.d $a0, %le64_lo20(le) 37300786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: lu52i.d $a0, $a0, %le64_hi12(le) 37400786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: add.d $a0, $a0, $tp 37500786d3aSWANG Xuerui; LA64LARGENOPIC-NEXT: ret 376eb148aecSwanglei; 377eb148aecSwanglei; LA32DESC-LABEL: f4: 378eb148aecSwanglei; LA32DESC: # %bb.0: # %entry 379*b53866feSZhaoQi; LA32DESC-NEXT: lu12i.w $a0, %le_hi20_r(le) 380*b53866feSZhaoQi; LA32DESC-NEXT: add.w $a0, $a0, $tp, %le_add_r(le) 381*b53866feSZhaoQi; LA32DESC-NEXT: addi.w $a0, $a0, %le_lo12_r(le) 382eb148aecSwanglei; LA32DESC-NEXT: ret 383eb148aecSwanglei; 384eb148aecSwanglei; LA64DESC-LABEL: f4: 385eb148aecSwanglei; LA64DESC: # %bb.0: # %entry 386*b53866feSZhaoQi; LA64DESC-NEXT: lu12i.w $a0, %le_hi20_r(le) 387*b53866feSZhaoQi; LA64DESC-NEXT: add.d $a0, $a0, $tp, %le_add_r(le) 388*b53866feSZhaoQi; LA64DESC-NEXT: addi.d $a0, $a0, %le_lo12_r(le) 389eb148aecSwanglei; LA64DESC-NEXT: ret 390eb148aecSwanglei; 391eb148aecSwanglei; DESC64-LABEL: f4: 392eb148aecSwanglei; DESC64: # %bb.0: # %entry 393eb148aecSwanglei; DESC64-NEXT: lu12i.w $a0, %le_hi20(le) 394eb148aecSwanglei; DESC64-NEXT: ori $a0, $a0, %le_lo12(le) 395eb148aecSwanglei; DESC64-NEXT: lu32i.d $a0, %le64_lo20(le) 396eb148aecSwanglei; DESC64-NEXT: lu52i.d $a0, $a0, %le64_hi12(le) 397eb148aecSwanglei; DESC64-NEXT: add.d $a0, $a0, $tp 398eb148aecSwanglei; DESC64-NEXT: ret 399d1b526fbSwangleientry: 400d1b526fbSwanglei ret ptr @le 401d1b526fbSwanglei} 402