optimize i8 and i16 tls values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66725 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rafael Espindola 2009-03-11 22:40:04 +00:00
parent 1ed5b714f1
commit b316f90e57
3 changed files with 38 additions and 0 deletions

View File

@ -2937,6 +2937,24 @@ def TLS_gs_ri : I<0x8B, Pseudo, (outs GR32:$dst), (ins i32imm:$src),
(load (add X86TLStp, (X86Wrapper tglobaltlsaddr:$src))))]>,
SegGS;
let AddedComplexity = 15 in
def TLS_ext16_gs_ri : I<0x8B, Pseudo, (outs GR32:$dst), (ins i32imm:$src),
"movzwl\t%gs:${src:mem}, $dst",
[(set GR32:$dst,
(extloadi32i16
(add X86TLStp,
(X86Wrapper tglobaltlsaddr:$src))))]>,
SegGS;
let AddedComplexity = 15 in
def TLS_ext8_gs_ri : I<0x8B, Pseudo, (outs GR32:$dst), (ins i32imm:$src),
"movzbl\t%gs:${src:mem}, $dst",
[(set GR32:$dst,
(extloadi32i8
(add X86TLStp,
(X86Wrapper tglobaltlsaddr:$src))))]>,
SegGS;
def TLS_tp : I<0x8B, Pseudo, (outs GR32:$dst), (ins),
"movl\t%gs:0, $dst",
[(set GR32:$dst, X86TLStp)]>, SegGS;

10
test/CodeGen/X86/tls11.ll Normal file
View File

@ -0,0 +1,10 @@
; RUN: llvm-as < %s | llc -march=x86 -mtriple=i386-linux-gnu > %t
; RUN: grep {movzwl %gs:i@NTPOFF, %eax} %t
@i = thread_local global i16 15
define i16 @f() {
entry:
%tmp1 = load i16* @i
ret i16 %tmp1
}

10
test/CodeGen/X86/tls12.ll Normal file
View File

@ -0,0 +1,10 @@
; RUN: llvm-as < %s | llc -march=x86 -mtriple=i386-linux-gnu > %t
; RUN: grep {movzbl %gs:i@NTPOFF, %eax} %t
@i = thread_local global i8 15
define i8 @f() {
entry:
%tmp1 = load i8* @i
ret i8 %tmp1
}