brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.5 KiB · fce36da Raw
179 lines · plain
1; FIXME: Even under non-pic mode, llvm for ve needs to generate pic code since2;        nld doesn't work with non-pic code.  Thefore, we test only pic codes3;        for both cases here.4;      llc -filetype=obj -mtriple=ve -o - %s | llvm-objdump - -d -r \5;          | FileCheck %s -check-prefix=LOCAL6; RUN: llc -filetype=obj -mtriple=ve -o - %s | llvm-objdump - -d -r \7; RUN:     | FileCheck %s -check-prefix=GENDYN8; RUN: llc -filetype=obj -mtriple=ve -relocation-model=pic -o - %s \9; RUN:     |  llvm-objdump - -d -r | FileCheck %s -check-prefix=GENDYNPIC10 11@x = external thread_local global i32, align 412@y = internal thread_local global i32 0, align 413 14; Function Attrs: norecurse nounwind readnone15define nonnull ptr @get_global() {16; GENDYN:         lea %s0, (-24)17; GENDYN-NEXT:    R_VE_TLS_GD_LO32 x18; GENDYN-NEXT:    and %s0, %s0, (32)019; GENDYN-NEXT:    sic %s1020; GENDYN-NEXT:    lea.sl %s0, (%s10, %s0)21; GENDYN-NEXT:    R_VE_TLS_GD_HI32 x22; GENDYN-NEXT:    lea %s12, (8)23; GENDYN-NEXT:    R_VE_PLT_LO32 __tls_get_addr24; GENDYN-NEXT:    and %s12, %s12, (32)025; GENDYN-NEXT:    lea.sl %s12, (%s10, %s12)26; GENDYN-NEXT:    R_VE_PLT_HI32 __tls_get_addr27; GENDYN-NEXT:    bsic %s10, (, %s12)28; GENDYN-NEXT:    or %s11, 0, %s929;30; GENDYNPIC:         lea %s15, (-24)31; GENDYNPIC-NEXT:    R_VE_PC_LO32 _GLOBAL_OFFSET_TABLE_32; GENDYNPIC-NEXT:    and %s15, %s15, (32)033; GENDYNPIC-NEXT:    sic %s1634; GENDYNPIC-NEXT:    lea.sl %s15, (%s16, %s15)35; GENDYNPIC-NEXT:    R_VE_PC_HI32 _GLOBAL_OFFSET_TABLE_36; GENDYNPIC-NEXT:    lea %s0, (-24)37; GENDYNPIC-NEXT:    R_VE_TLS_GD_LO32 x38; GENDYNPIC-NEXT:    and %s0, %s0, (32)039; GENDYNPIC-NEXT:    sic %s1040; GENDYNPIC-NEXT:    lea.sl %s0, (%s10, %s0)41; GENDYNPIC-NEXT:    R_VE_TLS_GD_HI32 x42; GENDYNPIC-NEXT:    lea %s12, (8)43; GENDYNPIC-NEXT:    R_VE_PLT_LO32 __tls_get_addr44; GENDYNPIC-NEXT:    and %s12, %s12, (32)045; GENDYNPIC-NEXT:    lea.sl %s12, (%s10, %s12)46; GENDYNPIC-NEXT:    R_VE_PLT_HI32 __tls_get_addr47; GENDYNPIC-NEXT:    bsic %s10, (, %s12)48; GENDYNPIC-NEXT:    or %s11, 0, %s949entry:50  ret ptr @x51}52 53; Function Attrs: norecurse nounwind readnone54define nonnull ptr @get_local() {55; GENDYN:         lea %s0, (-24)56; GENDYN-NEXT:    R_VE_TLS_GD_LO32 y57; GENDYN-NEXT:    and %s0, %s0, (32)058; GENDYN-NEXT:    sic %s1059; GENDYN-NEXT:    lea.sl %s0, (%s10, %s0)60; GENDYN-NEXT:    R_VE_TLS_GD_HI32 y61; GENDYN-NEXT:    lea %s12, (8)62; GENDYN-NEXT:    R_VE_PLT_LO32 __tls_get_addr63; GENDYN-NEXT:    and %s12, %s12, (32)064; GENDYN-NEXT:    lea.sl %s12, (%s10, %s12)65; GENDYN-NEXT:    R_VE_PLT_HI32 __tls_get_addr66; GENDYN-NEXT:    bsic %s10, (, %s12)67; GENDYN-NEXT:    or %s11, 0, %s968;69; GENDYNPIC:         lea %s15, (-24)70; GENDYNPIC-NEXT:    R_VE_PC_LO32 _GLOBAL_OFFSET_TABLE_71; GENDYNPIC-NEXT:    and %s15, %s15, (32)072; GENDYNPIC-NEXT:    sic %s1673; GENDYNPIC-NEXT:    lea.sl %s15, (%s16, %s15)74; GENDYNPIC-NEXT:    R_VE_PC_HI32 _GLOBAL_OFFSET_TABLE_75; GENDYNPIC-NEXT:    lea %s0, (-24)76; GENDYNPIC-NEXT:    R_VE_TLS_GD_LO32 y77; GENDYNPIC-NEXT:    and %s0, %s0, (32)078; GENDYNPIC-NEXT:    sic %s1079; GENDYNPIC-NEXT:    lea.sl %s0, (%s10, %s0)80; GENDYNPIC-NEXT:    R_VE_TLS_GD_HI32 y81; GENDYNPIC-NEXT:    lea %s12, (8)82; GENDYNPIC-NEXT:    R_VE_PLT_LO32 __tls_get_addr83; GENDYNPIC-NEXT:    and %s12, %s12, (32)084; GENDYNPIC-NEXT:    lea.sl %s12, (%s10, %s12)85; GENDYNPIC-NEXT:    R_VE_PLT_HI32 __tls_get_addr86; GENDYNPIC-NEXT:    bsic %s10, (, %s12)87; GENDYNPIC-NEXT:    or %s11, 0, %s988entry:89  ret ptr @y90}91 92; Function Attrs: norecurse nounwind93define void @set_global(i32 %v) {94; GENDYN:         lea %s0, (-24)95; GENDYN-NEXT:    R_VE_TLS_GD_LO32 x96; GENDYN-NEXT:    and %s0, %s0, (32)097; GENDYN-NEXT:    sic %s1098; GENDYN-NEXT:    lea.sl %s0, (%s10, %s0)99; GENDYN-NEXT:    R_VE_TLS_GD_HI32 x100; GENDYN-NEXT:    lea %s12, (8)101; GENDYN-NEXT:    R_VE_PLT_LO32 __tls_get_addr102; GENDYN-NEXT:    and %s12, %s12, (32)0103; GENDYN-NEXT:    lea.sl %s12, (%s10, %s12)104; GENDYN-NEXT:    R_VE_PLT_HI32 __tls_get_addr105; GENDYN-NEXT:    bsic %s10, (, %s12)106; GENDYN-NEXT:    stl %s18, (, %s0)107; GENDYN-NEXT:    ld %s18, 288(, %s11)108; GENDYN-NEXT:    or %s11, 0, %s9109;110; GENDYNPIC:         lea %s15, (-24)111; GENDYNPIC-NEXT:    R_VE_PC_LO32 _GLOBAL_OFFSET_TABLE_112; GENDYNPIC-NEXT:    and %s15, %s15, (32)0113; GENDYNPIC-NEXT:    sic %s16114; GENDYNPIC-NEXT:    lea.sl %s15, (%s16, %s15)115; GENDYNPIC-NEXT:    R_VE_PC_HI32 _GLOBAL_OFFSET_TABLE_116; GENDYNPIC-NEXT:    lea %s0, (-24)117; GENDYNPIC-NEXT:    R_VE_TLS_GD_LO32 x118; GENDYNPIC-NEXT:    and %s0, %s0, (32)0119; GENDYNPIC-NEXT:    sic %s10120; GENDYNPIC-NEXT:    lea.sl %s0, (%s10, %s0)121; GENDYNPIC-NEXT:    R_VE_TLS_GD_HI32 x122; GENDYNPIC-NEXT:    lea %s12, (8)123; GENDYNPIC-NEXT:    R_VE_PLT_LO32 __tls_get_addr124; GENDYNPIC-NEXT:    and %s12, %s12, (32)0125; GENDYNPIC-NEXT:    lea.sl %s12, (%s10, %s12)126; GENDYNPIC-NEXT:    R_VE_PLT_HI32 __tls_get_addr127; GENDYNPIC-NEXT:    bsic %s10, (, %s12)128; GENDYNPIC-NEXT:    stl %s18, (, %s0)129; GENDYNPIC-NEXT:    ld %s18, 288(, %s11)130; GENDYNPIC-NEXT:    or %s11, 0, %s9131entry:132  store i32 %v, ptr @x, align 4133  ret void134}135 136; Function Attrs: norecurse nounwind137define void @set_local(i32 %v) {138; GENDYN:         lea %s0, (-24)139; GENDYN-NEXT:    R_VE_TLS_GD_LO32 y140; GENDYN-NEXT:    and %s0, %s0, (32)0141; GENDYN-NEXT:    sic %s10142; GENDYN-NEXT:    lea.sl %s0, (%s10, %s0)143; GENDYN-NEXT:    R_VE_TLS_GD_HI32 y144; GENDYN-NEXT:    lea %s12, (8)145; GENDYN-NEXT:    R_VE_PLT_LO32 __tls_get_addr146; GENDYN-NEXT:    and %s12, %s12, (32)0147; GENDYN-NEXT:    lea.sl %s12, (%s10, %s12)148; GENDYN-NEXT:    R_VE_PLT_HI32 __tls_get_addr149; GENDYN-NEXT:    bsic %s10, (, %s12)150; GENDYN-NEXT:    stl %s18, (, %s0)151; GENDYN-NEXT:    ld %s18, 288(, %s11)152; GENDYN-NEXT:    or %s11, 0, %s9153;154; GENDYNPIC:         lea %s15, (-24)155; GENDYNPIC-NEXT:    R_VE_PC_LO32 _GLOBAL_OFFSET_TABLE_156; GENDYNPIC-NEXT:    and %s15, %s15, (32)0157; GENDYNPIC-NEXT:    sic %s16158; GENDYNPIC-NEXT:    lea.sl %s15, (%s16, %s15)159; GENDYNPIC-NEXT:    R_VE_PC_HI32 _GLOBAL_OFFSET_TABLE_160; GENDYNPIC-NEXT:    lea %s0, (-24)161; GENDYNPIC-NEXT:    R_VE_TLS_GD_LO32 y162; GENDYNPIC-NEXT:    and %s0, %s0, (32)0163; GENDYNPIC-NEXT:    sic %s10164; GENDYNPIC-NEXT:    lea.sl %s0, (%s10, %s0)165; GENDYNPIC-NEXT:    R_VE_TLS_GD_HI32 y166; GENDYNPIC-NEXT:    lea %s12, (8)167; GENDYNPIC-NEXT:    R_VE_PLT_LO32 __tls_get_addr168; GENDYNPIC-NEXT:    and %s12, %s12, (32)0169; GENDYNPIC-NEXT:    lea.sl %s12, (%s10, %s12)170; GENDYNPIC-NEXT:    R_VE_PLT_HI32 __tls_get_addr171; GENDYNPIC-NEXT:    bsic %s10, (, %s12)172; GENDYNPIC-NEXT:    stl %s18, (, %s0)173; GENDYNPIC-NEXT:    ld %s18, 288(, %s11)174; GENDYNPIC-NEXT:    or %s11, 0, %s9175entry:176  store i32 %v, ptr @y, align 4177  ret void178}179