diff options
| author | Lauro Ramos Venancio <lauro.venancio@gmail.com> | 2007-04-23 01:28:10 +0000 |
|---|---|---|
| committer | Lauro Ramos Venancio <lauro.venancio@gmail.com> | 2007-04-23 01:28:10 +0000 |
| commit | 6db679a49afbd71aae47986e939b95eacc287ebe (patch) | |
| tree | b10ea9c32551c025382cc0658ffebfe62dafc7a0 | |
| parent | 362b4a1c9280ef5bc3f3712e0eb45fe7dd2732b5 (diff) | |
| download | bcm5719-llvm-6db679a49afbd71aae47986e939b95eacc287ebe.tar.gz bcm5719-llvm-6db679a49afbd71aae47986e939b95eacc287ebe.zip | |
X86 TLS: optimize the implementation of "local exec" model.
llvm-svn: 36359
| -rw-r--r-- | llvm/lib/Target/X86/X86InstrInfo.td | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/llvm/lib/Target/X86/X86InstrInfo.td b/llvm/lib/Target/X86/X86InstrInfo.td index 1885547ebc0..c330bf99080 100644 --- a/llvm/lib/Target/X86/X86InstrInfo.td +++ b/llvm/lib/Target/X86/X86InstrInfo.td @@ -2467,9 +2467,15 @@ def TLS_addr : I<0, Pseudo, (ops GR32:$dst, i32imm:$sym), Imp<[EBX],[]>; let AddedComplexity = 10 in -def TLS_gs : I<0, Pseudo, (ops GR32:$dst, GR32:$src), - "movl %gs:($src), $dst", - [(set GR32:$dst, (load (add X86TLStp, GR32:$src)))]>; +def TLS_gs_rr : I<0, Pseudo, (ops GR32:$dst, GR32:$src), + "movl %gs:($src), $dst", + [(set GR32:$dst, (load (add X86TLStp, GR32:$src)))]>; + +let AddedComplexity = 15 in +def TLS_gs_ri : I<0, Pseudo, (ops GR32:$dst, i32imm:$src), + "movl %gs:${src:mem}, $dst", + [(set GR32:$dst, + (load (add X86TLStp, (X86Wrapper tglobaltlsaddr:$src))))]>; def TLS_tp : I<0, Pseudo, (ops GR32:$dst), "movl %gs:0, $dst", @@ -2491,6 +2497,7 @@ def DWARF_LOC : I<0, Pseudo, (ops i32imm:$line, i32imm:$col, i32imm:$file), // ConstantPool GlobalAddress, ExternalSymbol, and JumpTable def : Pat<(i32 (X86Wrapper tconstpool :$dst)), (MOV32ri tconstpool :$dst)>; def : Pat<(i32 (X86Wrapper tjumptable :$dst)), (MOV32ri tjumptable :$dst)>; +def : Pat<(i32 (X86Wrapper tglobaltlsaddr:$dst)), (MOV32ri tglobaltlsaddr:$dst)>; def : Pat<(i32 (X86Wrapper tglobaladdr :$dst)), (MOV32ri tglobaladdr :$dst)>; def : Pat<(i32 (X86Wrapper texternalsym:$dst)), (MOV32ri texternalsym:$dst)>; |

