From: Prabhav Dogra Date: Fri, 7 Mar 2025 09:32:20 +0000 (+0000) Subject: internal/runtime/atomic: updated go assembler comments X-Git-Tag: go1.25rc1~783 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=04164e5f5a82eeaf09fedda14c90af5bb65a1627;p=gostls13.git internal/runtime/atomic: updated go assembler comments Updated comments in go assembler package Change-Id: I174e344ca45fae6ef70af2e0b29cd783b003b4c2 GitHub-Last-Rev: 8ab37208891e795561a943269ca82b1ce6e7eef5 GitHub-Pull-Request: golang/go#72048 Reviewed-on: https://go-review.googlesource.com/c/go/+/654478 Reviewed-by: Keith Randall Auto-Submit: Keith Randall Reviewed-by: Keith Randall Reviewed-by: David Chase Reviewed-by: PRABHAV DOGRA LUCI-TryBot-Result: Go LUCI --- diff --git a/src/internal/runtime/atomic/atomic_386.s b/src/internal/runtime/atomic/atomic_386.s index 58a56e63c0..e8745a1bb5 100644 --- a/src/internal/runtime/atomic/atomic_386.s +++ b/src/internal/runtime/atomic/atomic_386.s @@ -5,13 +5,14 @@ #include "textflag.h" #include "funcdata.h" -// bool Cas(int32 *val, int32 old, int32 new) +// func Cas(ptr *int32, old, new int32) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// }else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Cas(SB), NOSPLIT, $0-13 MOVL ptr+0(FP), BX MOVL old+4(FP), AX @@ -63,13 +64,13 @@ TEXT ·Xaddint32(SB), NOSPLIT, $0-12 TEXT ·Xaddint64(SB), NOSPLIT, $0-20 JMP ·Xadd64(SB) -// bool ·Cas64(uint64 *val, uint64 old, uint64 new) +// func Cas64(ptr *uint64, old, new uint64) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; +// if *ptr == old { +// *ptr = new +// return true // } else { -// return 0; +// return false // } TEXT ·Cas64(SB), NOSPLIT, $0-21 NO_LOCAL_POINTERS @@ -86,13 +87,14 @@ TEXT ·Cas64(SB), NOSPLIT, $0-21 SETEQ ret+20(FP) RET -// bool Casp1(void **p, void *old, void *new) +// func Casp1(ptr *unsafe.Pointer, old, new unsafe.Pointer) bool // Atomically: -// if(*p == old){ -// *p = new; -// return 1; -// }else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Casp1(SB), NOSPLIT, $0-13 MOVL ptr+0(FP), BX MOVL old+4(FP), AX diff --git a/src/internal/runtime/atomic/atomic_amd64.s b/src/internal/runtime/atomic/atomic_amd64.s index d6dc7a32d6..301725e6a9 100644 --- a/src/internal/runtime/atomic/atomic_amd64.s +++ b/src/internal/runtime/atomic/atomic_amd64.s @@ -19,13 +19,14 @@ TEXT ·Loadint32(SB), NOSPLIT, $0-12 TEXT ·Loadint64(SB), NOSPLIT, $0-16 JMP ·Load64(SB) -// bool Cas(int32 *val, int32 old, int32 new) +// func Cas(ptr *int32, old, new int32) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// } else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Cas(SB),NOSPLIT,$0-17 MOVQ ptr+0(FP), BX MOVL old+8(FP), AX @@ -35,13 +36,13 @@ TEXT ·Cas(SB),NOSPLIT,$0-17 SETEQ ret+16(FP) RET -// bool ·Cas64(uint64 *val, uint64 old, uint64 new) +// func Cas64(ptr *uint64, old, new uint64) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; +// if *ptr == old { +// *ptr = new +// return true // } else { -// return 0; +// return false // } TEXT ·Cas64(SB), NOSPLIT, $0-25 MOVQ ptr+0(FP), BX @@ -52,13 +53,14 @@ TEXT ·Cas64(SB), NOSPLIT, $0-25 SETEQ ret+24(FP) RET -// bool Casp1(void **val, void *old, void *new) +// func Casp1(ptr *unsafe.Pointer, old, new unsafe.Pointer) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// } else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Casp1(SB), NOSPLIT, $0-25 MOVQ ptr+0(FP), BX MOVQ old+8(FP), AX diff --git a/src/internal/runtime/atomic/atomic_arm.s b/src/internal/runtime/atomic/atomic_arm.s index 85cee049af..103f718a04 100644 --- a/src/internal/runtime/atomic/atomic_arm.s +++ b/src/internal/runtime/atomic/atomic_arm.s @@ -6,13 +6,14 @@ #include "textflag.h" #include "funcdata.h" -// bool armcas(int32 *val, int32 old, int32 new) +// func armcas(ptr *int32, old, new int32) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// }else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } // // To implement ·cas in sys_$GOOS_arm.s // using the native instructions, use: diff --git a/src/internal/runtime/atomic/atomic_arm64.s b/src/internal/runtime/atomic/atomic_arm64.s index 09f3b53c5c..360f7a2816 100644 --- a/src/internal/runtime/atomic/atomic_arm64.s +++ b/src/internal/runtime/atomic/atomic_arm64.s @@ -192,13 +192,14 @@ load_store_loop: RET #endif -// bool Cas(uint32 *ptr, uint32 old, uint32 new) +// func Cas(ptr *uint32, old, new uint32) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// } else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Cas(SB), NOSPLIT, $0-17 MOVD ptr+0(FP), R0 MOVW old+8(FP), R1 @@ -226,14 +227,14 @@ ok: RET #endif -// bool ·Cas64(uint64 *ptr, uint64 old, uint64 new) +// func Cas64(ptr *uint64, old, new uint64) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// } else { -// return 0; -// } +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Cas64(SB), NOSPLIT, $0-25 MOVD ptr+0(FP), R0 MOVD old+8(FP), R1 diff --git a/src/internal/runtime/atomic/atomic_loong64.s b/src/internal/runtime/atomic/atomic_loong64.s index 5222b77e77..95d3e2bdab 100644 --- a/src/internal/runtime/atomic/atomic_loong64.s +++ b/src/internal/runtime/atomic/atomic_loong64.s @@ -5,13 +5,14 @@ #include "go_asm.h" #include "textflag.h" -// bool cas(uint32 *ptr, uint32 old, uint32 new) +// func Cas(ptr *int32, old, new int32) bool // Atomically: -// if(*ptr == old){ -// *ptr = new; -// return 1; -// } else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Cas(SB), NOSPLIT, $0-17 MOVV ptr+0(FP), R4 MOVW old+8(FP), R5 @@ -45,13 +46,13 @@ cas_fail1: MOVV $0, R4 JMP -4(PC) -// bool cas64(uint64 *ptr, uint64 old, uint64 new) +// func Cas64(ptr *uint64, old, new uint64) bool // Atomically: -// if(*ptr == old){ -// *ptr = new; -// return 1; +// if *ptr == old { +// *ptr = new +// return true // } else { -// return 0; +// return false // } TEXT ·Cas64(SB), NOSPLIT, $0-25 MOVV ptr+0(FP), R4 @@ -119,13 +120,14 @@ TEXT ·Xaddint32(SB),NOSPLIT,$0-20 TEXT ·Xaddint64(SB), NOSPLIT, $0-24 JMP ·Xadd64(SB) -// bool casp(void **val, void *old, void *new) +// func Casp(ptr *unsafe.Pointer, old, new unsafe.Pointer) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// } else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Casp1(SB), NOSPLIT, $0-25 JMP ·Cas64(SB) diff --git a/src/internal/runtime/atomic/atomic_mips64x.s b/src/internal/runtime/atomic/atomic_mips64x.s index ce0b5c2f73..ec56cb7c68 100644 --- a/src/internal/runtime/atomic/atomic_mips64x.s +++ b/src/internal/runtime/atomic/atomic_mips64x.s @@ -8,13 +8,14 @@ #define SYNC WORD $0xf -// bool cas(uint32 *ptr, uint32 old, uint32 new) +// func cas(ptr *uint32, old, new uint32) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// } else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Cas(SB), NOSPLIT, $0-17 MOVV ptr+0(FP), R1 MOVW old+8(FP), R2 @@ -34,13 +35,13 @@ cas_fail: MOVV $0, R1 JMP -4(PC) -// bool cas64(uint64 *ptr, uint64 old, uint64 new) +// func Cas64(ptr *uint64, old, new uint64) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; +// if *ptr == old { +// *ptr = new +// return true // } else { -// return 0; +// return false // } TEXT ·Cas64(SB), NOSPLIT, $0-25 MOVV ptr+0(FP), R1 @@ -103,13 +104,14 @@ TEXT ·Xaddint32(SB), NOSPLIT, $0-20 TEXT ·Xaddint64(SB), NOSPLIT, $0-24 JMP ·Xadd64(SB) -// bool casp(void **val, void *old, void *new) +// func Casp1(ptr *unsafe.Pointer, old, new unsafe.Pointer) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// } else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Casp1(SB), NOSPLIT, $0-25 JMP ·Cas64(SB) diff --git a/src/internal/runtime/atomic/atomic_mipsx.s b/src/internal/runtime/atomic/atomic_mipsx.s index b725016f7b..e4f80c913e 100644 --- a/src/internal/runtime/atomic/atomic_mipsx.s +++ b/src/internal/runtime/atomic/atomic_mipsx.s @@ -6,13 +6,14 @@ #include "textflag.h" -// bool Cas(int32 *val, int32 old, int32 new) +// func Cas(ptr *int32, old, new int32) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// } else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Cas(SB),NOSPLIT,$0-13 MOVW ptr+0(FP), R1 MOVW old+4(FP), R2 diff --git a/src/internal/runtime/atomic/atomic_ppc64x.s b/src/internal/runtime/atomic/atomic_ppc64x.s index 184a30c970..bff7d1902a 100644 --- a/src/internal/runtime/atomic/atomic_ppc64x.s +++ b/src/internal/runtime/atomic/atomic_ppc64x.s @@ -78,13 +78,14 @@ TEXT ·LoadAcq64(SB),NOSPLIT|NOFRAME,$-8-16 MOVD R3, ret+8(FP) RET -// bool cas(uint32 *ptr, uint32 old, uint32 new) +// func Cas(ptr *int32, old, new int32) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// } else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Cas(SB), NOSPLIT, $0-17 MOVD ptr+0(FP), R3 MOVWZ old+8(FP), R4 @@ -105,13 +106,13 @@ cas_fail: MOVB R0, ret+16(FP) RET -// bool ·Cas64(uint64 *ptr, uint64 old, uint64 new) +// func Cas64(ptr *uint64, old, new uint64) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; +// if *ptr == old { +// *ptr = new +// return true // } else { -// return 0; +// return false // } TEXT ·Cas64(SB), NOSPLIT, $0-25 MOVD ptr+0(FP), R3 @@ -196,13 +197,14 @@ TEXT ·Xaddint32(SB), NOSPLIT, $0-20 TEXT ·Xaddint64(SB), NOSPLIT, $0-24 BR ·Xadd64(SB) -// bool casp(void **val, void *old, void *new) +// func Casp1(ptr *unsafe.Pointer, old, new unsafe.Pointer) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// } else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Casp1(SB), NOSPLIT, $0-25 BR ·Cas64(SB) diff --git a/src/internal/runtime/atomic/atomic_riscv64.s b/src/internal/runtime/atomic/atomic_riscv64.s index 0aa118cc78..f68a607a8c 100644 --- a/src/internal/runtime/atomic/atomic_riscv64.s +++ b/src/internal/runtime/atomic/atomic_riscv64.s @@ -32,12 +32,12 @@ // func Cas(ptr *uint64, old, new uint64) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// } else { -// return 0; -// } +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Cas(SB), NOSPLIT, $0-17 MOV ptr+0(FP), A0 MOVW old+8(FP), A1 diff --git a/src/internal/runtime/atomic/sys_nonlinux_arm.s b/src/internal/runtime/atomic/sys_nonlinux_arm.s index b55bf908a2..43a41d4edc 100644 --- a/src/internal/runtime/atomic/sys_nonlinux_arm.s +++ b/src/internal/runtime/atomic/sys_nonlinux_arm.s @@ -7,13 +7,14 @@ #include "textflag.h" // TODO(minux): this is only valid for ARMv6+ -// bool armcas(int32 *val, int32 old, int32 new) +// func armcas(ptr *int32, old int32, new int32) bool // Atomically: -// if(*val == old){ -// *val = new; -// return 1; -// }else -// return 0; +// if *ptr == old { +// *ptr = new +// return true +// } else { +// return false +// } TEXT ·Cas(SB),NOSPLIT,$0 JMP ·armcas(SB)