The BLX instruction is encoded differently than the BL, because why not? In
authorBill Wendling <isanbard@gmail.com>
Thu, 9 Dec 2010 00:39:08 +0000 (00:39 +0000)
committerBill Wendling <isanbard@gmail.com>
Thu, 9 Dec 2010 00:39:08 +0000 (00:39 +0000)
commit09aa3f0ef35d9241c92439d74b8d5e9a81d814c2
treeb70785fac90f90c5eebe007ddb6c780adce8abbe
parent8bce7cc3bfa7d5b47ca0b05f7c663068d1da592a
The BLX instruction is encoded differently than the BL, because why not? In
particular, the immediate has 20-bits of value instead of 21. And bit 0 is '0'
always. Going through the BL fixup encoding was trashing the "bit 0 is '0'"
invariant.

Attempt to get the encoding at slightly more correct with this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121336 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMAsmBackend.cpp
lib/Target/ARM/ARMCodeEmitter.cpp
lib/Target/ARM/ARMFixupKinds.h
lib/Target/ARM/ARMInstrThumb.td
lib/Target/ARM/ARMMCCodeEmitter.cpp
utils/TableGen/EDEmitter.cpp