Changeset 3821


Ignore:
Timestamp:
Apr 13, 2014, 10:26:33 PM (3 years ago)
Author:
ksherdy
Message:

Added support for carry translation to b2k.

Location:
proto/s2k/trunk/framework/src/toolchain/b2k
Files:
9 added
1 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • proto/s2k/trunk/framework/src/toolchain/b2k/ast/Generators.java

    r3808 r3821  
    1313import toolchain.b2k.ast.Accessors;
    1414
    15 import toolchain.b2k.lang.B2KBuiltin;
     15import toolchain.b2k.lang.B2KBuiltins;
     16import toolchain.b2k.lang.carrySet.CarrySetBuiltins;
    1617import toolchain.b2k.lang.idisa.IDISABuiltin;
    17 import toolchain.s2k.lang.carrySet.CarrySetBuiltin;
    1818import toolchain.s2k.transformer.visitors.S2K2B2K.Context;
    1919
    20 import static toolchain.b2k.lang.B2KBuiltin.*;
     20import static toolchain.b2k.lang.B2KBuiltins.*;
    2121import static toolchain.b2k.lang.idisa.IDISABuiltin.*;
    2222import static toolchain.b2k.lang.type.PrimitiveType.BITBLOCK_SIZE;
     
    439439    //
    440440    public static IdisaFuncCallNode makeExprAndEofMaskCall(Locator locator, ASTNode expr) {
    441         ASTNode eofMask = makeIdentifierNode(locator, EOF_MASK.b2kName());
     441        ASTNode eofMask = makeIdentifierNode(locator, _EOF_MASK.baseName());
    442442        return Generators.makeIdisaFuncCallNode(locator, SIMD_AND, BITBLOCK_SIZE, arguments(expr, eofMask));
    443443    }
    444444   
    445445    public static IdisaFuncCallNode makeExprOrNotEofMaskCall(Locator locator, ASTNode expr) {
    446         ASTNode eofMask = makeIdentifierNode(locator, EOF_MASK.b2kName());
     446        ASTNode eofMask = makeIdentifierNode(locator, _EOF_MASK.baseName());
    447447        return Generators.makeIdisaFuncCallNode(locator, SIMD_OR, BITBLOCK_SIZE, arguments(expr,
    448448                Generators.makeIdisaFuncCallNode(locator, SIMD_NOT, BITBLOCK_SIZE, arguments(eofMask))));
     
    450450   
    451451    public static IdisaFuncCallNode makeExprAndCEofMaskCall(Locator locator, ASTNode expr) {
    452         ASTNode eofMask = makeIdentifierNode(locator, EOF_MASK.b2kName());
     452        ASTNode eofMask = makeIdentifierNode(locator, _EOF_MASK.baseName());
    453453        return Generators.makeIdisaFuncCallNode(locator, SIMD_ANDC, BITBLOCK_SIZE, arguments(expr, eofMask));
    454454    }
    455455   
    456456    public static IdisaFuncCallNode makeEofMaskAndCExprCall(Locator locator, ASTNode expr) {
    457         ASTNode eofMask = makeIdentifierNode(locator, EOF_MASK.b2kName());
     457        ASTNode eofMask = makeIdentifierNode(locator, _EOF_MASK.baseName());
    458458        return Generators.makeIdisaFuncCallNode(locator, SIMD_ANDC, BITBLOCK_SIZE, arguments(eofMask, expr));
    459459    }
     
    466466        Token bitBlockTypeToken = Generators.makeLextantToken(locator, b2k.lexicalAnalyzer.Lextant.BITBLOCK);
    467467        BitBlockTypeNode streamTypeNode = new BitBlockTypeNode(bitBlockTypeToken);
    468         IdentifierNode identifierNode = Generators.makeIdentifierNode(locator, B2KBuiltin.EOF_MASK.b2kName()); // encoder.getName(S2KBuiltin.EOF_MASK));
     468        IdentifierNode identifierNode = Generators.makeIdentifierNode(locator, B2KBuiltins._EOF_MASK.baseName()); // encoder.getName(S2KBuiltin.EOF_MASK));
    469469
    470470        parameterNode.appendChild(streamTypeNode);
     
    480480                locator,
    481481                context.getCarrySetIdentifier(),
    482                 context.getCode(CarrySetBuiltin.GETCARRY),
     482                context.getCode(CarrySetBuiltins.GETCARRY),
    483483                Generators.makeIntegerConstantNode(locator, carry1Position));
    484484    }
     
    488488                locator,
    489489                context.getCarrySetIdentifier(),
    490                 context.getCode(CarrySetBuiltin.PENDING64),
     490                context.getCode(CarrySetBuiltins.PENDING64),
    491491                Generators.makeIntegerConstantNode(locator, carry1Position));
    492492    }   
     
    497497       
    498498        FuncCallNode carryFlipFuncCall = Generators.makeFuncCallNode(locator,context.getCarrySetIdentifier(),
    499                                                                         context.getCode(CarrySetBuiltin.CARRYFLIP),
     499                                                                        context.getCode(CarrySetBuiltins.CARRYFLIP),
    500500                                                                        Generators.arguments(indexNode));
    501501       
    502502        FuncCallNode setCarryFuncCall  = Generators.makeFuncCallNode(locator,context.getCarrySetIdentifier(),
    503                                                                         context.getCode(CarrySetBuiltin.SETCARRY),
     503                                                                        context.getCode(CarrySetBuiltins.SETCARRY),
    504504                                                                        Generators.arguments(carryFlipFuncCall,
    505505                                                                        indexNode));
     
    518518        ASTNode carryRange          = Generators.makeFuncCallNode(  locator,
    519519                                                                    context.getCarrySetIdentifier(),
    520                                                                     context.getCode(CarrySetBuiltin.CARRYRANGE),
     520                                                                    context.getCode(CarrySetBuiltins.CARRYRANGE),
    521521                                                                    Generators.arguments(carry1PositionNode, carry1CountNode));
    522522       
     
    531531     
    532532        FuncCallNode carryDeclareFuncCall       =   Generators.makeFuncCallNode(locator,
    533                                                                                 context.getCode(CarrySetBuiltin.CARRYDECLARE),
     533                                                                                context.getCode(CarrySetBuiltins.CARRYDECLARE),
    534534                                                                                Generators.arguments(carrySetIdentifier,
    535535                                                                                                     carry1CountNode,
     
    544544                                        locator,
    545545                                        context.getCarrySetIdentifier(),                                   
    546                                         context.getCode(CarrySetBuiltin.CARRYADJUST),
     546                                        context.getCode(CarrySetBuiltins.CARRYADJUST),
    547547                                        Generators.arguments(carry1CountNode));
    548548        return carryAdjustment;
     
    557557                                            locator,
    558558                                            context.getCarrySetIdentifier(),                                   
    559                                             context.getCode(CarrySetBuiltin.CARRYDEQUEUEENQUEUE),
     559                                            context.getCode(CarrySetBuiltins.CARRYDEQUEUEENQUEUE),
    560560                                            Generators.arguments(carry1PositionNode, carry1CountNode));
    561561        return carryDequeueEnqueue;
     
    572572        return Generators.makeFuncCallNode(
    573573                locator,
    574                 localContext.getCode(CarrySetBuiltin.LOCALCARRYCOMBINE),
     574                localContext.getCode(CarrySetBuiltins.LOCALCARRYCOMBINE),
    575575                                        carrySetIdentifierNode,
    576576                                        localCarrySetIdentifierNode,
  • proto/s2k/trunk/framework/src/toolchain/b2k/codeGenerator/visitors/CodeGenerator.java

    r3810 r3821  
    3838import b2k.ast.*;
    3939import toolchain.b2k.ast.Accessors;
    40 import toolchain.b2k.codeGenerator.idisa.AbstractIDISABuiltin2Lang;
    41 import toolchain.b2k.codeGenerator.idisa.AbstractIDISABuiltinGenerator;
     40import toolchain.b2k.lang.idisa.AbstractIDISABuiltinTranslator;
     41import toolchain.b2k.lang.idisa.AbstractIDISABuiltinGenerator;
    4242import toolchain.b2k.codeGenerator.util.CodeStore;
    4343import toolchain.b2k.codeGenerator.util.CodeGeneratorUtil;
    44 import toolchain.b2k.lang.AbstractBuiltinEncoder;
    45 import toolchain.b2k.lang.B2KBuiltin;
     44import toolchain.b2k.lang.AbstractB2KBuiltinsEncoder;
     45import toolchain.b2k.lang.B2KBuiltins;
     46import toolchain.b2k.lang.KernelBuiltins;
    4647import toolchain.b2k.lang.idisa.IDISABuiltin;
    4748
     
    5253public class CodeGenerator extends AbstractCodeGenerator {
    5354
    54         protected AbstractIDISABuiltin2Lang idisaBuiltins2Lang;
    55         protected AbstractBuiltinEncoder encoder;
     55        protected AbstractIDISABuiltinTranslator idisaEncoder;
     56        protected AbstractB2KBuiltinsEncoder encoder;
    5657       
    5758        //////////////////////////////////////////////////////////////
    5859        // constructor and helpers     
    59         public CodeGenerator(AbstractIDISABuiltin2Lang idisaBuiltins2Lang, AbstractBuiltinEncoder encoder) {
    60                 this.idisaBuiltins2Lang = idisaBuiltins2Lang;
     60        public CodeGenerator(AbstractIDISABuiltinTranslator idisaBuiltins2Lang, AbstractB2KBuiltinsEncoder encoder) {
     61                this.idisaEncoder = idisaBuiltins2Lang;
    6162                this.encoder = encoder;
    6263        }
     
    507508               
    508509                String idisaFuncCallString
    509                     = idisaBuiltinsGenerator.makeIDISAFuncCall(idisaBuiltins2Lang, idisaPackageName, idisaOperationName, fieldWidth, arguments);               
     510                    = idisaBuiltinsGenerator.makeIDISAFuncCall(idisaEncoder, idisaPackageName, idisaOperationName, fieldWidth, arguments);             
    510511               
    511512                code.setResultVarName(idisaFuncCallString);             // invocation as an expression 
     
    640641               
    641642                String identifier  = Accessors.name(Accessors.nameNode(addKernelStmt));
    642                 String funcName     = encoder.getCode(B2KBuiltin.DO_BLOCK);
     643                String funcName     = encoder.getCode(KernelBuiltins.DO_BLOCK);
    643644               
    644645                List<String> args = new ArrayList<String>();
     
    656657                CodeStore code = new CodeStore();
    657658                String identifier  = Accessors.name(Accessors.nameNode(addKernelStmt));
    658                 String funcName     = encoder.getCode(B2KBuiltin.DO_FINAL_BLOCK);
     659                String funcName     = encoder.getCode(KernelBuiltins.DO_FINAL_BLOCK);
    659660               
    660661                List<String> args = new ArrayList<String>();
     
    662663                        args.add(Accessors.name(arg));
    663664                }
    664                 args.add(encoder.getCode(B2KBuiltin.EOF_MASK));
     665                args.add(encoder.getCode(B2KBuiltins._EOF_MASK));
    665666               
    666667                String funcArgs = CodeGeneratorUtil.makeDelimitedList(args, ", ");
     
    674675                CodeStore code = new CodeStore();
    675676                String identifier  = Accessors.name(Accessors.nameNode(addKernelStmt));
    676                 String funcName     = encoder.getCode(B2KBuiltin.CLEAR);
     677                String funcName     = encoder.getCode(KernelBuiltins.CLEAR);
    677678               
    678679                code.addFormattedLine("%s.%s();", identifier, funcName);               
  • proto/s2k/trunk/framework/src/toolchain/b2k/transformer/visitors/B2K2B2K/AddAlignmentAssertions.java

    r3788 r3821  
    1212import toolchain.b2k.ast.Generators;
    1313import toolchain.b2k.ast.Mutators;
    14 import toolchain.b2k.lang.AbstractBuiltinEncoder;
    15 import toolchain.b2k.lang.B2KBuiltin;
     14import toolchain.b2k.lang.AbstractB2KBuiltinsEncoder;
     15import toolchain.b2k.lang.B2KBuiltins;
    1616
    1717public class AddAlignmentAssertions {
    1818        private AddAlignmentAssertions(){}
    1919       
    20         static public ASTNode apply(ASTNode ASTree, AbstractBuiltinEncoder encoder) {
     20        static public ASTNode apply(ASTNode ASTree, AbstractB2KBuiltinsEncoder encoder) {
    2121                XFormer xformer = new XFormer(encoder);
    2222                ASTree.accept(xformer);
     
    2525       
    2626        static private class XFormer extends VoidVisitor.Default {
    27                 private final AbstractBuiltinEncoder encoder;
    28                 private XFormer(AbstractBuiltinEncoder encoder) {
     27                private final AbstractB2KBuiltinsEncoder encoder;
     28                private XFormer(AbstractB2KBuiltinsEncoder encoder) {
    2929                        this.encoder = encoder;
    3030                }
     
    4141
    4242                private FuncCallNode makeAssertAlignCall(ASTNode node, ASTNode lhs) {
    43                         String assertAlign = encoder.getCode(B2KBuiltin.ASSERT_BITBLOCK_ALIGN);
     43                        String assertAlign = encoder.getCode(B2KBuiltins._ASSERT_BITBLOCK_ALIGN);
    4444                        return Generators.makeFuncCallNode(node.getToken(), assertAlign, lhs);
    4545                }
  • proto/s2k/trunk/framework/src/toolchain/b2k/transformer/visitors/B2K2B2K/AddAssignmentPrints.java

    r3788 r3821  
    1414import toolchain.b2k.ast.Generators;
    1515import toolchain.b2k.ast.Mutators;
    16 import toolchain.b2k.lang.AbstractBuiltinEncoder;
    17 import toolchain.b2k.lang.B2KBuiltin;
     16import toolchain.b2k.lang.AbstractB2KBuiltinsEncoder;
     17import toolchain.b2k.lang.B2KBuiltins;
    1818
    1919public class AddAssignmentPrints {
    2020        private AddAssignmentPrints(){}
    2121
    22         static public ASTNode apply(ASTNode ASTree, AbstractBuiltinEncoder encoder) {
     22        static public ASTNode apply(ASTNode ASTree, AbstractB2KBuiltinsEncoder encoder) {
    2323                XFormer xformer = new XFormer(encoder);
    2424                ASTree.accept(xformer);
     
    2828
    2929        static private class XFormer extends VoidVisitor.Default {
    30                 private final AbstractBuiltinEncoder encoder;
    31                 private XFormer(AbstractBuiltinEncoder encoder) {
     30                private final AbstractB2KBuiltinsEncoder encoder;
     31                private XFormer(AbstractB2KBuiltinsEncoder encoder) {
    3232                        this.encoder = encoder;
    3333                }
     
    4646
    4747                private FuncCallNode makePrintCall(ASTNode node, ASTNode lhs) {
    48                         String printBitblockCode = encoder.getCode(B2KBuiltin.PRINT_BITBLOCK);
     48                        String printBitblockCode = encoder.getCode(B2KBuiltins._PRINT_BITBLOCK);
    4949
    5050                        ASTNode label = Generators.makeStringConstantNode(node, Accessors.name(lhs));
  • proto/s2k/trunk/framework/src/toolchain/b2k/transformer/visitors/B2K2B2K/B2K2B2KController.java

    r3788 r3821  
    1414        //private SymbolTable symbolTable;
    1515       
    16         private static AbstractBuiltinEncoder builtinEncoder;
     16        private static AbstractB2KBuiltinsEncoder encoder;
    1717        private static boolean addDumpStmts;
    1818    private static boolean addAssertBitBlockAlignStmts;
     
    3030        // static interface - transforms AST in default mode only
    3131        //
    32         public static ASTNode accept(ASTNode ASTree) {
     32        public static ASTNode accept(ASTNode ASTree, AbstractB2KBuiltinsEncoder encoder) {
    3333        ASTNode decoratedTree = ASTree.deepCopy();
    34 
     34        B2K2B2KController.encoder = encoder;
     35       
    3536        if(addingAssignmentPrints()) {
    3637            decoratedTree = AddAssignmentPrints.apply(decoratedTree, getBuiltinEncoder());
     
    4748    }
    4849
    49     public static void setAddDumpStmts(boolean addStmts) {
    50         addDumpStmts = addStmts;
     50    public static void setAddDumpStmts(boolean addDumpStmts) {
     51        B2K2B2KController.addDumpStmts = addDumpStmts;
    5152    }
    5253
     
    5556    }
    5657
    57     public static void setAddAssertBitBlockAlignStmts(boolean addStmts) {
    58         addAssertBitBlockAlignStmts = addStmts;
     58    public static void setAddAssertBitBlockAlignStmts(boolean addAssertBitBlockAlignStmts) {
     59        B2K2B2KController.addAssertBitBlockAlignStmts = addAssertBitBlockAlignStmts;
    5960    }   
    6061   
    61     public static AbstractBuiltinEncoder getBuiltinEncoder() {
    62         return builtinEncoder;
     62    public static AbstractB2KBuiltinsEncoder getBuiltinEncoder() {
     63        return encoder;
    6364    }
    6465
    65     public static void setBuiltins2Lang(AbstractBuiltinEncoder encoder) {
    66         builtinEncoder = encoder;
     66    public static void setBuiltins2Lang(AbstractB2KBuiltinsEncoder encoder) {
     67        B2K2B2KController.encoder = encoder;
    6768    }
    6869
Note: See TracChangeset for help on using the changeset viewer.