1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-26 22:42:46 +02:00
llvm-mirror/lib/CodeGen/SelectionDAG
Nate Begeman dc36f47d99 Add support for AssertSext and AssertZext, folding other extensions with
them.  This allows for elminination of redundant extends in the entry
blocks of functions on PowerPC.

Add support for i32 x i32 -> i64 multiplies, by recognizing when the inputs
to ISD::MUL in ExpandOp are actually just extended i32 values and not real
i64 values.  this allows us to codegen

int mulhs(int a, int b) { return ((long long)a * b) >> 32; }
as:
_mulhs:
        mulhw r3, r4, r3
        blr

instead of:
_mulhs:
        mulhwu r2, r4, r3
        srawi r5, r3, 31
        mullw r5, r4, r5
        add r2, r2, r5
        srawi r4, r4, 31
        mullw r3, r4, r3
        add r3, r2, r3
        blr

with a similar improvement on x86.

llvm-svn: 23147
2005-08-30 02:44:00 +00:00
..
LegalizeDAG.cpp Add support for AssertSext and AssertZext, folding other extensions with 2005-08-30 02:44:00 +00:00
Makefile Change Library Names Not To Conflict With Others When Installed 2004-10-27 23:18:45 +00:00
ScheduleDAG.cpp Name this variable to be what it really is! 2005-08-30 01:58:51 +00:00
SelectionDAG.cpp Add support for AssertSext and AssertZext, folding other extensions with 2005-08-30 02:44:00 +00:00
SelectionDAGISel.cpp Disable this code, which broke many tests last night 2005-08-27 16:16:51 +00:00
SelectionDAGPrinter.cpp Change ConstantPoolSDNode to actually hold the Constant itself instead of 2005-08-26 17:15:30 +00:00