24 const uint64_t IntValue =
26 ? 0xFFFFFFFFFFFFFFFFull
27 : 0xAAAAAAAAAAAAAAAAull;
34 constexpr bool NegativeNaN =
true;
35 constexpr uint64_t NaNPayload = 0xFFFFFFFFFFFFFFFFull;
36 if (Ty->isIntOrIntVectorTy()) {
40 return llvm::ConstantInt::get(Ty, IntValue,
false,
42 return llvm::ConstantInt::get(
43 Ty, llvm::APInt::getSplat(BitWidth, llvm::APInt(64, IntValue)));
45 if (Ty->isPtrOrPtrVectorTy()) {
48 CGM.
getDataLayout().getPointerSizeInBits(PtrTy->getAddressSpace());
50 llvm_unreachable(
"pattern initialization of unsupported pointer width");
51 llvm::Type *IntTy = llvm::IntegerType::get(CGM.
getLLVMContext(), PtrWidth);
52 auto *Int = llvm::ConstantInt::get(IntTy, IntValue,
false,
54 return llvm::ConstantExpr::getIntToPtr(Int, PtrTy);
56 if (Ty->isFPOrFPVectorTy()) {
57 unsigned BitWidth = llvm::APFloat::semanticsSizeInBits(
58 Ty->getScalarType()->getFltSemantics());
59 llvm::APInt Payload(64, NaNPayload);
61 Payload = llvm::APInt::getSplat(BitWidth, Payload);
62 return llvm::ConstantFP::getQNaN(Ty, NegativeNaN, &Payload);
64 if (Ty->isArrayTy()) {
69 ArrTy->getNumElements(),
71 return llvm::ConstantArray::get(ArrTy, Element);
82 for (
unsigned El = 0; El !=
Struct.size(); ++El)
84 return llvm::ConstantStruct::get(StructTy,
Struct);
const TargetInfo & getTargetInfo() const