search for: addr_use_grp

Displaying 4 results from an estimated 4 matches for "addr_use_grp".

2016 Jan 15
2
Expanding a PseudoOp and accessing the DAG
...nd about your target so > far): > > Define two additional ISD opcodes, specific to your target. One to denote > a "normal" address, the other to mean "address using GRP". For example > (you can invent better names for them): XSTGISD::ADDR_NORMAL and > XSGTISD::ADDR_USE_GRP. Each of them will take a global address as an > operand and return an address, and their only function will be to serve as > a "tag" for the instruction selection algorithm to be able to apply > different selection patterns to them. > > In the .td file, define SDNodes corr...
2016 Jan 13
2
Expanding a PseudoOp and accessing the DAG
On Wed, Jan 13, 2016 at 2:08 PM, Krzysztof Parzyszek via llvm-dev < llvm-dev at lists.llvm.org> wrote: > On 1/13/2016 2:26 PM, Phil Tomson via llvm-dev wrote: > >> I've got this PseudoOp defined: >> >> def SDT_RELADDR : SDTypeProfile<1, 2, [SDTCisInt<0>, SDTCisInt<1>]>; >> def XSTGRELADDR :
2016 Jan 15
2
Expanding a PseudoOp and accessing the DAG
...>><<P:Predicate_load>> > - Complexity = 10 > // Dst: (LOADI64_RI:i64 (tglobaladdr:i64):$addr, 0:i64) > > Not sure why the initial Opcode index is being set to 0 instead of 2235? That's where matching of ADDR_NORMAL begins. Is the code matching ADDR_USE_GRP in the .inc file? -Krzysztof -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
2016 Jan 15
2
Expanding a PseudoOp and accessing the DAG
...wrote: > > Ah, I see, the defm is a multi-class so I needed to change it to: > > def: Pat<(load (XSTGADDR_NORMAL tglobaladdr:$addr)), > (LOADI64_RI tglobaladdr:$addr, 0)>; > // Match load from a relocatable address to a load with GRP: > def: Pat<(load (XSTGADDR_USE_GRP tglobaladdr:$addr)), > (LOADI64_RI (MOVIMMZ_I64 tglobaladdr:$addr), GRP)>; Right. > ...at least that gets through TableGen. Excellent. -Krzysztof -- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation