llvm-6502/lib
Elena Demikhovsky 05e61f7113 X86: optimized i64 vector multiply with constant
When we multiply two 64-bit vectors, we extract lower and upper part and use the PMULUDQ instruction.
When one of the operands is a constant, the upper part may be zero, we know this at compile time.
Example: %a = mul <4 x i64> %b, <4 x i64> < i64 5, i64 5, i64 5, i64 5>.
I'm checking the value of the upper part and prevent redundant "multiply", "shift" and "add" operations.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239802 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-16 06:07:24 +00:00
..
Analysis Move logic from JumpThreading into LazyValue info to simplify caller. 2015-06-16 00:49:59 +00:00
AsmParser modules: Add explicit dependency on intrinsics_gen 2015-06-16 00:44:12 +00:00
Bitcode modules: Add explicit dependency on intrinsics_gen 2015-06-16 00:44:12 +00:00
CodeGen
DebugInfo
ExecutionEngine modules: Add explicit dependency on intrinsics_gen 2015-06-16 00:44:12 +00:00
Fuzzer
IR
IRReader modules: Add explicit dependency on intrinsics_gen 2015-06-16 00:44:12 +00:00
LibDriver
LineEditor
Linker modules: Add explicit dependency on intrinsics_gen 2015-06-16 00:44:12 +00:00
LTO
MC
Object modules: Add explicit dependency on intrinsics_gen 2015-06-16 00:44:12 +00:00
Option
Passes
ProfileData modules: Add explicit dependency on intrinsics_gen 2015-06-16 00:44:12 +00:00
Support
TableGen
Target X86: optimized i64 vector multiply with constant 2015-06-16 06:07:24 +00:00
Transforms Revert 239795 2015-06-16 01:20:53 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile