Hi, I'm currently learning how to write Go assembly on arm64 and I made the following functions:
TEXT ·AddVector16(SB),NOSPLIT,$0-48 MOVD a+0(FP), R0 MOVD a+8(FP), R1 MOVD a+16(FP), R2 MOVD a+24(FP), R3 VMOV R0, V0.D[0] VMOV R1, V0.D[1] VMOV R2, V1.D[0] VMOV R3, V1.D[1] VADD V1.B16, V0.B16, V0.B16 VMOV V0.D[0], R0 VMOV V0.D[1], R1 MOVD R0, ret+32(FP) MOVD R1, ret+40(FP) RET TEXT ·AddVector32(SB),NOSPLIT,$0-96 MOVD a+0(FP), R0 MOVD a+8(FP), R1 MOVD a+16(FP), R2 MOVD a+24(FP), R3 MOVD a+32(FP), R4 MOVD a+40(FP), R5 MOVD a+48(FP), R6 MOVD a+56(FP), R7 VMOV R0, V0.D[0] VMOV R1, V0.D[1] VMOV R2, V1.D[0] VMOV R3, V1.D[1] VMOV R4, V2.D[0] VMOV R5, V2.D[1] VMOV R6, V3.D[0] VMOV R7, V3.D[1] VADD V2.B16, V0.B16, V0.B16 VADD V3.B16, V1.B16, V1.B16 VMOV V0.D[0], R0 VMOV V0.D[1], R1 VMOV V1.D[0], R2 VMOV V1.D[1], R3 MOVD R0, ret+64(FP) MOVD R1, ret+72(FP) MOVD R2, ret+80(FP) MOVD R3, ret+88(FP) RET While these work, I'm forced to add the 16 and 32 suffixes. Is there any way to have only one function name and link the assembly to something like: type Uint8x16 [16]uint8 type Uint8x32 [32]uint8 //go:noescape func AddVector[T Uint8x16 | Uint8x32](a, b T) T If there is let me know, otherwise is there some other alternatives? Btw any feedback on the assembly is welcome, I'm new to it. -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/3224bd47-2747-4e1d-bbc5-4a5c4a300f85n%40googlegroups.com.