diff options
| author | Dale Johannesen <dalej@apple.com> | 2008-08-22 03:49:10 +0000 |
|---|---|---|
| committer | Dale Johannesen <dalej@apple.com> | 2008-08-22 03:49:10 +0000 |
| commit | dec51704edaf2b05296009a0b66089b4940eb152 (patch) | |
| tree | 2ac2203f1ff338971b9be3087f172dbb37813745 /llvm/lib/Target/PowerPC/PPCInstrInfo.td | |
| parent | 8af2d655ab4790bad960fbbf9f26115c2a6810d1 (diff) | |
| download | bcm5719-llvm-dec51704edaf2b05296009a0b66089b4940eb152.tar.gz bcm5719-llvm-dec51704edaf2b05296009a0b66089b4940eb152.zip | |
Rewrite ppc code generated for __sync_{bool|val}_compare_and_swap
so that lwarx and stwcx are always executed the same number of times.
This is important for performance, I'm told.
llvm-svn: 55163
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCInstrInfo.td')
| -rw-r--r-- | llvm/lib/Target/PowerPC/PPCInstrInfo.td | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCInstrInfo.td b/llvm/lib/Target/PowerPC/PPCInstrInfo.td index b4b6080a04e..d8a064625d2 100644 --- a/llvm/lib/Target/PowerPC/PPCInstrInfo.td +++ b/llvm/lib/Target/PowerPC/PPCInstrInfo.td @@ -553,15 +553,18 @@ let usesCustomDAGSchedInserter = 1 in { (outs GPRC:$dst), (ins memrr:$ptr, GPRC:$incr), "${:comment} ATOMIC_LOAD_ADD_I32 PSEUDO!", [(set GPRC:$dst, (PPCatomic_load_add xoaddr:$ptr, GPRC:$incr))]>; - def ATOMIC_CMP_SWAP_I32 : Pseudo< - (outs GPRC:$dst), (ins memrr:$ptr, GPRC:$old, GPRC:$new), - "${:comment} ATOMIC_CMP_SWAP_I32 PSEUDO!", - [(set GPRC:$dst, (PPCatomic_cmp_swap xoaddr:$ptr, GPRC:$old, GPRC:$new))]>; def ATOMIC_SWAP_I32 : Pseudo< (outs GPRC:$dst), (ins memrr:$ptr, GPRC:$new), "${:comment} ATOMIC_SWAP_I32 PSEUDO!", [(set GPRC:$dst, (PPCatomic_swap xoaddr:$ptr, GPRC:$new))]>; } + let Uses = [CR0, CR1] in { + def ATOMIC_CMP_SWAP_I32 : Pseudo< + (outs GPRC:$dst), (ins memrr:$ptr, GPRC:$old, GPRC:$new), + "${:comment} ATOMIC_CMP_SWAP_I32 PSEUDO!", + [(set GPRC:$dst, + (PPCatomic_cmp_swap xoaddr:$ptr, GPRC:$old, GPRC:$new))]>; + } } // Instructions to support atomic operations |

