• Home
  • Raw
  • Download

Lines Matching refs:spirv

44     SpirvIdOrLiteral(const spirv::IdRef idIn) : id(idIn) {}  in SpirvIdOrLiteral()
45 SpirvIdOrLiteral(const spirv::LiteralInteger literalIn) : literal(literalIn) {} in SpirvIdOrLiteral()
47 spirv::IdRef id;
48 spirv::LiteralInteger literal;
78 spirv::IdRef dynamicComponent;
82 spirv::IdRef baseTypeId;
83 spirv::IdRef preSwizzleTypeId;
84 spirv::IdRef postSwizzleTypeId;
85 spirv::IdRef postDynamicComponentTypeId;
89 spirv::IdRef accessChainId;
114 spirv::IdRef baseId;
128 spirv::IdRef functionTypeId;
129 spirv::IdRef returnTypeId;
130 spirv::IdRefList parameterTypeIds;
133 spirv::IdRef functionId;
189 spirv::Blob getSpirv();
213 spirv::IdRef getSymbolIdAndStorageClass(const TSymbol *symbol,
222 void accessChainPush(NodeData *data, spirv::IdRef index, spirv::IdRef typeId) const;
224 spirv::LiteralInteger index,
225 spirv::IdRef typeId) const;
228 spirv::IdRef typeId,
230 void accessChainPushDynamicComponent(NodeData *data, spirv::IdRef index, spirv::IdRef typeId);
231 spirv::IdRef accessChainCollapse(NodeData *data);
232 spirv::IdRef accessChainLoad(NodeData *data,
234 spirv::IdRef *resultTypeIdOut);
235 void accessChainStore(NodeData *data, spirv::IdRef value, const TType &valueType);
238 void makeAccessChainIdList(NodeData *data, spirv::IdRefList *idsOut);
239 void makeAccessChainLiteralList(NodeData *data, spirv::LiteralIntegerList *literalsOut);
240 spirv::IdRef getAccessChainTypeId(NodeData *data);
244 spirv::IdRef baseId,
245 spirv::IdRef typeId,
248 void nodeDataInitRValue(NodeData *data, spirv::IdRef baseId, spirv::IdRef typeId) const;
251 spirv::IdRef createConstant(const TType &type,
255 spirv::IdRef createComplexConstant(const TType &type,
256 spirv::IdRef typeId,
257 const spirv::IdRefList &parameters);
258 spirv::IdRef createConstructor(TIntermAggregate *node, spirv::IdRef typeId);
259 spirv::IdRef createArrayOrStructConstructor(TIntermAggregate *node,
260 spirv::IdRef typeId,
261 const spirv::IdRefList &parameters);
262 spirv::IdRef createConstructorVectorFromScalar(const TType &type,
263 spirv::IdRef typeId,
264 const spirv::IdRefList &parameters);
265 spirv::IdRef createConstructorVectorFromMatrix(TIntermAggregate *node,
266 spirv::IdRef typeId,
267 const spirv::IdRefList &parameters);
268 spirv::IdRef createConstructorVectorFromScalarsAndVectors(TIntermAggregate *node,
269 spirv::IdRef typeId,
270 const spirv::IdRefList &parameters);
271 spirv::IdRef createConstructorMatrixFromScalar(TIntermAggregate *node,
272 spirv::IdRef typeId,
273 const spirv::IdRefList &parameters);
274 spirv::IdRef createConstructorMatrixFromVectors(TIntermAggregate *node,
275 spirv::IdRef typeId,
276 const spirv::IdRefList &parameters);
277 spirv::IdRef createConstructorMatrixFromMatrix(TIntermAggregate *node,
278 spirv::IdRef typeId,
279 const spirv::IdRefList &parameters);
282 spirv::IdRefList loadAllParams(TIntermOperator *node, size_t skipCount);
285 const spirv::IdRefList &parameters,
286 spirv::IdRefList *extractedComponentsOut);
289 spirv::IdRef endShortCircuit(TIntermBinary *node, spirv::IdRef *typeId);
291 spirv::IdRef visitOperator(TIntermOperator *node, spirv::IdRef resultTypeId);
292 spirv::IdRef createIncrementDecrement(TIntermOperator *node, spirv::IdRef resultTypeId);
293 spirv::IdRef createCompare(TIntermOperator *node, spirv::IdRef resultTypeId);
294 spirv::IdRef createAtomicBuiltIn(TIntermOperator *node, spirv::IdRef resultTypeId);
295 spirv::IdRef createImageTextureBuiltIn(TIntermOperator *node, spirv::IdRef resultTypeId);
296 spirv::IdRef createInterpolate(TIntermOperator *node, spirv::IdRef resultTypeId);
298 spirv::IdRef createFunctionCall(TIntermAggregate *node, spirv::IdRef resultTypeId);
309 spirv::IdRef castBasicType(spirv::IdRef value,
312 spirv::IdRef *resultTypeIdOut);
313 spirv::IdRef cast(spirv::IdRef value,
317 spirv::IdRef *resultTypeIdOut);
322 spirv::IdRef reduceBoolVector(TOperator op,
323 const spirv::IdRefList &valueIds,
324 spirv::IdRef typeId,
329 spirv::IdRef resultTypeId,
330 spirv::IdRef leftId,
331 spirv::IdRef rightId,
334 spirv::LiteralIntegerList *currentAccessChain,
335 spirv::IdRefList *intermediateResultsOut);
339 spirv::IdRef makeBuiltInOutputStructType(TIntermOperator *node, size_t lvalueCount);
344 spirv::IdRef structValue,
345 spirv::IdRef returnValue,
346 spirv::IdRef returnValueType);
349 spirv::IdRef structValue,
367 angle::HashMap<const TSymbol *, spirv::IdRef> mSymbolIdMap;
373 angle::HashMap<BuiltInResultStruct, spirv::IdRef, BuiltInResultStructHash>
471 spirv::IdRef OutputSPIRVTraverser::getSymbolIdAndStorageClass(const TSymbol *symbol, in getSymbolIdAndStorageClass()
545 const spirv::IdRef typeId = mBuilder.getTypeData(type, {}).id; in getSymbolIdAndStorageClass()
546 const spirv::IdRef varId = mBuilder.declareVariable( in getSymbolIdAndStorageClass()
550 spirv::WriteDecorate(mBuilder.getSpirvDecorations(), varId, spv::DecorationBuiltIn, in getSymbolIdAndStorageClass()
551 {spirv::LiteralInteger(builtInDecoration)}); in getSymbolIdAndStorageClass()
558 spirv::IdRef baseId, in nodeDataInitLValue()
559 spirv::IdRef typeId, in nodeDataInitLValue()
575 spirv::IdRef baseId, in nodeDataInitRValue()
576 spirv::IdRef typeId) const in nodeDataInitRValue()
622 spirv::IdRef index, in accessChainPush()
623 spirv::IdRef typeId) const in accessChainPush()
632 spirv::LiteralInteger index, in accessChainPushLiteral()
633 spirv::IdRef typeId) const in accessChainPushLiteral()
642 spirv::IdRef typeId, in accessChainPushSwizzle()
656 accessChainPushLiteral(data, spirv::LiteralInteger(swizzle[0]), typeId); in accessChainPushSwizzle()
668 spirv::IdRef index, in accessChainPushDynamicComponent()
669 spirv::IdRef typeId) in accessChainPushDynamicComponent()
692 spirv::IdRefList swizzleIds; in accessChainPushDynamicComponent()
698 const spirv::IdRef uintTypeId = mBuilder.getBasicTypeId(EbtUInt, 1); in accessChainPushDynamicComponent()
699 const spirv::IdRef uvecTypeId = mBuilder.getBasicTypeId(EbtUInt, swizzleIds.size()); in accessChainPushDynamicComponent()
701 const spirv::IdRef swizzlesId = mBuilder.getNewId({}); in accessChainPushDynamicComponent()
702 spirv::WriteConstantComposite(mBuilder.getSpirvTypeAndConstantDecls(), uvecTypeId, in accessChainPushDynamicComponent()
707 const spirv::IdRef newIndex = mBuilder.getNewId({}); in accessChainPushDynamicComponent()
708 spirv::WriteVectorExtractDynamic(mBuilder.getSpirvCurrentFunctionBlock(), uintTypeId, in accessChainPushDynamicComponent()
719 spirv::IdRef OutputSPIRVTraverser::accessChainCollapse(NodeData *data) in accessChainCollapse()
739 spirv::IdRefList indexIds; in accessChainCollapse()
742 const spirv::IdRef typePointerId = in accessChainCollapse()
746 spirv::WriteAccessChain(mBuilder.getSpirvCurrentFunctionBlock(), typePointerId, in accessChainCollapse()
752 spirv::IdRef OutputSPIRVTraverser::accessChainLoad(NodeData *data, in accessChainLoad()
754 spirv::IdRef *resultTypeIdOut) in accessChainLoad()
780 spirv::IdRef loadResult = data->baseId; in accessChainLoad()
789 spirv::LiteralIntegerList indexList; in accessChainLoad()
792 const spirv::IdRef result = mBuilder.getNewId(decorations); in accessChainLoad()
793 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), in accessChainLoad()
801 const spirv::IdRef tempVar = in accessChainLoad()
806 spirv::WriteStore(mBuilder.getSpirvCurrentFunctionBlock(), tempVar, loadResult, in accessChainLoad()
814 const spirv::IdRef accessChainId = accessChainCollapse(data); in accessChainLoad()
816 spirv::WriteLoad(mBuilder.getSpirvCurrentFunctionBlock(), in accessChainLoad()
824 const spirv::IdRef accessChainId = accessChainCollapse(data); in accessChainLoad()
826 spirv::WriteLoad(mBuilder.getSpirvCurrentFunctionBlock(), accessChain.preSwizzleTypeId, in accessChainLoad()
836 spirv::LiteralIntegerList swizzleList; in accessChainLoad()
839 swizzleList.push_back(spirv::LiteralInteger(component)); in accessChainLoad()
842 const spirv::IdRef result = mBuilder.getNewId(decorations); in accessChainLoad()
843 spirv::WriteVectorShuffle(mBuilder.getSpirvCurrentFunctionBlock(), in accessChainLoad()
855 const spirv::IdRef result = mBuilder.getNewId(decorations); in accessChainLoad()
856 spirv::WriteVectorExtractDynamic(mBuilder.getSpirvCurrentFunctionBlock(), in accessChainLoad()
863 const spirv::IdRef castResult = in accessChainLoad()
870 spirv::IdRef value, in accessChainStore()
888 const spirv::IdRef accessChainId = accessChainCollapse(data); in accessChainStore()
898 const spirv::IdRef loadResult = mBuilder.getNewId({}); in accessChainStore()
899 spirv::WriteLoad(mBuilder.getSpirvCurrentFunctionBlock(), accessChain.preSwizzleTypeId, in accessChainStore()
915 spirv::LiteralIntegerList swizzleList; in accessChainStore()
919 swizzleList.push_back(spirv::LiteralInteger(component)); in accessChainStore()
925 spirv::LiteralInteger(accessChain.swizzledVectorComponentCount + srcComponent); in accessChainStore()
931 const spirv::IdRef result = mBuilder.getNewId({}); in accessChainStore()
932 spirv::WriteVectorShuffle(mBuilder.getSpirvCurrentFunctionBlock(), in accessChainStore()
938 spirv::WriteStore(mBuilder.getSpirvCurrentFunctionBlock(), accessChainId, value, nullptr); in accessChainStore()
941 void OutputSPIRVTraverser::makeAccessChainIdList(NodeData *data, spirv::IdRefList *idsOut) in makeAccessChainIdList()
945 spirv::IdRef indexId = data->idList[index].id; in makeAccessChainIdList()
958 spirv::LiteralIntegerList *literalsOut) in makeAccessChainLiteralList()
967 spirv::IdRef OutputSPIRVTraverser::getAccessChainTypeId(NodeData *data) in getAccessChainTypeId()
1011 const spirv::IdRef specConstId = in declareSpecConst()
1020 spirv::IdRef OutputSPIRVTraverser::createConstant(const TType &type, in createConstant()
1025 const spirv::IdRef typeId = mBuilder.getTypeData(type, {}).id; in createConstant()
1026 spirv::IdRefList componentIds; in createConstant()
1061 spirv::IdRef componentId; in createConstant()
1100 spirv::IdRef OutputSPIRVTraverser::createComplexConstant(const TType &type, in createComplexConstant()
1101 spirv::IdRef typeId, in createComplexConstant()
1102 const spirv::IdRefList &parameters) in createComplexConstant()
1107 spirv::IdRefList columnIds; in createComplexConstant()
1109 const spirv::IdRef columnTypeId = in createComplexConstant()
1115 spirv::IdRefList columnParameters(columnParametersStart, in createComplexConstant()
1127 spirv::IdRef OutputSPIRVTraverser::createConstructor(TIntermAggregate *node, spirv::IdRef typeId) in createConstructor()
1142 spirv::IdRefList parameters = loadAllParams(node, 0); in createConstructor()
1232 spirv::IdRef OutputSPIRVTraverser::createArrayOrStructConstructor( in createArrayOrStructConstructor()
1234 spirv::IdRef typeId, in createArrayOrStructConstructor()
1235 const spirv::IdRefList &parameters) in createArrayOrStructConstructor()
1237 const spirv::IdRef result = mBuilder.getNewId(mBuilder.getDecorations(node->getType())); in createArrayOrStructConstructor()
1238 spirv::WriteCompositeConstruct(mBuilder.getSpirvCurrentFunctionBlock(), typeId, result, in createArrayOrStructConstructor()
1243 spirv::IdRef OutputSPIRVTraverser::createConstructorVectorFromScalar( in createConstructorVectorFromScalar()
1245 spirv::IdRef typeId, in createConstructorVectorFromScalar()
1246 const spirv::IdRefList &parameters) in createConstructorVectorFromScalar()
1250 spirv::IdRefList replicatedParameter(type.getNominalSize(), parameters[0]); in createConstructorVectorFromScalar()
1252 const spirv::IdRef result = mBuilder.getNewId(mBuilder.getDecorations(type)); in createConstructorVectorFromScalar()
1253 spirv::WriteCompositeConstruct(mBuilder.getSpirvCurrentFunctionBlock(), typeId, result, in createConstructorVectorFromScalar()
1258 spirv::IdRef OutputSPIRVTraverser::createConstructorVectorFromMatrix( in createConstructorVectorFromMatrix()
1260 spirv::IdRef typeId, in createConstructorVectorFromMatrix()
1261 const spirv::IdRefList &parameters) in createConstructorVectorFromMatrix()
1264 spirv::IdRefList extractedComponents; in createConstructorVectorFromMatrix()
1272 spirv::IdRef argumentTypeId = typeId; in createConstructorVectorFromMatrix()
1282 spirv::IdRef result = mBuilder.getNewId(mBuilder.getDecorations(node->getType())); in createConstructorVectorFromMatrix()
1283 spirv::WriteCompositeConstruct(mBuilder.getSpirvCurrentFunctionBlock(), argumentTypeId, result, in createConstructorVectorFromMatrix()
1294 spirv::IdRef OutputSPIRVTraverser::createConstructorVectorFromScalarsAndVectors( in createConstructorVectorFromScalarsAndVectors()
1296 spirv::IdRef typeId, in createConstructorVectorFromScalarsAndVectors()
1297 const spirv::IdRefList &parameters) in createConstructorVectorFromScalarsAndVectors()
1300 spirv::IdRefList extractedComponents; in createConstructorVectorFromScalarsAndVectors()
1303 const spirv::IdRef result = mBuilder.getNewId(mBuilder.getDecorations(node->getType())); in createConstructorVectorFromScalarsAndVectors()
1304 spirv::WriteCompositeConstruct(mBuilder.getSpirvCurrentFunctionBlock(), typeId, result, in createConstructorVectorFromScalarsAndVectors()
1309 spirv::IdRef OutputSPIRVTraverser::createConstructorMatrixFromScalar( in createConstructorMatrixFromScalar()
1311 spirv::IdRef typeId, in createConstructorMatrixFromScalar()
1312 const spirv::IdRefList &parameters) in createConstructorMatrixFromScalar()
1323 const spirv::IdRef scalarId = parameters[0]; in createConstructorMatrixFromScalar()
1324 spirv::IdRef zeroId; in createConstructorMatrixFromScalar()
1346 spirv::IdRefList componentIds(type.getRows(), zeroId); in createConstructorMatrixFromScalar()
1347 spirv::IdRefList columnIds; in createConstructorMatrixFromScalar()
1349 const spirv::IdRef columnTypeId = mBuilder.getBasicTypeId(type.getBasicType(), type.getRows()); in createConstructorMatrixFromScalar()
1366 spirv::WriteCompositeConstruct(mBuilder.getSpirvCurrentFunctionBlock(), columnTypeId, in createConstructorMatrixFromScalar()
1371 const spirv::IdRef result = mBuilder.getNewId(decorations); in createConstructorMatrixFromScalar()
1372 spirv::WriteCompositeConstruct(mBuilder.getSpirvCurrentFunctionBlock(), typeId, result, in createConstructorMatrixFromScalar()
1377 spirv::IdRef OutputSPIRVTraverser::createConstructorMatrixFromVectors( in createConstructorMatrixFromVectors()
1379 spirv::IdRef typeId, in createConstructorMatrixFromVectors()
1380 const spirv::IdRefList &parameters) in createConstructorMatrixFromVectors()
1392 spirv::IdRefList extractedComponents; in createConstructorMatrixFromVectors()
1395 spirv::IdRefList columnIds; in createConstructorMatrixFromVectors()
1397 const spirv::IdRef columnTypeId = mBuilder.getBasicTypeId(type.getBasicType(), type.getRows()); in createConstructorMatrixFromVectors()
1405 const spirv::IdRefList componentIds(componentsStart, componentsStart + type.getRows()); in createConstructorMatrixFromVectors()
1408 spirv::WriteCompositeConstruct(mBuilder.getSpirvCurrentFunctionBlock(), columnTypeId, in createConstructorMatrixFromVectors()
1412 const spirv::IdRef result = mBuilder.getNewId(decorations); in createConstructorMatrixFromVectors()
1413 spirv::WriteCompositeConstruct(mBuilder.getSpirvCurrentFunctionBlock(), typeId, result, in createConstructorMatrixFromVectors()
1418 spirv::IdRef OutputSPIRVTraverser::createConstructorMatrixFromMatrix( in createConstructorMatrixFromMatrix()
1420 spirv::IdRef typeId, in createConstructorMatrixFromMatrix()
1421 const spirv::IdRefList &parameters) in createConstructorMatrixFromMatrix()
1449 spirv::IdRefList columnIds; in createConstructorMatrixFromMatrix()
1451 const spirv::IdRef columnTypeId = mBuilder.getBasicTypeId(type.getBasicType(), type.getRows()); in createConstructorMatrixFromMatrix()
1459 const spirv::IdRef paramColumnTypeId = in createConstructorMatrixFromMatrix()
1463 spirv::LiteralIntegerList swizzle = {spirv::LiteralInteger(0), spirv::LiteralInteger(1), in createConstructorMatrixFromMatrix()
1464 spirv::LiteralInteger(2), spirv::LiteralInteger(3)}; in createConstructorMatrixFromMatrix()
1470 const spirv::IdRef parameterColumnId = mBuilder.getNewId(decorations); in createConstructorMatrixFromMatrix()
1471 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), paramColumnTypeId, in createConstructorMatrixFromMatrix()
1473 {spirv::LiteralInteger(columnIndex)}); in createConstructorMatrixFromMatrix()
1476 spirv::IdRef constructorColumnId = parameterColumnId; in createConstructorMatrixFromMatrix()
1480 spirv::WriteVectorShuffle(mBuilder.getSpirvCurrentFunctionBlock(), columnTypeId, in createConstructorMatrixFromMatrix()
1495 const spirv::IdRef paramComponentTypeId = in createConstructorMatrixFromMatrix()
1500 spirv::IdRefList componentIds; in createConstructorMatrixFromMatrix()
1505 spirv::IdRef componentId; in createConstructorMatrixFromMatrix()
1509 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), in createConstructorMatrixFromMatrix()
1511 {spirv::LiteralInteger(columnIndex), in createConstructorMatrixFromMatrix()
1512 spirv::LiteralInteger(componentIndex)}); in createConstructorMatrixFromMatrix()
1541 spirv::WriteCompositeConstruct(mBuilder.getSpirvCurrentFunctionBlock(), columnTypeId, in createConstructorMatrixFromMatrix()
1546 const spirv::IdRef result = mBuilder.getNewId(decorations); in createConstructorMatrixFromMatrix()
1547 spirv::WriteCompositeConstruct(mBuilder.getSpirvCurrentFunctionBlock(), typeId, result, in createConstructorMatrixFromMatrix()
1552 spirv::IdRefList OutputSPIRVTraverser::loadAllParams(TIntermOperator *node, size_t skipCount) in loadAllParams()
1555 spirv::IdRefList parameters; in loadAllParams()
1562 const spirv::IdRef paramValue = accessChainLoad( in loadAllParams()
1573 const spirv::IdRefList &parameters, in extractComponents()
1574 spirv::IdRefList *extractedComponentsOut) in extractComponents()
1591 const spirv::IdRef parameterId = parameters[argumentIndex]; in extractComponents()
1596 const spirv::IdRef castParameterId = in extractComponents()
1608 const spirv::IdRef componentTypeId = in extractComponents()
1612 const spirv::IdRef castParameterId = in extractComponents()
1622 const spirv::IdRef componentId = mBuilder.getNewId(decorations); in extractComponents()
1623 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), in extractComponents()
1625 {spirv::LiteralInteger(componentIndex)}); in extractComponents()
1637 const spirv::IdRef componentTypeId = mBuilder.getSpirvTypeData(componentType, nullptr).id; in extractComponents()
1650 const spirv::IdRef componentId = mBuilder.getNewId(decorations); in extractComponents()
1651 spirv::WriteCompositeExtract( in extractComponents()
1654 {spirv::LiteralInteger(columnIndex), spirv::LiteralInteger(componentIndex)}); in extractComponents()
1673 spirv::IdRef typeId; in startShortCircuit()
1674 const spirv::IdRef left = in startShortCircuit()
1687 const spirv::IdRef mergeBlock = conditional->blockIds.back(); in startShortCircuit()
1688 const spirv::IdRef ifBlock = conditional->blockIds.front(); in startShortCircuit()
1689 const spirv::IdRef trueBlock = node->getOp() == EOpLogicalAnd ? ifBlock : mergeBlock; in startShortCircuit()
1690 const spirv::IdRef falseBlock = node->getOp() == EOpLogicalOr ? ifBlock : mergeBlock; in startShortCircuit()
1697 spirv::IdRef OutputSPIRVTraverser::endShortCircuit(TIntermBinary *node, spirv::IdRef *typeId) in endShortCircuit()
1700 const spirv::IdRef right = in endShortCircuit()
1705 const spirv::IdRef rightBlockId = mBuilder.getSpirvCurrentFunctionBlockId(); in endShortCircuit()
1709 const spirv::IdRef leftBlockId = mNodeData.back().idList[0].id; in endShortCircuit()
1720 const spirv::IdRef left = mNodeData.back().baseId; in endShortCircuit()
1724 const spirv::IdRef result = mBuilder.getNewId(mBuilder.getDecorations(node->getType())); in endShortCircuit()
1726 spirv::WritePhi( in endShortCircuit()
1728 {spirv::PairIdRefIdRef{left, leftBlockId}, spirv::PairIdRefIdRef{right, rightBlockId}}); in endShortCircuit()
1733 spirv::IdRef OutputSPIRVTraverser::createFunctionCall(TIntermAggregate *node, in createFunctionCall()
1734 spirv::IdRef resultTypeId) in createFunctionCall()
1740 const spirv::IdRef functionId = mFunctionIdMap[function].functionId; in createFunctionCall()
1765 spirv::IdRefList parameters; in createFunctionCall()
1766 spirv::IdRefList tempVarIds(parameterCount); in createFunctionCall()
1767 spirv::IdRefList tempVarTypeIds(parameterCount); in createFunctionCall()
1775 spirv::IdRef paramValue; in createFunctionCall()
1812 spirv::WriteStore(mBuilder.getSpirvCurrentFunctionBlock(), tempVarIds[paramIndex], in createFunctionCall()
1823 const spirv::IdRef result = mBuilder.getNewId(mBuilder.getDecorations(node->getType())); in createFunctionCall()
1824 spirv::WriteFunctionCall(mBuilder.getSpirvCurrentFunctionBlock(), resultTypeId, result, in createFunctionCall()
1848 const spirv::IdRef tempVarValue = accessChainLoad(&tempVarData, paramType, nullptr); in createFunctionCall()
1875 using WriteUnaryOp = void (*)(spirv::Blob *blob,
1876 spirv::IdResultType idResultType,
1877 spirv::IdResult idResult,
1878 spirv::IdRef operand);
1879 using WriteBinaryOp = void (*)(spirv::Blob *blob,
1880 spirv::IdResultType idResultType,
1881 spirv::IdResult idResult,
1882 spirv::IdRef operand1,
1883 spirv::IdRef operand2);
1884 using WriteTernaryOp = void (*)(spirv::Blob *blob,
1885 spirv::IdResultType idResultType,
1886 spirv::IdResult idResult,
1887 spirv::IdRef operand1,
1888 spirv::IdRef operand2,
1889 spirv::IdRef operand3);
1890 using WriteQuaternaryOp = void (*)(spirv::Blob *blob,
1891 spirv::IdResultType idResultType,
1892 spirv::IdResult idResult,
1893 spirv::IdRef operand1,
1894 spirv::IdRef operand2,
1895 spirv::IdRef operand3,
1896 spirv::IdRef operand4);
1897 using WriteAtomicOp = void (*)(spirv::Blob *blob,
1898 spirv::IdResultType idResultType,
1899 spirv::IdResult idResult,
1900 spirv::IdRef pointer,
1901 spirv::IdScope scope,
1902 spirv::IdMemorySemantics semantics,
1903 spirv::IdRef value);
1905 spirv::IdRef OutputSPIRVTraverser::visitOperator(TIntermOperator *node, spirv::IdRef resultTypeId) in visitOperator()
1963 writeUnaryOp = spirv::WriteFNegate; in visitOperator()
1965 writeUnaryOp = spirv::WriteSNegate; in visitOperator()
1973 writeUnaryOp = spirv::WriteLogicalNot; in visitOperator()
1976 writeUnaryOp = spirv::WriteNot; in visitOperator()
1982 writeBinaryOp = spirv::WriteFAdd; in visitOperator()
1984 writeBinaryOp = spirv::WriteIAdd; in visitOperator()
1989 writeBinaryOp = spirv::WriteFSub; in visitOperator()
1991 writeBinaryOp = spirv::WriteISub; in visitOperator()
1997 writeBinaryOp = spirv::WriteFMul; in visitOperator()
1999 writeBinaryOp = spirv::WriteIMul; in visitOperator()
2004 writeBinaryOp = spirv::WriteFDiv; in visitOperator()
2006 writeBinaryOp = spirv::WriteUDiv; in visitOperator()
2008 writeBinaryOp = spirv::WriteSDiv; in visitOperator()
2013 writeBinaryOp = spirv::WriteFMod; in visitOperator()
2015 writeBinaryOp = spirv::WriteUMod; in visitOperator()
2017 writeBinaryOp = spirv::WriteSMod; in visitOperator()
2022 writeBinaryOp = spirv::WriteFOrdEqual; in visitOperator()
2024 writeBinaryOp = spirv::WriteLogicalEqual; in visitOperator()
2026 writeBinaryOp = spirv::WriteIEqual; in visitOperator()
2030 writeBinaryOp = spirv::WriteFUnordNotEqual; in visitOperator()
2032 writeBinaryOp = spirv::WriteLogicalNotEqual; in visitOperator()
2034 writeBinaryOp = spirv::WriteINotEqual; in visitOperator()
2039 writeBinaryOp = spirv::WriteFOrdLessThan; in visitOperator()
2041 writeBinaryOp = spirv::WriteULessThan; in visitOperator()
2043 writeBinaryOp = spirv::WriteSLessThan; in visitOperator()
2048 writeBinaryOp = spirv::WriteFOrdGreaterThan; in visitOperator()
2050 writeBinaryOp = spirv::WriteUGreaterThan; in visitOperator()
2052 writeBinaryOp = spirv::WriteSGreaterThan; in visitOperator()
2057 writeBinaryOp = spirv::WriteFOrdLessThanEqual; in visitOperator()
2059 writeBinaryOp = spirv::WriteULessThanEqual; in visitOperator()
2061 writeBinaryOp = spirv::WriteSLessThanEqual; in visitOperator()
2066 writeBinaryOp = spirv::WriteFOrdGreaterThanEqual; in visitOperator()
2068 writeBinaryOp = spirv::WriteUGreaterThanEqual; in visitOperator()
2070 writeBinaryOp = spirv::WriteSGreaterThanEqual; in visitOperator()
2077 writeBinaryOp = spirv::WriteVectorTimesScalar; in visitOperator()
2082 writeBinaryOp = spirv::WriteIMul; in visitOperator()
2086 writeBinaryOp = spirv::WriteVectorTimesMatrix; in visitOperator()
2090 writeBinaryOp = spirv::WriteMatrixTimesVector; in visitOperator()
2095 writeBinaryOp = spirv::WriteMatrixTimesScalar; in visitOperator()
2101 writeBinaryOp = spirv::WriteMatrixTimesMatrix; in visitOperator()
2108 writeBinaryOp = spirv::WriteLogicalOr; in visitOperator()
2112 writeBinaryOp = spirv::WriteLogicalNotEqual; in visitOperator()
2117 writeBinaryOp = spirv::WriteLogicalAnd; in visitOperator()
2122 writeBinaryOp = spirv::WriteShiftLeftLogical; in visitOperator()
2127 writeBinaryOp = spirv::WriteShiftRightLogical; in visitOperator()
2129 writeBinaryOp = spirv::WriteShiftRightArithmetic; in visitOperator()
2133 writeBinaryOp = spirv::WriteBitwiseAnd; in visitOperator()
2137 writeBinaryOp = spirv::WriteBitwiseXor; in visitOperator()
2141 writeBinaryOp = spirv::WriteBitwiseOr; in visitOperator()
2241 writeBinaryOp = spirv::WriteFMod; in visitOperator()
2243 writeBinaryOp = spirv::WriteUMod; in visitOperator()
2245 writeBinaryOp = spirv::WriteSMod; in visitOperator()
2275 writeTernaryOp = spirv::WriteSelect; in visitOperator()
2294 writeUnaryOp = spirv::WriteIsNan; in visitOperator()
2297 writeUnaryOp = spirv::WriteIsInf; in visitOperator()
2303 writeUnaryOp = spirv::WriteBitcast; in visitOperator()
2362 writeBinaryOp = spirv::WriteFMul; in visitOperator()
2364 writeBinaryOp = spirv::WriteIMul; in visitOperator()
2368 writeBinaryOp = spirv::WriteDot; in visitOperator()
2393 writeBinaryOp = spirv::WriteOuterProduct; in visitOperator()
2396 writeUnaryOp = spirv::WriteTranspose; in visitOperator()
2406 writeUnaryOp = spirv::WriteAny; in visitOperator()
2409 writeUnaryOp = spirv::WriteAll; in visitOperator()
2414 writeTernaryOp = spirv::WriteBitFieldUExtract; in visitOperator()
2416 writeTernaryOp = spirv::WriteBitFieldSExtract; in visitOperator()
2419 writeQuaternaryOp = spirv::WriteBitFieldInsert; in visitOperator()
2422 writeUnaryOp = spirv::WriteBitReverse; in visitOperator()
2425 writeUnaryOp = spirv::WriteBitCount; in visitOperator()
2437 writeBinaryOp = spirv::WriteIAddCarry; in visitOperator()
2441 writeBinaryOp = spirv::WriteISubBorrow; in visitOperator()
2445 writeBinaryOp = spirv::WriteUMulExtended; in visitOperator()
2449 writeBinaryOp = spirv::WriteSMulExtended; in visitOperator()
2462 writeUnaryOp = spirv::WriteDPdx; in visitOperator()
2465 writeUnaryOp = spirv::WriteDPdy; in visitOperator()
2468 writeUnaryOp = spirv::WriteFwidth; in visitOperator()
2471 writeUnaryOp = spirv::WriteDPdxFine; in visitOperator()
2474 writeUnaryOp = spirv::WriteDPdyFine; in visitOperator()
2477 writeUnaryOp = spirv::WriteDPdxCoarse; in visitOperator()
2480 writeUnaryOp = spirv::WriteDPdyCoarse; in visitOperator()
2483 writeUnaryOp = spirv::WriteFwidthFine; in visitOperator()
2486 writeUnaryOp = spirv::WriteFwidthCoarse; in visitOperator()
2513 spirv::IdRefList parameters = loadAllParams(node, lvalueCount); in visitOperator()
2516 spirv::IdRef result; in visitOperator()
2524 spirv::IdRef builtInResultTypeId = resultTypeId; in visitOperator()
2525 spirv::IdRef builtInResult; in visitOperator()
2539 spirv::IdRefList columnIds; in visitOperator()
2543 const spirv::IdRef columnTypeId = in visitOperator()
2554 const spirv::IdRef columnIdA = mBuilder.getNewId(operandDecorations); in visitOperator()
2555 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), columnTypeId, in visitOperator()
2557 {spirv::LiteralInteger(columnIndex)}); in visitOperator()
2570 const spirv::IdRef columnIdB = mBuilder.getNewId(operandDecorations); in visitOperator()
2571 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), columnTypeId, in visitOperator()
2573 {spirv::LiteralInteger(columnIndex)}); in visitOperator()
2581 spirv::WriteCompositeConstruct(mBuilder.getSpirvCurrentFunctionBlock(), builtInResultTypeId, in visitOperator()
2648 spirv::WriteExtInst(mBuilder.getSpirvCurrentFunctionBlock(), builtInResultTypeId, in visitOperator()
2650 spirv::LiteralExtInstInteger(extendedInst), parameters); in visitOperator()
2672 spirv::IdRef OutputSPIRVTraverser::createIncrementDecrement(TIntermOperator *node, in createIncrementDecrement()
2673 spirv::IdRef resultTypeId) in createIncrementDecrement()
2689 writeBinaryOp = spirv::WriteFAdd; in createIncrementDecrement()
2691 writeBinaryOp = spirv::WriteIAdd; in createIncrementDecrement()
2696 writeBinaryOp = spirv::WriteFSub; in createIncrementDecrement()
2698 writeBinaryOp = spirv::WriteISub; in createIncrementDecrement()
2705 spirv::IdRef value = accessChainLoad(&mNodeData.back(), operandType, nullptr); in createIncrementDecrement()
2707 spirv::IdRef result = mBuilder.getNewId(mBuilder.getDecorations(operandType)); in createIncrementDecrement()
2708 const spirv::IdRef one = isFloat ? mBuilder.getFloatConstant(1) : mBuilder.getIntConstant(1); in createIncrementDecrement()
2725 spirv::IdRef OutputSPIRVTraverser::createCompare(TIntermOperator *node, spirv::IdRef resultTypeId) in createCompare()
2735 spirv::IdRefList parameters = loadAllParams(node, 0); in createCompare()
2751 spirv::LiteralIntegerList currentAccessChain; in createCompare()
2752 spirv::IdRefList intermediateResults; in createCompare()
2775 spirv::IdRefList toReduce = {intermediateResults[reducedCount++]}; in createCompare()
2786 const spirv::IdRef result = reduceBoolVector(op, toReduce, resultTypeId, resultDecorations); in createCompare()
2797 spirv::IdRef OutputSPIRVTraverser::createAtomicBuiltIn(TIntermOperator *node, in createAtomicBuiltIn()
2798 spirv::IdRef resultTypeId) in createAtomicBuiltIn()
2821 spirv::IdRef pointerId; in createAtomicBuiltIn()
2822 spirv::IdRefList imagePointerParameters; in createAtomicBuiltIn()
2823 spirv::IdRefList parameters; in createAtomicBuiltIn()
2842 const spirv::IdRef parameter = accessChainLoad( in createAtomicBuiltIn()
2859 const spirv::IdScope scopeId = mBuilder.getUintConstant(spv::ScopeDevice); in createAtomicBuiltIn()
2862 const spirv::IdMemorySemantics semanticsId = in createAtomicBuiltIn()
2867 const spirv::IdRef result = mBuilder.getNewId(mBuilder.getDecorations(node->getType())); in createAtomicBuiltIn()
2875 const spirv::IdRef texelTypePointerId = in createAtomicBuiltIn()
2877 const spirv::IdRef texelPointerId = mBuilder.getNewId({}); in createAtomicBuiltIn()
2879 const spirv::IdRef coordinate = imagePointerParameters[0]; in createAtomicBuiltIn()
2880 spirv::IdRef sample = imagePointerParameters.size() > 1 ? imagePointerParameters[1] in createAtomicBuiltIn()
2883 spirv::WriteImageTexelPointer(mBuilder.getSpirvCurrentFunctionBlock(), texelTypePointerId, in createAtomicBuiltIn()
2893 writeAtomicOp = spirv::WriteAtomicIAdd; in createAtomicBuiltIn()
2897 writeAtomicOp = isUnsigned ? spirv::WriteAtomicUMin : spirv::WriteAtomicSMin; in createAtomicBuiltIn()
2901 writeAtomicOp = isUnsigned ? spirv::WriteAtomicUMax : spirv::WriteAtomicSMax; in createAtomicBuiltIn()
2905 writeAtomicOp = spirv::WriteAtomicAnd; in createAtomicBuiltIn()
2909 writeAtomicOp = spirv::WriteAtomicOr; in createAtomicBuiltIn()
2913 writeAtomicOp = spirv::WriteAtomicXor; in createAtomicBuiltIn()
2917 writeAtomicOp = spirv::WriteAtomicExchange; in createAtomicBuiltIn()
2925 spirv::WriteAtomicCompareExchange(mBuilder.getSpirvCurrentFunctionBlock(), resultTypeId, in createAtomicBuiltIn()
2941 spirv::IdRef OutputSPIRVTraverser::createImageTextureBuiltIn(TIntermOperator *node, in createImageTextureBuiltIn()
2942 spirv::IdRef resultTypeId) in createImageTextureBuiltIn()
2950 spirv::IdRefList parameters = loadAllParams(node, 0); in createImageTextureBuiltIn()
2997 spirv::IdRef image = parameters[0]; in createImageTextureBuiltIn()
3371 const spirv::IdRef extractedImageTypeId = mBuilder.getSpirvTypeData(imageType, nullptr).id; in createImageTextureBuiltIn()
3374 const spirv::IdRef extractedImage = mBuilder.getNewId({}); in createImageTextureBuiltIn()
3375 spirv::WriteImage(mBuilder.getSpirvCurrentFunctionBlock(), extractedImageTypeId, in createImageTextureBuiltIn()
3384 spirv::IdRef coordinatesId; in createImageTextureBuiltIn()
3396 spirv::IdRef drefId; in createImageTextureBuiltIn()
3410 const spirv::IdRef drefTypeId = mBuilder.getSpirvTypeData(drefSpirvType, nullptr).id; in createImageTextureBuiltIn()
3414 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), drefTypeId, drefId, in createImageTextureBuiltIn()
3415 coordinatesId, {spirv::LiteralInteger(drefComponent)}); in createImageTextureBuiltIn()
3419 spirv::IdRef gatherComponentId; in createImageTextureBuiltIn()
3431 spirv::IdRef dataId; in createImageTextureBuiltIn()
3439 spirv::IdRefList imageOperandsList; in createImageTextureBuiltIn()
3546 const spirv::IdRef coordinatesTypeId = mBuilder.getSpirvTypeData(spirvType, nullptr).id; in createImageTextureBuiltIn()
3548 const spirv::IdRef channelTypeId = mBuilder.getSpirvTypeData(spirvType, nullptr).id; in createImageTextureBuiltIn()
3551 const spirv::IdRef projChannelId = in createImageTextureBuiltIn()
3553 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), channelTypeId, in createImageTextureBuiltIn()
3555 {spirv::LiteralInteger(coordinatesChannelCount - 1)}); in createImageTextureBuiltIn()
3559 const spirv::IdRef newCoordinatesId = in createImageTextureBuiltIn()
3561 spirv::WriteCompositeInsert(mBuilder.getSpirvCurrentFunctionBlock(), coordinatesTypeId, in createImageTextureBuiltIn()
3563 {spirv::LiteralInteger(requiredChannelCount - 1)}); in createImageTextureBuiltIn()
3604 spirv::IdRef result; in createImageTextureBuiltIn()
3615 spirv::WriteImageQuerySizeLod(mBuilder.getSpirvCurrentFunctionBlock(), resultTypeId, in createImageTextureBuiltIn()
3620 spirv::WriteImageQuerySize(mBuilder.getSpirvCurrentFunctionBlock(), resultTypeId, in createImageTextureBuiltIn()
3625 spirv::WriteImageQueryLod(mBuilder.getSpirvCurrentFunctionBlock(), resultTypeId, result, in createImageTextureBuiltIn()
3630 spirv::WriteImageQueryLevels(mBuilder.getSpirvCurrentFunctionBlock(), resultTypeId, in createImageTextureBuiltIn()
3635 spirv::WriteImageQuerySamples(mBuilder.getSpirvCurrentFunctionBlock(), resultTypeId, in createImageTextureBuiltIn()
3639 spirv::WriteImageSampleImplicitLod(mBuilder.getSpirvCurrentFunctionBlock(), in createImageTextureBuiltIn()
3644 spirv::WriteImageSampleExplicitLod(mBuilder.getSpirvCurrentFunctionBlock(), in createImageTextureBuiltIn()
3649 spirv::WriteImageSampleDrefImplicitLod(mBuilder.getSpirvCurrentFunctionBlock(), in createImageTextureBuiltIn()
3654 spirv::WriteImageSampleDrefExplicitLod(mBuilder.getSpirvCurrentFunctionBlock(), in createImageTextureBuiltIn()
3659 spirv::WriteImageSampleProjImplicitLod(mBuilder.getSpirvCurrentFunctionBlock(), in createImageTextureBuiltIn()
3664 spirv::WriteImageSampleProjExplicitLod(mBuilder.getSpirvCurrentFunctionBlock(), in createImageTextureBuiltIn()
3669 spirv::WriteImageSampleProjDrefImplicitLod(mBuilder.getSpirvCurrentFunctionBlock(), in createImageTextureBuiltIn()
3674 spirv::WriteImageSampleProjDrefExplicitLod(mBuilder.getSpirvCurrentFunctionBlock(), in createImageTextureBuiltIn()
3679 spirv::WriteImageFetch(mBuilder.getSpirvCurrentFunctionBlock(), resultTypeId, result, in createImageTextureBuiltIn()
3683 spirv::WriteImageGather(mBuilder.getSpirvCurrentFunctionBlock(), resultTypeId, result, in createImageTextureBuiltIn()
3688 spirv::WriteImageDrefGather(mBuilder.getSpirvCurrentFunctionBlock(), resultTypeId, in createImageTextureBuiltIn()
3693 spirv::WriteImageRead(mBuilder.getSpirvCurrentFunctionBlock(), resultTypeId, result, in createImageTextureBuiltIn()
3697 spirv::WriteImageWrite(mBuilder.getSpirvCurrentFunctionBlock(), image, coordinatesId, in createImageTextureBuiltIn()
3713 spirv::IdRef OutputSPIRVTraverser::createInterpolate(TIntermOperator *node, in createInterpolate()
3714 spirv::IdRef resultTypeId) in createInterpolate()
3737 spirv::IdRefList parameters; in createInterpolate()
3748 const spirv::IdRef result = mBuilder.getNewId(mBuilder.getDecorations(node->getType())); in createInterpolate()
3750 spirv::WriteExtInst(mBuilder.getSpirvCurrentFunctionBlock(), resultTypeId, result, in createInterpolate()
3752 spirv::LiteralExtInstInteger(extendedInst), parameters); in createInterpolate()
3757 spirv::IdRef OutputSPIRVTraverser::castBasicType(spirv::IdRef value, in castBasicType()
3760 spirv::IdRef *resultTypeIdOut) in castBasicType()
3770 const spirv::IdRef castTypeId = mBuilder.getSpirvTypeData(valueSpirvType, nullptr).id; in castBasicType()
3772 const spirv::IdRef castValue = mBuilder.getNewId(mBuilder.getDecorations(valueType)); in castBasicType()
3787 spirv::IdRef zero; in castBasicType()
3788 spirv::IdRef one; in castBasicType()
3796 writeUnaryOp = spirv::WriteConvertFToS; in castBasicType()
3799 writeUnaryOp = spirv::WriteConvertFToU; in castBasicType()
3803 writeBinaryOp = spirv::WriteFUnordNotEqual; in castBasicType()
3815 writeUnaryOp = valueType.getBasicType() == EbtInt ? spirv::WriteConvertSToF in castBasicType()
3816 : spirv::WriteConvertUToF; in castBasicType()
3820 writeUnaryOp = spirv::WriteBitcast; in castBasicType()
3824 writeBinaryOp = spirv::WriteINotEqual; in castBasicType()
3832 writeTernaryOp = spirv::WriteSelect; in castBasicType()
3880 spirv::IdRef OutputSPIRVTraverser::cast(spirv::IdRef value, in cast()
3884 spirv::IdRef *resultTypeIdOut) in cast()
3908 spirv::IdRefList constituents; in cast()
3926 const spirv::IdRef elementTypeId = in cast()
3935 const spirv::IdRef elementId = mBuilder.getNewId(elementDecorations); in cast()
3936 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), elementTypeId, in cast()
3937 elementId, value, {spirv::LiteralInteger(elementIndex)}); in cast()
3960 const spirv::IdRef fieldTypeId = mBuilder.getTypeData(fieldType, valueFieldTypeSpec).id; in cast()
3963 const spirv::IdRef fieldId = mBuilder.getNewId(mBuilder.getDecorations(fieldType)); in cast()
3964 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), fieldTypeId, in cast()
3965 fieldId, value, {spirv::LiteralInteger(fieldIndex++)}); in cast()
3993 const spirv::IdRef expectedTypeId = mBuilder.getTypeData(valueType, expectedTypeSpec).id; in cast()
3994 const spirv::IdRef expectedId = mBuilder.getNewId(mBuilder.getDecorations(valueType)); in cast()
3996 spirv::WriteCompositeConstruct(mBuilder.getSpirvCurrentFunctionBlock(), expectedTypeId, in cast()
4007 spirv::IdRef OutputSPIRVTraverser::reduceBoolVector(TOperator op, in reduceBoolVector()
4008 const spirv::IdRefList &valueIds, in reduceBoolVector()
4009 spirv::IdRef typeId, in reduceBoolVector()
4016 op == EOpEqual ? spirv::WriteLogicalAnd : spirv::WriteLogicalOr; in reduceBoolVector()
4017 const spirv::IdRef result = mBuilder.getNewId(decorations); in reduceBoolVector()
4024 WriteUnaryOp writeUnaryOp = op == EOpEqual ? spirv::WriteAll : spirv::WriteAny; in reduceBoolVector()
4025 spirv::IdRef valueId = valueIds[0]; in reduceBoolVector()
4030 const spirv::IdRef bvecTypeId = mBuilder.getBasicTypeId(EbtBool, valueIds.size()); in reduceBoolVector()
4033 spirv::WriteCompositeConstruct(mBuilder.getSpirvCurrentFunctionBlock(), bvecTypeId, valueId, in reduceBoolVector()
4037 const spirv::IdRef result = mBuilder.getNewId(decorations); in reduceBoolVector()
4045 spirv::IdRef resultTypeId, in createCompareImpl()
4046 spirv::IdRef leftId, in createCompareImpl()
4047 spirv::IdRef rightId, in createCompareImpl()
4050 spirv::LiteralIntegerList *currentAccessChain, in createCompareImpl()
4051 spirv::IdRefList *intermediateResultsOut) in createCompareImpl()
4070 currentAccessChain->back() = spirv::LiteralInteger(elementIndex); in createCompareImpl()
4090 currentAccessChain->back() = spirv::LiteralInteger(fieldIndex++); in createCompareImpl()
4111 currentAccessChain->back() = spirv::LiteralInteger(columnIndex); in createCompareImpl()
4126 writeBinaryOp = spirv::WriteFOrdEqual; in createCompareImpl()
4128 writeBinaryOp = spirv::WriteLogicalEqual; in createCompareImpl()
4130 writeBinaryOp = spirv::WriteIEqual; in createCompareImpl()
4137 writeBinaryOp = spirv::WriteFUnordNotEqual; in createCompareImpl()
4139 writeBinaryOp = spirv::WriteLogicalNotEqual; in createCompareImpl()
4141 writeBinaryOp = spirv::WriteINotEqual; in createCompareImpl()
4145 spirv::IdRef leftComponentId = leftId; in createCompareImpl()
4146 spirv::IdRef rightComponentId = rightId; in createCompareImpl()
4152 const spirv::IdRef componentTypeId = in createCompareImpl()
4155 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), componentTypeId, in createCompareImpl()
4157 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), componentTypeId, in createCompareImpl()
4162 spirv::IdRef result = mBuilder.getNewId({}); in createCompareImpl()
4163 spirv::IdRef opResultTypeId = resultTypeId; in createCompareImpl()
4182 spirv::IdRef OutputSPIRVTraverser::makeBuiltInOutputStructType(TIntermOperator *node, in makeBuiltInOutputStructType()
4233 const spirv::IdRef structTypeId = mBuilder.getTypeData(structType, {}).id; in makeBuiltInOutputStructType()
4245 spirv::IdRef structValue, in storeBuiltInStructOutputInParamsAndReturnValue()
4246 spirv::IdRef returnValue, in storeBuiltInStructOutputInParamsAndReturnValue()
4247 spirv::IdRef returnValueType) in storeBuiltInStructOutputInParamsAndReturnValue()
4262 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), returnValueType, in storeBuiltInStructOutputInParamsAndReturnValue()
4263 returnValue, structValue, {spirv::LiteralInteger(0)}); in storeBuiltInStructOutputInParamsAndReturnValue()
4288 spirv::IdRef structValue, in storeBuiltInStructOutputInParamHelper()
4291 spirv::IdRef fieldTypeId = mBuilder.getTypeData(param->getType(), {}).id; in storeBuiltInStructOutputInParamHelper()
4292 spirv::IdRef fieldValueId = mBuilder.getNewId(mBuilder.getDecorations(param->getType())); in storeBuiltInStructOutputInParamHelper()
4294 spirv::WriteCompositeExtract(mBuilder.getSpirvCurrentFunctionBlock(), fieldTypeId, fieldValueId, in storeBuiltInStructOutputInParamHelper()
4295 structValue, {spirv::LiteralInteger(fieldIndex)}); in storeBuiltInStructOutputInParamHelper()
4339 const spirv::IdRef typeId = mBuilder.getTypeData(type, typeSpec).id; in visitSymbol()
4353 const spirv::IdRef symbolId = getSymbolIdAndStorageClass(symbol, type, &storageClass); in visitSymbol()
4361 accessChainPushLiteral(&mNodeData.back(), spirv::LiteralInteger(fieldIndex), typeId); in visitSymbol()
4408 const spirv::IdRef typeId = mBuilder.getTypeData(type, {}).id; in visitConstantUnion()
4409 const spirv::IdRef constId = createConstant(type, expectedBasicType, node->getConstantValue(), in visitConstantUnion()
4448 const spirv::IdRef typeId = in visitSwizzle()
4486 spirv::IdRef typeId; in visitBinary()
4487 const spirv::IdRef result = endShortCircuit(node, &typeId); in visitBinary()
4513 const spirv::IdRef typeId = in visitBinary()
4515 accessChainPushLiteral(&mNodeData.back(), spirv::LiteralInteger(index), typeId); in visitBinary()
4536 const spirv::IdRef resultTypeId = mBuilder.getTypeData(node->getType(), resultTypeSpec).id; in visitBinary()
4550 const spirv::IdRef rightValue = in visitBinary()
4568 const spirv::IdRef rightValue = in visitBinary()
4587 const spirv::IdRef result = visitOperator(node, resultTypeId); in visitBinary()
4623 const spirv::IdRef baseId = mNodeData.back().baseId; in visitUnary()
4624 const spirv::LiteralInteger fieldIndex = mNodeData.back().idList.back().literal; in visitUnary()
4627 const spirv::IdRef intTypeId = mBuilder.getBasicTypeId(EbtInt, 1); in visitUnary()
4628 const spirv::IdRef uintTypeId = mBuilder.getBasicTypeId(EbtUInt, 1); in visitUnary()
4631 const spirv::IdRef resultId = mBuilder.getNewId({}); in visitUnary()
4632 spirv::WriteArrayLength(mBuilder.getSpirvCurrentFunctionBlock(), uintTypeId, resultId, in visitUnary()
4636 const spirv::IdRef castResultId = mBuilder.getNewId({}); in visitUnary()
4637 spirv::WriteBitcast(mBuilder.getSpirvCurrentFunctionBlock(), intTypeId, castResultId, in visitUnary()
4646 const spirv::IdRef resultTypeId = mBuilder.getTypeData(node->getType(), {}).id; in visitUnary()
4647 const spirv::IdRef result = visitOperator(node, resultTypeId); in visitUnary()
4675 spirv::IdRef typeId; in visitTernary()
4676 spirv::IdRef conditionValue = in visitTernary()
4703 const spirv::IdRef trueBlockId = conditional->blockIds[0]; in visitTernary()
4704 const spirv::IdRef falseBlockId = conditional->blockIds[1]; in visitTernary()
4705 const spirv::IdRef mergeBlockId = conditional->blockIds.back(); in visitTernary()
4714 spirv::IdRef typeId; in visitTernary()
4715 const spirv::IdRef value = accessChainLoad(&mNodeData.back(), type, &typeId); in visitTernary()
4728 const spirv::IdRef result = mBuilder.getNewId(mBuilder.getDecorations(node->getType())); in visitTernary()
4731 const spirv::IdRef trueValue = mNodeData.back().idList[0].id; in visitTernary()
4732 const spirv::IdRef falseValue = mNodeData.back().idList[1].id; in visitTernary()
4736 const spirv::IdRef conditionValue = mNodeData.back().baseId; in visitTernary()
4738 spirv::WriteSelect(mBuilder.getSpirvCurrentFunctionBlock(), typeId, result, in visitTernary()
4745 const spirv::IdRef trueBlockId = conditional->blockIds[0]; in visitTernary()
4746 const spirv::IdRef falseBlockId = conditional->blockIds[1]; in visitTernary()
4748 spirv::WritePhi(mBuilder.getSpirvCurrentFunctionBlock(), typeId, result, in visitTernary()
4749 {spirv::PairIdRefIdRef{trueValue, trueBlockId}, in visitTernary()
4750 spirv::PairIdRefIdRef{falseValue, falseBlockId}}); in visitTernary()
4775 const spirv::IdRef conditionValue = in visitIfElse()
4786 const spirv::IdRef mergeBlock = conditional->blockIds.back(); in visitIfElse()
4787 spirv::IdRef trueBlock = mergeBlock; in visitIfElse()
4788 spirv::IdRef falseBlock = mergeBlock; in visitIfElse()
4896 const spirv::IdRef conditionValue = in visitSwitch()
4956 spirv::PairLiteralIntegerIdRefList switchTargets; in visitSwitch()
4964 {spirv::LiteralInteger(value), conditional->blockIds[caseBlockIndex]}); in visitSwitch()
4967 const spirv::IdRef mergeBlock = conditional->blockIds.back(); in visitSwitch()
4968 const spirv::IdRef defaultBlock = defaultBlockIndex < caseValues.size() in visitSwitch()
5070 spirv::WriteFunction(mBuilder.getSpirvFunctions(), ids.returnTypeId, ids.functionId, in visitFunctionDefinition()
5077 const spirv::IdRef paramId = in visitFunctionDefinition()
5079 spirv::WriteFunctionParameter(mBuilder.getSpirvFunctions(), in visitFunctionDefinition()
5086 spirv::WriteName(mBuilder.getSpirvDebug(), paramId, in visitFunctionDefinition()
5100 spirv::WriteReturn(mBuilder.getSpirvCurrentFunctionBlock()); in visitFunctionDefinition()
5108 spirv::IdRef nullConstant; in visitFunctionDefinition()
5130 spirv::WriteReturnValue(mBuilder.getSpirvCurrentFunctionBlock(), nullConstant); in visitFunctionDefinition()
5138 spirv::WriteFunctionEnd(mBuilder.getSpirvFunctions()); in visitFunctionDefinition()
5162 const spirv::IdRef variableId = mSymbolIdMap[variable]; in visitGlobalQualifierDeclaration()
5164 spirv::WriteDecorate(mBuilder.getSpirvDecorations(), variableId, spv::DecorationInvariant, {}); in visitGlobalQualifierDeclaration()
5184 spirv::IdRefList paramTypeIds; in visitFunctionPrototype()
5189 spirv::IdRef paramId = mBuilder.getTypeData(paramType, {}).id; in visitFunctionPrototype()
5244 const spirv::IdRef resultTypeId = mBuilder.getTypeData(node->getType(), {}).id; in visitAggregate()
5245 spirv::IdRef result; in visitAggregate()
5261 spirv::WriteControlBarrier( in visitAggregate()
5271 spirv::WriteControlBarrier(mBuilder.getSpirvCurrentFunctionBlock(), in visitAggregate()
5281 spirv::WriteMemoryBarrier( in visitAggregate()
5290 spirv::WriteMemoryBarrier( in visitAggregate()
5296 spirv::WriteMemoryBarrier( in visitAggregate()
5302 spirv::WriteMemoryBarrier( in visitAggregate()
5362 spirv::IdRef initializerId; in visitDeclaration()
5430 const spirv::IdRef typeId = mBuilder.getTypeData(type, {}).id; in visitDeclaration()
5441 const spirv::IdRef variableId = mBuilder.declareVariable( in visitDeclaration()
5448 spirv::WriteStore(mBuilder.getSpirvCurrentFunctionBlock(), variableId, initializerId, in visitDeclaration()
5456 spirv::IdRef nonArrayTypeId = typeId; in visitDeclaration()
5478 spirv::WriteDecorate(mBuilder.getSpirvDecorations(), nonArrayTypeId, in visitDeclaration()
5487 spirv::WriteDecorate(mBuilder.getSpirvDecorations(), nonArrayTypeId, decoration, {}); in visitDeclaration()
5510 spirv::IdRef *headerBlock, in GetLoopBlocks()
5511 spirv::IdRef *condBlock, in GetLoopBlocks()
5512 spirv::IdRef *bodyBlock, in GetLoopBlocks()
5513 spirv::IdRef *continueBlock, in GetLoopBlocks()
5514 spirv::IdRef *mergeBlock) in GetLoopBlocks()
5668 spirv::IdRef headerBlock, condBlock, bodyBlock, continueBlock, mergeBlock; in visitLoop()
5681 const spirv::IdRef conditionValue = in visitLoop()
5724 const spirv::IdRef conditionValue = in visitLoop()
5753 spirv::WriteKill(mBuilder.getSpirvCurrentFunctionBlock()); in visitBranch()
5757 spirv::WriteBranch(mBuilder.getSpirvCurrentFunctionBlock(), in visitBranch()
5762 spirv::WriteBranch(mBuilder.getSpirvCurrentFunctionBlock(), in visitBranch()
5772 const spirv::IdRef expressionValue = in visitBranch()
5776 spirv::WriteReturnValue(mBuilder.getSpirvCurrentFunctionBlock(), expressionValue); in visitBranch()
5781 spirv::WriteReturn(mBuilder.getSpirvCurrentFunctionBlock()); in visitBranch()
5798 spirv::Blob OutputSPIRVTraverser::getSpirv() in getSpirv()
5800 spirv::Blob result = mBuilder.getSpirv(); in getSpirv()
5803 ASSERT(spirv::Validate(result)); in getSpirv()
5827 spirv::Blob spirvBlob = traverser.getSpirv(); in OutputSPIRV()