[llvm-branch-commits] [llvm] [MSAN] handle AVX vpermi2var (PR #143463)

Florian Mayer via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Jun 13 15:11:56 PDT 2025


https://github.com/fmayer updated https://github.com/llvm/llvm-project/pull/143463

>From dd6d9e4fa3dee83c1f42f62eb6342dfeb60184ee Mon Sep 17 00:00:00 2001
From: Florian Mayer <fmayer at google.com>
Date: Thu, 12 Jun 2025 14:19:00 -0700
Subject: [PATCH 1/2] fmt

Created using spr 1.3.4
---
 llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
index 72a3409251204..e2dfcaae71ba9 100644
--- a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
@@ -4192,7 +4192,7 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
   void handleAVXVpermil2var(IntrinsicInst &I) {
     assert(I.arg_size() == 3);
     assert(I.getArgOperand(0)->getType() == I.getArgOperand(2)->getType());
-    assert(I.getType() == I.getArgOperand(0)->getType() );
+    assert(I.getType() == I.getArgOperand(0)->getType());
     assert(I.getArgOperand(1)->getType()->isIntOrIntVectorTy());
     IRBuilder<> IRB(&I);
     Value *AShadow = getShadow(&I, 0);

>From 4a6142a75f6680c2a81e52a6de65ef91ee88babc Mon Sep 17 00:00:00 2001
From: Florian Mayer <fmayer at google.com>
Date: Fri, 13 Jun 2025 15:11:41 -0700
Subject: [PATCH 2/2] assert

Created using spr 1.3.4
---
 llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
index e2dfcaae71ba9..320ccaab58502 100644
--- a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
@@ -4191,6 +4191,15 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
   // We apply the same permutation (argument index 1) to the shadows.
   void handleAVXVpermil2var(IntrinsicInst &I) {
     assert(I.arg_size() == 3);
+    assert(isa<FixedVectorType>(I.getArgOperand(0)->getType()));
+    assert(isa<FixedVectorType>(I.getArgOperand(1)->getType()));
+    assert(isa<FixedVectorType>(I.getArgOperand(2)->getType()));
+    [[maybe_unused]] auto ArgVectorSize =
+        cast<FixedVectorType>(I.getArgOperand(0)->getType())->getNumElements();
+    assert(cast<FixedVectorType>(I.getArgOperand(1)->getType())
+               ->getNumElements() == ArgVectorSize);
+    assert(cast<FixedVectorType>(I.getArgOperand(2)->getType())
+               ->getNumElements() == ArgVectorSize);
     assert(I.getArgOperand(0)->getType() == I.getArgOperand(2)->getType());
     assert(I.getType() == I.getArgOperand(0)->getType());
     assert(I.getArgOperand(1)->getType()->isIntOrIntVectorTy());



More information about the llvm-branch-commits mailing list