[llvm] [msan] Handle NEON matrix multiplication (integral) (PR #174510)

Florian Mayer via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 14 09:47:12 PST 2026


================
@@ -5350,6 +5350,98 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
     }
   }
 
+  // <4 x i32> @llvm.aarch64.neon.smmla.v4i32.v16i8
+  //               (<4 x i32> %R, <16 x i8> %X, <16 x i8> %Y)
+  // <4 x i32> @llvm.aarch64.neon.ummla.v4i32.v16i8
+  //               (<4 x i32> %R, <16 x i8> %X, <16 x i8> %Y)
+  // <4 x i32> @llvm.aarch64.neon.usmmla.v4i32.v16i8
+  //               (<4 x i32> R%, <16 x i8> %X, <16 x i8> %Y)
+  //
+  // Note:
+  // - < 4 x *> is a 2x2 matrix
+  // - <16 x *> is a 2x8 matrix and 8x2 matrix respectively
+  //
+  // The general shadow propagation approach is:
+  // 1) get the shadows of the input matrices
+  // 2) change the shadow values to 0x1 if the corresponding value is fully
+  //    initialized, and 0x0 otherwise
+  // 3) perform a matrix multiplication on the shadows. The output will be a 2x2
+  //    matrix, where a value of 0x8 means all the inputs were clean.
----------------
fmayer wrote:

clarify this that that means all inputs that were used for this elements calculation were clean

https://github.com/llvm/llvm-project/pull/174510


More information about the llvm-commits mailing list