1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 04:22:57 +02:00
llvm-mirror/lib
Silviu Baranga 22ab3adc5c [AArch64] Multiply extended 32-bit ints with `[U|S]MADDL'
During instruction selection, the AArch64 backend can recognise the
following pattern and generate an [U|S]MADDL instruction, i.e. a
multiply of two 32-bit operands with a 64-bit result:

(mul (sext i32), (sext i32))
However, when one of the operands is constant, the sign extension
gets folded into the constant in SelectionDAG::getNode(). This means
that the instruction selection sees this:

(mul (sext i32), i64)
...which doesn't match the pattern. Sign-extension and 64-bit
multiply instructions are generated, which are slower than one 32-bit
multiply.

Add a pattern to match this and generate the correct instruction, for
both signed and unsigned multiplies.

Patch by Chris Diamand!

llvm-svn: 259800
2016-02-04 16:47:09 +00:00
..
Analysis [SCEV] Try to reuse existing value during SCEV expansion 2016-02-04 01:27:38 +00:00
AsmParser Remove autoconf support 2016-01-26 21:29:08 +00:00
Bitcode [ThinLTO] Ensure function summary output order is stable 2016-02-01 20:16:35 +00:00
CodeGen Enable the %s modifier in inline asm template string 2016-02-04 16:18:08 +00:00
DebugInfo [DebugInfo] Support zero-length CIE in the _eh_frame parser 2016-01-27 14:05:35 +00:00
ExecutionEngine [Orc] Turn OrcX86_64::IndirectStubsInfo into a template helper class: 2016-02-02 19:31:15 +00:00
Fuzzer [libFuzzer] hot fix a test 2016-02-04 00:12:28 +00:00
IR Fix pointers to go on the right hand side. NFC. 2016-02-03 21:34:39 +00:00
IRReader Remove autoconf support 2016-01-26 21:29:08 +00:00
LibDriver Remove autoconf support 2016-01-26 21:29:08 +00:00
LineEditor Remove autoconf support 2016-01-26 21:29:08 +00:00
Linker Improve efficiency of handling unmapped subprogram metadata 2016-01-28 15:08:09 +00:00
LTO Move MCTargetAsmParser.h to llvm/MC/MCParser where it belongs. 2016-01-27 10:01:28 +00:00
MC [codeview] Don't attempt a cross-section label diff 2016-02-04 00:21:42 +00:00
Object Move MCTargetAsmParser.h to llvm/MC/MCParser where it belongs. 2016-01-27 10:01:28 +00:00
Option Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
Passes Remove autoconf support 2016-01-26 21:29:08 +00:00
ProfileData [PGO] Profile interface cleanup 2016-02-04 05:29:51 +00:00
Support [Support] Use range-based for loop. NFC 2016-02-04 06:51:41 +00:00
TableGen Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 20:50:44 +00:00
Target [AArch64] Multiply extended 32-bit ints with `[U|S]MADDL' 2016-02-04 16:47:09 +00:00
Transforms [SCEV] Try to reuse existing value during SCEV expansion 2016-02-04 01:27:38 +00:00
CMakeLists.txt
LLVMBuild.txt