[llvm-commits] [llvm] r154303 - in /llvm/trunk/test/CodeGen/X86: tls.ll tls1.ll tls10.ll tls11.ll tls12.ll tls13.ll tls14.ll tls15.ll tls2.ll tls3.ll tls4.ll tls5.ll tls6.ll tls7.ll tls8.ll tls9.ll

Chandler Carruth chandlerc at gmail.com
Sun Apr 8 18:43:17 PDT 2012


Author: chandlerc
Date: Sun Apr  8 20:43:17 2012
New Revision: 154303

URL: http://llvm.org/viewvc/llvm-project?rev=154303&view=rev
Log:
Fold 15 tiny test cases into a single file that implements the
comprehensive testing of TLS codegen for x86. Convert all of the ones
that were still using grep to use FileCheck. Remove some redundancies
between them.

Perhaps most interestingly expand the test cases so that they actually
fully list the instruction snippet being tested. TLS operations are
*very* narrowly defined, and so these seem reasonably stable. More
importantly, the existing test cases already were crazy fine grained,
expecting specific registers to be allocated. This just clarifies that
no *other* instructions are expected, and fills in some crucial gaps
that weren't being tested at all.

This will make any subsequent changes to TLS much more clear during
review.

Added:
    llvm/trunk/test/CodeGen/X86/tls.ll
Removed:
    llvm/trunk/test/CodeGen/X86/tls1.ll
    llvm/trunk/test/CodeGen/X86/tls10.ll
    llvm/trunk/test/CodeGen/X86/tls11.ll
    llvm/trunk/test/CodeGen/X86/tls12.ll
    llvm/trunk/test/CodeGen/X86/tls13.ll
    llvm/trunk/test/CodeGen/X86/tls14.ll
    llvm/trunk/test/CodeGen/X86/tls15.ll
    llvm/trunk/test/CodeGen/X86/tls2.ll
    llvm/trunk/test/CodeGen/X86/tls3.ll
    llvm/trunk/test/CodeGen/X86/tls4.ll
    llvm/trunk/test/CodeGen/X86/tls5.ll
    llvm/trunk/test/CodeGen/X86/tls6.ll
    llvm/trunk/test/CodeGen/X86/tls7.ll
    llvm/trunk/test/CodeGen/X86/tls8.ll
    llvm/trunk/test/CodeGen/X86/tls9.ll

Added: llvm/trunk/test/CodeGen/X86/tls.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls.ll?rev=154303&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls.ll (added)
+++ llvm/trunk/test/CodeGen/X86/tls.ll Sun Apr  8 20:43:17 2012
@@ -0,0 +1,336 @@
+; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu | FileCheck -check-prefix=X32_LINUX %s
+; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu | FileCheck -check-prefix=X64_LINUX %s
+; RUN: llc < %s -march=x86 -mtriple=x86-pc-win32 | FileCheck -check-prefix=X32_WIN %s
+; RUN: llc < %s -march=x86-64 -mtriple=x86_64-pc-win32 | FileCheck -check-prefix=X64_WIN %s
+
+ at i1 = thread_local global i32 15
+ at i2 = external thread_local global i32
+ at i3 = internal thread_local global i32 15
+ at i4 = hidden thread_local global i32 15
+ at i5 = external hidden thread_local global i32
+ at s1 = thread_local global i16 15
+ at b1 = thread_local global i8 0
+
+define i32 @f1() {
+; X32_LINUX: f1:
+; X32_LINUX:      movl %gs:i1 at NTPOFF, %eax
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f1:
+; X64_LINUX:      movl %fs:i1 at TPOFF, %eax
+; X64_LINUX-NEXT: ret
+; X32_WIN: f1:
+; X32_WIN:      movl __tls_index, %eax
+; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
+; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
+; X32_WIN-NEXT: movl _i1 at SECREL(%eax), %eax
+; X32_WIN-NEXT: ret
+; X64_WIN: f1:
+; X64_WIN:      movl _tls_index(%rip), %eax
+; X64_WIN-NEXT: movq %gs:88, %rcx
+; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
+; X64_WIN-NEXT: movabsq $i1 at SECREL, %rcx
+; X64_WIN-NEXT: movl (%rax,%rcx), %eax
+; X64_WIN-NEXT: ret
+
+entry:
+	%tmp1 = load i32* @i1
+	ret i32 %tmp1
+}
+
+define i32* @f2() {
+; X32_LINUX: f2:
+; X32_LINUX:      movl %gs:0, %eax
+; X32_LINUX-NEXT: leal i1 at NTPOFF(%eax), %eax
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f2:
+; X64_LINUX:      movq %fs:0, %rax
+; X64_LINUX-NEXT: leaq i1 at TPOFF(%rax), %rax
+; X64_LINUX-NEXT: ret
+; X32_WIN: f2:
+; X32_WIN:      movl __tls_index, %eax
+; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
+; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
+; X32_WIN-NEXT: leal _i1 at SECREL(%eax), %eax
+; X32_WIN-NEXT: ret
+; X64_WIN: f2:
+; X64_WIN:      movl _tls_index(%rip), %eax
+; X64_WIN-NEXT: movq %gs:88, %rcx
+; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
+; X64_WIN-NEXT: addq $i1 at SECREL, %rax
+; X64_WIN-NEXT: ret
+
+entry:
+	ret i32* @i1
+}
+
+define i32 @f3() nounwind {
+; X32_LINUX: f3:
+; X32_LINUX:      movl i2 at INDNTPOFF, %eax
+; X32_LINUX-NEXT: movl %gs:(%eax), %eax
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f3:
+; X64_LINUX:      movq i2 at GOTTPOFF(%rip), %rax
+; X64_LINUX-NEXT: movl %fs:(%rax), %eax
+; X64_LINUX-NEXT: ret
+; X32_WIN: f3:
+; X32_WIN:      movl __tls_index, %eax
+; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
+; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
+; X32_WIN-NEXT: movl _i2 at SECREL(%eax), %eax
+; X32_WIN-NEXT: ret
+; X64_WIN: f3:
+; X64_WIN:      movl _tls_index(%rip), %eax
+; X64_WIN-NEXT: movq %gs:88, %rcx
+; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
+; X64_WIN-NEXT: movabsq $i2 at SECREL, %rcx
+; X64_WIN-NEXT: movl (%rax,%rcx), %eax
+; X64_WIN-NEXT: ret
+
+entry:
+	%tmp1 = load i32* @i2
+	ret i32 %tmp1
+}
+
+define i32* @f4() {
+; X32_LINUX: f4:
+; X32_LINUX:      movl %gs:0, %eax
+; X32_LINUX-NEXT: addl i2 at INDNTPOFF, %eax
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f4:
+; X64_LINUX:      movq %fs:0, %rax
+; X64_LINUX-NEXT: addq i2 at GOTTPOFF(%rip), %rax
+; X64_LINUX-NEXT: ret
+; X32_WIN: f4:
+; X32_WIN:      movl __tls_index, %eax
+; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
+; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
+; X32_WIN-NEXT: leal _i2 at SECREL(%eax), %eax
+; X32_WIN-NEXT: ret
+; X64_WIN: f4:
+; X64_WIN:      movl _tls_index(%rip), %eax
+; X64_WIN-NEXT: movq %gs:88, %rcx
+; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
+; X64_WIN-NEXT: addq $i2 at SECREL, %rax
+; X64_WIN-NEXT: ret
+
+entry:
+	ret i32* @i2
+}
+
+define i32 @f5() nounwind {
+; X32_LINUX: f5:
+; X32_LINUX:      movl %gs:i3 at NTPOFF, %eax
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f5:
+; X64_LINUX:      movl %fs:i3 at TPOFF, %eax
+; X64_LINUX-NEXT: ret
+; X32_WIN: f5:
+; X32_WIN:      movl __tls_index, %eax
+; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
+; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
+; X32_WIN-NEXT: movl _i3 at SECREL(%eax), %eax
+; X32_WIN-NEXT: ret
+; X64_WIN: f5:
+; X64_WIN:      movl _tls_index(%rip), %eax
+; X64_WIN-NEXT: movq %gs:88, %rcx
+; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
+; X64_WIN-NEXT: movabsq $i3 at SECREL, %rcx
+; X64_WIN-NEXT: movl (%rax,%rcx), %eax
+; X64_WIN-NEXT: ret
+
+entry:
+	%tmp1 = load i32* @i3
+	ret i32 %tmp1
+}
+
+define i32* @f6() {
+; X32_LINUX: f6:
+; X32_LINUX:      movl %gs:0, %eax
+; X32_LINUX-NEXT: leal i3 at NTPOFF(%eax), %eax
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f6:
+; X64_LINUX:      movq %fs:0, %rax
+; X64_LINUX-NEXT: leaq i3 at TPOFF(%rax), %rax
+; X64_LINUX-NEXT: ret
+; X32_WIN: f6:
+; X32_WIN:      movl __tls_index, %eax
+; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
+; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
+; X32_WIN-NEXT: leal _i3 at SECREL(%eax), %eax
+; X32_WIN-NEXT: ret
+; X64_WIN: f6:
+; X64_WIN:      movl _tls_index(%rip), %eax
+; X64_WIN-NEXT: movq %gs:88, %rcx
+; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
+; X64_WIN-NEXT: addq $i3 at SECREL, %rax
+; X64_WIN-NEXT: ret
+
+entry:
+	ret i32* @i3
+}
+
+define i32 @f7() {
+; X32_LINUX: f7:
+; X32_LINUX:      movl %gs:i4 at NTPOFF, %eax
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f7:
+; X64_LINUX:      movl %fs:i4 at TPOFF, %eax
+; X64_LINUX-NEXT: ret
+
+entry:
+	%tmp1 = load i32* @i4
+	ret i32 %tmp1
+}
+
+define i32* @f8() {
+; X32_LINUX: f8:
+; X32_LINUX:      movl %gs:0, %eax
+; X32_LINUX-NEXT: leal i4 at NTPOFF(%eax), %eax
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f8:
+; X64_LINUX:      movq %fs:0, %rax
+; X64_LINUX-NEXT: leaq i4 at TPOFF(%rax), %rax
+; X64_LINUX-NEXT: ret
+
+entry:
+	ret i32* @i4
+}
+
+define i32 @f9() {
+; X32_LINUX: f9:
+; X32_LINUX:      movl %gs:i5 at NTPOFF, %eax
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f9:
+; X64_LINUX:      movl %fs:i5 at TPOFF, %eax
+; X64_LINUX-NEXT: ret
+
+entry:
+	%tmp1 = load i32* @i5
+	ret i32 %tmp1
+}
+
+define i32* @f10() {
+; X32_LINUX: f10:
+; X32_LINUX:      movl %gs:0, %eax
+; X32_LINUX-NEXT: leal i5 at NTPOFF(%eax), %eax
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f10:
+; X64_LINUX:      movq %fs:0, %rax
+; X64_LINUX-NEXT: leaq i5 at TPOFF(%rax), %rax
+; X64_LINUX-NEXT: ret
+
+entry:
+	ret i32* @i5
+}
+
+define i16 @f11() {
+; X32_LINUX: f11:
+; X32_LINUX:      movzwl %gs:s1 at NTPOFF, %eax
+; Why is this kill line here, but no where else?
+; X32_LINUX-NEXT: # kill
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f11:
+; X64_LINUX:      movzwl %fs:s1 at TPOFF, %eax
+; X64_LINUX-NEXT: # kill
+; X64_LINUX-NEXT: ret
+; X32_WIN: f11:
+; X32_WIN:      movl __tls_index, %eax
+; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
+; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
+; X32_WIN-NEXT: movzwl _s1 at SECREL(%eax), %eax
+; X32_WIN-NEXT: # kill
+; X32_WIN-NEXT: ret
+; X64_WIN: f11:
+; X64_WIN:      movl _tls_index(%rip), %eax
+; X64_WIN-NEXT: movq %gs:88, %rcx
+; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
+; X64_WIN-NEXT: movabsq $s1 at SECREL, %rcx
+; X64_WIN-NEXT: movzwl (%rax,%rcx), %eax
+; X64_WIN-NEXT: # kill
+; X64_WIN-NEXT: ret
+
+entry:
+	%tmp1 = load i16* @s1
+	ret i16 %tmp1
+}
+
+define i32 @f12() {
+; X32_LINUX: f12:
+; X32_LINUX:      movswl %gs:s1 at NTPOFF, %eax
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f12:
+; X64_LINUX:      movswl %fs:s1 at TPOFF, %eax
+; X64_LINUX-NEXT: ret
+; X32_WIN: f12:
+; X32_WIN:      movl __tls_index, %eax
+; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
+; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
+; X32_WIN-NEXT: movswl _s1 at SECREL(%eax), %eax
+; X32_WIN-NEXT: ret
+; X64_WIN: f12:
+; X64_WIN:      movl _tls_index(%rip), %eax
+; X64_WIN-NEXT: movq %gs:88, %rcx
+; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
+; X64_WIN-NEXT: movabsq $s1 at SECREL, %rcx
+; X64_WIN-NEXT: movswl (%rax,%rcx), %eax
+; X64_WIN-NEXT: ret
+
+entry:
+	%tmp1 = load i16* @s1
+  %tmp2 = sext i16 %tmp1 to i32
+	ret i32 %tmp2
+}
+
+define i8 @f13() {
+; X32_LINUX: f13:
+; X32_LINUX:      movb %gs:b1 at NTPOFF, %al
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f13:
+; X64_LINUX:      movb %fs:b1 at TPOFF, %al
+; X64_LINUX-NEXT: ret
+; X32_WIN: f13:
+; X32_WIN:      movl __tls_index, %eax
+; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
+; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
+; X32_WIN-NEXT: movb _b1 at SECREL(%eax), %al
+; X32_WIN-NEXT: ret
+; X64_WIN: f13:
+; X64_WIN:      movl _tls_index(%rip), %eax
+; X64_WIN-NEXT: movq %gs:88, %rcx
+; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
+; X64_WIN-NEXT: movabsq $b1 at SECREL, %rcx
+; X64_WIN-NEXT: movb (%rax,%rcx), %al
+; X64_WIN-NEXT: ret
+
+entry:
+	%tmp1 = load i8* @b1
+	ret i8 %tmp1
+}
+
+define i32 @f14() {
+; X32_LINUX: f14:
+; X32_LINUX:      movsbl %gs:b1 at NTPOFF, %eax
+; X32_LINUX-NEXT: ret
+; X64_LINUX: f14:
+; X64_LINUX:      movsbl %fs:b1 at TPOFF, %eax
+; X64_LINUX-NEXT: ret
+; X32_WIN: f14:
+; X32_WIN:      movl __tls_index, %eax
+; X32_WIN-NEXT: movl %fs:__tls_array, %ecx
+; X32_WIN-NEXT: movl (%ecx,%eax,4), %eax
+; X32_WIN-NEXT: movsbl _b1 at SECREL(%eax), %eax
+; X32_WIN-NEXT: ret
+; X64_WIN: f14:
+; X64_WIN:      movl _tls_index(%rip), %eax
+; X64_WIN-NEXT: movq %gs:88, %rcx
+; X64_WIN-NEXT: movq (%rcx,%rax,8), %rax
+; X64_WIN-NEXT: movabsq $b1 at SECREL, %rcx
+; X64_WIN-NEXT: movsbl (%rax,%rcx), %eax
+; X64_WIN-NEXT: ret
+
+entry:
+	%tmp1 = load i8* @b1
+  %tmp2 = sext i8 %tmp1 to i32
+	ret i32 %tmp2
+}
+

Removed: llvm/trunk/test/CodeGen/X86/tls1.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls1.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls1.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls1.ll (removed)
@@ -1,20 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu | FileCheck -check-prefix=X32_LINUX %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu | FileCheck -check-prefix=X64_LINUX %s
-; RUN: llc < %s -march=x86 -mtriple=x86-pc-win32 | FileCheck -check-prefix=X32_WIN %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-pc-win32 | FileCheck -check-prefix=X64_WIN %s
-
- at i = thread_local global i32 15
-
-define i32 @f() nounwind {
-entry:
-	%tmp1 = load i32* @i
-	ret i32 %tmp1
-}
-; X32_LINUX: movl %gs:i at NTPOFF, %eax
-; X64_LINUX: movl %fs:i at TPOFF, %eax
-; X32_WIN: movl __tls_index, %eax
-; X32_WIN: movl %fs:__tls_array, %ecx
-; X32_WIN: movl _i at SECREL(%eax), %eax
-; X64_WIN: movl _tls_index(%rip), %eax
-; X64_WIN: movabsq $i at SECREL, %rcx
-

Removed: llvm/trunk/test/CodeGen/X86/tls10.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls10.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls10.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls10.ll (removed)
@@ -1,13 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu > %t
-; RUN: grep {movl	%gs:0, %eax} %t
-; RUN: grep {leal	i at NTPOFF(%eax), %eax} %t
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu > %t2
-; RUN: grep {movq	%fs:0, %rax} %t2
-; RUN: grep {leaq	i at TPOFF(%rax), %rax} %t2
-
- at i = external hidden thread_local global i32
-
-define i32* @f() {
-entry:
-	ret i32* @i
-}

Removed: llvm/trunk/test/CodeGen/X86/tls11.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls11.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls11.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls11.ll (removed)
@@ -1,21 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu | FileCheck -check-prefix=X32_LINUX %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu | FileCheck -check-prefix=X64_LINUX %s
-; RUN: llc < %s -march=x86 -mtriple=x86-pc-win32 | FileCheck -check-prefix=X32_WIN %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-pc-win32 | FileCheck -check-prefix=X64_WIN %s
-
- at i = thread_local global i16 15
-
-define i16 @f() {
-entry:
-	%tmp1 = load i16* @i
-	ret i16 %tmp1
-}
-; X32_LINUX: movzwl %gs:i at NTPOFF, %eax
-; X64_LINUX: movzwl %fs:i at TPOFF, %eax
-; X32_WIN: movl __tls_index, %eax
-; X32_WIN: movl %fs:__tls_array, %ecx
-; X32_WIN: movzwl _i at SECREL(%eax), %eax
-; X64_WIN: movl _tls_index(%rip), %eax
-; X64_WIN: movq %gs:88, %rcx
-; X64_WIN: movabsq $i at SECREL, %rcx
-; X64_WIN: movzwl (%rax,%rcx), %eax

Removed: llvm/trunk/test/CodeGen/X86/tls12.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls12.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls12.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls12.ll (removed)
@@ -1,21 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu | FileCheck -check-prefix=X32_LINUX %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu | FileCheck -check-prefix=X64_LINUX %s
-; RUN: llc < %s -march=x86 -mtriple=x86-pc-win32 | FileCheck -check-prefix=X32_WIN %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-pc-win32 | FileCheck -check-prefix=X64_WIN %s
-
- at i = thread_local global i8 15
-
-define i8 @f() {
-entry:
-	%tmp1 = load i8* @i
-	ret i8 %tmp1
-}
-; X32_LINUX: movb %gs:i at NTPOFF, %al
-; X64_LINUX: movb %fs:i at TPOFF, %al
-; X32_WIN: movl __tls_index, %eax
-; X32_WIN: movl %fs:__tls_array, %ecx
-; X32_WIN: movb _i at SECREL(%eax), %al
-; X64_WIN: movl _tls_index(%rip), %eax
-; X64_WIN: movq %gs:88, %rcx
-; X64_WIN: movabsq $i at SECREL, %rcx
-; X64_WIN: movb (%rax,%rcx), %al

Removed: llvm/trunk/test/CodeGen/X86/tls13.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls13.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls13.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls13.ll (removed)
@@ -1,33 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu | FileCheck -check-prefix=X32_LINUX %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu | FileCheck -check-prefix=X64_LINUX %s
-; RUN: llc < %s -march=x86 -mtriple=x86-pc-win32 | FileCheck -check-prefix=X32_WIN %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-pc-win32 | FileCheck -check-prefix=X64_WIN %s
-
- at i = thread_local global i16 0
- at j = thread_local global i16 0
-
-define void @f() nounwind optsize {
-entry:
-        %0 = load i16* @i, align 2
-        %1 = sext i16 %0 to i32
-        tail call void @g(i32 %1) nounwind
-        %2 = load i16* @j, align 2
-        %3 = zext i16 %2 to i32
-        tail call void @h(i32 %3) nounwind
-        ret void
-}
-
-declare void @g(i32)
-
-declare void @h(i32)
-
-; X32_LINUX: movswl %gs:i at NTPOFF, %eax
-; X32_LINUX: movzwl %gs:j at NTPOFF, %eax
-; X64_LINUX: movswl %fs:i at TPOFF, %edi
-; X64_LINUX: movzwl %fs:j at TPOFF, %edi
-; X32_WIN: movswl _i at SECREL(%esi), %eax
-; X32_WIN: movzwl _j at SECREL(%esi), %eax
-; X64_WIN: movabsq $i at SECREL, %rax
-; X64_WIN: movswl (%rsi,%rax), %ecx
-; X64_WIN: movabsq $j at SECREL, %rax
-; X64_WIN: movzwl (%rsi,%rax), %ecx

Removed: llvm/trunk/test/CodeGen/X86/tls14.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls14.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls14.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls14.ll (removed)
@@ -1,33 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu | FileCheck -check-prefix=X32_LINUX %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu | FileCheck -check-prefix=X64_LINUX %s
-; RUN: llc < %s -march=x86 -mtriple=x86-pc-win32 | FileCheck -check-prefix=X32_WIN %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-pc-win32 | FileCheck -check-prefix=X64_WIN %s
-
- at i = thread_local global i8 0
- at j = thread_local global i8 0
-
-define void @f() nounwind optsize {
-entry:
-        %0 = load i8* @i, align 2
-        %1 = sext i8 %0 to i32
-        tail call void @g(i32 %1) nounwind
-        %2 = load i8* @j, align 2
-        %3 = zext i8 %2 to i32
-        tail call void @h(i32 %3) nounwind
-        ret void
-}
-
-declare void @g(i32)
-
-declare void @h(i32)
-
-; X32_LINUX: movsbl %gs:i at NTPOFF, %eax
-; X32_LINUX: movzbl %gs:j at NTPOFF, %eax
-; X64_LINUX: movsbl %fs:i at TPOFF, %edi
-; X64_LINUX: movzbl %fs:j at TPOFF, %edi
-; X32_WIN: movsbl _i at SECREL(%esi), %eax
-; X32_WIN: movzbl _j at SECREL(%esi), %eax
-; X64_WIN: movabsq $i at SECREL, %rax
-; X64_WIN: movsbl (%rsi,%rax), %ecx
-; X64_WIN: movabsq $j at SECREL, %rax
-; X64_WIN: movzbl (%rsi,%rax), %ecx

Removed: llvm/trunk/test/CodeGen/X86/tls15.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls15.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls15.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls15.ll (removed)
@@ -1,18 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu > %t
-; RUN: grep {movl	%gs:0, %eax} %t | count 1
-; RUN: grep {leal	i at NTPOFF(%eax), %ecx} %t
-; RUN: grep {leal	j at NTPOFF(%eax), %eax} %t
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu > %t2
-; RUN: grep {movq	%fs:0, %rax} %t2 | count 1
-; RUN: grep {leaq	i at TPOFF(%rax), %rcx} %t2
-; RUN: grep {leaq	j at TPOFF(%rax), %rax} %t2
-
- at i = thread_local global i32 0
- at j = thread_local global i32 0
-
-define void @f(i32** %a, i32** %b) {
-entry:
-	store i32* @i, i32** %a, align 8
-	store i32* @j, i32** %b, align 8
-	ret void
-}

Removed: llvm/trunk/test/CodeGen/X86/tls2.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls2.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls2.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls2.ll (removed)
@@ -1,21 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu | FileCheck -check-prefix=X32_LINUX %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu | FileCheck -check-prefix=X64_LINUX %s
-; RUN: llc < %s -march=x86 -mtriple=x86-pc-win32 | FileCheck -check-prefix=X32_WIN %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-pc-win32 | FileCheck -check-prefix=X64_WIN %s
-
- at i = thread_local global i32 15
-
-define i32* @f() {
-entry:
-	ret i32* @i
-}
-; X32_LINUX: movl %gs:0, %eax
-; X32_LINUX: leal i at NTPOFF(%eax), %eax
-; X64_LINUX: movq %fs:0, %rax
-; X64_LINUX: leaq i at TPOFF(%rax), %rax
-; X32_WIN: movl __tls_index, %eax
-; X32_WIN: movl %fs:__tls_array, %ecx
-; X32_WIN: leal _i at SECREL(%eax), %eax
-; X64_WIN: movl _tls_index(%rip), %eax
-; X64_WIN: movq %gs:88, %rcx
-; X64_WIN: addq $i at SECREL, %rax

Removed: llvm/trunk/test/CodeGen/X86/tls3.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls3.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls3.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls3.ll (removed)
@@ -1,21 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu | FileCheck -check-prefix=X32_LINUX %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu | FileCheck -check-prefix=X64_LINUX %s
-; RUN: llc < %s -march=x86 -mtriple=x86-pc-win32 | FileCheck -check-prefix=X32_WIN %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-pc-win32 | FileCheck -check-prefix=X64_WIN %s
-
- at i = external thread_local global i32		; <i32*> [#uses=2]
-
-define i32 @f() nounwind {
-entry:
-	%tmp1 = load i32* @i		; <i32> [#uses=1]
-	ret i32 %tmp1
-}
-; X32_LINUX: movl i at INDNTPOFF, %eax
-; X32_LINUX: movl %gs:(%eax), %eax
-; X64_LINUX: movq i at GOTTPOFF(%rip), %rax
-; X64_LINUX: movl %fs:(%rax), %eax
-; X32_WIN: movl __tls_index, %eax
-; X32_WIN: movl %fs:__tls_array, %ecx
-; X32_WIN: movl _i at SECREL(%eax), %eax
-; X64_WIN: movl _tls_index(%rip), %eax
-; X64_WIN: movabsq $i at SECREL, %rcx

Removed: llvm/trunk/test/CodeGen/X86/tls4.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls4.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls4.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls4.ll (removed)
@@ -1,21 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu | FileCheck -check-prefix=X32_LINUX %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu | FileCheck -check-prefix=X64_LINUX %s
-; RUN: llc < %s -march=x86 -mtriple=x86-pc-win32 | FileCheck -check-prefix=X32_WIN %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-pc-win32 | FileCheck -check-prefix=X64_WIN %s
-
- at i = external thread_local global i32		; <i32*> [#uses=2]
-
-define i32* @f() {
-entry:
-	ret i32* @i
-}
-; X32_LINUX: movl %gs:0, %eax
-; X32_LINUX: addl i at INDNTPOFF, %eax
-; X64_LINUX: movq %fs:0, %rax
-; X64_LINUX: addq i at GOTTPOFF(%rip), %rax
-; X32_WIN: movl __tls_index, %eax
-; X32_WIN: movl %fs:__tls_array, %ecx
-; X32_WIN: leal _i at SECREL(%eax), %eax
-; X64_WIN: movl _tls_index(%rip), %eax
-; X64_WIN: movq %gs:88, %rcx
-; X64_WIN: addq $i at SECREL, %rax

Removed: llvm/trunk/test/CodeGen/X86/tls5.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls5.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls5.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls5.ll (removed)
@@ -1,19 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu | FileCheck -check-prefix=X32_LINUX %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu | FileCheck -check-prefix=X64_LINUX %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-pc-win32 | FileCheck -check-prefix=X64_WIN %s
-; RUN: llc < %s -march=x86 -mtriple=x86-pc-win32 | FileCheck -check-prefix=X32_WIN %s
-
- at i = internal thread_local global i32 15
-
-define i32 @f() {
-entry:
-	%tmp1 = load i32* @i
-	ret i32 %tmp1
-}
-; X32_LINUX: movl %gs:i at NTPOFF, %eax
-; X64_LINUX: movl %fs:i at TPOFF, %eax
-; X32_WIN: movl __tls_index, %eax
-; X32_WIN: movl %fs:__tls_array, %ecx
-; X32_WIN: movl _i at SECREL(%eax), %eax
-; X64_WIN: movl _tls_index(%rip), %eax
-; X64_WIN: movabsq $i at SECREL, %rcx

Removed: llvm/trunk/test/CodeGen/X86/tls6.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls6.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls6.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls6.ll (removed)
@@ -1,21 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu | FileCheck -check-prefix=X32_LINUX %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu | FileCheck -check-prefix=X64_LINUX %s
-; RUN: llc < %s -march=x86 -mtriple=x86-pc-win32 | FileCheck -check-prefix=X32_WIN %s
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-pc-win32 | FileCheck -check-prefix=X64_WIN %s
-
- at i = internal thread_local global i32 15
-
-define i32* @f() {
-entry:
-	ret i32* @i
-}
-; X32_LINUX: movl %gs:0, %eax
-; X32_LINUX: leal i at NTPOFF(%eax), %eax
-; X64_LINUX: movq %fs:0, %rax
-; X64_LINUX: leaq i at TPOFF(%rax), %rax
-; X32_WIN: movl __tls_index, %eax
-; X32_WIN: movl %fs:__tls_array, %ecx
-; X32_WIN: leal _i at SECREL(%eax), %eax
-; X64_WIN: movl _tls_index(%rip), %eax
-; X64_WIN: movq %gs:88, %rcx
-; X64_WIN: addq $i at SECREL, %rax

Removed: llvm/trunk/test/CodeGen/X86/tls7.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls7.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls7.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls7.ll (removed)
@@ -1,12 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu > %t
-; RUN: grep {movl	%gs:i at NTPOFF, %eax} %t
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu > %t2
-; RUN: grep {movl	%fs:i at TPOFF, %eax} %t2
-
- at i = hidden thread_local global i32 15
-
-define i32 @f() {
-entry:
-	%tmp1 = load i32* @i
-	ret i32 %tmp1
-}

Removed: llvm/trunk/test/CodeGen/X86/tls8.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls8.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls8.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls8.ll (removed)
@@ -1,13 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu > %t
-; RUN: grep {movl	%gs:0, %eax} %t
-; RUN: grep {leal	i at NTPOFF(%eax), %eax} %t
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu > %t2
-; RUN: grep {movq	%fs:0, %rax} %t2
-; RUN: grep {leaq	i at TPOFF(%rax), %rax} %t2
-
- at i = hidden thread_local global i32 15
-
-define i32* @f() {
-entry:
-	ret i32* @i
-}

Removed: llvm/trunk/test/CodeGen/X86/tls9.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/tls9.ll?rev=154302&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/X86/tls9.ll (original)
+++ llvm/trunk/test/CodeGen/X86/tls9.ll (removed)
@@ -1,12 +0,0 @@
-; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu > %t
-; RUN: grep {movl	%gs:i at NTPOFF, %eax} %t
-; RUN: llc < %s -march=x86-64 -mtriple=x86_64-linux-gnu > %t2
-; RUN: grep {movl	%fs:i at TPOFF, %eax} %t2
-
- at i = external hidden thread_local global i32
-
-define i32 @f() nounwind {
-entry:
-	%tmp1 = load i32* @i
-	ret i32 %tmp1
-}





More information about the llvm-commits mailing list