[llvm-commits] [llvm] r75048 - in /llvm/trunk/lib/Target/ARM: ARMAddressingModes.h ARMBaseInstrInfo.cpp ARMBaseRegisterInfo.cpp ARMCodeEmitter.cpp ARMISelDAGToDAG.cpp ARMInstrInfo.td ARMInstrThumb2.td ARMLoadStoreOptimizer.cpp AsmPrinter/ARMAsmPrinter.cpp

Chris Lattner clattner at apple.com
Wed Jul 15 23:41:06 PDT 2009


On Jul 9, 2009, at 11:26 AM, Evan Cheng wrote:

>> On Jul 8, 2009, at 2:04 PM, Evan Cheng wrote:
>>
>>> Author: evancheng
>>> Date: Wed Jul  8 16:03:57 2009
>>> New Revision: 75048
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=75048&view=rev
>>> Log:
>>> Change how so_imm and t2_so_imm are handled. At instruction
>>> selection time, the immediates are no longer encoded in the imm8 +
>>> rot format, that are left as it is. The encoding is now done in ams
>>> printing and code emission time instead.
>>
>> Is this really needed?  Aren't the instructions that these end up in
>> encoded very differently as well?  If so, why not just have them
>> described "properly" when you pick a specific instruction?  How do  
>> you
>> plan to have the JIT support these?
>
> Before this change, the immediate is transformed into the actual HW
> encoding at isel time. The asm printer then change it back to the
> actual immediate. The JIT doesn't need to do anything. After this
> change, the immediate is only transformed at JIT time. There really is
> no difference in functionality.
>
> Some intermediate passes, such as the load / store multiple opt pass,
> needed to unscramble the immediate prior to the change. That makes
> little sense. Also, this makes it possible to actual understand the
> code when we look at the machine instruction dumps.

Ok, I can see that this is simpler and making the machineinstr dumps  
more readable is definitely virtuous :).  This is fine with me, but it  
would be nice to be consistent where possible.  Are all ARM immediates  
handled this way now?

-Chris



More information about the llvm-commits mailing list