woruyu wrote:

> @woruyu Are you able to follow up on this?

I want to ask some quetion before writing code:
```c++
// curent - llvm
@llvm.masked.load (ptr, mask, passthru) --- three args

// curent - cir
  mlir::Value createMaskedLoad(mlir::Location loc, mlir::Type ty,
                               mlir::Value ptr, llvm::Align alignment,
                               mlir::Value mask, mlir::Value passThru) {
    ....
    mlir::Value ops[] = {ptr, this->getUInt32(int32_t(alignment.value()), loc),
                         mask, passThru};

    return cir::LLVMIntrinsicCallOp::create(
               *this, loc, getStringAttr("masked.load"), ty, ops)
        .getResult();
  }
 --- ops = (ptr, align, mask, passThru) --- four args

  case X86::BI__builtin_ia32_loaddqudi512_mask:
    return emitX86MaskedLoad(builder, ops, llvm::Align(1),
                             getLoc(expr->getExprLoc()));
``` 
you can see that the extra align operand is default align(1), which is useless 
as argument, so Is just deleting align arg better choice than redefining mask 
op in cir and writing lowering code for it.

https://github.com/llvm/llvm-project/pull/169464
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to