[LLVMdev] Matching an instruction that writes a specific register in a Pat<>
Richard Osborne
richard at xmos.com
Sun Nov 15 11:18:45 PST 2009
I can match an instruction whose result is always written to a specific
register using set with that register as the first operand in the DAG
pattern of the instruction. For example on the XCore the result of the
the ldap instruction is written to R11 and used to match the tglobaladdr
node as follows:
def LDAP_lu10 : _FLU10<
(outs),
(ins i32imm:$addr),
"ldap r11, $addr",
[(set R11, (pcrelwrapper tglobaladdr:$addr))]>;
Is there anyway to get the same effect using a Pat<>? I'm asking because
I want to use the same instruction for the new tblockaddress node. This
means I have two patterns I want to specify, only one of which can be
placed on the instruction definition. I haven't been able to figure out
how to specify one of these using Pat<>. I can make things work by using
two instruction definitions for the same instruction (allowing me to
specify both patterns), but I wanted to check whether there was a better
solution than duplicating the instruction definition in the .td file.
Thanks,
Richard
More information about the llvm-dev
mailing list