[llvm-dev] wrong operand in getBinaryCodeForInstr

Mahesh Bodapati via llvm-dev llvm-dev at lists.llvm.org
Thu Apr 5 22:33:40 PDT 2018


Hi,



  *case MICROBLAZE::BGEID:*

* {*

*      // op: raencoder*

*      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);*

*      Value |= (op & UINT64_C(31)) << 16;*

*      // op: imm16*

*      op = getMachineOpValue(MI, MI.getOperand(0), Fixups, STI);   ->
should be operand[1]*

*      Value |= op & UINT64_C(65535);*

*      break;*

*    }*


I have added different encoder method for operand(1) but that operand is
not even propagated in  Encodeinstruction..

by the way,this is how I have defined BGEID..

*def : Pat<(brcond (setcc (i32 GR32:$L), (i32 GR32:$R), SETGE), bb:$T),*

* (BGEID (CMP GR32:$L, GR32:$R), bb:$T)>;*







  *def BGEID   : TBT<0b101110, (outs), (ins GR32:$ra, brtarget:$offset),
"bgeid\t$ra,$offset", [], IIC_BRc> {*

*    let rd = 0b10101;*

*}*

I don't know where I am doing wrong.please provide your notes...


Thanks,
Mahesh B
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180406/1ca2e7b0/attachment.html>


More information about the llvm-dev mailing list