[clang] [CIR] Allow use different Int types together in Vec Shift Op (PR #141111)

Henrich Lauko via cfe-commits cfe-commits at lists.llvm.org
Thu May 22 12:06:12 PDT 2025


================
@@ -1427,12 +1427,12 @@ OpFoldResult cir::SelectOp::fold(FoldAdaptor adaptor) {
 //===----------------------------------------------------------------------===//
 LogicalResult cir::ShiftOp::verify() {
   mlir::Operation *op = getOperation();
-  mlir::Type resType = getResult().getType();
   const bool isOp0Vec = mlir::isa<cir::VectorType>(op->getOperand(0).getType());
   const bool isOp1Vec = mlir::isa<cir::VectorType>(op->getOperand(1).getType());
   if (isOp0Vec != isOp1Vec)
     return emitOpError() << "input types cannot be one vector and one scalar";
-  if (isOp1Vec && op->getOperand(1).getType() != resType) {
+
+  if (isOp1Vec && !mlir::isa<cir::VectorType>(getResult().getType())) {
     return emitOpError() << "shift amount must have the type of the result "
                          << "if it is vector shift";
----------------
xlauko wrote:

The message still states that result type needs to match amount type, which is not now true.

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


More information about the cfe-commits mailing list