1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-24 13:33:37 +02:00
llvm-mirror/test/CodeGen/Mips/llvm-ir
Simon Dardis a1f0320a27 [mips] Fix multiprecision arithmetic.
For multiprecision arithmetic on MIPS, rather than using ISD::ADDE / ISD::ADDC,
get SelectionDAG to break down the operation into ISD::ADDs and ISD::SETCCs.

For MIPS, only the DSP ASE has a carry flag, so in the general case it is not
useful to directly support ISD::{ADDE, ADDC, SUBE, SUBC} nodes.

Also improve the generation code in such cases for targets with
TargetLoweringBase::ZeroOrOneBooleanContent by directly using the result of the
comparison node rather than using it in selects. Similarly for ISD::SUBE /
ISD::SUBC.

Address optimization breakage by moving the generation of MIPS specific integer
multiply-accumulate nodes to before legalization.

This revolves PR32713 and PR33424.

Thanks to Simonas Kazlauskas and Pirama Arumuga Nainar for reporting the issue!

Reviewers: slthakur

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

llvm-svn: 305389
2017-06-14 14:46:30 +00:00
..
add.ll [mips] Fix multiprecision arithmetic. 2017-06-14 14:46:30 +00:00
addrspacecast.ll
and.ll
ashr.ll CodeGen: BlockPlacement: Reduce TriangleChainCount to 2 2017-03-16 01:32:29 +00:00
atomicrmx.ll
call.ll [mips] Recommit: "N64 static relocation model support" 2017-01-27 11:36:52 +00:00
extractelement.ll DAG: Avoid OOB when legalizing vector indexing 2017-01-10 22:02:30 +00:00
indirectbr.ll
lh_lhu.ll
load-atomic.ll
lshr.ll CodeGen: BlockPlacement: Reduce TriangleChainCount to 2 2017-03-16 01:32:29 +00:00
mul.ll evert "[mips] Fix test mips64fpldst.ll with machine verifier enabled" 2017-06-07 11:21:37 +00:00
not.ll
or.ll
ret.ll
sdiv.ll evert "[mips] Fix test mips64fpldst.ll with machine verifier enabled" 2017-06-07 11:21:37 +00:00
select-dbl.ll
select-flt.ll
select-int.ll
shl.ll CodeGen: BlockPlacement: Reduce TriangleChainCount to 2 2017-03-16 01:32:29 +00:00
sqrt.ll
srem.ll evert "[mips] Fix test mips64fpldst.ll with machine verifier enabled" 2017-06-07 11:21:37 +00:00
store-atomic.ll
sub.ll [mips] Fix multiprecision arithmetic. 2017-06-14 14:46:30 +00:00
udiv.ll evert "[mips] Fix test mips64fpldst.ll with machine verifier enabled" 2017-06-07 11:21:37 +00:00
urem.ll evert "[mips] Fix test mips64fpldst.ll with machine verifier enabled" 2017-06-07 11:21:37 +00:00
xor.ll