Skip to content

Commit 6bc66e5

Browse files
committed
[CIR][CIRGen][Builtin][X86] Masked compress Intrinsics
Added masked compress builtin in CIR. Note: This is my first PR to llvm.
1 parent adcc557 commit 6bc66e5

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

clang/lib/CIR/CodeGen/CIRGenBuiltinX86.cpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,14 @@ static mlir::Value getMaskVecValue(CIRGenBuilderTy &builder, mlir::Location loc,
8484
}
8585
return maskVec;
8686
}
87+
static mlir::Value emitX86CompressExpand(CIRGenFunction &cgf, const CallExpr *expr,ArrayRef<mlir::Value> ops, bool IsCompress, const std::string &ID){
88+
auto ResultTy = cast<cir::VectorType>(ops[1].getType());
89+
mlir::Value MaskValue = getMaskVecValue(cgf, expr, ops[2], cast<cir::VectorType>(ResultTy).getSize());
90+
llvm::SmallVector<mlir::Value, 4> op{ops[0], ops[1], MaskValue};
91+
92+
return emitIntrinsicCallOp(cgf,expr, ID, ResultTy, op);
93+
94+
}
8795

8896
mlir::Value CIRGenFunction::emitX86BuiltinExpr(unsigned builtinID,
8997
const CallExpr *expr) {
@@ -456,7 +464,9 @@ mlir::Value CIRGenFunction::emitX86BuiltinExpr(unsigned builtinID,
456464
case X86::BI__builtin_ia32_compresshi512_mask:
457465
case X86::BI__builtin_ia32_compressqi128_mask:
458466
case X86::BI__builtin_ia32_compressqi256_mask:
459-
case X86::BI__builtin_ia32_compressqi512_mask:
467+
case X86::BI__builtin_ia32_compressqi512_mask:{
468+
return emitX86CompressExpand(*this, expr, ops, true, "x86_avx512_mask_compress");
469+
}
460470
case X86::BI__builtin_ia32_gather3div2df:
461471
case X86::BI__builtin_ia32_gather3div2di:
462472
case X86::BI__builtin_ia32_gather3div4df:

0 commit comments

Comments
 (0)