Rewrite X86 codegen regression test with FileCheck

llvm-svn: 180776
This commit is contained in:
Michael Liao 2013-04-30 07:51:08 +00:00
parent 036d16d916
commit c9ae780b5b
16 changed files with 75 additions and 34 deletions

View File

@ -1,7 +1,8 @@
; PR850 ; PR850
; RUN: llc < %s -march=x86 -x86-asm-syntax=att > %t ; RUN: llc < %s -march=x86 -x86-asm-syntax=att | FileCheck %s
; RUN: grep "movl 4(%eax),%ebp" %t
; RUN: grep "movl 0(%eax), %ebx" %t ; CHECK: {{movl 4[(]%eax[)],%ebp}}
; CHECK: {{movl 0[(]%eax[)], %ebx}}
define i32 @foo(i32 %__s.i.i, i32 %tmp5.i.i, i32 %tmp6.i.i, i32 %tmp7.i.i, i32 %tmp8.i.i) { define i32 @foo(i32 %__s.i.i, i32 %tmp5.i.i, i32 %tmp6.i.i, i32 %tmp7.i.i, i32 %tmp8.i.i) {
%tmp9.i.i = call i32 asm sideeffect "push %ebp\0Apush %ebx\0Amovl 4($2),%ebp\0Amovl 0($2), %ebx\0Amovl $1,%eax\0Aint $$0x80\0Apop %ebx\0Apop %ebp", "={ax},i,0,{cx},{dx},{si},{di}"( i32 192, i32 %__s.i.i, i32 %tmp5.i.i, i32 %tmp6.i.i, i32 %tmp7.i.i, i32 %tmp8.i.i ) ; <i32> [#uses=1] %tmp9.i.i = call i32 asm sideeffect "push %ebp\0Apush %ebx\0Amovl 4($2),%ebp\0Amovl 0($2), %ebx\0Amovl $1,%eax\0Aint $$0x80\0Apop %ebx\0Apop %ebp", "={ax},i,0,{cx},{dx},{si},{di}"( i32 192, i32 %__s.i.i, i32 %tmp5.i.i, i32 %tmp6.i.i, i32 %tmp7.i.i, i32 %tmp8.i.i ) ; <i32> [#uses=1]

View File

@ -1,8 +1,9 @@
; RUN: llc < %s -mcpu=yonah -march=x86 | \ ; RUN: llc < %s -mcpu=yonah -march=x86 | FileCheck %s
; RUN: grep "cmpltsd %xmm0, %xmm0"
target datalayout = "e-p:32:32" target datalayout = "e-p:32:32"
target triple = "i686-apple-darwin9" target triple = "i686-apple-darwin9"
; CHECK: {{cmpltsd %xmm0, %xmm0}}
define void @acoshf() { define void @acoshf() {
%tmp19 = tail call <2 x double> asm sideeffect "pcmpeqd $0, $0 \0A\09 cmpltsd $0, $0", "=x,0,~{dirflag},~{fpsr},~{flags}"( <2 x double> zeroinitializer ) ; <<2 x double>> [#uses=0] %tmp19 = tail call <2 x double> asm sideeffect "pcmpeqd $0, $0 \0A\09 cmpltsd $0, $0", "=x,0,~{dirflag},~{fpsr},~{flags}"( <2 x double> zeroinitializer ) ; <<2 x double>> [#uses=0]

View File

@ -1,5 +1,6 @@
; RUN: llc < %s -march=x86 -mattr=+sse2 ; RUN: llc < %s -march=x86 -mattr=+sse2 | FileCheck %s
; RUN: llc < %s -march=x86 -mattr=+sse2 | not grep punpckhwd
; CHECK-NOT: punpckhwd
declare <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16>, <8 x i16>) declare <16 x i8> @llvm.x86.sse2.packuswb.128(<8 x i16>, <8 x i16>)

View File

@ -1,9 +1,11 @@
; RUN: llc < %s -relocation-model=static | grep "foo str$" ; RUN: llc < %s -relocation-model=static | FileCheck %s
; PR1761 ; PR1761
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
target triple = "x86_64-pc-linux" target triple = "x86_64-pc-linux"
@str = internal constant [12 x i8] c"init/main.c\00" ; <[12 x i8]*> [#uses=1] @str = internal constant [12 x i8] c"init/main.c\00" ; <[12 x i8]*> [#uses=1]
; CHECK: {{foo str$}}
define i32 @unknown_bootoption() { define i32 @unknown_bootoption() {
entry: entry:
tail call void asm sideeffect "foo ${0:c}\0A", "i,~{dirflag},~{fpsr},~{flags}"( i8* getelementptr ([12 x i8]* @str, i32 0, i64 0) ) tail call void asm sideeffect "foo ${0:c}\0A", "i,~{dirflag},~{fpsr},~{flags}"( i8* getelementptr ([12 x i8]* @str, i32 0, i64 0) )

View File

@ -1,8 +1,9 @@
; RUN: llc < %s -march=x86 -o %t ; RUN: llc < %s -march=x86 | FileCheck %s
; RUN: not grep and %t
; RUN: not grep shr %t
; rdar://6661955 ; rdar://6661955
; CHECK-NOT: and
; CHECK-NOT: shr
@hello = internal constant [7 x i8] c"hello\0A\00" @hello = internal constant [7 x i8] c"hello\0A\00"
@world = internal constant [7 x i8] c"world\0A\00" @world = internal constant [7 x i8] c"world\0A\00"

View File

@ -1,4 +1,4 @@
; RUN: llc < %s -relocation-model=pic | grep atoi | grep PLT ; RUN: llc < %s -relocation-model=pic | FileCheck %s
; PR4253 ; PR4253
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128" target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
target triple = "x86_64-unknown-linux-gnu" target triple = "x86_64-unknown-linux-gnu"
@ -9,6 +9,9 @@ entry:
ret i32 %call ret i32 %call
} }
; CHECK: foo
; CHECK: {{atoi.+PLT}}
define available_externally fastcc i32 @atoi(i8* %__nptr) nounwind readonly { define available_externally fastcc i32 @atoi(i8* %__nptr) nounwind readonly {
entry: entry:
%call = tail call i64 @strtol(i8* nocapture %__nptr, i8** null, i32 10) nounwind readonly ; <i64> [#uses=1] %call = tail call i64 @strtol(i8* nocapture %__nptr, i8** null, i32 10) nounwind readonly ; <i64> [#uses=1]

View File

@ -1,4 +1,6 @@
; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu -mattr=+mmx,+sse2 | not grep movl ; RUN: llc < %s -march=x86 -mtriple=i386-linux-gnu -mattr=+mmx,+sse2 | FileCheck %s
; CHECK-NOT: movl
define <8 x i8> @a(i8 zeroext %x) nounwind { define <8 x i8> @a(i8 zeroext %x) nounwind {
%r = insertelement <8 x i8> undef, i8 %x, i32 0 %r = insertelement <8 x i8> undef, i8 %x, i32 0

View File

@ -1,4 +1,6 @@
; RUN: llc < %s -mtriple=x86_64-pc-mingw64 | grep movabsq ; RUN: llc < %s -mtriple=x86_64-pc-mingw64 | FileCheck %s
; CHECK: movabsq
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128" target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"

View File

@ -1,11 +1,11 @@
; RUN: llc < %s -mtriple=i386-apple-darwin -relocation-model=static | grep "call.*12345678" ; RUN: llc < %s -mtriple=i386-apple-darwin -relocation-model=static | FileCheck -check-prefix X86STA %s
; RUN: llc < %s -mtriple=i386-apple-darwin -relocation-model=pic | not grep "call.*12345678" ; RUN: llc < %s -mtriple=i386-apple-darwin -relocation-model=pic | FileCheck -check-prefix X86PIC %s
; RUN: llc < %s -mtriple=i386-pc-linux -relocation-model=dynamic-no-pic | grep "call.*12345678" ; RUN: llc < %s -mtriple=i386-pc-linux -relocation-model=dynamic-no-pic | FileCheck -check-prefix X86DYN %s
; Call to immediate is not safe on x86-64 unless we *know* that the ; Call to immediate is not safe on x86-64 unless we *know* that the
; call will be within 32-bits pcrel from the dest immediate. ; call will be within 32-bits pcrel from the dest immediate.
; RUN: llc < %s -march=x86-64 | grep "call.*\*%rax" ; RUN: llc < %s -march=x86-64 | FileCheck -check-prefix X64 %s
; PR3666 ; PR3666
; PR3773 ; PR3773
@ -16,3 +16,8 @@ entry:
%0 = call i32 inttoptr (i32 12345678 to i32 (i32)*)(i32 0) nounwind ; <i32> [#uses=1] %0 = call i32 inttoptr (i32 12345678 to i32 (i32)*)(i32 0) nounwind ; <i32> [#uses=1]
ret i32 %0 ret i32 %0
} }
; X86STA: {{call.*12345678}}
; X86PIC-NOT: {{call.*12345678}}
; X86DYN: {{call.*12345678}}
; X64: {{call.*[*]%rax}}

View File

@ -1,4 +1,6 @@
; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse2 -relocation-model=static | not grep movaps ; RUN: llc < %s -mtriple=i386-apple-darwin -mattr=+sse2 -relocation-model=static | FileCheck %s
; CHECK-NOT: movaps
@a = external global <2 x i64> ; <<2 x i64>*> [#uses=1] @a = external global <2 x i64> ; <<2 x i64>*> [#uses=1]

View File

@ -1,5 +1,4 @@
; RUN: llc < %s -march=x86 | grep inc ; RUN: llc < %s -march=x86 | FileCheck %s
; RUN: llc < %s -march=x86 | grep add | grep 4
define i32 @test(i32 %X) nounwind { define i32 @test(i32 %X) nounwind {
entry: entry:
@ -7,8 +6,16 @@ entry:
ret i32 %0 ret i32 %0
} }
; CHECK: test
; CHECK: inc
; CHECK: ret
define i32 @test2(i32 %X) nounwind { define i32 @test2(i32 %X) nounwind {
entry: entry:
%0 = add i32 %X, 4 %0 = add i32 %X, 4
ret i32 %0 ret i32 %0
} }
; CHECK: test2
; CHECK: {{add.*4.*$}}
; CHECK: ret

View File

@ -1,7 +1,8 @@
;; Test that this FP immediate is stored in the constant pool as a float. ;; Test that this FP immediate is stored in the constant pool as a float.
; RUN: llc < %s -march=x86 -mattr=-sse2,-sse3 | \ ; RUN: llc < %s -march=x86 -mattr=-sse2,-sse3 | FileCheck %s
; RUN: grep ".long.1123418112"
; CHECK: {{.long.1123418112}}
define double @D() { define double @D() {
ret double 1.230000e+02 ret double 1.230000e+02

View File

@ -1,6 +1,9 @@
; RUN: llc < %s -march=x86 -mattr=+sse2 | grep "xorps.*sp" | count 1 ; RUN: llc < %s -march=x86 -mattr=+sse2 | FileCheck %s
; PR2656 ; PR2656
; CHECK: {{xorps.*sp}}
; CHECK-NOT: {{xorps.*sp}}
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128" target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
target triple = "i686-apple-darwin9.4.0" target triple = "i686-apple-darwin9.4.0"
%struct.anon = type <{ float, float }> %struct.anon = type <{ float, float }>

View File

@ -1,5 +1,10 @@
; RUN: llc < %s -march=x86-64 | grep movd | count 1 ; RUN: llc < %s -march=x86-64 | FileCheck %s
; RUN: llc < %s -march=x86-64 | grep "movlhps.*%xmm0, %xmm0"
; CHECK: test3
; CHECK: movd
; CHECK-NOT: movd
; CHECK: {{movlhps.*%xmm0, %xmm0}}
; CHECK-NEXT: ret
define <2 x i64> @test3(i64 %A) nounwind { define <2 x i64> @test3(i64 %A) nounwind {
entry: entry:

View File

@ -1,5 +1,7 @@
; RUN: llc < %s -march=x86 -mcpu=core2 -o %t ; RUN: llc < %s -march=x86 -mcpu=core2 | FileCheck %s
; RUN: grep pshufb %t | count 1
; CHECK: pshufb
; CHECK-NOT: pshufb
; FIXME: this test has a superfluous punpcklqdq pre-pshufb currently. ; FIXME: this test has a superfluous punpcklqdq pre-pshufb currently.
; Don't XFAIL it because it's still better than the previous code. ; Don't XFAIL it because it's still better than the previous code.

View File

@ -1,9 +1,12 @@
; RUN: llc < %s -march=x86 | not grep and ; RUN: llc < %s -march=x86 | FileCheck -check-prefix=X86 %s
; RUN: llc < %s -march=x86-64 > %t ; RUN: llc < %s -march=x86-64 | FileCheck -check-prefix=X64 %s
; RUN: not grep and %t
; RUN: not grep movzbq %t ; X86-NOT: and
; RUN: not grep movzwq %t
; RUN: not grep movzlq %t ; X64-NOT: and
; X64-NOT: movzbq
; X64-NOT: movzwq
; X64-NOT: movzlq
; These should use movzbl instead of 'and 255'. ; These should use movzbl instead of 'and 255'.
; This related to not having a ZERO_EXTEND_REG opcode. ; This related to not having a ZERO_EXTEND_REG opcode.