1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00
llvm-mirror/test/CodeGen/X86/tls3-pic.ll
Chris Lattner 580eecebbd change TLS_ADDR lowering to lower to a real mem operand, instead of matching as
a global with that gets printed with the :mem modifier.  All operands to lea's 
should be handled with the lea32mem operand kind, and this allows the TLS stuff
to do this.  There are several better ways to do this, but I went for the minimal
change since I can't really test this (beyond make check).

This also makes the use of EBX explicit in the operand list in the 32-bit, 
instead of implicit in the instruction.

llvm-svn: 73834
2009-06-20 20:38:48 +00:00

15 lines
496 B
LLVM

; RUN: llvm-as < %s | llc -march=x86 -mtriple=i386-linux-gnu -relocation-model=pic > %t
; RUN: grep {leal i@TLSGD(,%ebx), %eax} %t
; RUN: grep {call ___tls_get_addr@PLT} %t
; RUN: llvm-as < %s | llc -march=x86-64 -mtriple=x86_64-linux-gnu -relocation-model=pic > %t2
; RUN: grep {leaq i@TLSGD(%rip), %rdi} %t2
; RUN: grep {call __tls_get_addr@PLT} %t2
@i = external thread_local global i32 ; <i32*> [#uses=2]
define i32 @f() {
entry:
%tmp1 = load i32* @i ; <i32> [#uses=1]
ret i32 %tmp1
}