@@ -4283,15 +4283,11 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
42834283
42844284 CharUnits Align = CGM.getNaturalTypeAlignment (
42854285 E->getType ()->getAs <VectorType>()->getElementType (), nullptr );
4286- llvm::Value *AlignVal =
4287- llvm::ConstantInt::get (Int32Ty, Align.getQuantity ());
42884286
42894287 llvm::Value *Result;
42904288 if (BuiltinID == Builtin::BI__builtin_masked_load) {
4291- Function *F =
4292- CGM.getIntrinsic (Intrinsic::masked_load, {RetTy, Ptr->getType ()});
4293- Result =
4294- Builder.CreateCall (F, {Ptr, AlignVal, Mask, PassThru}, " masked_load" );
4289+ Result = Builder.CreateMaskedLoad (RetTy, Ptr, Align.getAsAlign (), Mask,
4290+ PassThru, " masked_load" );
42954291 } else {
42964292 Function *F = CGM.getIntrinsic (Intrinsic::masked_expandload, {RetTy});
42974293 Result =
@@ -4307,8 +4303,6 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
43074303 llvm::Type *RetTy = CGM.getTypes ().ConvertType (E->getType ());
43084304 CharUnits Align = CGM.getNaturalTypeAlignment (
43094305 E->getType ()->getAs <VectorType>()->getElementType (), nullptr );
4310- llvm::Value *AlignVal =
4311- llvm::ConstantInt::get (Int32Ty, Align.getQuantity ());
43124306
43134307 llvm::Value *PassThru = llvm::PoisonValue::get (RetTy);
43144308 if (E->getNumArgs () > 3 )
@@ -4318,12 +4312,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
43184312 E->getType ()->getAs <VectorType>()->getElementType ());
43194313 llvm::Value *PtrVec = Builder.CreateGEP (ElemTy, Ptr, Idx);
43204314
4321- llvm::Value *Result;
4322- Function *F =
4323- CGM.getIntrinsic (Intrinsic::masked_gather, {RetTy, PtrVec->getType ()});
4324-
4325- Result = Builder.CreateCall (F, {PtrVec, AlignVal, Mask, PassThru},
4326- " masked_gather" );
4315+ llvm::Value *Result = Builder.CreateMaskedGather (
4316+ RetTy, PtrVec, Align.getAsAlign (), Mask, PassThru, " masked_gather" );
43274317 return RValue::get (Result);
43284318 }
43294319 case Builtin::BI__builtin_masked_store:
@@ -4338,13 +4328,9 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
43384328 CharUnits Align = CGM.getNaturalTypeAlignment (
43394329 E->getArg (1 )->getType ()->getAs <VectorType>()->getElementType (),
43404330 nullptr );
4341- llvm::Value *AlignVal =
4342- llvm::ConstantInt::get (Int32Ty, Align.getQuantity ());
43434331
43444332 if (BuiltinID == Builtin::BI__builtin_masked_store) {
4345- llvm::Function *F = CGM.getIntrinsic (llvm::Intrinsic::masked_store,
4346- {ValLLTy, Ptr->getType ()});
4347- Builder.CreateCall (F, {Val, Ptr, AlignVal, Mask});
4333+ Builder.CreateMaskedStore (Val, Ptr, Align.getAsAlign (), Mask);
43484334 } else {
43494335 llvm::Function *F =
43504336 CGM.getIntrinsic (llvm::Intrinsic::masked_compressstore, {ValLLTy});
@@ -4361,17 +4347,12 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID,
43614347 CharUnits Align = CGM.getNaturalTypeAlignment (
43624348 E->getArg (2 )->getType ()->getAs <VectorType>()->getElementType (),
43634349 nullptr );
4364- llvm::Value *AlignVal =
4365- llvm::ConstantInt::get (Int32Ty, Align.getQuantity ());
43664350
43674351 llvm::Type *ElemTy = CGM.getTypes ().ConvertType (
43684352 E->getArg (1 )->getType ()->getAs <VectorType>()->getElementType ());
43694353 llvm::Value *PtrVec = Builder.CreateGEP (ElemTy, Ptr, Idx);
43704354
4371- Function *F = CGM.getIntrinsic (Intrinsic::masked_scatter,
4372- {Val->getType (), PtrVec->getType ()});
4373-
4374- Builder.CreateCall (F, {Val, PtrVec, AlignVal, Mask});
4355+ Builder.CreateMaskedScatter (Val, PtrVec, Align.getAsAlign (), Mask);
43754356 return RValue ();
43764357 }
43774358 case Builtin::BI__builtin_isinf_sign: {
0 commit comments