cmd/compile: provide Add/Cas/Exchange atomic intrinsics on riscv64

Provide Add32, Add64, Cas32, Cas64, Exchange32 and Exchange64 atomic
intrinsics on riscv64.

Updates #36765

Change-Id: I9a3b7d2ce3d49f699171fd76a0fed891d149a6bb
Reviewed-on: https://go-review.googlesource.com/c/go/+/223559
Run-TryBot: Joel Sing <joel@sing.id.au>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
Joel Sing 2020-03-16 02:51:54 +11:00
parent 9f343b1942
commit efb0ac4ce6
6 changed files with 273 additions and 10 deletions

View file

@ -47,6 +47,24 @@ func rewriteValueRISCV64(v *Value) bool {
case OpAndB:
v.Op = OpRISCV64AND
return true
case OpAtomicAdd32:
v.Op = OpRISCV64LoweredAtomicAdd32
return true
case OpAtomicAdd64:
v.Op = OpRISCV64LoweredAtomicAdd64
return true
case OpAtomicCompareAndSwap32:
v.Op = OpRISCV64LoweredAtomicCas32
return true
case OpAtomicCompareAndSwap64:
v.Op = OpRISCV64LoweredAtomicCas64
return true
case OpAtomicExchange32:
v.Op = OpRISCV64LoweredAtomicExchange32
return true
case OpAtomicExchange64:
v.Op = OpRISCV64LoweredAtomicExchange64
return true
case OpAtomicLoad32:
v.Op = OpRISCV64LoweredAtomicLoad32
return true