mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 05:29:24 +00:00
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:
parent
e8e5495474
commit
4ac075c859
@ -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.
|
||||
//
|
||||
|
33
test/CodeGen/ARM/fptoint.ll
Normal file
33
test/CodeGen/ARM/fptoint.ll
Normal 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
|
||||
}
|
Loading…
Reference in New Issue
Block a user