Displaying 3 results from an estimated 3 matches for "div4_xform".
2009 Mar 31
0
[LLVMdev] adjust address calculus for an architecture that does not address bytes
...he load word instruction LDW takes an
offset which is multiplied by 4 and added to the base pointer. This is
dealt with in the patterns defined in XCoreInstrInfo.td. The following
pattern is used for LDW:
def : Pat<(load (add GRRegs:$addr, immUs4:$offset)),
(LDW_2rus GRRegs:$addr, (div4_xform immUs4:$offset))>;
immUs4 is true when offset is a multiple of 4 and the offset divided by
4 fits in an immediate. The div4_xform xform divides a constant by 4.
These are both defined in XCoreInstrInfo.td.
It sounds like your target may be able to use a similar approach.
--
Richard Osborne...
2009 Mar 31
2
[LLVMdev] adjust address calculus for an architecture that does not address bytes
Hi,
my target architecture has a kind of "16bit addressing mode", i.e. one address does not address 8 bit but a 16bit chunk. Consequently, every constant used to calculate effective addresses must be divided by two.
So far this is not such a problem for stack objects since FrameIndexes, function arguments etc. have a lot of custom lowering code where this can be done.
But when it comes
2009 Apr 01
2
[LLVMdev] adjust address calculus for an architecture that does not address bytes
...DW takes an
> offset which is multiplied by 4 and added to the base pointer. This is
> dealt with in the patterns defined in XCoreInstrInfo.td. The following
> pattern is used for LDW:
>
> def : Pat<(load (add GRRegs:$addr, immUs4:$offset)),
> (LDW_2rus GRRegs:$addr, (div4_xform immUs4:$offset))>;
>
Richard,
thanks for your suggestion.
However, I think what you describe is what I meant by 'only catch
the targeted addresses of loads/stores', i.e. the address the instruction
is reading from/writing to.
However, if I have e.g. a chunk of code which stores the...