diff options
author | Shih-wei Liao <sliao@google.com> | 2011-06-17 13:09:03 -0700 |
---|---|---|
committer | Shih-wei Liao <sliao@google.com> | 2011-06-17 13:09:03 -0700 |
commit | 7982b43e731a17981eb2399bce20169933d52c3a (patch) | |
tree | 3807a343c8e960bcc4b8efa3049c69c51217608f | |
parent | aa9bc19930f66ade30857fa50617f1e70952f8db (diff) | |
download | external_llvm-7982b43e731a17981eb2399bce20169933d52c3a.zip external_llvm-7982b43e731a17981eb2399bce20169933d52c3a.tar.gz external_llvm-7982b43e731a17981eb2399bce20169933d52c3a.tar.bz2 |
Optimizing away Binary &= ~(0x80000000 >> 12) and Binary |= (Imm & 0x80000000) >> 12
The key is that the classical JIT does: unsigned Binary = getBinaryCodeForInstr(MI);
As a result, it will get information from ARMInstrVFP.td. Because regardless of my
previous CLs I20394c2c and I9a8e7177, the old td and the new td will result in
the same immed{31}.
See Line 1080 of ARMInstrVFP.td: let Inst{19} = imm{31};
In short, we only need to fix the difference between old td and the new td.
Change-Id: I02695ece0f15e77f7bd712961db1a24bd3c487d7
-rw-r--r-- | lib/Target/ARM/ARMCodeEmitter.cpp | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/lib/Target/ARM/ARMCodeEmitter.cpp b/lib/Target/ARM/ARMCodeEmitter.cpp index ddcf234..d010d1d 100644 --- a/lib/Target/ARM/ARMCodeEmitter.cpp +++ b/lib/Target/ARM/ARMCodeEmitter.cpp @@ -1857,8 +1857,6 @@ void ARMCodeEmitter::emitMiscInstruction(const MachineInstr &MI) { Binary |= (Imm & 0x780000) >> 19; Binary &= ~(0x3800000 >> 7); Binary |= (Imm & 0x3800000) >> 7; - Binary &= ~(0x80000000 >> 12); - Binary |= (Imm & 0x80000000) >> 12; Binary = VFPThumb2PostEncoder(MI, Binary); } |