Skip to content

Commit 37fab7c

Browse files
authored
[CIR][CIRGen][Builtin][Neon] Lower neon_vsra_n_v and neon_vsraq_n_v (#1326)
Clang CGBuiltin Implementation: https://github.com/llvm/clangir/blob/a7383c9d05165d16edba857ddc86e5d29d94d2cc/clang/lib/CodeGen/CGBuiltin.cpp#L9562-L9566 Similar commit: f9dee67 Closes: #1325
1 parent dde0549 commit 37fab7c

File tree

2 files changed

+264
-163
lines changed

2 files changed

+264
-163
lines changed

clang/lib/CIR/CodeGen/CIRGenBuiltinAArch64.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4410,8 +4410,12 @@ CIRGenFunction::emitAArch64BuiltinExpr(unsigned BuiltinID, const CallExpr *E,
44104410
llvm_unreachable("NEON::BI__builtin_neon_vsliq_n_v NYI");
44114411
}
44124412
case NEON::BI__builtin_neon_vsra_n_v:
4413-
case NEON::BI__builtin_neon_vsraq_n_v:
4414-
llvm_unreachable("NEON::BI__builtin_neon_vsraq_n_v NYI");
4413+
case NEON::BI__builtin_neon_vsraq_n_v: {
4414+
Ops[0] = builder.createBitcast(Ops[0], vTy);
4415+
Ops[1] = emitNeonRShiftImm(*this, Ops[1], Ops[2], vTy, usgn,
4416+
getLoc(E->getExprLoc()));
4417+
return builder.createAdd(Ops[0], Ops[1]);
4418+
}
44154419
case NEON::BI__builtin_neon_vrsra_n_v:
44164420
case NEON::BI__builtin_neon_vrsraq_n_v: {
44174421
llvm::SmallVector<mlir::Value> tmpOps = {Ops[1], Ops[2]};

0 commit comments

Comments
 (0)