[LLVMdev] Seperating registers in target description string replacement without adding whitespace?

ryan baird ryanrbaird at gmail.com
Fri Sep 14 07:25:03 PDT 2012


Here's an example piece of code to show you what I'm trying to do (on llvm
3.1):

class ArithLogicR<bits<6> op, bits<6> func, string instr_asm, SDNode OpNode,
                  InstrItinClass itin, RegisterClass RC, bit isComm = 0>:
  FR<op, func, (outs RC:$rd), (ins RC:$rs, RC:$rt),
     !strconcat("+$rd=$rs ",!strconcat(instr_asm, " $rt")),
     [(set RC:$rd, (OpNode RC:$rs, RC:$rt))], itin> {
  let shamt = 0;
  let isCommutable = isComm;
  let isReMaterializable = 1;
}

This works, but I have to have the whitespace after $rs (which isn't
supported).  If I get rid of the space, I get a message like "ArithLogicR
doesn't have operand $rsAND" or something similar.  The point is that it
doesn't recognise $rs as a seperate entity.  Is there an encoding that it
supports seperating the registers from the operation without adding extra
whitespace?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120914/c0b759e3/attachment.html>


More information about the llvm-dev mailing list