Evan's patch to avoid FPreg->intreg copy for cvt; store to mem

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36693 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dale Johannesen 2007-05-03 20:54:42 +00:00
parent e8e5495474
commit 4ac075c859
2 changed files with 38 additions and 0 deletions

View File

@ -78,6 +78,11 @@ def FSTS : ASI5<(ops SPR:$src, addrmode5:$addr),
[(store SPR:$src, addrmode5:$addr)]>;
} // isStore
// avoid copying result of FTOUIZ to int reg when we're just storing it
let AddedComplexity = 1 in
def : ARMPat<(store (i32 (bitconvert SPR:$src)), addrmode5:$addr),
(FSTS SPR:$src, addrmode5:$addr)>;
//===----------------------------------------------------------------------===//
// Load / store multiple Instructions.
//

View File

@ -0,0 +1,33 @@
; RUN: llvm-as < %s | llc -march=arm -mattr=+v6,+vfp2 > %t
; RUN: not grep fmrs %t
@i = weak global i32 0 ; <i32*> [#uses=2]
@u = weak global i32 0 ; <i32*> [#uses=2]
define void @foo5(float %x) {
entry:
%tmp1 = fptosi float %x to i32 ; <i32> [#uses=1]
store i32 %tmp1, i32* @i
ret void
}
define void @foo6(float %x) {
entry:
%tmp1 = fptoui float %x to i32 ; <i32> [#uses=1]
store i32 %tmp1, i32* @u
ret void
}
define void @foo7(double %x) {
entry:
%tmp1 = fptosi double %x to i32 ; <i32> [#uses=1]
store i32 %tmp1, i32* @i
ret void
}
define void @foo8(double %x) {
entry:
%tmp1 = fptoui double %x to i32 ; <i32> [#uses=1]
store i32 %tmp1, i32* @u
ret void
}