@@ -1534,11 +1534,12 @@ static bool generateVectorLoadStoreInst(const SPIRV::IncomingCall *Call,
1534
1534
// / Lowers a builtin funtion call using the provided \p DemangledCall skeleton
1535
1535
// / and external instruction \p Set.
1536
1536
namespace SPIRV {
1537
- std::pair<bool , bool >
1538
- lowerBuiltin (const StringRef DemangledCall, InstructionSet::InstructionSet Set,
1539
- MachineIRBuilder &MIRBuilder, const Register OrigRet,
1540
- const Type *OrigRetTy, const SmallVectorImpl<Register> &Args,
1541
- SPIRVGlobalRegistry *GR) {
1537
+ Optional<bool > lowerBuiltin (const StringRef DemangledCall,
1538
+ SPIRV::InstructionSet::InstructionSet Set,
1539
+ MachineIRBuilder &MIRBuilder,
1540
+ const Register OrigRet, const Type *OrigRetTy,
1541
+ const SmallVectorImpl<Register> &Args,
1542
+ SPIRVGlobalRegistry *GR) {
1542
1543
LLVM_DEBUG (dbgs () << " Lowering builtin call: " << DemangledCall << " \n " );
1543
1544
1544
1545
// SPIR-V type and return register.
@@ -1558,7 +1559,7 @@ lowerBuiltin(const StringRef DemangledCall, InstructionSet::InstructionSet Set,
1558
1559
1559
1560
if (!Call) {
1560
1561
LLVM_DEBUG (dbgs () << " Builtin record was not found!" );
1561
- return {false , false };
1562
+ return {};
1562
1563
}
1563
1564
1564
1565
// TODO: check if the provided args meet the builtin requirments.
@@ -1570,48 +1571,45 @@ lowerBuiltin(const StringRef DemangledCall, InstructionSet::InstructionSet Set,
1570
1571
// Match the builtin with implementation based on the grouping.
1571
1572
switch (Call->Builtin ->Group ) {
1572
1573
case SPIRV::Extended:
1573
- return { true , generateExtInst (Call.get (), MIRBuilder, GR)} ;
1574
+ return generateExtInst (Call.get (), MIRBuilder, GR);
1574
1575
case SPIRV::Relational:
1575
- return { true , generateRelationalInst (Call.get (), MIRBuilder, GR)} ;
1576
+ return generateRelationalInst (Call.get (), MIRBuilder, GR);
1576
1577
case SPIRV::Group:
1577
- return { true , generateGroupInst (Call.get (), MIRBuilder, GR)} ;
1578
+ return generateGroupInst (Call.get (), MIRBuilder, GR);
1578
1579
case SPIRV::Variable:
1579
- return { true , generateBuiltinVar (Call.get (), MIRBuilder, GR)} ;
1580
+ return generateBuiltinVar (Call.get (), MIRBuilder, GR);
1580
1581
case SPIRV::Atomic:
1581
- return { true , generateAtomicInst (Call.get (), MIRBuilder, GR)} ;
1582
+ return generateAtomicInst (Call.get (), MIRBuilder, GR);
1582
1583
case SPIRV::Barrier:
1583
- return { true , generateBarrierInst (Call.get (), MIRBuilder, GR)} ;
1584
+ return generateBarrierInst (Call.get (), MIRBuilder, GR);
1584
1585
case SPIRV::Dot:
1585
- return { true , generateDotOrFMulInst (Call.get (), MIRBuilder, GR)} ;
1586
+ return generateDotOrFMulInst (Call.get (), MIRBuilder, GR);
1586
1587
case SPIRV::GetQuery:
1587
- return { true , generateGetQueryInst (Call.get (), MIRBuilder, GR)} ;
1588
+ return generateGetQueryInst (Call.get (), MIRBuilder, GR);
1588
1589
case SPIRV::ImageSizeQuery:
1589
- return { true , generateImageSizeQueryInst (Call.get (), MIRBuilder, GR)} ;
1590
+ return generateImageSizeQueryInst (Call.get (), MIRBuilder, GR);
1590
1591
case SPIRV::ImageMiscQuery:
1591
- return { true , generateImageMiscQueryInst (Call.get (), MIRBuilder, GR)} ;
1592
+ return generateImageMiscQueryInst (Call.get (), MIRBuilder, GR);
1592
1593
case SPIRV::ReadImage:
1593
- return {true ,
1594
- generateReadImageInst (DemangledCall, Call.get (), MIRBuilder, GR)};
1594
+ return generateReadImageInst (DemangledCall, Call.get (), MIRBuilder, GR);
1595
1595
case SPIRV::WriteImage:
1596
- return { true , generateWriteImageInst (Call.get (), MIRBuilder, GR)} ;
1596
+ return generateWriteImageInst (Call.get (), MIRBuilder, GR);
1597
1597
case SPIRV::SampleImage:
1598
- return {true ,
1599
- generateSampleImageInst (DemangledCall, Call.get (), MIRBuilder, GR)};
1598
+ return generateSampleImageInst (DemangledCall, Call.get (), MIRBuilder, GR);
1600
1599
case SPIRV::Select:
1601
- return { true , generateSelectInst (Call.get (), MIRBuilder)} ;
1600
+ return generateSelectInst (Call.get (), MIRBuilder);
1602
1601
case SPIRV::SpecConstant:
1603
- return { true , generateSpecConstantInst (Call.get (), MIRBuilder, GR)} ;
1602
+ return generateSpecConstantInst (Call.get (), MIRBuilder, GR);
1604
1603
case SPIRV::Enqueue:
1605
- return { true , generateEnqueueInst (Call.get (), MIRBuilder, GR)} ;
1604
+ return generateEnqueueInst (Call.get (), MIRBuilder, GR);
1606
1605
case SPIRV::AsyncCopy:
1607
- return { true , generateAsyncCopy (Call.get (), MIRBuilder, GR)} ;
1606
+ return generateAsyncCopy (Call.get (), MIRBuilder, GR);
1608
1607
case SPIRV::Convert:
1609
- return {true ,
1610
- generateConvertInst (DemangledCall, Call.get (), MIRBuilder, GR)};
1608
+ return generateConvertInst (DemangledCall, Call.get (), MIRBuilder, GR);
1611
1609
case SPIRV::VectorLoadStore:
1612
- return { true , generateVectorLoadStoreInst (Call.get (), MIRBuilder, GR)} ;
1610
+ return generateVectorLoadStoreInst (Call.get (), MIRBuilder, GR);
1613
1611
}
1614
- return { true , false } ;
1612
+ return false ;
1615
1613
}
1616
1614
} // namespace SPIRV
1617
1615
} // namespace llvm
0 commit comments