/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package de.gaalop.gappopencl; import de.gaalop.gapp.instructionSet.GAPPAssignInputsVector; import de.gaalop.gapp.instructionSet.GAPPAssignMv; import de.gaalop.gapp.instructionSet.GAPPCalculateMv; import de.gaalop.gapp.instructionSet.GAPPCalculateMvCoeff; import de.gaalop.gapp.instructionSet.GAPPDotVectors; import de.gaalop.gapp.instructionSet.GAPPResetMv; import de.gaalop.gapp.instructionSet.GAPPSetMv; import de.gaalop.gapp.instructionSet.GAPPSetVector; import de.gaalop.gapp.variables.GAPPMultivector; import java.util.HashMap; import java.util.Map; /** * * @author Patrick Charrier */ public class GAPPMvSizeVisitor extends de.gaalop.gapp.visitor.CFGGAPPVisitor { protected Map<String,Integer> mvSizes = new HashMap<String,Integer>(); @Override public Object visitAssignMv(GAPPAssignMv gappAssignMv, Object arg) { return null; } @Override public Object visitDotVectors(GAPPDotVectors gappDotVectors, Object arg) { incrementSize(GAPPOpenCLCodeGenerator.getVarName(gappDotVectors.getDestination().getName()),1); return null; } @Override public Object visitResetMv(GAPPResetMv gappResetMv, Object arg) { getMvSizes().put(GAPPOpenCLCodeGenerator.getVarName(gappResetMv.getDestination().getName()), 0); return null; } @Override public Object visitSetMv(GAPPSetMv gappSetMv, Object arg) { incrementSize(GAPPOpenCLCodeGenerator.getVarName(gappSetMv.getDestination().getName()), gappSetMv.getSelectorsDest().size()); return null; } protected void incrementSize(final String gappMvName,final int add) { getMvSizes().put(gappMvName,getMvSizes().get(gappMvName) + add); } @Override public Object visitSetVector(GAPPSetVector gappSetVector, Object arg) { return null; } @Override public Object visitCalculateMv(GAPPCalculateMv gappCalculateMv, Object arg) { return null; } @Override public Object visitCalculateMvCoeff(GAPPCalculateMvCoeff gappCalculateMvCoeff, Object arg) { incrementSize(GAPPOpenCLCodeGenerator.getVarName(gappCalculateMvCoeff.getDestination().getName()),1); return null; } @Override public Object visitAssignInputsVector(GAPPAssignInputsVector gAPPAssignInputsVector, Object arg) { return null; } /** * @return the mvSizes */ public Map<String,Integer> getMvSizes() { return mvSizes; } }