Ignore:
Timestamp:
Jun 4, 2013, 3:13:16 PM (6 years ago)
Author:
ksherdy
Message:

Moved lang.carrySet to PabloS package. Added CarryFlip?() and CarryDeclare?() calls to PabloS to PabloB translation.

Location:
proto/pabloj/trunk/src
Files:
1 added
9 edited
5 moved

Legend:

Unmodified
Added
Removed
  • proto/pabloj/trunk/src/application/generators/ApplicationGenerator.java

    r3261 r3262  
    6161                AbstractUnparser unparser                                                                       = null;
    6262               
    63                 toolchain.pabloB.lang.carrySet.CarrySetEncoder carrySetEncoder = null;
     63                toolchain.pabloS.lang.carrySet.CarrySetEncoder carrySetEncoder = null;
    6464                               
    6565                if(applicationConfiguration.targetLang.contentEquals(Configuration.CLANG)) {
    6666            pabloSbuiltinsEncoder       = new toolchain.pabloS.lang.PabloSBuiltins2C();
    6767            pabloBBuiltinsEncoder       = new toolchain.pabloB.lang.PabloBBuiltins2C();
    68             carrySetEncoder             = new toolchain.pabloB.lang.carrySet.CarrySetBuiltins2C();
     68            carrySetEncoder             = new toolchain.pabloS.lang.carrySet.CarrySetBuiltins2C();
    6969                        unparser                        = new Unparser(new IDISABuiltin2C());                   
    7070                } else if(applicationConfiguration.targetLang.contentEquals(Configuration.CPPLANG)) {
    7171                        pabloSbuiltinsEncoder   = new toolchain.pabloS.lang.PabloSBuiltins2CPP();
    7272                        pabloBBuiltinsEncoder   = new toolchain.pabloB.lang.PabloBBuiltins2CPP();
    73                         carrySetEncoder                 = new toolchain.pabloB.lang.carrySet.CarrySetBuiltins2CPP();
     73                        carrySetEncoder                 = new toolchain.pabloS.lang.carrySet.CarrySetBuiltins2CPP();
    7474                        unparser                                = new Unparser(new IDISABuiltin2CPP());
    7575                } /*else if(applicationConfiguration.targetLang.contentEquals(Configuration.LLVM)) {  // default C++
  • proto/pabloj/trunk/src/test/pabloS/PabloSTestHarness.java

    r3213 r3262  
    2222import test.helpers.FileUtil;
    2323import test.helpers.AssertNodePairComparator;
    24 import toolchain.pabloB.lang.carrySet.CarrySetBuiltins2CPP;
    25 import toolchain.pabloB.lang.carrySet.CarrySetEncoder;
    2624import toolchain.pabloS.lang.BuiltinEncoder;
    2725import toolchain.pabloS.lang.PabloSBuiltins2CPP;
     26import toolchain.pabloS.lang.carrySet.CarrySetBuiltins2CPP;
     27import toolchain.pabloS.lang.carrySet.CarrySetEncoder;
    2828import toolchain.pabloS.transformer.visitors.CombineAdvances;
    2929import toolchain.pabloS.transformer.visitors.ConvertBitwiseBooleanToIDISACalls;
     
    9696                                                m.invoke(null, syntaxTree
    9797                                                                ,new PabloSBuiltins2CPP()
    98                                                                 ,new toolchain.pabloB.lang.carrySet.CarrySetBuiltins2CPP(), false);
     98                                                                ,new toolchain.pabloS.lang.carrySet.CarrySetBuiltins2CPP(), false);
    9999                                                break;
    100100                                        default:
  • proto/pabloj/trunk/src/toolchain/pabloB/ast/Generators.java

    r3261 r3262  
    156156                return Generators.makePropertyValueNode(values, locator);
    157157        }       
    158        
    159         /* TODO Update init section and refactor
    160         public static StateInitStmtNode makeStateInitStmtNode(String identifier, Integer [] values, Token locationToken) {
    161                
    162                 StateIdentifierNode identifierNode = Generators.makeStateIdentifierNode(identifier, locationToken);
    163                 IntegerConstantNode stateSize = Generators.makeIntegerConstantNode(values.length, locationToken);
    164                
    165                 StateInitListNode stateInitListNode = new StateInitListNode(Generators.makeIntegerConstantToken(values[0].intValue(), locationToken));
    166                 IntegerConstantNode n0 = Generators.makeIntegerConstantNode(values[0].intValue(), locationToken);
    167                 stateInitListNode.appendChild(n0);
    168                
    169                 for(int i = 1; i < values.length; i++) {
    170                         IntegerConstantNode n = Generators.makeIntegerConstantNode(values[i].intValue(), locationToken);
    171                         stateInitListNode.appendChild(n);
    172                 }
    173                                
    174                 StateInitStmtNode initStmtNode = new StateInitStmtNode(identifierNode.getToken());
    175                
    176                 initStmtNode.appendChild(identifierNode);
    177                 initStmtNode.appendChild(stateSize);
    178                 initStmtNode.appendChild(stateInitListNode);
    179                
    180                 return initStmtNode;
    181                
    182         }
    183         */
    184        
    185         /*
    186         public static StateIdentifierNode makeStateIdentifierNode(String identifier, Token locationToken) {
    187                 IdentifierToken newToken = Generators.makeIdentifierToken(identifier, locationToken);
    188                 return new StateIdentifierNode(newToken);
    189         }
    190         */             
    191 
    192         // Make function Call variants
    193         public static FuncCallNode makeFuncCallNode(String identifier, Token locationToken, ASTNode ...args) {
    194                
    195                 FuncCallNode node = Generators.makeFuncCallNode(identifier, locationToken);
     158
     159        public static FuncCallNode makeFuncCallNode(String identifier, Locator locator, ASTNode ...args) {
     160                FuncCallNode node = Generators.makeFuncCallNode(identifier, locator);
    196161                Generators.addFuncCallArgs(node, args);
    197162                return node;
    198163        }       
    199164
    200         public static FuncCallNode makeFuncCallNode(String identifier, Token locationToken, List<ASTNode> args) {
    201                
    202                 FuncCallNode node = Generators.makeFuncCallNode(identifier, locationToken);
    203                 Generators.addFuncCallArgs(node, args);
    204                 return node;
    205         }       
    206        
    207         public static FuncCallNode makeFuncCallNode(String identifier, Token locationToken) {
    208                 IdentifierNode identifierNode = Generators.makeIdentifierNode(identifier, locationToken);       
    209                 return Generators.makeFuncCallNode(identifierNode, locationToken);
    210         }
    211 
     165    public static FuncCallNode makeFuncCallNode(String identifier, Locator locator) {
     166        IdentifierNode identifierNode = Generators.makeIdentifierNode(identifier, locator);
     167        return Generators.makeFuncCallNode(identifierNode, locator);
     168    }
     169       
    212170        public static FuncCallNode makeFuncCallNode(String pckage, String name, Locator locator) {
    213171                CompoundIdentifierNode compoundIdentifierNode = Generators.makeCompoundIdentifierNode(pckage, name, locator);   
     
    215173        }
    216174       
    217         public static FuncCallNode makeFuncCallNode(String pckage, String name, Locator locator, ASTNode ...args) {
     175        public static FuncCallNode makeFuncCallNode(String pckage, String name, Locator locator, ASTNode ...args ) {
    218176                CompoundIdentifierNode compoundIdentifierNode = Generators.makeCompoundIdentifierNode(pckage, name, locator);   
    219177                FuncCallNode node = Generators.makeFuncCallNode(compoundIdentifierNode, locator);
     
    222180        }       
    223181
    224         public static FuncCallNode makeFuncCallNode(String pckage, String name, Locator locator, List<ASTNode> args) {
    225                 CompoundIdentifierNode compoundIdentifierNode = Generators.makeCompoundIdentifierNode(pckage, name, locator);   
    226                 FuncCallNode node = Generators.makeFuncCallNode(compoundIdentifierNode, locator);
    227                 Generators.addFuncCallArgs(node, args);
    228                 return node;
    229         }
    230                
    231182        private static FuncCallNode makeFuncCallNode(ASTNode identifier, Locator locator) {
    232183                assert ((identifier instanceof IdentifierNode) || (identifier instanceof CompoundIdentifierNode));
     
    265216                }       
    266217        }       
    267 
    268         private static void addFuncCallArgs(FuncCallNode node, List<ASTNode> args) {
    269                
    270                 if(args.size() > 0) {
    271                         for(ASTNode child: args) {
    272                                 Accessors.funcCallArgsListNode(node).appendChild(child);
    273                         }
    274                         Accessors.funcCallArgsListNode(node).setToken(args.get(0).getToken());
    275                 }               
    276         }
    277 
    278218       
    279219/* WARNING - IdisaFuncCallNode must be fixed.
  • proto/pabloj/trunk/src/toolchain/pabloS/lang/carrySet/AbstractCarrySetBuiltins2Lang.java

    r3260 r3262  
    55 */
    66
    7 package toolchain.pabloB.lang.carrySet;
     7package toolchain.pabloS.lang.carrySet;
    88
    99public abstract class AbstractCarrySetBuiltins2Lang {
  • proto/pabloj/trunk/src/toolchain/pabloS/lang/carrySet/CarrySetBuiltins.java

    r3260 r3262  
    88 */
    99
    10 package toolchain.pabloB.lang.carrySet;
     10package toolchain.pabloS.lang.carrySet;
    1111
    1212public enum CarrySetBuiltins {
  • proto/pabloj/trunk/src/toolchain/pabloS/lang/carrySet/CarrySetBuiltins2C.java

    r3260 r3262  
    1 package toolchain.pabloB.lang.carrySet;
     1package toolchain.pabloS.lang.carrySet;
    22
    33import java.util.HashMap;
    44import java.util.Map;
     5
    56
    67public class CarrySetBuiltins2C extends CarrySetEncoder {
  • proto/pabloj/trunk/src/toolchain/pabloS/lang/carrySet/CarrySetBuiltins2CPP.java

    r3260 r3262  
    55 */
    66
    7 package toolchain.pabloB.lang.carrySet;
     7package toolchain.pabloS.lang.carrySet;
    88
    99import java.util.HashMap;
    1010import java.util.Map;
     11
    1112
    1213public class CarrySetBuiltins2CPP extends CarrySetEncoder {
  • proto/pabloj/trunk/src/toolchain/pabloS/lang/carrySet/CarrySetEncoder.java

    r3260 r3262  
    55 */
    66
    7 package toolchain.pabloB.lang.carrySet;
     7package toolchain.pabloS.lang.carrySet;
     8
    89
    910public abstract class CarrySetEncoder {
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/Transformer.java

    r3249 r3262  
    88
    99import toolchain.pabloS.lang.*;
    10 import toolchain.pabloB.lang.carrySet.CarrySetEncoder;
     10import toolchain.pabloS.lang.carrySet.CarrySetEncoder;
    1111import toolchain.pabloS.transformer.visitors.CombineAdvances;
    1212import toolchain.pabloS.transformer.visitors.ConvertBitwiseBooleanToIDISACalls;
     
    4444        private void initDefaults() {
    4545                this.setBuiltins2Lang(new PabloSBuiltins2CPP());
    46                 this.setCarrySet2Lang(new toolchain.pabloB.lang.carrySet.CarrySetBuiltins2CPP());
     46                this.setCarrySet2Lang(new toolchain.pabloS.lang.carrySet.CarrySetBuiltins2CPP());
    4747                this.setFinalBlockMode(false);
    4848        }
     
    7777        }
    7878
    79         public void setCarrySet2Lang(toolchain.pabloB.lang.carrySet.CarrySetEncoder carrySet2Lang) {
     79        public void setCarrySet2Lang(toolchain.pabloS.lang.carrySet.CarrySetEncoder carrySet2Lang) {
    8080                this.carrySet2Lang = carrySet2Lang;
    8181        }
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/PabloS2PabloBXFormer.java

    r3261 r3262  
    1818
    1919import toolchain.pabloB.lang.KernelState;
    20 import toolchain.pabloB.lang.carrySet.CarrySetBuiltins;
    21 import toolchain.pabloB.lang.carrySet.CarrySetEncoder;
    2220import toolchain.pabloS.lang.BuiltinCallUtil;
     21import toolchain.pabloS.lang.carrySet.CarrySetBuiltins;
     22import toolchain.pabloS.lang.carrySet.CarrySetEncoder;
    2323
    2424public class PabloS2PabloBXFormer {
     
    8585                        // Carry1 Count
    8686                propertyName            = Generators.makeIdentifierNode(KernelState.CARRY1_COUNT.name(), locator);
    87                 propertyValue           = Generators.makePropertyValueNode(streamFunctionPropertySet.Carry1Count(), locator);
     87                propertyValue           = Generators.makePropertyValueNode(streamFunctionPropertySet.carry1Count(), locator);
    8888                        property                = Generators.makeKernelPropertyNode(propertyName, propertyValue);
    8989                        stateDefNode.appendChild(property);
    9090
    91                         ////////////////////////////////////////////////////////////                   
    92                         // Add CarryFlip call for variable initialization                       
    93                        
    94                         for(Integer i : streamFunctionPropertySet.getCarry1InitValues()) {
    95 
    96                                 if(i > 0) {
    97                                        
    98                                         pabloB.ast.IntegerConstantNode indexNode = Generators.makeIntegerConstantNode(i+1, locator);
    99                                        
    100                                         FuncCallNode getCarryFuncCall = (FuncCallNode) Generators.makeFuncCallNode(
    101                                                                                 CarrySetEncoder.CARRYSETBASENAME,
    102                                                                                 carrySetEncoder.getCode(CarrySetBuiltins.GETCARRY),
    103                                                                                 locator,
    104                                                                                 indexNode);
    105                                
    106                                         FuncCallNode carryFlipFuncCall = (FuncCallNode) Generators.makeFuncCallNode(
    107                                                                                 CarrySetEncoder.CARRYSETBASENAME,
    108                                                                                 carrySetEncoder.getCode(CarrySetBuiltins.CARRYFLIP),
    109                                                                                 locator,
    110                                                                                 getCarryFuncCall);
    111                                        
    112                                         FuncCallNode setCarryFuncCall = (FuncCallNode) Generators.makeFuncCallNode(
    113                                                                                 CarrySetEncoder.CARRYSETBASENAME,
    114                                                                                 carrySetEncoder.getCode(CarrySetBuiltins.SETCARRY),
    115                                                                                 locator,
    116                                                                                 carryFlipFuncCall, indexNode);
    117                                                                                        
    118                                         stateDefNode.appendChild(setCarryFuncCall);
    119                                 }
    120                         }
    12191                       
    12292                       
     
    131101                        // CarryN count                         
    132102                propertyName       = Generators.makeIdentifierNode(KernelState.CARRYN_COUNT.name(), locator);
    133                 propertyValue      = Generators.makePropertyValueNode(streamFunctionPropertySet.CarryNCount(), locator);
     103                propertyValue      = Generators.makePropertyValueNode(streamFunctionPropertySet.carryNCount(), locator);
    134104                        property           = Generators.makeKernelPropertyNode(propertyName, propertyValue);
    135105                        stateDefNode.appendChild(property);
     
    156126                                                        funcDefNode.getToken());
    157127                       
    158                         // add CarryDeclare(...) - hack
    159                         Generators.addFuncCallNode(kernelDefNode, (pabloB.ast.FuncCallNode) funcDefNode.lastChild());
    160                        
    161                         // splice kernel node onto PabloB tree
     128            ////////////////////////////////////////////////////////////           
     129            // Add CarryFlip call to Kernel init           
     130            for(Integer i : streamFunctionPropertySet.getCarry1InitValues()) {
     131                if(i > 0) {
     132                    FuncCallNode setCarryFuncCall = makeCarryFlipCall(i, locator);
     133                    stateDefNode.appendChild(setCarryFuncCall);
     134                }
     135            }
     136
     137            ////////////////////////////////////////////////////////////           
     138            // Add CarryDeclare call to Kernel   
     139            FuncCallNode carryDeclareCall = makeCarryDeclareCall(streamFunctionPropertySet.carry1Count(),
     140                                                                 streamFunctionPropertySet.carryNCount(),
     141                                                                 locator);
     142            kernelDefNode.appendChild(carryDeclareCall);
     143           
     144            // Slice node onto PabloB AST
    162145                        funcDefNode.updateSelf(kernelDefNode);
    163146
    164                         }
     147                }
    165148               
    166149                return bASTTree;
     150    }
     151
     152    private FuncCallNode makeCarryFlipCall(int index, Locator locator) {
     153       
     154        int pos = (index+1);
     155       
     156        pabloB.ast.IntegerConstantNode indexNode = Generators.makeIntegerConstantNode(pos, locator);
     157       
     158        FuncCallNode getCarryFuncCall   = Generators.makeFuncCallNode(CarrySetEncoder.CARRYSETBASENAME,
     159                                                                    carrySetEncoder.getCode(CarrySetBuiltins.GETCARRY),
     160                                                                    locator, indexNode);
     161           
     162        FuncCallNode carryFlipFuncCall  = Generators.makeFuncCallNode(CarrySetEncoder.CARRYSETBASENAME,
     163                                                                    carrySetEncoder.getCode(CarrySetBuiltins.CARRYFLIP),
     164                                                                    locator, getCarryFuncCall);
     165       
     166        FuncCallNode setCarryFuncCall   = Generators.makeFuncCallNode(CarrySetEncoder.CARRYSETBASENAME,
     167                                                                    carrySetEncoder.getCode(CarrySetBuiltins.SETCARRY),
     168                                                                    locator, carryFlipFuncCall, indexNode);
     169        return setCarryFuncCall;
    167170    }
    168171
     172    private FuncCallNode makeCarryDeclareCall(int carry1Count, int carryNCount, Locator locator) {
     173       
     174        IdentifierNode carrySetBaseName         =   Generators.makeIdentifierNode(CarrySetEncoder.CARRYSET_BASENAME_PREFIX + 0, locator);
     175        IntegerConstantNode carry1CountNode     =   Generators.makeIntegerConstantNode(carry1Count, locator);
     176        IntegerConstantNode carryNCountNode     =   Generators.makeIntegerConstantNode(carryNCount, locator);
     177     
     178        FuncCallNode carryDeclareFuncCall       =   Generators.makeFuncCallNode(carrySetEncoder.getCode(CarrySetBuiltins.CARRYDECLARE),
     179                                                                                   locator, carrySetBaseName, carry1CountNode, carryNCountNode);
     180        return carryDeclareFuncCall;
     181    }
     182
     183   
    169184    /*
    170185     * Recursively builds function name to function definition node map via DFS.
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/StreamFunctionPropertySet.java

    r3261 r3262  
    2222        }
    2323       
    24         public int Carry1Count() {
     24        public int carry1Count() {
    2525                return carry1.size();
    2626        }
    2727
    28         public int CarryNCount() {
     28        public int carryNCount() {
    2929                return carryN.size();
    3030        }       
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/carry/CarryIntroXFormer.java

    r3244 r3262  
    66import pabloS.inputHandler.Locator;
    77import pabloS.lexicalAnalyzer.Lextant;
    8 import toolchain.pabloB.lang.carrySet.CarrySetEncoder;
    9 import toolchain.pabloB.lang.carrySet.CarrySetBuiltins;
    108import toolchain.pabloS.ast.Accessors;
    119import toolchain.pabloS.ast.Generators;
    1210import toolchain.pabloS.lang.*;
     11import toolchain.pabloS.lang.carrySet.CarrySetBuiltins;
     12import toolchain.pabloS.lang.carrySet.CarrySetEncoder;
    1313import toolchain.pabloS.transformer.visitors.carry.BuiltinTranslator;
    1414
     
    100100                       
    101101                        int carry1Count = Carry1Count.forTree(node);
    102                         int carryNCount = CarryNCount.forTree(node);
    103102                       
    104103                        if(needsCarryAdjustment(carry1Count) ) { 
     
    106105                        }                       
    107106                       
    108                         FuncCallNode carryDeclareCall = makeCarryDeclareCall(node, carry1Count, carryNCount);
    109                         node.appendChild(carryDeclareCall);     
    110                         // TS: seems an odd place to put carryDeclareCall.
    111                         // Why not append to ParameterList or body?
    112107                }
    113108                public void visitLeave(FuncDefNode node) {
     
    136131                                                                        arguments(carry1CountNode));
    137132                        return carryAdjustment;
    138                 }
    139                 private FuncCallNode makeCarryDeclareCall(FuncDefNode node, int carry1Count, int carryNCount) {
    140                         IdentifierNode carrySetIdentifierNode   =       context.carrySetIdentifierNode(node);
    141                         IntegerConstantNode carry1CountNode     =       Generators.makeIntegerConstantNode(carry1Count, node);
    142                         IntegerConstantNode carryNCountNode     =       Generators.makeIntegerConstantNode(carryNCount, node);
    143                        
    144                         return Generators.makeFuncCallNode(
    145                                         context.getCode(CarrySetBuiltins.CARRYDECLARE),
    146                                         node,
    147                                         arguments(carrySetIdentifierNode, carry1CountNode, carryNCountNode));
    148133                }
    149134
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/carry/Context.java

    r3213 r3262  
    33import pabloS.ast.IdentifierNode;
    44import pabloS.inputHandler.Locator;
    5 import toolchain.pabloB.lang.carrySet.CarrySetBuiltins;
    6 import toolchain.pabloB.lang.carrySet.CarrySetEncoder;
    75import toolchain.pabloS.ast.Generators;
    86import toolchain.pabloS.lang.BuiltinEncoder;
    97import toolchain.pabloS.lang.PabloSBuiltin;
     8import toolchain.pabloS.lang.carrySet.CarrySetBuiltins;
     9import toolchain.pabloS.lang.carrySet.CarrySetEncoder;
    1010
    1111// immutable
  • proto/pabloj/trunk/src/toolchain/pabloS/transformer/visitors/carry/Counter.java

    r3240 r3262  
    44import pabloS.ast.IntegerConstantNode;
    55import pabloS.inputHandler.Locator;
    6 import toolchain.pabloB.lang.carrySet.CarrySetBuiltins;
    76import toolchain.pabloS.ast.Generators;
    87import toolchain.pabloS.lang.BuiltinCallUtil;
    98import toolchain.pabloS.lang.PabloSBuiltin;
     9import toolchain.pabloS.lang.carrySet.CarrySetBuiltins;
    1010
    1111
Note: See TracChangeset for help on using the changeset viewer.