[mips] Prevent shrink-wrap for BuildPairF64, ExtractElementF64 when they use $sp
authorVladimir Stefanovic <vladimir.stefanovic@rt-rk.com>
Wed, 29 Aug 2018 14:07:14 +0000 (14:07 +0000)
committerVladimir Stefanovic <vladimir.stefanovic@rt-rk.com>
Wed, 29 Aug 2018 14:07:14 +0000 (14:07 +0000)
commit0ef60da8583974432cae66fa6b58c626629227d0
tree0ffb75cb58f1cace85e61c46359185339312d78f
parent7a05641fa8ee27682514d5c40dd344f4a557b03c
[mips] Prevent shrink-wrap for BuildPairF64, ExtractElementF64 when they use $sp

For a certain combination of options, BuildPairF64_{64}, ExtractElementF64{_64}
may be expanded into instructions using stack.
Add implicit operand $sp for such cases so that ShrinkWrapping doesn't move
prologue setup below them.

Fixes MultiSource/Benchmarks/MallocBench/cfrac for
'--target=mips-img-linux-gnu -mcpu=mips32r6 -mfpxx -mnan=2008'
and
'--target=mips-img-linux-gnu -mcpu=mips32r6 -mfp64 -mnan=2008 -mno-odd-spreg'.

Differential Revision: https://reviews.llvm.org/D50986

llvm-svn: 340927
llvm/lib/Target/Mips/MipsSEFrameLowering.cpp
llvm/lib/Target/Mips/MipsSEISelDAGToDAG.cpp
llvm/test/CodeGen/Mips/buildpairf64-extractelementf64-implicit-sp.ll [new file with mode: 0644]
llvm/test/CodeGen/Mips/shrink-wrap-buildpairf64-extractelementf64.mir [new file with mode: 0644]