@Override public void visitScalarInitializer(ScalarInitializer scalarInitializer) { visitChildFromParent(scalarInitializer.getExpr(), scalarInitializer); }
private void addOpportunities() { for (Pair<VariableDeclInfo, VariableIdentifierExpr> pair : inlineableUsages) { if (!blackList.contains(pair.getLeft())) { addOpportunity(new SimplifyExprReductionOpportunity( parentMap.getParent(pair.getRight()), new ParenExpr(((ScalarInitializer) pair.getLeft().getInitializer()).getExpr().clone()), pair.getRight(), getVistitationDepth())); } } }
boolean initializerIsScalarAndSideEffectFree(VariableDeclInfo variableDeclInfo) { if (!variableDeclInfo.hasInitializer()) { return false; } if (!(variableDeclInfo.getInitializer() instanceof ScalarInitializer)) { return false; } return SideEffectChecker.isSideEffectFree( ((ScalarInitializer) variableDeclInfo.getInitializer()).getExpr(), context.getShadingLanguageVersion()); }
private boolean canMergeLoops(Stmt first, Stmt second) { if (!(first instanceof ForStmt && second instanceof ForStmt)) { return false; } ForStmt firstLoop = (ForStmt) first; ForStmt secondLoop = (ForStmt) second; Optional<String> commonLoopCounter = checkForCommonLoopCounter(firstLoop, secondLoop); if (!commonLoopCounter.isPresent()) { return false; } if (!commonLoopCounter.get().startsWith(Constants.SPLIT_LOOP_COUNTER_PREFIX)) { return false; } if (!hasRegularLoopGuard(firstLoop, commonLoopCounter.get())) { return false; } if (!hasRegularLoopGuard(secondLoop, commonLoopCounter.get())) { return false; } final Integer firstLoopEnd = new Integer(((IntConstantExpr) ((BinaryExpr) firstLoop.getCondition()).getRhs()).getValue()); final BinOp firstLoopOp = ((BinaryExpr) firstLoop.getCondition()).getOp(); final Integer secondLoopStart = new Integer(((IntConstantExpr) ((ScalarInitializer) ((DeclarationStmt) secondLoop.getInit()).getVariablesDeclaration().getDeclInfo(0) .getInitializer()).getExpr()).getValue()); assert firstLoopOp == BinOp.LT || firstLoopOp == BinOp.GT : "Unexpected operator in split loops."; return firstLoopEnd.equals(secondLoopStart); }
private void addGlobalInitializers(FunctionDefinition mainFunction) { assert mainFunction.getPrototype().getName().equals("main"); for (int i = globalsToBeReInitialized.size() - 1; i >= 0; i--) { for (int j = globalsToBeReInitialized.get(i).getNumDecls() - 1; j >= 0; j--) { final VariableDeclInfo vdi = globalsToBeReInitialized.get(i).getDeclInfo(j); if (!(vdi.getInitializer() instanceof ScalarInitializer)) { throw new RuntimeException("Only know how to deal with scalar initializers at present."); } mainFunction.getBody().insertStmt(0, new ExprStmt(new BinaryExpr(new VariableIdentifierExpr(vdi.getName()), ((ScalarInitializer) vdi.getInitializer()).getExpr(), BinOp.ASSIGN))); vdi.setInitializer(null); } } }
new ScalarInitializer(((TypeConstructorExpr) item.getExpr()) .getArg(currentIndex)));
.getInitializer()).getExpr()); if (!maybeStartValue.isPresent()) { return Optional.empty();
expr = ((ScalarInitializer)((DeclarationStmt) init) .getVariablesDeclaration().getDeclInfo(0) .getInitializer()).getExpr();
private void structifyDeclaration(String enclosingStructVariableName, StructDefinitionType enclosingStructType) { declToTransform.getVariablesDeclaration() .setBaseType(enclosingStructType.getStructNameType()); final VariableDeclInfo declInfo = declToTransform.getVariablesDeclaration().getDeclInfo(0); declInfo.setName(enclosingStructVariableName); if (declInfo.hasInitializer()) { declInfo.setInitializer( new ScalarInitializer( makeInitializationExpr(enclosingStructType, ((ScalarInitializer) declInfo.getInitializer()).getExpr()) ) ); } }