Lines Matching defs:SPIRVInstruction
1 //===- SPIRVInstruction.h - Class to represent SPIRV instruction -*- C++ -*-===//
103 class SPIRVInstruction: public SPIRVValue {
106 SPIRVInstruction(unsigned TheWordCount, Op TheOC, SPIRVType *TheType,
109 SPIRVInstruction(unsigned TheWordCount, Op TheOC,
113 SPIRVInstruction(unsigned TheWordCount, Op TheOC, SPIRVId TheId,
116 SPIRVInstruction(unsigned TheWordCount, Op TheOC,
119 SPIRVInstruction(unsigned TheWordCount, Op TheOC, SPIRVType *TheType,
122 SPIRVInstruction(Op TheOC = OpNop):SPIRVValue(TheOC), BB(NULL){}
126 SPIRVInstruction *getPrevious() const { return BB->getPrevious(this);}
127 SPIRVInstruction *getNext() const { return BB->getNext(this);}
178 class SPIRVInstTemplateBase:public SPIRVInstruction {
207 :SPIRVInstruction(OC), HasVariWC(false){
440 class SPIRVVariable : public SPIRVInstruction {
447 :SPIRVInstruction(TheInitializer ? 5 : 4, OpVariable, TheType,
456 SPIRVVariable() :SPIRVInstruction(OpVariable),
509 class SPIRVStore:public SPIRVInstruction, public SPIRVMemoryAccess {
515 :SPIRVInstruction(FixedWords + TheMemoryAccess.size(), OpStore,
526 SPIRVStore():SPIRVInstruction(OpStore), SPIRVMemoryAccess(),
553 SPIRVInstruction::validate();
565 class SPIRVLoad:public SPIRVInstruction, public SPIRVMemoryAccess {
571 :SPIRVInstruction(FixedWords + TheMemoryAccess.size() , OpLoad,
579 SPIRVLoad():SPIRVInstruction(OpLoad), SPIRVMemoryAccess(),
600 SPIRVInstruction::validate();
616 SPIRVInstruction::validate();
687 class SPIRVInstNoOperand:public SPIRVInstruction {
690 SPIRVInstNoOperand(SPIRVBasicBlock *TheBB):SPIRVInstruction(1, TheOpCode,
696 SPIRVInstNoOperand():SPIRVInstruction(TheOpCode){
709 class SPIRVReturnValue:public SPIRVInstruction {
714 :SPIRVInstruction(2, OC, TheBB), ReturnValueId(TheReturnValue->getId()){
720 SPIRVReturnValue():SPIRVInstruction(OC), ReturnValueId(SPIRVID_INVALID) {
734 SPIRVInstruction::validate();
739 class SPIRVBranch:public SPIRVInstruction {
744 :SPIRVInstruction(2, OC, TheBB), TargetLabelId(TheTargetLabel->getId()) {
749 SPIRVBranch():SPIRVInstruction(OC), TargetLabelId(SPIRVID_INVALID) {
759 SPIRVInstruction::validate();
767 class SPIRVBranchConditional:public SPIRVInstruction {
773 :SPIRVInstruction(4, OC, TheBB), ConditionId(TheCondition->getId()),
780 :SPIRVInstruction(6, OC, TheBB), ConditionId(TheCondition->getId()),
788 SPIRVBranchConditional():SPIRVInstruction(OC), ConditionId(SPIRVID_INVALID),
809 SPIRVInstruction::validate();
824 class SPIRVPhi: public SPIRVInstruction {
830 :SPIRVInstruction(ThePairs.size() + FixedWordCount, OC, TheType, TheId, BB){
835 SPIRVPhi():SPIRVInstruction(OC) {}
884 SPIRVInstruction::validate();
896 SPIRVInstruction::validate();
952 class SPIRVSelect:public SPIRVInstruction {
957 :SPIRVInstruction(6, OpSelect, TheBB->getValueType(TheOp1), TheId,
963 SPIRVSelect():SPIRVInstruction(OpSelect), Condition(SPIRVID_INVALID),
971 SPIRVInstruction::validate();
990 class SPIRVSwitch: public SPIRVInstruction {
997 :SPIRVInstruction(ThePairs.size() * 2 + FixedWordCount, OC, BB),
1006 SPIRVSwitch():SPIRVInstruction(OC), Select(SPIRVWORD_MAX),
1040 SPIRVInstruction::validate();
1052 SPIRVInstruction::validate();
1138 class SPIRVFunctionCallGeneric: public SPIRVInstruction {
1142 :SPIRVInstruction(TheArgs.size() + FixedWordCount, OC, TheType, TheId, BB),
1149 :SPIRVInstruction(TheArgs.size() + FixedWordCount, OC, TheType, TheId, BB) {
1154 SPIRVFunctionCallGeneric():SPIRVInstruction(OC) {}
1172 SPIRVInstruction::validate();
1285 class SPIRVCompositeExtract:public SPIRVInstruction {
1291 SPIRVInstruction(TheIndices.size() + 4, OC, TheType, TheId, TheBB),
1297 SPIRVCompositeExtract():SPIRVInstruction(OC), Composite(SPIRVID_INVALID){}
1310 SPIRVInstruction::validate();
1319 class SPIRVCompositeInsert:public SPIRVInstruction {
1327 SPIRVInstruction(TheIndices.size() + FixedWordCount, OC,
1335 SPIRVCompositeInsert():SPIRVInstruction(OC), Object(SPIRVID_INVALID),
1350 SPIRVInstruction::validate();
1363 class SPIRVCopyObject :public SPIRVInstruction {
1370 SPIRVInstruction(4, OC, TheType, TheId, TheBB),
1376 SPIRVCopyObject() :SPIRVInstruction(OC), Operand(SPIRVID_INVALID) {}
1384 SPIRVInstruction::validate();
1390 class SPIRVCopyMemory :public SPIRVInstruction, public SPIRVMemoryAccess {
1398 SPIRVInstruction(FixedWords + TheMemoryAccess.size(), OC, TheBB),
1408 SPIRVCopyMemory() :SPIRVInstruction(OC), SPIRVMemoryAccess(),
1438 SPIRVInstruction::validate();
1446 class SPIRVCopyMemorySized :public SPIRVInstruction, public SPIRVMemoryAccess {
1454 SPIRVInstruction(FixedWords + TheMemoryAccess.size(), OC, TheBB),
1464 SPIRVCopyMemorySized() :SPIRVInstruction(OC), SPIRVMemoryAccess(),
1490 SPIRVInstruction::validate();
1499 class SPIRVVectorExtractDynamic:public SPIRVInstruction {
1505 :SPIRVInstruction(5, OC, TheVector->getType()->getVectorComponentType(),
1512 SPIRVVectorExtractDynamic():SPIRVInstruction(OC), VectorId(SPIRVID_INVALID),
1520 SPIRVInstruction::validate();
1529 class SPIRVVectorInsertDynamic :public SPIRVInstruction {
1535 :SPIRVInstruction(6, OC, TheVector->getType()->getVectorComponentType(),
1542 SPIRVVectorInsertDynamic() :SPIRVInstruction(OC), VectorId(SPIRVID_INVALID),
1551 SPIRVInstruction::validate();
1561 class SPIRVVectorShuffle:public SPIRVInstruction {
1569 SPIRVInstruction(TheComponents.size() + FixedWordCount, OC, TheType,
1577 SPIRVVectorShuffle():SPIRVInstruction(OC), Vector1(SPIRVID_INVALID),
1590 SPIRVInstruction::validate();
1610 class SPIRVControlBarrier:public SPIRVInstruction {
1617 :SPIRVInstruction(4, OC, TheBB), ExecScope(TheScope->getId()),
1623 SPIRVControlBarrier():SPIRVInstruction(OC), ExecScope(ScopeInvocation) {
1645 SPIRVInstruction::validate();
1652 class SPIRVGroupAsyncCopy:public SPIRVInstruction {
1660 :SPIRVInstruction(WC, OC, TheEvent->getType(), TheId, TheBB),
1668 SPIRVGroupAsyncCopy():SPIRVInstruction(OC), ExecScope(SPIRVID_INVALID),
1695 SPIRVInstruction::validate();
1871 SPIRVSpecConstantOp *createSpecConstantOpInst(SPIRVInstruction *Inst);
1872 SPIRVInstruction *createInstFromSpecConstantOp(SPIRVSpecConstantOp *C);