[llvm] [InstSimplify] fold the identity interleave (PR #206646)

Yingwei Zheng via llvm-commits llvm-commits at lists.llvm.org
Sun Jul 5 11:16:39 PDT 2026


================
@@ -7279,6 +7279,34 @@ static Value *simplifyBinaryIntrinsic(Intrinsic::ID IID, Type *ReturnType,
   return nullptr;
 }
 
+/// interleaveN(extractvalue(deinterleaveN(x), 0), ...,
+///             extractvalue(deinterleaveN(x), N-1)) --> x
+static Value *simplifyIdentityInterleave(Intrinsic::ID IID,
+                                         ArrayRef<Value *> Args) {
+  unsigned Factor = getInterleaveIntrinsicFactor(IID);
+  if (!Factor || Factor != Args.size())
+    return nullptr;
----------------
dtcxzyw wrote:

```suggestion
  if (!Factor)
    return nullptr;
  assert(Factor == Args.size());
```


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


More information about the llvm-commits mailing list