[llvm-branch-commits] [msan] Implement shadow propagation for _mm_dp_pd, _mm_dp_ps, _mm256_dp_ps (PR #94875)
Vitaly Buka via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Jun 10 13:40:02 PDT 2024
================
@@ -3287,6 +3287,76 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
setOriginForNaryOp(I);
}
+ // Convert `Mask` into `<n x i1>`.
+ Constant *createDppMask(unsigned Width, unsigned Mask) {
+ SmallVector<Constant *, 4> R;
+ R.assign(Width, ConstantInt::getFalse(F.getContext()));
+ for (auto &M : R) {
+ if (Mask & 1)
+ M = ConstantInt::getTrue(F.getContext());
+ Mask >>= 1;
+ }
+ return ConstantVector::get(R);
+ }
+
+ // Calculate output shadow as array of booleans `<n x i1>`, assuming if any
----------------
vitalybuka wrote:
Not exactly. Input bits can affect particular output bits.
E.g. argument with single uninitialized bit can be multiplied by initialized zero.
So it's approximation, but better checking will be expensive.
https://github.com/llvm/llvm-project/pull/94875
More information about the llvm-branch-commits
mailing list