Seperating registers in target description string replacement without adding whitespace?

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?