forked from OSchip/llvm-project
FileCheck-ize some tests in test/CodeGen/X86/
Patch by Jorge Gorbe! Differential Revision: https://reviews.llvm.org/D29807 llvm-svn: 295386
This commit is contained in:
parent
ee61d3589f
commit
8960686927
|
@ -1,4 +1,4 @@
|
|||
; RUN: llc < %s -march=x86 | \
|
||||
; RUN: not grep ".byte[[:space:]]*true"
|
||||
; RUN: llc < %s -march=x86 | FileCheck %s
|
||||
|
||||
@X = global i1 true ; <i1*> [#uses=0]
|
||||
@X = global i1 true
|
||||
; CHECK-NOT: .byte true
|
||||
|
|
|
@ -1,18 +1,23 @@
|
|||
; RUN: llc < %s -march=x86 | grep "(%esp"
|
||||
; RUN: llc < %s -march=x86 | grep "pushl %ebp" | count 1
|
||||
; RUN: llc < %s -march=x86 | grep "popl %ebp" | count 1
|
||||
; RUN: llc < %s -march=x86 | FileCheck %s
|
||||
|
||||
declare i8* @llvm.returnaddress(i32)
|
||||
|
||||
declare i8* @llvm.frameaddress(i32)
|
||||
|
||||
define i8* @test1() {
|
||||
%X = call i8* @llvm.returnaddress( i32 0 ) ; <i8*> [#uses=1]
|
||||
ret i8* %X
|
||||
; CHECK-LABEL: test1:
|
||||
entry:
|
||||
%X = call i8* @llvm.returnaddress( i32 0 )
|
||||
ret i8* %X
|
||||
; CHECK: movl {{.*}}(%esp), %eax
|
||||
}
|
||||
|
||||
define i8* @test2() {
|
||||
%X = call i8* @llvm.frameaddress( i32 0 ) ; <i8*> [#uses=1]
|
||||
ret i8* %X
|
||||
; CHECK-LABEL: test2:
|
||||
entry:
|
||||
%X = call i8* @llvm.frameaddress( i32 0 )
|
||||
ret i8* %X
|
||||
; CHECK: pushl %ebp
|
||||
; CHECK: popl %ebp
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
; RUN: llc < %s -march=x86 | grep -i ESP | not grep sub
|
||||
; RUN: llc < %s -march=x86 | FileCheck %s
|
||||
|
||||
target triple = "i686-unknown-unknown"
|
||||
|
||||
define i32 @test(i32 %X) {
|
||||
ret i32 %X
|
||||
; CHECK-LABEL: test:
|
||||
entry:
|
||||
ret i32 %X
|
||||
; CHECK-NOT: subl %esp
|
||||
}
|
||||
|
|
|
@ -3,15 +3,18 @@
|
|||
; is invalid code (there is no correct way to order the instruction). Check
|
||||
; that we do not fold the load into the sub.
|
||||
|
||||
; RUN: llc < %s -march=x86 | not grep sub.*GLOBAL
|
||||
; RUN: llc < %s -march=x86 | FileCheck %s
|
||||
|
||||
@GLOBAL = external global i32 ; <i32*> [#uses=1]
|
||||
@GLOBAL = external global i32
|
||||
|
||||
define i32 @test(i32* %P1, i32* %P2, i32* %P3) nounwind {
|
||||
%L = load i32, i32* @GLOBAL ; <i32> [#uses=1]
|
||||
store i32 12, i32* %P2
|
||||
%Y = load i32, i32* %P3 ; <i32> [#uses=1]
|
||||
%Z = sub i32 %Y, %L ; <i32> [#uses=1]
|
||||
ret i32 %Z
|
||||
; CHECK-LABEL: test:
|
||||
entry:
|
||||
%L = load i32, i32* @GLOBAL
|
||||
store i32 12, i32* %P2
|
||||
%Y = load i32, i32* %P3
|
||||
%Z = sub i32 %Y, %L
|
||||
ret i32 %Z
|
||||
; CHECK-NOT: {{sub.*GLOBAL}}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
; RUN: llc < %s -march=x86 | not grep 18446744073709551612
|
||||
; RUN: llc < %s -march=x86 | FileCheck %s
|
||||
|
||||
@A = external global i32 ; <i32*> [#uses=1]
|
||||
@Y = global i32* getelementptr (i32, i32* @A, i32 -1) ; <i32**> [#uses=0]
|
||||
; CHECK-NOT: 18446744073709551612
|
||||
|
||||
|
|
|
@ -1,20 +1,29 @@
|
|||
; RUN: llc < %s -march=x86 -mcpu=generic | \
|
||||
; RUN: grep shld | count 1
|
||||
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
||||
; RUN: llc < %s -march=x86 -mcpu=generic | FileCheck %s
|
||||
;
|
||||
; Check that the isel does not fold the shld, which already folds a load
|
||||
; and has two uses, into a store.
|
||||
|
||||
@A = external global i32 ; <i32*> [#uses=2]
|
||||
@A = external global i32
|
||||
|
||||
define i32 @test5(i32 %B, i8 %C) {
|
||||
%tmp.1 = load i32, i32* @A ; <i32> [#uses=1]
|
||||
%shift.upgrd.1 = zext i8 %C to i32 ; <i32> [#uses=1]
|
||||
%tmp.2 = shl i32 %tmp.1, %shift.upgrd.1 ; <i32> [#uses=1]
|
||||
%tmp.3 = sub i8 32, %C ; <i8> [#uses=1]
|
||||
%shift.upgrd.2 = zext i8 %tmp.3 to i32 ; <i32> [#uses=1]
|
||||
%tmp.4 = lshr i32 %B, %shift.upgrd.2 ; <i32> [#uses=1]
|
||||
%tmp.5 = or i32 %tmp.4, %tmp.2 ; <i32> [#uses=2]
|
||||
store i32 %tmp.5, i32* @A
|
||||
ret i32 %tmp.5
|
||||
; CHECK-LABEL: test5:
|
||||
; CHECK: # BB#0:
|
||||
; CHECK-NEXT: movb {{[0-9]+}}(%esp), %cl
|
||||
; CHECK-NEXT: movl {{[0-9]+}}(%esp), %edx
|
||||
; CHECK-NEXT: movl A, %eax
|
||||
; CHECK-NEXT: shldl %cl, %edx, %eax
|
||||
; CHECK-NEXT: movl %eax, A
|
||||
; CHECK-NEXT: retl
|
||||
entry:
|
||||
%tmp.1 = load i32, i32* @A
|
||||
%shift.upgrd.1 = zext i8 %C to i32
|
||||
%tmp.2 = shl i32 %tmp.1, %shift.upgrd.1
|
||||
%tmp.3 = sub i8 32, %C
|
||||
%shift.upgrd.2 = zext i8 %tmp.3 to i32
|
||||
%tmp.4 = lshr i32 %B, %shift.upgrd.2
|
||||
%tmp.5 = or i32 %tmp.4, %tmp.2
|
||||
store i32 %tmp.5, i32* @A
|
||||
ret i32 %tmp.5
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue