[llvm-dev] ARM Backend: Emit conditional move
    Robert Schilling via llvm-dev 
    llvm-dev at lists.llvm.org
       
    Mon Feb 13 01:36:20 PST 2017
    
    
  
Hi,
I'm trying to emit a conditional move in the ARM backend for a custom 
intrinsic. Basically, I want to emit the following the following 
instruction sequence:
cmp r0, r1
moveq r2, #1
To implement this, I first emit a compare instruction and then I'm 
trying to emit the conditional move, which is failing.
BuildMI(&MBB, DL, TII->get(ARM::CMPrr))
         .addReg(MI.getOperand(1).getReg())
         .addReg(MI.getOperand(2).getReg())
         .addImm(ARMCC::EQ);
BuildMI(MBB, MBBI, MI.getDebugLoc(), TII->get(ARM::MOVr),
               MI.getOperand(0).getReg())
           .addImm(ARMCC::EQ)
           .addImm(1)
           .addReg(0); // 's' bit
But with the last conditional move, I am a bit lost. The result of the 
condional move should be saved in operand 0. Can someone help on how to 
emit this instruction?
Cheers,
Robert
    
    
More information about the llvm-dev
mailing list