[LLVMdev] Implementing llvm.atomic.cmp.swap.i32 on PowerPC

Chris Lattner sabre at nondot.org
Fri Jun 27 12:15:09 PDT 2008

On Jun 27, 2008, at 8:27 AM, Gary Benson wrote:
>  def CMP_UNRESw : Pseudo<(outs), (ins GPRC:$rA, GPRC:$rB, i32imm: 
> $label),
>                           "cmpw $rA, $rB\n\tbne- La${label}_exit",
>                           [(PPCcmp_unres GPRC:$rA, GPRC:$rB, imm: 
> $label)]>;
>  }
> ...and I can't figure out the syntax for that.  Any suggestions?

Hi Gary,

You have to write custom encoding logic in C++ for this.  This should  
go in PPCCodeEmitter::emitBasicBlock.  I admit this isn't very  
elegant.  A better solution would be to fix the lowering to produce  
two instructions instead of this pseudo instruction.


More information about the llvm-dev mailing list