llvm-6502/lib
Bill Wendling e1b66f1145 Restrict this transformation to equality conditions.
This transformation is not correct for not-equal conditions:

(trunc x) != C1 & (and x, CA) != C2 -> (and x, CA|CMAX) != C1|C2

Let
  C1 == 0
  C2 == 0
  CA == 0xFF0000
  CMAX == 0xFF
and truncating to i8.

The original truth table:

    x   | A: trunc x != 0 | B: x & 0xFF0000 != 0 | A & B != 0
--------------------------------------------------------------
0x00000 |        0        |          0           |     0
0x00001 |        1        |          0           |     0
0x10000 |        0        |          1           |     0
0x10001 |        1        |          1           |     1

The truth table of the replacement:

    x   | x & 0xFF00FF != 0
----------------------------
0x00000 |        0
0x00001 |        1
0x10000 |        1
0x10001 |        1

So they are different.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151691 91177308-0d34-0410-b5e6-96231b3b80d8
2012-02-29 01:46:50 +00:00
..
Analysis
Archive
AsmParser
Bitcode Fix PR12080 by ensuring that MaterializeModule actually reads all the bitcode 2012-02-29 00:07:09 +00:00
CodeGen Add an analyzeVirtReg() function. 2012-02-29 01:40:37 +00:00
DebugInfo
ExecutionEngine
Linker Oops...Don't commit the other stuff.. 2012-02-28 04:01:21 +00:00
MC Make MemoryObject accessor members const again 2012-02-29 01:09:06 +00:00
Object In the ObjectFile interface, replace isInternal(), isAbsolute(), isGlobal(), and isWeak(), with a bitset of flags. 2012-02-28 23:47:53 +00:00
Support Make MemoryObject accessor members const again 2012-02-29 01:09:06 +00:00
TableGen Remove stray semi-colon. 2012-02-28 15:35:52 +00:00
Target Make MemoryObject accessor members const again 2012-02-29 01:09:06 +00:00
Transforms Restrict this transformation to equality conditions. 2012-02-29 01:46:50 +00:00
VMCore
CMakeLists.txt
LLVMBuild.txt
Makefile