NEON Register use for FP32 and FP16 GEMM/IGEMM comments updated
PiperOrigin-RevId: 433417065
diff --git a/src/f32-gemm/6x8-aarch64-neonfma-cortex-a53.S.in b/src/f32-gemm/6x8-aarch64-neonfma-cortex-a53.S.in
index 93becb8..70af982 100644
--- a/src/f32-gemm/6x8-aarch64-neonfma-cortex-a53.S.in
+++ b/src/f32-gemm/6x8-aarch64-neonfma-cortex-a53.S.in
@@ -23,41 +23,27 @@
# d8-d15, x19-x30 need to be preserved if used. x18 is reserved by the OS.
-# A pointers
-# x3 a0
-# x9 a1
-# x10 a2
-# x11 a3
-# x12 a4
-# x4 a5
+# Register usage
+# A0 x3 v0 v3
+# A1 x9 v0[1] v3[1]
+# A2 x10 v1 v4
+# A3 x11 v1[1] v4[1]
+# A4 x12 v2 v5
+# A5 x4 v2[1] v5[1]
-# C pointers
-# x6 c0
-# x16 c1
-# x17 c2
-# x14 c3
-# x13 c4
-# x7 c5
+# B x5 v12 v13 v14 v15 second set of B
+# B v16 v17 v18 v19 first set
-# x8 temporary vector shadow register
+# C x6 v20 v21
+# C x16 v22 v23
+# C x17 v24 v25
+# C x14 v26 v27
+# C x13 v28 v29
+# C x7 v30 v31
-# Vector register usage
-# A0 v0 v3
-# A1 v0[1] v3[1]
-# A2 v1 v4
-# A3 v1[1] v4[1]
-# A4 v2 v5
-# A5 v2[1] v5[1]
-# B v12 v13 v14 v15 second set of B
-# B v16 v17 v18 v19 first set
-# C v20 v21
-# C v22 v23
-# C v24 v25
-# C v26 v27
-# C v28 v29
-# C v30 v31
# Clamp v6 v7
# unused A v8 v9 v10 v11
+# x8 temporary vector shadow register
BEGIN_FUNCTION xnn_f32_gemm${"inc" if INC else ""}_minmax_ukernel_6x8__aarch64_neonfma${"_prfm" if PREFETCH else ""}_cortex_a53
diff --git a/src/f32-gemm/6x8-aarch64-neonfma-cortex-a55.S.in b/src/f32-gemm/6x8-aarch64-neonfma-cortex-a55.S.in
index b305bae..5341d5f 100644
--- a/src/f32-gemm/6x8-aarch64-neonfma-cortex-a55.S.in
+++ b/src/f32-gemm/6x8-aarch64-neonfma-cortex-a55.S.in
@@ -23,41 +23,27 @@
# d8-d15, x19-x30 need to be preserved if used. x18 is reserved by the OS.
-# A pointers
-# x3 a0
-# x9 a1
-# x10 a2
-# x11 a3
-# x12 a4
-# x4 a5
+# Register usage
+# A0 x3 v0 v3
+# A1 x9 v0[1] v3[1]
+# A2 x10 v1 v4
+# A3 x11 v1[1] v4[1]
+# A4 x12 v2 v5
+# A5 x4 v2[1] v5[1]
-# C pointers
-# x6 c0
-# x16 c1
-# x17 c2
-# x14 c3
-# x13 c4
-# x7 c5
+# B x5 v12 v13 v14 v15 second set of B
+# B v16 v17 v18 v19 first set
-# x8 temporary vector shadow register
+# C0 x6 v20 v21
+# C1 x16 v22 v23
+# C2 x17 v24 v25
+# C3 x14 v26 v27
+# C4 x13 v28 v29
+# C5 x7 v30 v31
-# Vector register usage
-# A0 v0 v3
-# A1 v0[1] v3[1]
-# A2 v1 v4
-# A3 v1[1] v4[1]
-# A4 v2 v5
-# A5 v2[1] v5[1]
-# B v12 v13 v14 v15 second set of B
-# B v16 v17 v18 v19 first set
-# C v20 v21
-# C v22 v23
-# C v24 v25
-# C v26 v27
-# C v28 v29
-# C v30 v31
# Clamp v6 v7
# unused A v8 v9 v10 v11
+# x8 temporary vector shadow register
BEGIN_FUNCTION xnn_f32_gemm${"inc" if INC else ""}_minmax_ukernel_6x8__aarch64_neonfma_cortex_a55
diff --git a/src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-cortex-a53.S b/src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-cortex-a53.S
index 0d4d0ae..ee7cc3e 100644
--- a/src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-cortex-a53.S
+++ b/src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-cortex-a53.S
@@ -24,41 +24,27 @@
# d8-d15, x19-x30 need to be preserved if used. x18 is reserved by the OS.
-# A pointers
-# x3 a0
-# x9 a1
-# x10 a2
-# x11 a3
-# x12 a4
-# x4 a5
+# Register usage
+# A0 x3 v0 v3
+# A1 x9 v0[1] v3[1]
+# A2 x10 v1 v4
+# A3 x11 v1[1] v4[1]
+# A4 x12 v2 v5
+# A5 x4 v2[1] v5[1]
-# C pointers
-# x6 c0
-# x16 c1
-# x17 c2
-# x14 c3
-# x13 c4
-# x7 c5
+# B x5 v12 v13 v14 v15 second set of B
+# B v16 v17 v18 v19 first set
-# x8 temporary vector shadow register
+# C x6 v20 v21
+# C x16 v22 v23
+# C x17 v24 v25
+# C x14 v26 v27
+# C x13 v28 v29
+# C x7 v30 v31
-# Vector register usage
-# A0 v0 v3
-# A1 v0[1] v3[1]
-# A2 v1 v4
-# A3 v1[1] v4[1]
-# A4 v2 v5
-# A5 v2[1] v5[1]
-# B v12 v13 v14 v15 second set of B
-# B v16 v17 v18 v19 first set
-# C v20 v21
-# C v22 v23
-# C v24 v25
-# C v26 v27
-# C v28 v29
-# C v30 v31
# Clamp v6 v7
# unused A v8 v9 v10 v11
+# x8 temporary vector shadow register
BEGIN_FUNCTION xnn_f32_gemminc_minmax_ukernel_6x8__aarch64_neonfma_cortex_a53
diff --git a/src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-cortex-a55.S b/src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-cortex-a55.S
index b2d317d..7fec2cb 100644
--- a/src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-cortex-a55.S
+++ b/src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-cortex-a55.S
@@ -24,41 +24,27 @@
# d8-d15, x19-x30 need to be preserved if used. x18 is reserved by the OS.
-# A pointers
-# x3 a0
-# x9 a1
-# x10 a2
-# x11 a3
-# x12 a4
-# x4 a5
+# Register usage
+# A0 x3 v0 v3
+# A1 x9 v0[1] v3[1]
+# A2 x10 v1 v4
+# A3 x11 v1[1] v4[1]
+# A4 x12 v2 v5
+# A5 x4 v2[1] v5[1]
-# C pointers
-# x6 c0
-# x16 c1
-# x17 c2
-# x14 c3
-# x13 c4
-# x7 c5
+# B x5 v12 v13 v14 v15 second set of B
+# B v16 v17 v18 v19 first set
-# x8 temporary vector shadow register
+# C0 x6 v20 v21
+# C1 x16 v22 v23
+# C2 x17 v24 v25
+# C3 x14 v26 v27
+# C4 x13 v28 v29
+# C5 x7 v30 v31
-# Vector register usage
-# A0 v0 v3
-# A1 v0[1] v3[1]
-# A2 v1 v4
-# A3 v1[1] v4[1]
-# A4 v2 v5
-# A5 v2[1] v5[1]
-# B v12 v13 v14 v15 second set of B
-# B v16 v17 v18 v19 first set
-# C v20 v21
-# C v22 v23
-# C v24 v25
-# C v26 v27
-# C v28 v29
-# C v30 v31
# Clamp v6 v7
# unused A v8 v9 v10 v11
+# x8 temporary vector shadow register
BEGIN_FUNCTION xnn_f32_gemminc_minmax_ukernel_6x8__aarch64_neonfma_cortex_a55
diff --git a/src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-cortex-a53.S b/src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-cortex-a53.S
index e27d2b3..e7a21a1 100644
--- a/src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-cortex-a53.S
+++ b/src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-cortex-a53.S
@@ -23,41 +23,27 @@
# d8-d15, x19-x30 need to be preserved if used. x18 is reserved by the OS.
-# A pointers
-# x3 a0
-# x9 a1
-# x10 a2
-# x11 a3
-# x12 a4
-# x4 a5
+# Register usage
+# A0 x3 v0 v3
+# A1 x9 v0[1] v3[1]
+# A2 x10 v1 v4
+# A3 x11 v1[1] v4[1]
+# A4 x12 v2 v5
+# A5 x4 v2[1] v5[1]
-# C pointers
-# x6 c0
-# x16 c1
-# x17 c2
-# x14 c3
-# x13 c4
-# x7 c5
+# B x5 v12 v13 v14 v15 second set of B
+# B v16 v17 v18 v19 first set
-# x8 temporary vector shadow register
+# C x6 v20 v21
+# C x16 v22 v23
+# C x17 v24 v25
+# C x14 v26 v27
+# C x13 v28 v29
+# C x7 v30 v31
-# Vector register usage
-# A0 v0 v3
-# A1 v0[1] v3[1]
-# A2 v1 v4
-# A3 v1[1] v4[1]
-# A4 v2 v5
-# A5 v2[1] v5[1]
-# B v12 v13 v14 v15 second set of B
-# B v16 v17 v18 v19 first set
-# C v20 v21
-# C v22 v23
-# C v24 v25
-# C v26 v27
-# C v28 v29
-# C v30 v31
# Clamp v6 v7
# unused A v8 v9 v10 v11
+# x8 temporary vector shadow register
BEGIN_FUNCTION xnn_f32_gemm_minmax_ukernel_6x8__aarch64_neonfma_cortex_a53
diff --git a/src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-cortex-a55.S b/src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-cortex-a55.S
index 1531e39..d86be8a 100644
--- a/src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-cortex-a55.S
+++ b/src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-cortex-a55.S
@@ -23,41 +23,27 @@
# d8-d15, x19-x30 need to be preserved if used. x18 is reserved by the OS.
-# A pointers
-# x3 a0
-# x9 a1
-# x10 a2
-# x11 a3
-# x12 a4
-# x4 a5
+# Register usage
+# A0 x3 v0 v3
+# A1 x9 v0[1] v3[1]
+# A2 x10 v1 v4
+# A3 x11 v1[1] v4[1]
+# A4 x12 v2 v5
+# A5 x4 v2[1] v5[1]
-# C pointers
-# x6 c0
-# x16 c1
-# x17 c2
-# x14 c3
-# x13 c4
-# x7 c5
+# B x5 v12 v13 v14 v15 second set of B
+# B v16 v17 v18 v19 first set
-# x8 temporary vector shadow register
+# C0 x6 v20 v21
+# C1 x16 v22 v23
+# C2 x17 v24 v25
+# C3 x14 v26 v27
+# C4 x13 v28 v29
+# C5 x7 v30 v31
-# Vector register usage
-# A0 v0 v3
-# A1 v0[1] v3[1]
-# A2 v1 v4
-# A3 v1[1] v4[1]
-# A4 v2 v5
-# A5 v2[1] v5[1]
-# B v12 v13 v14 v15 second set of B
-# B v16 v17 v18 v19 first set
-# C v20 v21
-# C v22 v23
-# C v24 v25
-# C v26 v27
-# C v28 v29
-# C v30 v31
# Clamp v6 v7
# unused A v8 v9 v10 v11
+# x8 temporary vector shadow register
BEGIN_FUNCTION xnn_f32_gemm_minmax_ukernel_6x8__aarch64_neonfma_cortex_a55
diff --git a/src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-prfm-cortex-a53.S b/src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-prfm-cortex-a53.S
index cc12d1b..7877b9e 100644
--- a/src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-prfm-cortex-a53.S
+++ b/src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-prfm-cortex-a53.S
@@ -23,41 +23,27 @@
# d8-d15, x19-x30 need to be preserved if used. x18 is reserved by the OS.
-# A pointers
-# x3 a0
-# x9 a1
-# x10 a2
-# x11 a3
-# x12 a4
-# x4 a5
+# Register usage
+# A0 x3 v0 v3
+# A1 x9 v0[1] v3[1]
+# A2 x10 v1 v4
+# A3 x11 v1[1] v4[1]
+# A4 x12 v2 v5
+# A5 x4 v2[1] v5[1]
-# C pointers
-# x6 c0
-# x16 c1
-# x17 c2
-# x14 c3
-# x13 c4
-# x7 c5
+# B x5 v12 v13 v14 v15 second set of B
+# B v16 v17 v18 v19 first set
-# x8 temporary vector shadow register
+# C x6 v20 v21
+# C x16 v22 v23
+# C x17 v24 v25
+# C x14 v26 v27
+# C x13 v28 v29
+# C x7 v30 v31
-# Vector register usage
-# A0 v0 v3
-# A1 v0[1] v3[1]
-# A2 v1 v4
-# A3 v1[1] v4[1]
-# A4 v2 v5
-# A5 v2[1] v5[1]
-# B v12 v13 v14 v15 second set of B
-# B v16 v17 v18 v19 first set
-# C v20 v21
-# C v22 v23
-# C v24 v25
-# C v26 v27
-# C v28 v29
-# C v30 v31
# Clamp v6 v7
# unused A v8 v9 v10 v11
+# x8 temporary vector shadow register
BEGIN_FUNCTION xnn_f32_gemm_minmax_ukernel_6x8__aarch64_neonfma_prfm_cortex_a53
diff --git a/src/f32-igemm/6x8-aarch64-neonfma-cortex-a53.S.in b/src/f32-igemm/6x8-aarch64-neonfma-cortex-a53.S.in
index b59cd3b..3dfac14 100644
--- a/src/f32-igemm/6x8-aarch64-neonfma-cortex-a53.S.in
+++ b/src/f32-igemm/6x8-aarch64-neonfma-cortex-a53.S.in
@@ -21,41 +21,27 @@
# d8-d15, x19-x30 need to be preserved if used. x18 is reserved by the OS.
-# A pointers
-# x14 a0
-# x15 a1
-# x20 a2
-# x21 a3
-# x22 a4
-# x23 a5
+# Register usage
+# A0 x14 v0 v3
+# A1 x15 v0[1] v3[1]
+# A2 x20 v1 v4
+# A3 x21 v1[1] v4[1]
+# A4 x22 v2 v5
+# A5 x23 v2[1] v5[1]
-# C pointers
-# x6 c0
-# x16 c1
-# x17 c2
-# x10 c3
-# x13 c4
-# x7 c5
+# B x5 v12 v13 v14 v15 second set of B
+# B v16 v17 v18 v19 first set
-# x19 temporary vector shadow register
+# C0 x6 v20 v21
+# C1 x16 v22 v23
+# C2 x17 v24 v25
+# C3 x10 v26 v27
+# C4 x13 v28 v29
+# C5 x7 v30 v31
-# Vector register usage
-# A0 v0 v3
-# A1 v0[1] v3[1]
-# A2 v1 v4
-# A3 v1[1] v4[1]
-# A4 v2 v5
-# A5 v2[1] v5[1]
-# B v12 v13 v14 v15 second set of B
-# B v16 v17 v18 v19 first set
-# C v20 v21
-# C v22 v23
-# C v24 v25
-# C v26 v27
-# C v28 v29
-# C v30 v31
# Clamp v6 v7
# unused A v8 v9 v10 v11
+# x19 temporary vector shadow register
BEGIN_FUNCTION xnn_f32_igemm_minmax_ukernel_6x8__aarch64_neonfma${"_prfm" if PREFETCH else ""}_cortex_a53
diff --git a/src/f32-igemm/6x8-minmax-aarch64-neonfma-cortex-a55.S b/src/f32-igemm/6x8-minmax-aarch64-neonfma-cortex-a55.S
index e9e6857..8f97f34 100644
--- a/src/f32-igemm/6x8-minmax-aarch64-neonfma-cortex-a55.S
+++ b/src/f32-igemm/6x8-minmax-aarch64-neonfma-cortex-a55.S
@@ -21,41 +21,27 @@
# d8-d15, x19-x30 need to be preserved if used. x18 is reserved by the OS.
-# A pointers
-# x14 a0
-# x15 a1
-# x20 a2
-# x21 a3
-# x22 a4
-# x23 a5
+# Register usage
+# A0 x14 v0 v3
+# A1 x15 v0[1] v3[1]
+# A2 x20 v1 v4
+# A3 x21 v1[1] v4[1]
+# A4 x22 v2 v5
+# A5 x23 v2[1] v5[1]
-# C pointers
-# x6 c0
-# x16 c1
-# x17 c2
-# x10 c3
-# x13 c4
-# x7 c5
+# B x5 v12 v13 v14 v15 second set of B
+# B v16 v17 v18 v19 first set
-# x19 temporary vector shadow register
+# C0 x6 v20 v21
+# C1 x16 v22 v23
+# C2 x17 v24 v25
+# C3 x10 v26 v27
+# C4 x13 v28 v29
+# C5 x7 v30 v31
-# Vector register usage
-# A0 v0 v3
-# A1 v0[1] v3[1]
-# A2 v1 v4
-# A3 v1[1] v4[1]
-# A4 v2 v5
-# A5 v2[1] v5[1]
-# B v12 v13 v14 v15 second set of B
-# B v16 v17 v18 v19 first set
-# C v20 v21
-# C v22 v23
-# C v24 v25
-# C v26 v27
-# C v28 v29
-# C v30 v31
# Clamp v6 v7
# unused A v8 v9 v10 v11
+# x19 temporary vector shadow register
BEGIN_FUNCTION xnn_f32_igemm_minmax_ukernel_6x8__aarch64_neonfma_cortex_a55
diff --git a/src/f32-igemm/gen/6x8-minmax-aarch64-neonfma-cortex-a53.S b/src/f32-igemm/gen/6x8-minmax-aarch64-neonfma-cortex-a53.S
index 054577a..bfd7f78 100644
--- a/src/f32-igemm/gen/6x8-minmax-aarch64-neonfma-cortex-a53.S
+++ b/src/f32-igemm/gen/6x8-minmax-aarch64-neonfma-cortex-a53.S
@@ -25,41 +25,27 @@
# d8-d15, x19-x30 need to be preserved if used. x18 is reserved by the OS.
-# A pointers
-# x14 a0
-# x15 a1
-# x20 a2
-# x21 a3
-# x22 a4
-# x23 a5
+# Register usage
+# A0 x14 v0 v3
+# A1 x15 v0[1] v3[1]
+# A2 x20 v1 v4
+# A3 x21 v1[1] v4[1]
+# A4 x22 v2 v5
+# A5 x23 v2[1] v5[1]
-# C pointers
-# x6 c0
-# x16 c1
-# x17 c2
-# x10 c3
-# x13 c4
-# x7 c5
+# B x5 v12 v13 v14 v15 second set of B
+# B v16 v17 v18 v19 first set
-# x19 temporary vector shadow register
+# C0 x6 v20 v21
+# C1 x16 v22 v23
+# C2 x17 v24 v25
+# C3 x10 v26 v27
+# C4 x13 v28 v29
+# C5 x7 v30 v31
-# Vector register usage
-# A0 v0 v3
-# A1 v0[1] v3[1]
-# A2 v1 v4
-# A3 v1[1] v4[1]
-# A4 v2 v5
-# A5 v2[1] v5[1]
-# B v12 v13 v14 v15 second set of B
-# B v16 v17 v18 v19 first set
-# C v20 v21
-# C v22 v23
-# C v24 v25
-# C v26 v27
-# C v28 v29
-# C v30 v31
# Clamp v6 v7
# unused A v8 v9 v10 v11
+# x19 temporary vector shadow register
BEGIN_FUNCTION xnn_f32_igemm_minmax_ukernel_6x8__aarch64_neonfma_cortex_a53
diff --git a/src/f32-igemm/gen/6x8-minmax-aarch64-neonfma-prfm-cortex-a53.S b/src/f32-igemm/gen/6x8-minmax-aarch64-neonfma-prfm-cortex-a53.S
index 79239c7..931df7f 100644
--- a/src/f32-igemm/gen/6x8-minmax-aarch64-neonfma-prfm-cortex-a53.S
+++ b/src/f32-igemm/gen/6x8-minmax-aarch64-neonfma-prfm-cortex-a53.S
@@ -25,41 +25,27 @@
# d8-d15, x19-x30 need to be preserved if used. x18 is reserved by the OS.
-# A pointers
-# x14 a0
-# x15 a1
-# x20 a2
-# x21 a3
-# x22 a4
-# x23 a5
+# Register usage
+# A0 x14 v0 v3
+# A1 x15 v0[1] v3[1]
+# A2 x20 v1 v4
+# A3 x21 v1[1] v4[1]
+# A4 x22 v2 v5
+# A5 x23 v2[1] v5[1]
-# C pointers
-# x6 c0
-# x16 c1
-# x17 c2
-# x10 c3
-# x13 c4
-# x7 c5
+# B x5 v12 v13 v14 v15 second set of B
+# B v16 v17 v18 v19 first set
-# x19 temporary vector shadow register
+# C0 x6 v20 v21
+# C1 x16 v22 v23
+# C2 x17 v24 v25
+# C3 x10 v26 v27
+# C4 x13 v28 v29
+# C5 x7 v30 v31
-# Vector register usage
-# A0 v0 v3
-# A1 v0[1] v3[1]
-# A2 v1 v4
-# A3 v1[1] v4[1]
-# A4 v2 v5
-# A5 v2[1] v5[1]
-# B v12 v13 v14 v15 second set of B
-# B v16 v17 v18 v19 first set
-# C v20 v21
-# C v22 v23
-# C v24 v25
-# C v26 v27
-# C v28 v29
-# C v30 v31
# Clamp v6 v7
# unused A v8 v9 v10 v11
+# x19 temporary vector shadow register
BEGIN_FUNCTION xnn_f32_igemm_minmax_ukernel_6x8__aarch64_neonfma_prfm_cortex_a53