[llvm-commits] [llvm] r57262 - /llvm/trunk/lib/Target/ARM/ARMInstrInfo.td

Jim Grosbach grosbach at apple.com
Wed Oct 8 13:18:28 PDT 2008


On Oct 7, 2008, at 7:46 PM, Chris Lattner wrote:
>> +++ llvm/trunk/lib/Target/ARM/ARMInstrInfo.td Tue Oct  7 16:08:09  
>> 2008
>> @@ -567,7 +567,7 @@
>>  // B is "predicable" since it can be xformed into a Bcc.
>>  let isBarrier = 1 in {
>>    let isPredicable = 1 in
>> -    def B : AXI<0xA, (outs), (ins brtarget:$target), Branch, "b
>> $target",
>> +    def B : ABI<{0,1,0,1}, (outs), (ins brtarget:$target), Branch,
>> "b $target",
>>                [(br bb:$target)]>;
>
> I assume you're changing 0xA to 0,1,0,1 due to an endianness issue?
> Why not just change the ABI/AXI patterns to do the bit swapping?  I'd
> strongly prefer to have all the instructions (like B) have clear and
> easy to understand encodings in them.  I'd rather push any complexity/
> weirdness up into parent tblgen classes.


Hi Chris,

I absolutely agree, and that's something I'm going to look at fixing  
in the near future. Right now, the assumption is that opcode values  
are laid out such that the MSB is on the right. I don't much care for  
that since the ARM documentation shows things w/ MSB on the left.  
There's already a lot of confusion about which order the opcode  
pattern should take in the the ARM .td files. There's quite a few  
instructions that encode improperly due to that. I'm going to try to  
get that straightened out and have everything be represented as it  
looks in the ARM docs.

That was outside the scope of what I wanted to accomplish in this  
patch, though. For this, I just wanted to get a simple unconditional  
branch encoding correctly so I can have some simple test code (a Hanoi  
solver, in this case) running via the JIT.

Short version, "I agree. Fixing that format confusion is next on the  
agenda."

-Jim



More information about the llvm-commits mailing list