Changeset 3811


Ignore:
Timestamp:
Apr 11, 2014, 1:59:05 AM (3 years ago)
Author:
ksherdy
Message:

Refactored S2K builtins.

Location:
proto/s2k/trunk/framework/src/toolchain/s2k
Files:
20 edited

Legend:

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

    r3777 r3811  
    434434        ////////////////////////////////////////////////////////////////////////////
    435435        // any node
    436         ////////////////////////////////////////////////////////////////////////////
     436        ////////////////////////////////////////////////////////////////////////////   
    437437        public static String name(ASTNode node) {
    438438            if(node instanceof IdentifierNode) {
  • proto/s2k/trunk/framework/src/toolchain/s2k/ast/Generators.java

    r3775 r3811  
    219219                IntegerConstantNode fieldWidthNode =    Generators.makeIntegerConstantNode(locator, fieldWidth);
    220220
    221                 FuncCallNode mask = Generators.makeFuncCallNode(locator, BuiltinCallUtil.BUILTIN_PACKAGE_NAME,
    222                                 S2KBuiltin.MASK.name(),
     221                FuncCallNode mask = Generators.makeFuncCallNode(locator, S2KBuiltin.BUILTIN_PACKAGE_NAME,
     222                                S2KBuiltin.FLOW_MASK.name(),
    223223                                arguments(fieldWidthNode, zeroConstantNode));
    224224                return mask;
  • proto/s2k/trunk/framework/src/toolchain/s2k/lang/S2KBuiltin.java

    r3699 r3811  
    1010
    1111public enum S2KBuiltin {
    12     ADVANCE(               "Advance",             CarryType.One, CARRY_TRANSLATION,                 sig_S_S()  ), // BuiltinCallUtil, CombineAdvances
    13     SCAN_TO_FIRST(         "ScanToFirst",         CarryType.One, SCANTO_FIRST_TRANSLATION,          sig_S_S(), InitialValue.One ),
    14     SCAN_THRU(             "ScanThru",            CarryType.One, CARRY_TRANSLATION,                 sig_SS_S() ), // BuiltinTranslator
    15     SCAN_TO(               "ScanTo",              CarryType.One, SCANTO_TRANSLATION,                sig_SS_S() ),
    16     SPAN_UP_TO(            "SpanUpTo",            CarryType.One, CARRY_TRANSLATION,                 sig_SS_S() ),
    17     INCLUSIVE_SPAN(        "InclusiveSpan",       CarryType.One, CARRY_TRANSLATION,                 sig_SS_S() ),
    18     EXCLUSIVE_SPAN(        "ExclusiveSpan",       CarryType.One, CARRY_TRANSLATION,                 sig_SS_S() ),
    19     ADVANCE_THEN_SCAN_THRU("AdvanceThenScanThru", CarryType.One, CARRY_TRANSLATION,                 sig_SS_S() ),
    20     ADVANCE_THEN_SCAN_TO(  "AdvanceThenScanTo",   CarryType.One, ADVANCE_THEN_SCANTO_TRANSLATION,   sig_SS_S()  ), // BuiltinTranslator
    21     ADVANCE_N(    "AdvanceN",  CarryType.N,    ADVANCEN_TRANSLATION, sig_SI_S() ), // AdvNCounterVisitor   
     12    FLOW_ADVANCE(               "Advance",             CarryType.SingleBit, CARRY_TRANSLATION,                 sig_S_S()  ), // BuiltinCallUtil, CombineAdvances
     13    FLOW_SCAN_TO_FIRST(         "ScanToFirst",         CarryType.SingleBit, SCANTO_FIRST_TRANSLATION,          sig_S_S(), InitialValue.One ),
     14    FLOW_SCAN_THRU(             "ScanThru",            CarryType.SingleBit, CARRY_TRANSLATION,                 sig_SS_S() ), // BuiltinTranslator
     15    FLOW_SCAN_TO(               "ScanTo",              CarryType.SingleBit, SCANTO_TRANSLATION,                sig_SS_S() ),
     16    FLOW_SPAN_UP_TO(            "SpanUpTo",            CarryType.SingleBit, CARRY_TRANSLATION,                 sig_SS_S() ),
     17    FLOW_INCLUSIVE_SPAN(        "InclusiveSpan",       CarryType.SingleBit, CARRY_TRANSLATION,                 sig_SS_S() ),
     18    FLOW_EXCLUSIVE_SPAN(        "ExclusiveSpan",       CarryType.SingleBit, CARRY_TRANSLATION,                 sig_SS_S() ),
     19    FLOW_ADVANCE_THEN_SCAN_THRU("AdvanceThenScanThru", CarryType.SingleBit, CARRY_TRANSLATION,                 sig_SS_S() ),
     20    FLOW_ADVANCE_THEN_SCAN_TO(  "AdvanceThenScanTo",   CarryType.SingleBit, ADVANCE_THEN_SCANTO_TRANSLATION,   sig_SS_S()  ), // BuiltinTranslator
     21    FLOW_ADVANCE_N(                     "AdvanceN",  CarryType.NBits,    ADVANCEN_TRANSLATION, sig_SI_S() ), // AdvNCounterVisitor   
    2222
    23     MASK(         "Mask",      CarryType.None, MASK_TRANSLATION,            sig_II_S() ), // visitors.carry.Counter   
    24     AT_EOF(       "atEOF",     CarryType.None, ATEOF_TRANSLATION,           sig_S_S()  ),
    25     IN_FILE(      "inFile",    CarryType.None, INFILE_TRANSLATION,          sig_S_S()  ),
    26     ASSERT_ZERO(  "assert_0",  CarryType.None, ASSERT_ZERO_TRANSLATION,     sig_ST_V() ), // surroundAssert0sWithIfs   
    27     NULL_BUILTIN( "NULL",      CarryType.None, CARRY_TRANSLATION,           sig_V_V()  );
     23    FLOW_MASK(                          "Mask",      CarryType.None, MASK_TRANSLATION,            sig_II_S() ), // visitors.carry.Counter   
     24    FLOW_AT_EOF(                        "atEOF",     CarryType.None, ATEOF_TRANSLATION,           sig_S_S()  ),
     25    FLOW_IN_FILE(                       "inFile",    CarryType.None, INFILE_TRANSLATION,          sig_S_S()  ),
     26    FLOW_ASSERT_ZERO(                   "assert_0",  CarryType.None, ASSERT_ZERO_TRANSLATION,     sig_ST_V() ), // surroundAssert0sWithIfs     
     27    NULL_BUILTIN(                               "NULL",      CarryType.None, CARRY_TRANSLATION,           sig_V_V()  );
    2828
    29     public enum CarryType{One, N, None};
     29    public enum CarryType{      SingleBit,     
     30                                                        NBits,         
     31                                                        IntValue,       
     32                                                        None };
    3033    public enum InitialValue{ Zero, One };
     34   
     35    public static final String BUILTIN_PACKAGE_NAME = "flow";
    3136   
    3237    private final CarryType carryType;
     
    3641        private final S2KBuiltinTranslator translator;
    3742
    38        
    3943        private S2KBuiltin(String name, CarryType carryType, S2KBuiltinTranslator translator, FunctionSignature signature, InitialValue initialValue) {
     44
    4045                this.name = name;
    4146                this.carryType = carryType;
     
    4954        }
    5055       
    51        
    52 
    53        
    5456        /////////////////////////////////////////////////////////////////
    5557        // forName(String)  mechanism
     
    5860        static {
    5961                for(S2KBuiltin builtin: values()) {
    60                         builtinForName.put(builtin.s2kName(), builtin);
     62                        builtinForName.put(builtin.fullyQualifiedName(), builtin);
    6163                }
    6264        }
    63         public static S2KBuiltin forName(String builtinName) {
    64                 if(builtinForName.containsKey(builtinName)) {
    65                         return builtinForName.get(builtinName);
     65        public static S2KBuiltin forName(String fullyQualifiedName) {
     66                if(builtinForName.containsKey(fullyQualifiedName)) {
     67                        return builtinForName.get(fullyQualifiedName);
    6668                }
    6769                return NULL_BUILTIN;
     
    7173        // queries
    7274        /////////////////////////////////////////////////////////////////
    73         public String s2kName() { return this.name; }
     75        public String fullyQualifiedName () { return packageName() + "." + this.baseName() ;}
     76        public String packageName() { return  this.name().toLowerCase().split("_")[0]; }
     77        public String baseName() { return this.name; }
    7478        public final CarryType getCarryType() { return carryType; }
    7579        public final boolean isCarryNone() { return carryType == CarryType.None; }
    76         public final boolean isCarry1() { return carryType == CarryType.One; }
    77         public final boolean isCarryN() { return carryType == CarryType.N; }
     80        public final boolean isCarry1() { return carryType == CarryType.SingleBit; }
     81        public final boolean isCarryN() { return carryType == CarryType.NBits; }
     82        public final boolean isCarryIntValue() { return carryType == carryType.IntValue; }
    7883        public final S2KBuiltinTranslator getTranslator() { return translator; }
    7984        public final InitialValue getInitialValue() { return initialValue; }
    8085        public final int intInitialValue() { return (initialValue == InitialValue.One) ? 1 : 0; }
    81 
    8286        public FunctionSignature getSignature() { return signature; }
    8387
  • proto/s2k/trunk/framework/src/toolchain/s2k/lang/S2KBuiltin2C.java

    r3699 r3811  
    44import java.util.Map;
    55
    6 public class S2KBuiltin2C extends BuiltinEncoder {
     6public class S2KBuiltin2C extends S2KBuiltinEncoder {
    77       
    88        private static Map<S2KBuiltin, String> s2k2CCode;
     
    1212        s2k2CCode = new HashMap<S2KBuiltin, String>();
    1313       
    14         s2k2CCode.put(S2KBuiltin.ADVANCE,                 "pablo_blk_Advance");
    15         s2k2CCode.put(S2KBuiltin.SCAN_TO_FIRST,           "pablo_blk_ScanToFirst");
    16         s2k2CCode.put(S2KBuiltin.SCAN_THRU,               "pablo_blk_ScanThru");
    17         s2k2CCode.put(S2KBuiltin.SCAN_TO,                 "pablo_blk_ScanTo");
    18         s2k2CCode.put(S2KBuiltin.ADVANCE_THEN_SCAN_THRU,  "pablo_blk_AdvanceThenScanThru");
    19         s2k2CCode.put(S2KBuiltin.ADVANCE_THEN_SCAN_TO,    "pablo_blk_AdvanceThenScanTo");
    20         s2k2CCode.put(S2KBuiltin.SPAN_UP_TO,              "pablo_blk_SpanUpTo");
    21         s2k2CCode.put(S2KBuiltin.INCLUSIVE_SPAN,          "pablo_blk_InclusiveSpan");
    22         s2k2CCode.put(S2KBuiltin.EXCLUSIVE_SPAN,          "pablo_blk_ExclusiveSpan");   
    23         s2k2CCode.put(S2KBuiltin.ADVANCE_N,               "pablo_blk_Advance_n_<%s>");
    24         s2k2CCode.put(S2KBuiltin.MASK,                    "Mask");
    25         s2k2CCode.put(S2KBuiltin.AT_EOF,                  "atEOF");
    26         s2k2CCode.put(S2KBuiltin.IN_FILE,                 "inFile");
    27         s2k2CCode.put(S2KBuiltin.ASSERT_ZERO,             "assert_0_error");   
    28         s2k2CCode.put(S2KBuiltin.NULL_BUILTIN,            "null_builtin_error");
     14        s2k2CCode.put(S2KBuiltin.FLOW_ADVANCE,                  "pablo_blk_Advance");
     15        s2k2CCode.put(S2KBuiltin.FLOW_SCAN_TO_FIRST,            "pablo_blk_ScanToFirst");
     16        s2k2CCode.put(S2KBuiltin.FLOW_SCAN_THRU,                "pablo_blk_ScanThru");
     17        s2k2CCode.put(S2KBuiltin.FLOW_SCAN_TO,                  "pablo_blk_ScanTo");
     18        s2k2CCode.put(S2KBuiltin.FLOW_ADVANCE_THEN_SCAN_THRU,   "pablo_blk_AdvanceThenScanThru");
     19        s2k2CCode.put(S2KBuiltin.FLOW_ADVANCE_THEN_SCAN_TO,     "pablo_blk_AdvanceThenScanTo");
     20        s2k2CCode.put(S2KBuiltin.FLOW_SPAN_UP_TO,               "pablo_blk_SpanUpTo");
     21        s2k2CCode.put(S2KBuiltin.FLOW_INCLUSIVE_SPAN,           "pablo_blk_InclusiveSpan");
     22        s2k2CCode.put(S2KBuiltin.FLOW_EXCLUSIVE_SPAN,           "pablo_blk_ExclusiveSpan");   
     23        s2k2CCode.put(S2KBuiltin.FLOW_ADVANCE_N,                "pablo_blk_Advance_n_<%s>");
     24        s2k2CCode.put(S2KBuiltin.FLOW_MASK,                     "Mask");
     25        s2k2CCode.put(S2KBuiltin.FLOW_AT_EOF,                   "atEOF");
     26        s2k2CCode.put(S2KBuiltin.FLOW_IN_FILE,                  "inFile");
     27        s2k2CCode.put(S2KBuiltin.FLOW_ASSERT_ZERO,              "assert_0_error");     
     28        s2k2CCode.put(S2KBuiltin.NULL_BUILTIN,                          "null_builtin_error");
    2929
    3030        for(S2KBuiltin builtin : S2KBuiltin.values()) {
  • proto/s2k/trunk/framework/src/toolchain/s2k/lang/S2KBuiltin2CPP.java

    r3699 r3811  
    1010import java.util.Map;
    1111
    12 public class S2KBuiltin2CPP extends BuiltinEncoder {
     12public class S2KBuiltin2CPP extends S2KBuiltinEncoder {
    1313
    1414        private static Map<S2KBuiltin, String> s2k2CPPCode;
     
    1818        s2k2CPPCode = new HashMap<S2KBuiltin, String>();
    1919       
    20         s2k2CPPCode.put(S2KBuiltin.ADVANCE,                   "pablo_blk_Advance");
    21         s2k2CPPCode.put(S2KBuiltin.SCAN_TO_FIRST,             "pablo_blk_ScanToFirst");
    22         s2k2CPPCode.put(S2KBuiltin.SCAN_THRU,                 "pablo_blk_ScanThru");
    23         s2k2CPPCode.put(S2KBuiltin.SCAN_TO,                   "pablo_blk_ScanTo");
    24         s2k2CPPCode.put(S2KBuiltin.ADVANCE_THEN_SCAN_THRU,    "pablo_blk_AdvanceThenScanThru");
    25         s2k2CPPCode.put(S2KBuiltin.ADVANCE_THEN_SCAN_TO,      "pablo_blk_AdvanceThenScanTo");
    26         s2k2CPPCode.put(S2KBuiltin.SPAN_UP_TO,                "pablo_blk_SpanUpTo");
    27         s2k2CPPCode.put(S2KBuiltin.INCLUSIVE_SPAN,            "pablo_blk_InclusiveSpan");
    28         s2k2CPPCode.put(S2KBuiltin.EXCLUSIVE_SPAN,            "pablo_blk_ExclusiveSpan");   
    29         s2k2CPPCode.put(S2KBuiltin.ADVANCE_N,                 "pablo_blk_Advance_n_<%s>");
    30         s2k2CPPCode.put(S2KBuiltin.MASK,                      "Mask");
    31         s2k2CPPCode.put(S2KBuiltin.AT_EOF,                    "atEOF");
    32         s2k2CPPCode.put(S2KBuiltin.IN_FILE,                   "inFile");
    33         s2k2CPPCode.put(S2KBuiltin.ASSERT_ZERO,               "assert_0_error");       
     20        s2k2CPPCode.put(S2KBuiltin.FLOW_ADVANCE,                   "pablo_blk_Advance");
     21        s2k2CPPCode.put(S2KBuiltin.FLOW_SCAN_TO_FIRST,             "pablo_blk_ScanToFirst");
     22        s2k2CPPCode.put(S2KBuiltin.FLOW_SCAN_THRU,                 "pablo_blk_ScanThru");
     23        s2k2CPPCode.put(S2KBuiltin.FLOW_SCAN_TO,                   "pablo_blk_ScanTo");
     24        s2k2CPPCode.put(S2KBuiltin.FLOW_ADVANCE_THEN_SCAN_THRU,    "pablo_blk_AdvanceThenScanThru");
     25        s2k2CPPCode.put(S2KBuiltin.FLOW_ADVANCE_THEN_SCAN_TO,      "pablo_blk_AdvanceThenScanTo");
     26        s2k2CPPCode.put(S2KBuiltin.FLOW_SPAN_UP_TO,                "pablo_blk_SpanUpTo");
     27        s2k2CPPCode.put(S2KBuiltin.FLOW_INCLUSIVE_SPAN,            "pablo_blk_InclusiveSpan");
     28        s2k2CPPCode.put(S2KBuiltin.FLOW_EXCLUSIVE_SPAN,            "pablo_blk_ExclusiveSpan");   
     29        s2k2CPPCode.put(S2KBuiltin.FLOW_ADVANCE_N,                 "pablo_blk_Advance_n_<%s>");
     30        s2k2CPPCode.put(S2KBuiltin.FLOW_MASK,                      "Mask");
     31        s2k2CPPCode.put(S2KBuiltin.FLOW_AT_EOF,                    "atEOF");
     32        s2k2CPPCode.put(S2KBuiltin.FLOW_IN_FILE,                   "inFile");
     33        s2k2CPPCode.put(S2KBuiltin.FLOW_ASSERT_ZERO,               "assert_0_error");   
    3434        s2k2CPPCode.put(S2KBuiltin.NULL_BUILTIN,              "null_builtin_error");
    3535               
  • proto/s2k/trunk/framework/src/toolchain/s2k/lang/S2KBuiltinTranslator.java

    r3699 r3811  
    22
    33import static toolchain.b2k.lang.idisa.IDISABuiltin.*;
    4 import static toolchain.b2k.lang.types.PrimitiveType.BITBLOCK_SIZE;
     4import static toolchain.b2k.lang.type.PrimitiveType.BITBLOCK_SIZE;
    55
    66import java.util.List;
     
    2929            String b2kBlkCallFuncName     = context.getCode(builtin);
    3030            ASTNode b2kBlkFuncCall        = Generators.makeFuncCallNode(locator, b2kBlkCallFuncName, arrayFromList(args));
    31             ASTNode srliValue               = Generators.makeIntegerConstantNode(locator, BITBLOCK_SIZE - 1);
     31            ASTNode srliValue             = Generators.makeIntegerConstantNode(locator, BITBLOCK_SIZE - 1);
    3232           
    3333            return Generators.makeIdisaFuncCallNode(locator, BITBLOCK_SRLI, BITBLOCK_SIZE, srliValue, b2kBlkFuncCall);
     
    5959            }
    6060           
    61             return CARRY_TRANSLATION.translate(S2KBuiltin.SCAN_TO_FIRST, snode, context, args);
     61            return CARRY_TRANSLATION.translate(S2KBuiltin.FLOW_SCAN_TO_FIRST, snode, context, args);
    6262        }
    6363        },
     
    6969            args.set(1, translateScanToArgs(locator, context, args.get(1)));
    7070           
    71             return CARRY_TRANSLATION.translate(S2KBuiltin.SCAN_THRU, snode, context, args);
     71            return CARRY_TRANSLATION.translate(S2KBuiltin.FLOW_SCAN_THRU, snode, context, args);
    7272        }
    7373    },
     
    7979            args.set(1, translateScanToArgs(locator, context, args.get(1)));   
    8080           
    81             return CARRY_TRANSLATION.translate(S2KBuiltin.ADVANCE_THEN_SCAN_THRU, snode, context, args);
     81            return CARRY_TRANSLATION.translate(S2KBuiltin.FLOW_ADVANCE_THEN_SCAN_THRU, snode, context, args);
    8282        }
    8383
     
    9292            ASTNode errorMsg                        = args.get(1);
    9393           
    94             String assert0CallName                  = context.getBuiltinEncoder().getName(S2KBuiltin.ASSERT_ZERO);
     94            String assert0CallName                  = context.getBuiltinEncoder().getName(S2KBuiltin.FLOW_ASSERT_ZERO);
    9595
    9696            ASTNode assert0Call                     = Generators.makeFuncCallNode(locator, assert0CallName, errorStream, errorMsg);
  • proto/s2k/trunk/framework/src/toolchain/s2k/lang/S2KBuiltinTypeBuilder.java

    r3699 r3811  
    88import toolchain.s2k.semanticAnalyzer.SymbolTable;
    99
     10// KH: refactor for multiple packages
     11
    1012public class S2KBuiltinTypeBuilder {
    1113        public static void installOn(HasSymbolTableNodeType node) {
     
    1416        }
    1517       
    16         public static final String packageName = "pablo";
     18        public static final String packageName = "flow";
    1719
    1820        private S2KBuiltinTypeBuilder() {
     
    4850
    4951        private Binding makeBinding(S2KBuiltin builtin) {
    50                 String name = builtin.s2kName();
     52                String name = builtin.name();
    5153                Type type = FunctionType.make(builtin.getSignature());
    5254                return Binding.make(name, type);
  • proto/s2k/trunk/framework/src/toolchain/s2k/lang/signatures/FunctionSignature.java

    r3711 r3811  
    88// immutable
    99public class FunctionSignature {
    10         private final Type returnType;
    11         private Type[] paramTypes;
    12         private final Object variant;
     10        protected final Object variant;
     11        protected Type[] parameterTypes;
     12        protected final Type returnType;
    1313       
    1414        ///////////////////////////////////////////////////////////////
     
    1818                assert(types.length >= 1);
    1919                this.variant = variant;
    20                 storeParamTypes(types);
     20                storeParameterTypes(types);
    2121                returnType = types[types.length-1];
    2222        }
    2323       
    24         private void storeParamTypes(Type[] types) {
    25                 paramTypes = new Type[types.length-1];
     24        private void storeParameterTypes(Type[] types) {
     25                parameterTypes = new Type[types.length-1];
    2626                for(int i=0; i<types.length-1; i++) {
    27                         paramTypes[i] = types[i];
     27                        parameterTypes[i] = types[i];
    2828                }
    2929        }
     
    4848       
    4949        public boolean accepts(List<Type> types) {
    50                 if(types.size() != paramTypes.length) {
     50                if(types.size() != parameterTypes.length) {
    5151                        return false;
    5252                }
    53                 for(int i=0; i<paramTypes.length; i++) {
    54                         if(!assignableTo(paramTypes[i], types.get(i))) {
     53                for(int i=0; i<parameterTypes.length; i++) {
     54                        if(!assignableTo(parameterTypes[i], types.get(i))) {
    5555                                return false;
    5656                        }
     
    8484                StringBuilder result = new StringBuilder();
    8585                result.append("(");
    86                 for(Type t: paramTypes) {
     86                for(Type t: parameterTypes) {
    8787                        result.append("" + t + ", ");
    8888                }
  • proto/s2k/trunk/framework/src/toolchain/s2k/transformer/visitors/S2K2B2K/Context.java

    r3708 r3811  
    55import toolchain.s2k.ast.Generators;
    66import toolchain.s2k.lang.S2KBuiltin;
    7 import toolchain.s2k.lang.BuiltinEncoder;
     7import toolchain.s2k.lang.S2KBuiltinEncoder;
    88import toolchain.s2k.lang.carrySet.CarrySetBuiltin;
    99import toolchain.s2k.lang.carrySet.CarrySetEncoder;
     
    1313        final private boolean carryInMode;
    1414        final private boolean finalBlockMode;
    15         final private BuiltinEncoder builtinEncoder;
     15        final private S2KBuiltinEncoder builtinEncoder;
    1616        final private CarrySetEncoder carrySetEncoder;
    1717        final private int carrySetDepth;
    1818       
    19         public Context(BuiltinEncoder builtinEncoder, CarrySetEncoder carrySetEncoder) {
     19        public Context(S2KBuiltinEncoder builtinEncoder, CarrySetEncoder carrySetEncoder) {
    2020            this(builtinEncoder, carrySetEncoder, true, false, 0);
    2121        }
    2222       
    23         public Context(BuiltinEncoder builtinEncoder, CarrySetEncoder carrySetEncoder,
     23        public Context(S2KBuiltinEncoder builtinEncoder, CarrySetEncoder carrySetEncoder,
    2424                        boolean carryInMode, boolean finalBlockMode,
    2525                        int carrySetDepth) {
     
    3939                return finalBlockMode;
    4040        }
    41         public final BuiltinEncoder getBuiltinEncoder() {
     41        public final S2KBuiltinEncoder getBuiltinEncoder() {
    4242                return builtinEncoder;
    4343        }
  • proto/s2k/trunk/framework/src/toolchain/s2k/transformer/visitors/S2K2B2K/S2K2B2KTransformer.java

    r3799 r3811  
    2626import static toolchain.b2k.lang.B2KBuiltin.CLEAR;
    2727import static toolchain.b2k.lang.idisa.IDISABuiltin.*;
    28 import static toolchain.b2k.lang.types.PrimitiveType.BITBLOCK_SIZE;
     28import static toolchain.b2k.lang.type.PrimitiveType.BITBLOCK_SIZE;
    2929
    3030// non-conflicting imports
    31 import toolchain.s2k.lang.BuiltinCallUtil;
     31import toolchain.s2k.lang.S2KBuiltinUtil;
    3232import toolchain.s2k.lang.S2KBuiltin;
    33 import toolchain.s2k.lang.BuiltinEncoder;
     33import toolchain.s2k.lang.S2KBuiltinEncoder;
    3434import toolchain.s2k.lang.carrySet.CarrySetEncoder;
    3535import toolchain.s2k.lang.S2KBuiltinTranslator;
     
    4040public class S2K2B2KTransformer {
    4141
    42     public static ASTNode apply(BuiltinEncoder builtinEncoder, CarrySetEncoder carrySetEncoder, s2k.ast.ASTNode s2kASTree, s2k.ast.ASTNode s2kFinalBlockASTree) {
     42    public static ASTNode apply(S2KBuiltinEncoder builtinEncoder, CarrySetEncoder carrySetEncoder, s2k.ast.ASTNode s2kASTree, s2k.ast.ASTNode s2kFinalBlockASTree) {
    4343
    4444        // S2B
     
    335335       
    336336        ////////////////////////////////////////////////////////////////////////////////////
    337         // IfStmt        
     337        // IfStmt Translation       
    338338        //
    339339        //  'carry-in' - enabled
     
    395395
    396396        ////////////////////////////////////////////////////////////////////////////////////
    397         // WhileStmt translation       
     397        // WhileStmt Translation       
    398398        //
    399399        //   if 'carry1Count' is zero
     
    566566            ASTNode replacement = null;
    567567           
    568             if (BuiltinCallUtil.isCarryNone(snode)) {
    569 
    570                 S2KBuiltin builtin = BuiltinCallUtil.builtin(snode);
     568            if (S2KBuiltinUtil.isCarryNone(snode)) {
     569
     570                S2KBuiltin builtin = S2KBuiltinUtil.builtin(snode);
    571571                S2KBuiltinTranslator translator = builtin.getTranslator();
    572572
     
    590590            s2k.ast.ASTNode rhs = toolchain.s2k.ast.Accessors.rhs(snode);
    591591
    592             if(BuiltinCallUtil.isCarry(rhs)) {
     592            if(S2KBuiltinUtil.isCarry(rhs)) {
    593593
    594594                Locator locator = Generators.makeTextLocation(snode.getLocation());
     
    603603                args.add(returnValue);
    604604
    605                 S2KBuiltin builtin = BuiltinCallUtil.builtin(rhs);
     605                S2KBuiltin builtin = S2KBuiltinUtil.builtin(rhs);
    606606                S2KBuiltinTranslator translator = builtin.getTranslator();
    607607                ASTNode b2kBlkFuncCall = translator.translate(builtin, (s2k.ast.FuncCallNode) rhs, context, args);
     
    619619            ASTNode carryCall = null;
    620620           
    621             if(BuiltinCallUtil.isCarry1(rhs)) {
     621            if(S2KBuiltinUtil.isCarry1(rhs)) {
    622622                int carry1Position = propInfoSetMap.get(rhs).carry1Position;
    623623                carryCall = Generators.makeGetCarryCall(locator, context, carry1Position);
    624624
    625             } else if(BuiltinCallUtil.isCarryN(rhs)) {
     625            } else if(S2KBuiltinUtil.isCarryN(rhs)) {
    626626                int carryNPosition = propInfoSetMap.get(rhs).carryNPosition;
    627627                carryCall = Generators.makePending64Call(locator, context, carryNPosition);
     
    678678                    if (rhsS.getToken().isLextant(s2k.lexicalAnalyzer.Lextant.NOT)) {                       
    679679                        replacement =  Generators.makeIdisaFuncCallNode(locator, SIMD_ANDC, BITBLOCK_SIZE,
    680                                 Generators.arguments(lhs, Accessors.idisaFuncCallArgListNode((IdisaFuncCallNode)rhs).child(0)));
     680                                Generators.arguments(lhs, Accessors.argListNode((IdisaFuncCallNode)rhs).child(0)));
    681681                    }
    682682                    else if(lhsS.getToken().isLextant(s2k.lexicalAnalyzer.Lextant.NOT)) {
    683683                        replacement =  Generators.makeIdisaFuncCallNode(locator, SIMD_ANDC, BITBLOCK_SIZE,
    684                                 Generators.arguments(rhs, Accessors.idisaFuncCallArgListNode((IdisaFuncCallNode)lhs).child(0)));
     684                                Generators.arguments(rhs, Accessors.argListNode((IdisaFuncCallNode)lhs).child(0)));
    685685                    }
    686686                    else {
  • proto/s2k/trunk/framework/src/toolchain/s2k/transformer/visitors/S2K2S2K/AssignStreamInitialValues.java

    r3708 r3811  
    22 * Sets unintialized stream primitives variables and members to defaults.
    33 *
    4  * This visitor is not complete. Struct member initialization via def/use chaining is required.
     4 * This visitor is not complete. Struct member initialisation via def/use chaining is required.
    55 *
    66 * stream<2^k> (stream) ->      simd<2^k>::constant(0)
  • proto/s2k/trunk/framework/src/toolchain/s2k/transformer/visitors/S2K2S2K/CombineAdvances.java

    r3708 r3811  
    1717import toolchain.s2k.ast.Accessors;
    1818import toolchain.s2k.ast.Generators;
    19 import toolchain.s2k.lang.BuiltinCallUtil;
     19import toolchain.s2k.lang.S2KBuiltinUtil;
    2020
    2121public class CombineAdvances {
     
    5454                // compiler error -> Assume upstream SemanticAnalysis
    5555                private int advanceAmount(FuncCallNode node) {
    56                         assert BuiltinCallUtil.isAdvance(node);
     56                        assert S2KBuiltinUtil.isAdvance(node);
    5757                        switch(Accessors.argCount(node)) {
    5858                        case 1:         return 1;
     
    7272               
    7373                private boolean isAdvanceOfAdvance(FuncCallNode node) {
    74                         if(!BuiltinCallUtil.isAdvance(node)) {
     74                        if(!S2KBuiltinUtil.isAdvance(node)) {
    7575                                return false;
    7676                        }                       
     
    8080                                return false;
    8181                        }
    82                         return BuiltinCallUtil.isAdvance((FuncCallNode)child);
     82                        return S2KBuiltinUtil.isAdvance((FuncCallNode)child);
    8383                }       
    8484
  • proto/s2k/trunk/framework/src/toolchain/s2k/transformer/visitors/S2K2S2K/SplitVarDeclInits.java

    r3708 r3811  
    11/*
    2  * Creates a single function-level scope.
    32 *
    4  * (1) Substitutes mangled name for each non-mangled name.
    5  * (2) Splits variable declarations with initializations.
    6  * (3) Moves block-level variable declarations to the function-level scope.
     3 * Splits variable declarations with initialisation expressions
     4 * into separate declaration and assignment statements.
    75 *     
     6 * This visitor is an idempotent operation.
     7 *
    88 * @author Ken Herdy <ksherdy at sfu dot ca>
    99 */
  • proto/s2k/trunk/framework/src/toolchain/s2k/transformer/visitors/S2K2S2K/SurroundAssert0sWithIfs.java

    r3708 r3811  
    1313import toolchain.s2k.ast.Accessors;
    1414import toolchain.s2k.ast.Generators;
    15 import toolchain.s2k.lang.BuiltinCallUtil;
     15import toolchain.s2k.lang.S2KBuiltinUtil;
    1616import toolchain.s2k.lang.S2KBuiltin;
    17 import toolchain.s2k.lang.BuiltinEncoder;
     17import toolchain.s2k.lang.S2KBuiltinEncoder;
    1818
    1919//
     
    2121//
    2222// if(errorStream) {
    23 //    encoded_assert_0(errorStream, errorMsg)
     23//    assert_0(errorStream, errorMsg)
    2424// }
    2525//
    2626public class SurroundAssert0sWithIfs {
    27         static public ASTNode apply(ASTNode ASTree, BuiltinEncoder encoder) {
     27        static public ASTNode apply(ASTNode ASTree, S2KBuiltinEncoder encoder) {
    2828                XFormer xformer = new XFormer(encoder);
    2929                ASTree.accept(xformer);
     
    3232                               
    3333        static private class XFormer extends VoidVisitor.Default {
    34                 private final BuiltinEncoder encoder;
    35                 private XFormer(BuiltinEncoder encoder) {
     34                private final S2KBuiltinEncoder encoder;
     35                private XFormer(S2KBuiltinEncoder encoder) {
    3636                        this.encoder = encoder;
    3737                }
     
    4848                                ASTNode assert0Call
    4949                                                = Generators.makeFuncCallNode(locator,
    50                                                                                                           encoder.getName(S2KBuiltin.ASSERT_ZERO),
     50                                                                                                          encoder.getName(S2KBuiltin.FLOW_ASSERT_ZERO),
    5151                                                                                                          errorStream,                         
    5252                                                                                                          errorMsg);           
     
    6464                }
    6565
    66                 private boolean isAssertZeroCall(FuncCallNode node) {
    67                         return BuiltinCallUtil.isBuiltInCall(node, S2KBuiltin.ASSERT_ZERO);
     66                private boolean isAssertZeroCall(ASTNode node) {
     67                        return S2KBuiltinUtil.isBuiltInCall(node);
    6868                }               
    6969        }       
  • proto/s2k/trunk/framework/src/toolchain/s2k/transformer/visitors/S2K2S2K/TempifyCarrySetBuiltinCalls.java

    r3775 r3811  
    5252import toolchain.s2k.ast.Accessors;
    5353import toolchain.s2k.ast.Generators;
    54 import toolchain.s2k.lang.BuiltinCallUtil;
     54import toolchain.s2k.lang.S2KBuiltinUtil;
    5555import toolchain.util.Labeller;
    5656import toolchain.util.Pair;
     
    132132           
    133133           
    134             if(BuiltinCallUtil.isCarry(node)) {
     134            if(S2KBuiltinUtil.isCarry(node)) {
    135135               
    136136                if(!(node.getParent() instanceof AssignNode)) {
  • proto/s2k/trunk/framework/src/toolchain/s2k/transformer/visitors/infoSet/AdvanceNCount.java

    r3708 r3811  
    88
    99import s2k.ast.*;
    10 import toolchain.s2k.lang.BuiltinCallUtil;
     10import toolchain.s2k.lang.S2KBuiltinUtil;
    1111
    1212public class AdvanceNCount {
     
    2525
    2626                public void visitLeave(FuncCallNode node) {
    27                         if(BuiltinCallUtil.isAdvanceN(node)) {
     27                        if(S2KBuiltinUtil.isAdvanceN(node)) {
    2828                            this.advNCount += 1;
    2929                        }
  • proto/s2k/trunk/framework/src/toolchain/s2k/transformer/visitors/infoSet/Carry1Count.java

    r3708 r3811  
    88
    99import s2k.ast.*;
    10 import toolchain.s2k.lang.BuiltinCallUtil;
     10import toolchain.s2k.lang.S2KBuiltinUtil;
    1111
    1212public class Carry1Count {
     
    2727                               
    2828                public void visitLeave(FuncCallNode node) {
    29                         if(BuiltinCallUtil.isCarry1(node)) {
     29                        if(S2KBuiltinUtil.isCarry1(node)) {
    3030                            carry1Count += 1;
    3131                        }                       
  • proto/s2k/trunk/framework/src/toolchain/s2k/transformer/visitors/infoSet/Carry1InitialValues.java

    r3708 r3811  
    55
    66import s2k.ast.*;
    7 import toolchain.s2k.lang.BuiltinCallUtil;
     7import toolchain.s2k.lang.S2KBuiltinUtil;
    88
    99public class Carry1InitialValues {
     
    2727                               
    2828                public void visitLeave(FuncCallNode node) {
    29                         if(BuiltinCallUtil.isCarry1(node)) {
    30                             carry1InitialValues.add(BuiltinCallUtil.builtin(node).intInitialValue());
     29                        if(S2KBuiltinUtil.isCarry1(node)) {
     30                            carry1InitialValues.add(S2KBuiltinUtil.builtin(node).intInitialValue());
    3131                        }                       
    3232                }
  • proto/s2k/trunk/framework/src/toolchain/s2k/transformer/visitors/infoSet/CarryNCount.java

    r3708 r3811  
    22
    33import s2k.ast.*;
    4 import toolchain.s2k.lang.BuiltinCallUtil;
     4import toolchain.s2k.lang.S2KBuiltinUtil;
    55
    66public class CarryNCount {
     
    2020                               
    2121                public void visitLeave(FuncCallNode node) {
    22                         if(BuiltinCallUtil.isCarryN(node)) {
     22                        if(S2KBuiltinUtil.isCarryN(node)) {
    2323                            carryNCount += 1;
    2424                        }                       
  • proto/s2k/trunk/framework/src/toolchain/s2k/transformer/visitors/infoSet/PropertyInfoSetMapBuilder.java

    r3775 r3811  
    1515
    1616import s2k.ast.*;
    17 import toolchain.s2k.lang.BuiltinCallUtil;
     17import toolchain.s2k.lang.S2KBuiltinUtil;
    1818
    1919public class PropertyInfoSetMapBuilder {
     
    6363        public void visitEnter(FuncCallNode node) {
    6464           
    65             if(BuiltinCallUtil.isCarry(node)) {
     65            if(S2KBuiltinUtil.isCarry(node)) {
    6666
    6767                PropertyInfoSet propInfoSet = new PropertyInfoSet(carry1Position, carryNPosition,  Carry1Count.forTree(node), CarryNCount.forTree(node), Carry1InitialValues.forTree(node)); // add LA, LB
    6868                propInfoSetMap.put(node, propInfoSet);
    6969
    70                 if(BuiltinCallUtil.isCarry1(node)) {
     70                if(S2KBuiltinUtil.isCarry1(node)) {
    7171                        carry1Position += 1;
    72                 } else if (BuiltinCallUtil.isCarryN(node)) {
     72                } else if (S2KBuiltinUtil.isCarryN(node)) {
    7373                        carryNPosition += 1;
    7474                }
Note: See TracChangeset for help on using the changeset viewer.