brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.2 KiB · c6247ab Raw
194 lines · plain
1; FIXME: even under non-pic mode, llvm needs to generate pic code since nld2;        doesn't work with non-pic code.  Thefore, we test pic codes for3;        both cases here.4;      llc -mtriple ve < %s | FileCheck %s -check-prefix=LOCAL5; RUN: llc -mtriple ve < %s | FileCheck %s -check-prefix=GENDYN6; RUN: llc -mtriple ve -relocation-model=pic < %s | FileCheck %s -check-prefix=GENDYNPIC7 8@x = external thread_local global i32, align 49@y = internal thread_local global i32 0, align 410 11; Function Attrs: norecurse nounwind readnone12define nonnull ptr @get_global() {13; GENDYN-LABEL: get_global:14; GENDYN:       .LBB{{[0-9]+}}_2:15; GENDYN-NEXT:    lea %s0, x@tls_gd_lo(-24)16; GENDYN-NEXT:    and %s0, %s0, (32)017; GENDYN-NEXT:    sic %s1018; GENDYN-NEXT:    lea.sl %s0, x@tls_gd_hi(%s10, %s0)19; GENDYN-NEXT:    lea %s12, __tls_get_addr@plt_lo(8)20; GENDYN-NEXT:    and %s12, %s12, (32)021; GENDYN-NEXT:    lea.sl %s12, __tls_get_addr@plt_hi(%s10, %s12)22; GENDYN-NEXT:    bsic %s10, (, %s12)23; GENDYN-NEXT:    or %s11, 0, %s924;25; GENDYNPIC-LABEL: get_global:26; GENDYNPIC:       .LBB{{[0-9]+}}_2:27; GENDYNPIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)28; GENDYNPIC-NEXT:    and %s15, %s15, (32)029; GENDYNPIC-NEXT:    sic %s1630; GENDYNPIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)31; GENDYNPIC-NEXT:    lea %s0, x@tls_gd_lo(-24)32; GENDYNPIC-NEXT:    and %s0, %s0, (32)033; GENDYNPIC-NEXT:    sic %s1034; GENDYNPIC-NEXT:    lea.sl %s0, x@tls_gd_hi(%s10, %s0)35; GENDYNPIC-NEXT:    lea %s12, __tls_get_addr@plt_lo(8)36; GENDYNPIC-NEXT:    and %s12, %s12, (32)037; GENDYNPIC-NEXT:    lea.sl %s12, __tls_get_addr@plt_hi(%s10, %s12)38; GENDYNPIC-NEXT:    bsic %s10, (, %s12)39; GENDYNPIC-NEXT:    or %s11, 0, %s940;41; LOCAL-LABEL: get_global:42; LOCAL:       .LBB{{[0-9]+}}_2:43; LOCAL-NEXT:  lea %s34, x@tpoff_lo44; LOCAL-NEXT:  and %s34, %s34, (32)045; LOCAL-NEXT:  lea.sl %s34, x@tpoff_hi(%s34)46; LOCAL-NEXT:  adds.l %s0, %s14, %s3447; LOCAL-NEXT:  or %s11, 0, %s948entry:49  ret ptr @x50}51 52; Function Attrs: norecurse nounwind readnone53define nonnull ptr @get_local() {54; GENDYN-LABEL: get_local:55; GENDYN:       .LBB{{[0-9]+}}_2:56; GENDYN-NEXT:    lea %s0, y@tls_gd_lo(-24)57; GENDYN-NEXT:    and %s0, %s0, (32)058; GENDYN-NEXT:    sic %s1059; GENDYN-NEXT:    lea.sl %s0, y@tls_gd_hi(%s10, %s0)60; GENDYN-NEXT:    lea %s12, __tls_get_addr@plt_lo(8)61; GENDYN-NEXT:    and %s12, %s12, (32)062; GENDYN-NEXT:    lea.sl %s12, __tls_get_addr@plt_hi(%s10, %s12)63; GENDYN-NEXT:    bsic %s10, (, %s12)64; GENDYN-NEXT:    or %s11, 0, %s965;66; GENDYNPIC-LABEL: get_local:67; GENDYNPIC:       .LBB{{[0-9]+}}_2:68; GENDYNPIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)69; GENDYNPIC-NEXT:    and %s15, %s15, (32)070; GENDYNPIC-NEXT:    sic %s1671; GENDYNPIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)72; GENDYNPIC-NEXT:    lea %s0, y@tls_gd_lo(-24)73; GENDYNPIC-NEXT:    and %s0, %s0, (32)074; GENDYNPIC-NEXT:    sic %s1075; GENDYNPIC-NEXT:    lea.sl %s0, y@tls_gd_hi(%s10, %s0)76; GENDYNPIC-NEXT:    lea %s12, __tls_get_addr@plt_lo(8)77; GENDYNPIC-NEXT:    and %s12, %s12, (32)078; GENDYNPIC-NEXT:    lea.sl %s12, __tls_get_addr@plt_hi(%s10, %s12)79; GENDYNPIC-NEXT:    bsic %s10, (, %s12)80; GENDYNPIC-NEXT:    or %s11, 0, %s981;82; LOCAL-LABEL: get_local:83; LOCAL:       .LBB{{[0-9]+}}_2:84; LOCAL-NEXT:  lea %s34, y@tpoff_lo85; LOCAL-NEXT:  and %s34, %s34, (32)086; LOCAL-NEXT:  lea.sl %s34, y@tpoff_hi(%s34)87; LOCAL-NEXT:  adds.l %s0, %s14, %s3488; LOCAL-NEXT:  or %s11, 0, %s989entry:90  ret ptr @y91}92 93; Function Attrs: norecurse nounwind94define void @set_global(i32 %v) {95; GENDYN-LABEL: set_global:96; GENDYN:       .LBB{{[0-9]+}}_2:97; GENDYN-NEXT:    st %s18, 288(, %s11) # 8-byte Folded Spill98; GENDYN-NEXT:    or %s18, 0, %s099; GENDYN-NEXT:    lea %s0, x@tls_gd_lo(-24)100; GENDYN-NEXT:    and %s0, %s0, (32)0101; GENDYN-NEXT:    sic %s10102; GENDYN-NEXT:    lea.sl %s0, x@tls_gd_hi(%s10, %s0)103; GENDYN-NEXT:    lea %s12, __tls_get_addr@plt_lo(8)104; GENDYN-NEXT:    and %s12, %s12, (32)0105; GENDYN-NEXT:    lea.sl %s12, __tls_get_addr@plt_hi(%s10, %s12)106; GENDYN-NEXT:    bsic %s10, (, %s12)107; GENDYN-NEXT:    stl %s18, (, %s0)108; GENDYN-NEXT:    ld %s18, 288(, %s11) # 8-byte Folded Reload109; GENDYN-NEXT:    or %s11, 0, %s9110;111; GENDYNPIC-LABEL: set_global:112; GENDYNPIC:       .LBB{{[0-9]+}}_2:113; GENDYNPIC-NEXT:    st %s18, 288(, %s11) # 8-byte Folded Spill114; GENDYNPIC-NEXT:    or %s18, 0, %s0115; GENDYNPIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)116; GENDYNPIC-NEXT:    and %s15, %s15, (32)0117; GENDYNPIC-NEXT:    sic %s16118; GENDYNPIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)119; GENDYNPIC-NEXT:    lea %s0, x@tls_gd_lo(-24)120; GENDYNPIC-NEXT:    and %s0, %s0, (32)0121; GENDYNPIC-NEXT:    sic %s10122; GENDYNPIC-NEXT:    lea.sl %s0, x@tls_gd_hi(%s10, %s0)123; GENDYNPIC-NEXT:    lea %s12, __tls_get_addr@plt_lo(8)124; GENDYNPIC-NEXT:    and %s12, %s12, (32)0125; GENDYNPIC-NEXT:    lea.sl %s12, __tls_get_addr@plt_hi(%s10, %s12)126; GENDYNPIC-NEXT:    bsic %s10, (, %s12)127; GENDYNPIC-NEXT:    stl %s18, (, %s0)128; GENDYNPIC-NEXT:    ld %s18, 288(, %s11) # 8-byte Folded Reload129; GENDYNPIC-NEXT:    or %s11, 0, %s9130;131; LOCAL-LABEL: set_global:132; LOCAL:       .LBB{{[0-9]+}}_2:133; LOCAL-NEXT:  lea %s34, x@tpoff_lo134; LOCAL-NEXT:  and %s34, %s34, (32)0135; LOCAL-NEXT:  lea.sl %s34, x@tpoff_hi(%s34)136; LOCAL-NEXT:  adds.l %s34, %s14, %s34137; LOCAL-NEXT:  stl %s0, (, %s34)138; LOCAL-NEXT:  or %s11, 0, %s9139entry:140  store i32 %v, ptr @x, align 4141  ret void142}143 144; Function Attrs: norecurse nounwind145define void @set_local(i32 %v) {146; GENDYN-LABEL: set_local:147; GENDYN:       .LBB{{[0-9]+}}_2:148; GENDYN-NEXT:    st %s18, 288(, %s11) # 8-byte Folded Spill149; GENDYN-NEXT:    or %s18, 0, %s0150; GENDYN-NEXT:    lea %s0, y@tls_gd_lo(-24)151; GENDYN-NEXT:    and %s0, %s0, (32)0152; GENDYN-NEXT:    sic %s10153; GENDYN-NEXT:    lea.sl %s0, y@tls_gd_hi(%s10, %s0)154; GENDYN-NEXT:    lea %s12, __tls_get_addr@plt_lo(8)155; GENDYN-NEXT:    and %s12, %s12, (32)0156; GENDYN-NEXT:    lea.sl %s12, __tls_get_addr@plt_hi(%s10, %s12)157; GENDYN-NEXT:    bsic %s10, (, %s12)158; GENDYN-NEXT:    stl %s18, (, %s0)159; GENDYN-NEXT:    ld %s18, 288(, %s11) # 8-byte Folded Reload160; GENDYN-NEXT:    or %s11, 0, %s9161;162; GENDYNPIC-LABEL: set_local:163; GENDYNPIC:       .LBB{{[0-9]+}}_2:164; GENDYNPIC-NEXT:    st %s18, 288(, %s11) # 8-byte Folded Spill165; GENDYNPIC-NEXT:    or %s18, 0, %s0166; GENDYNPIC-NEXT:    lea %s15, _GLOBAL_OFFSET_TABLE_@pc_lo(-24)167; GENDYNPIC-NEXT:    and %s15, %s15, (32)0168; GENDYNPIC-NEXT:    sic %s16169; GENDYNPIC-NEXT:    lea.sl %s15, _GLOBAL_OFFSET_TABLE_@pc_hi(%s16, %s15)170; GENDYNPIC-NEXT:    lea %s0, y@tls_gd_lo(-24)171; GENDYNPIC-NEXT:    and %s0, %s0, (32)0172; GENDYNPIC-NEXT:    sic %s10173; GENDYNPIC-NEXT:    lea.sl %s0, y@tls_gd_hi(%s10, %s0)174; GENDYNPIC-NEXT:    lea %s12, __tls_get_addr@plt_lo(8)175; GENDYNPIC-NEXT:    and %s12, %s12, (32)0176; GENDYNPIC-NEXT:    lea.sl %s12, __tls_get_addr@plt_hi(%s10, %s12)177; GENDYNPIC-NEXT:    bsic %s10, (, %s12)178; GENDYNPIC-NEXT:    stl %s18, (, %s0)179; GENDYNPIC-NEXT:    ld %s18, 288(, %s11) # 8-byte Folded Reload180; GENDYNPIC-NEXT:    or %s11, 0, %s9181;182; LOCAL-LABEL: set_local:183; LOCAL:       .LBB{{[0-9]+}}_2:184; LOCAL-NEXT:  lea %s34, y@tpoff_lo185; LOCAL-NEXT:  and %s34, %s34, (32)0186; LOCAL-NEXT:  lea.sl %s34, y@tpoff_hi(%s34)187; LOCAL-NEXT:  adds.l %s34, %s14, %s34188; LOCAL-NEXT:  stl %s0, (, %s34)189; LOCAL-NEXT:  or %s11, 0, %s9190entry:191  store i32 %v, ptr @y, align 4192  ret void193}194