[clang] [CIR][AArch64] Upstream widening-addition and vector-shift-left-and-widen NEON builtins (PR #204285)
Jiahao Guo via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 17 23:01:43 PDT 2026
================
@@ -959,7 +959,20 @@ static mlir::Value emitCommonNeonBuiltinExpr(
case NEON::BI__builtin_neon_vshlq_n_v:
return emitCommonNeonShift(cgf.getBuilder(), loc, vTy, ops[0], ops[1],
/*shiftLeft=*/true);
- case NEON::BI__builtin_neon_vshll_n_v:
+ case NEON::BI__builtin_neon_vshll_n_v: {
+ CIRGenBuilderTy &builder = cgf.getBuilder();
+ auto wideEltTy = mlir::cast<cir::IntType>(vTy.getElementType());
+ cir::VectorType narrowVecTy = cir::VectorType::get(
----------------
E00N777 wrote:
Maybe we could simply implement it like this:
```
case NEON::BI__builtin_neon_vshll_n_v: {
CIRGenBuilderTy &builder = cgf.getBuilder();
cir::VectorType narrowVecTy = builder.getExtendedOrTruncatedElementVectorType(
vTy, /*isExtended=*/false, /*isSigned=*/!usgn);
mlir::Value src = builder.createBitcast(ops[0], narrowVecTy);
mlir::Value extended = builder.createIntCast(src, vTy);
return emitCommonNeonShift(builder, loc, vTy, extended, ops[1],
/*shiftLeft=*/true);
}
```
https://github.com/llvm/llvm-project/pull/204285
More information about the cfe-commits
mailing list