Displaying 4 results from an estimated 4 matches for "atomic_swap_i".
Did you mean:
atomic_swap
2008 Jul 04
0
[LLVMdev] Implementing llvm.atomic.cmp.swap.i32 on PowerPC
...c
>> blocks. See PPCTargetLowering::EmitInstrWithCustomInserter().
>
> How does this look? It's a big patch, but it basically does this:
>
> - Adds ATOMIC_LOAD_ADD, ATOMIC_CMP_SWAP and ATOMIC_SWAP nodes,
> and ATOMIC_LOAD_ADD_I{32,64}, ATOMIC_CMP_SWAP_I{32,64} and
> ATOMIC_SWAP_I{32,64} pseudo-instructions with custom inserters.
>
> - Replaces L[WD]ARX and ST[WD]CX pseudo-instructions with the
> actual PPC instructions they represent.
>
> - Removes CMP_UNRESERVE nodes and CMP_UNRES[wd]{,i} pseudo-
> instructions.
>
> Cheers,
> Gary
>
> -...
2008 Jul 02
2
[LLVMdev] Implementing llvm.atomic.cmp.swap.i32 on PowerPC
...that can span multiple basic
> blocks. See PPCTargetLowering::EmitInstrWithCustomInserter().
How does this look? It's a big patch, but it basically does this:
- Adds ATOMIC_LOAD_ADD, ATOMIC_CMP_SWAP and ATOMIC_SWAP nodes,
and ATOMIC_LOAD_ADD_I{32,64}, ATOMIC_CMP_SWAP_I{32,64} and
ATOMIC_SWAP_I{32,64} pseudo-instructions with custom inserters.
- Replaces L[WD]ARX and ST[WD]CX pseudo-instructions with the
actual PPC instructions they represent.
- Removes CMP_UNRESERVE nodes and CMP_UNRES[wd]{,i} pseudo-
instructions.
Cheers,
Gary
--
http://gbenson.net/
-------------- next part...
2008 Jun 30
0
[LLVMdev] Implementing llvm.atomic.cmp.swap.i32 on PowerPC
You need to insert new basic blocks and update CFG to accomplish this.
There is a hackish way to do this right now. Add a pseudo instruction
to represent this operation and mark it usesCustomDAGSchedInserter.
This means the intrinsic is mapped to a single (pseudo) node. But it
is then expanded into instructions that can span multiple basic
blocks. See
2008 Jun 30
2
[LLVMdev] Implementing llvm.atomic.cmp.swap.i32 on PowerPC
Chris Lattner wrote:
> 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