• erifan01's avatar
    cmd/asm: add arm64 v8.1 atomic instructions · 44808985
    erifan01 authored
    This change adds several arm64 v8.1 atomic instructions and test cases.
    They are LDADDAx, LDADDLx, LDANDAx, LDANDALx, LDANDLx, LDEORAx, LDEORALx,
    LDEORLx, LDORAx, LDORALx, LDORLx, SWPAx and SWPLx. Their form is consistent
    with the form of the existing atomic instructions.
    
    For instructions STXRx, STLXRx, STXPx and STLXPx, the second destination
    register can't be RSP. This CL also adds a check for this.
    
    LDADDx Rs, (Rb), Rt: *Rb -> Rt, Rs + *Rb -> *Rb
    LDANDx Rs, (Rb), Rt: *Rb -> Rt, Rs AND NOT(*Rb) -> *Rb
    LDEORx Rs, (Rb), Rt: *Rb -> Rt, Rs EOR *Rb -> *Rb
    LDORx  Rs, (Rb), Rt: *Rb -> Rt, Rs OR *Rb -> *Rb
    
    Change-Id: I9f9b0245958cb57ab7d88c66fb9159b23b9017fd
    Reviewed-on: https://go-review.googlesource.com/c/go/+/157001Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
    Run-TryBot: Cherry Zhang <cherryyz@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    44808985
anames.go 4.85 KB