Skip to content

Commit 15e9764

Browse files
committed
[msan] Handle Arm NEON pairwise min/max instructions
Change the handling of: - llvm.aarch64.neon.fmaxp - llvm.aarch64.neon.fminp - llvm.aarch64.neon.fmaxnmp - llvm.aarch64.neon.fminnmp - llvm.aarch64.neon.smaxp - llvm.aarch64.neon.sminp - llvm.aarch64.neon.umaxp - llvm.aarch64.neon.uminp from the incorrect heuristic handler (maybeHandleSimpleNomemIntrinsic) to handlePairwiseShadowOrIntrinsic. Updates the tests from llvm#129760
1 parent 9ee4883 commit 15e9764

File tree

2 files changed

+122
-40
lines changed

2 files changed

+122
-40
lines changed

llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4871,6 +4871,18 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
48714871
setOrigin(&I, getCleanOrigin());
48724872
break;
48734873

4874+
// TODO: handling max/min similarly to AND/OR may be more precise
4875+
// Floating-Point Maximum/Minimum Pairwise
4876+
case Intrinsic::aarch64_neon_fmaxp:
4877+
case Intrinsic::aarch64_neon_fminp:
4878+
// Floating-Point Maximum/Minimum Number Pairwise
4879+
case Intrinsic::aarch64_neon_fmaxnmp:
4880+
case Intrinsic::aarch64_neon_fminnmp:
4881+
// Signed/Unsigned Maximum/Minimum Pairwise
4882+
case Intrinsic::aarch64_neon_smaxp:
4883+
case Intrinsic::aarch64_neon_sminp:
4884+
case Intrinsic::aarch64_neon_umaxp:
4885+
case Intrinsic::aarch64_neon_uminp:
48744886
// Add Pairwise
48754887
case Intrinsic::aarch64_neon_addp:
48764888
// Floating-point Add Pairwise

0 commit comments

Comments
 (0)