llvm-6502/lib
Kai Nacke ceb3b46490 PR16726: extend rol/ror matching
C-like languages promote types like unsigned short to unsigned int before
performing an arithmetic operation. Currently the rotate matcher in the
DAGCombiner does not consider this situation.

This commit extends the DAGCombiner in the way that the pattern

(or (shl ([az]ext x), (*ext y)), (srl ([az]ext x), (*ext (sub 32, y))))

is folded into

([az]ext (rotl x, y))

The matching is restricted to aext and zext because in this cases the upper
bits are either undefined or known. Test case is included.

This fixes PR16726.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191049 91177308-0d34-0410-b5e6-96231b3b80d8
2013-09-19 23:00:28 +00:00
..
Analysis Fix a constant folding address space place I missed. 2013-09-17 23:23:16 +00:00
AsmParser Implement function prefix data as an IR feature. 2013-09-16 01:08:15 +00:00
Bitcode Implement function prefix data as an IR feature. 2013-09-16 01:08:15 +00:00
CodeGen PR16726: extend rol/ror matching 2013-09-19 23:00:28 +00:00
DebugInfo Add support for DebugFission to DWARF parser 2013-08-27 09:20:22 +00:00
ExecutionEngine llvm-c: Add LLVMGetPointerToFunction 2013-09-19 19:55:06 +00:00
IR Revert "Encapsulate PassManager debug flags to avoid static init and cxa_exit." 2013-09-19 06:02:43 +00:00
IRReader Add 'const' qualifiers to static const char* variables. 2013-07-16 01:17:10 +00:00
Linker Implement function prefix data as an IR feature. 2013-09-16 01:08:15 +00:00
MC Remove extraneous space, the asm printing infrastructure adds a space 2013-09-19 18:41:40 +00:00
Object ELF: Add support for the exclude section bit for gas compat. 2013-09-15 19:53:20 +00:00
Option Fix another mistake in r190442. 2013-09-10 23:22:56 +00:00
Support DebugInfo: Improve IR annotation comments for GNU pubthings. 2013-09-19 22:19:37 +00:00
TableGen Add an error check for a typo I accidentally made in a td file that caused an assert to fire. 2013-08-20 04:22:09 +00:00
Target X86 horizontal vector reduction cost model 2013-09-19 17:48:48 +00:00
Transforms [Fast-math] Disable "(C1/X)*C2 => (C1*C2)/X" if C1/X has multiple uses. 2013-09-19 21:13:46 +00:00
CMakeLists.txt Move lib/Archive to tools/llvm-ar. 2013-06-17 15:47:20 +00:00
LLVMBuild.txt Move lib/Archive to tools/llvm-ar. 2013-06-17 15:47:20 +00:00
Makefile Move lib/Archive to tools/llvm-ar. 2013-06-17 15:47:20 +00:00