[clang] [CIR] Implement folder for VecShuffleOp (PR #143260)

Henrich Lauko via cfe-commits cfe-commits at lists.llvm.org
Sun Jun 8 12:29:12 PDT 2025


================
@@ -1580,9 +1580,49 @@ OpFoldResult cir::VecExtractOp::fold(FoldAdaptor adaptor) {
 }
 
 //===----------------------------------------------------------------------===//
-// VecShuffle
+// VecShuffleOp
 //===----------------------------------------------------------------------===//
 
+OpFoldResult cir::VecShuffleOp::fold(FoldAdaptor adaptor) {
+  mlir::Attribute vec1 = adaptor.getVec1();
+  mlir::Attribute vec2 = adaptor.getVec2();
+
+  if (!mlir::isa_and_nonnull<cir::ConstVectorAttr>(vec1) ||
+      !mlir::isa_and_nonnull<cir::ConstVectorAttr>(vec2)) {
+    return {};
+  }
+
+  auto vec1Attr = mlir::cast<cir::ConstVectorAttr>(vec1);
+  auto vec2Attr = mlir::cast<cir::ConstVectorAttr>(vec2);
----------------
xlauko wrote:

```suggestion
  auto vec1Attr = mlir::dyn_cast_if_present<cir::ConstVectorAttr>(adaptor.getVec1());
  auto vec2Attr = mlir::dyn_cast_if_present<cir::ConstVectorAttr>(adaptor.getVec2()));
  if (!vec1Attr || !vec2Attr)
    return {};
```

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


More information about the cfe-commits mailing list