1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00

Use concrete natural type alignment for masked load/store operations instead of 0.

Summary: Alignment needs to be resolved at this point so we replace the
0 value with the ABI Type Alignment.
This commit is contained in:
Guillaume Chatelet 2020-06-24 21:26:03 +00:00
parent c0e9a51908
commit ea4d44ea3b

View File

@ -1387,12 +1387,18 @@ public:
case Intrinsic::lifetime_end:
case Intrinsic::sideeffect:
return 0;
case Intrinsic::masked_store:
return ConcreteTTI->getMaskedMemoryOpCost(Instruction::Store, Tys[0], 0,
case Intrinsic::masked_store: {
Type *Ty = Tys[0];
unsigned TyAlign = ConcreteTTI->DL.getABITypeAlignment(Ty);
return ConcreteTTI->getMaskedMemoryOpCost(Instruction::Store, Ty, TyAlign,
0, CostKind);
case Intrinsic::masked_load:
return ConcreteTTI->getMaskedMemoryOpCost(Instruction::Load, RetTy, 0, 0,
CostKind);
}
case Intrinsic::masked_load: {
Type *Ty = RetTy;
unsigned TyAlign = ConcreteTTI->DL.getABITypeAlignment(Ty);
return ConcreteTTI->getMaskedMemoryOpCost(Instruction::Load, Ty, TyAlign,
0, CostKind);
}
case Intrinsic::experimental_vector_reduce_add:
return ConcreteTTI->getArithmeticReductionCost(Instruction::Add, VecOpTy,
/*IsPairwiseForm=*/false,