@@ -242,36 +242,27 @@ Register SPIRVGlobalRegistry::buildConstantInt(uint64_t Val,
242
242
243
243
Register SPIRVGlobalRegistry::buildConstantFP (APFloat Val,
244
244
MachineIRBuilder &MIRBuilder,
245
- SPIRVType *SpvType, bool EmitIR ) {
245
+ SPIRVType *SpvType) {
246
246
auto &MF = MIRBuilder.getMF ();
247
- const Type *LLVMFPTy;
248
- if (SpvType) {
249
- LLVMFPTy = getTypeForSPIRVType (SpvType);
250
- assert (LLVMFPTy->isFloatingPointTy ());
251
- } else {
252
- LLVMFPTy = IntegerType::getFloatTy (MF.getFunction ().getContext ());
247
+ auto &Ctx = MF.getFunction ().getContext ();
248
+ if (!SpvType) {
249
+ const Type *LLVMFPTy = Type::getFloatTy (Ctx);
250
+ SpvType = getOrCreateSPIRVType (LLVMFPTy, MIRBuilder);
253
251
}
254
252
// Find a constant in DT or build a new one.
255
- const auto ConstFP = ConstantFP::get (LLVMFPTy-> getContext () , Val);
253
+ const auto ConstFP = ConstantFP::get (Ctx , Val);
256
254
Register Res = DT.find (ConstFP, &MF);
257
255
if (!Res.isValid ()) {
258
- unsigned BitWidth = SpvType ? getScalarOrVectorBitWidth (SpvType) : 32 ;
259
- LLT LLTy = LLT::scalar (EmitIR ? BitWidth : 32 );
260
- Res = MF.getRegInfo ().createGenericVirtualRegister (LLTy);
256
+ Res = MF.getRegInfo ().createGenericVirtualRegister (LLT::scalar (32 ));
261
257
MF.getRegInfo ().setRegClass (Res, &SPIRV::IDRegClass);
262
- assignTypeToVReg (LLVMFPTy, Res, MIRBuilder,
263
- SPIRV::AccessQualifier::ReadWrite, EmitIR);
258
+ assignSPIRVTypeToVReg (SpvType, Res, MF);
264
259
DT.add (ConstFP, &MF, Res);
265
- if (EmitIR) {
266
- MIRBuilder.buildFConstant (Res, *ConstFP);
267
- } else {
268
- MachineInstrBuilder MIB;
269
- assert (SpvType);
270
- MIB = MIRBuilder.buildInstr (SPIRV::OpConstantF)
271
- .addDef (Res)
272
- .addUse (getSPIRVTypeID (SpvType));
273
- addNumImm (ConstFP->getValueAPF ().bitcastToAPInt (), MIB);
274
- }
260
+
261
+ MachineInstrBuilder MIB;
262
+ MIB = MIRBuilder.buildInstr (SPIRV::OpConstantF)
263
+ .addDef (Res)
264
+ .addUse (getSPIRVTypeID (SpvType));
265
+ addNumImm (ConstFP->getValueAPF ().bitcastToAPInt (), MIB);
275
266
}
276
267
277
268
return Res;
0 commit comments