Changeset 3029 for proto


Ignore:
Timestamp:
Apr 15, 2013, 4:12:57 PM (6 years ago)
Author:
linmengl
Message:

able to compile generated hpp file now

Location:
proto/pabloj/trunk
Files:
2 added
8 edited

Legend:

Unmodified
Added
Removed
  • proto/pabloj/trunk/input/templates/cpplang/pablo_definitions.template

    r2967 r3029  
    2828#define assert_0_error(errkind, errstrm) error_tracker.NoteError(errkind, errstrm);
    2929BitBlock EOF_mask = simd<1>::constant<1>();
     30
    3031
    3132// XMLWF application headers and definitions
  • proto/pabloj/trunk/input/test/pabloB/test.pablob

    r3011 r3029  
    11// KERNEL kernelName LCURLY funcDef (optFuncDef)? RCURLY TERMINATOR?;
    22               
    3 kernel KernelName
     3kernel IdisaOps
    44{
    55        init
     
    3030               
    3131                r = simd.add<1>(a,b);
    32                 r = simd.sub<2>(a,b);
     32                /*r = simd.sub<2>(a,b);
    3333                r = simd.mul<4>(a,b);
    3434                r = simd.eq<8>(a,b);
     
    4444                r = simd.srl<16>(a,b);
    4545                r = simd.sra<32>(a,b);
    46                
     46                */
    4747                //r = simd.if<128>(a,b,c);
    4848               
  • proto/pabloj/trunk/output/cpplang/pablo_definitions.hpp

    r3013 r3029  
    7171                BitBlock k;
    7272                BitBlock r;
    73                 r = simd<1>::simd.add(a, b);
    74                 r = simd<2>::simd.sub(a, b);
    75                 r = simd<4>::simd.mul(a, b);
    76                 r = simd<8>::simd.eq(a, b);
    77                 r = simd<16>::simd.gt(a, b);
    78                 r = simd<32>::simd.ugt(a, b);
    79                 r = simd<64>::simd.lt(a, b);
    80                 r = simd<128>::simd.ult(a, b);
    81                 r = simd<256>::simd.max(a, b);
    82                 r = simd<1>::simd.umax(a, b);
    83                 r = simd<2>::simd.min(a, b);
    84                 r = simd<4>::simd.umin(a, b);
    85                 r = simd<8>::simd.sll(a, b);
    86                 r = simd<16>::simd.srl(a, b);
    87                 r = simd<32>::simd.sra(a, b);
     73                r = simd<1>::add(a, b);
     74                r = simd<2>::sub(a, b);
     75                r = simd<4>::mul(a, b);
     76                r = simd<8>::eq(a, b);
     77                r = simd<16>::gt(a, b);
     78                r = simd<32>::ugt(a, b);
     79                r = simd<64>::lt(a, b);
     80                r = simd<128>::ult(a, b);
     81                r = simd<256>::max(a, b);
     82                r = simd<1>::umax(a, b);
     83                r = simd<2>::min(a, b);
     84                r = simd<4>::umin(a, b);
     85                r = simd<8>::sll(a, b);
     86                r = simd<16>::srl(a, b);
     87                r = simd<32>::sra(a, b);
    8888        }
    8989       
  • proto/pabloj/trunk/output/cpplang/test.cpp

    r2927 r3029  
    77*/
    88
    9 #include "pablo_definitions.hpp"
     9#include "idisa_definitions.hpp"
    1010
    1111#include <iostream>
  • proto/pabloj/trunk/src/toolchain/pabloB/ast/Accessors.java

    r3010 r3029  
    297297        }       
    298298
     299        ////////////////////////////////////////////////////////////////////////////
     300        // IdisaFuncCallNode
     301        ////////////////////////////////////////////////////////////////////////////
     302        public static ASTNode idisaFuncCallIdentifier(IdisaFuncCallNode node) {
     303                return node.child(0);
     304        }
     305
     306        public static String idisaFuncCallName(ASTNode node) {
     307                assert (node instanceof CompoundIdentifierNode || node instanceof IdentifierNode);
     308               
     309                if (node instanceof CompoundIdentifierNode) {
     310                        return node.lastChild().getToken().getLexeme();
     311                }
     312               
     313                return node.child(0).getToken().getLexeme();   
     314                               
     315        }               
     316                       
     317       
     318       
    299319}
  • proto/pabloj/trunk/src/toolchain/pabloB/codeGenerator/idisa/IDISABuiltin2CPP.java

    r3010 r3029  
    2121                String csv = UnparserUtil.makeDelimitedList(temp,",");
    2222               
    23                 return String.format("simd<%s>::%s(%s)", fieldWidth, operationName, csv);
     23                operationName = operationName.replaceFirst("\\.", String.format("<%s>::", fieldWidth));
     24               
     25                return String.format("%s(%s)", operationName, csv);
    2426        }
    2527}
  • proto/pabloj/trunk/src/toolchain/pabloB/codeGenerator/visitors/Unparser.java

    r3010 r3029  
    369369                StringBuilder resultVar = new StringBuilder();
    370370               
    371                 String operationName    = childResults.get(0).getResultVarName();
     371                String fullyQualifiedName = childResults.get(0).getResultVarName();
     372                String baseName                 = Accessors.idisaFuncCallName(node.child(0));
    372373                String fieldWidth               = childResults.get(1).getResultVarName();
    373374                String arguments                = childResults.get(2).getResultVarName();
    374375               
    375                 IDISABuiltin idisaBuiltin = IDISABuiltin.fromString(operationName);
    376                 assert idisaBuiltin != null : "Unknown IDISA Operation: " + operationName;
     376                IDISABuiltin idisaBuiltin = IDISABuiltin.fromString(fullyQualifiedName);
     377                assert idisaBuiltin != null : "Unknown IDISA Operation: " + baseName;
    377378                assert idisaBuiltin.hasSignature(Integer.valueOf(fieldWidth)) : "Unknown IDISA signature.";
    378379               
     
    382383               
    383384               
    384                 String idisaFuncCallString = idisaBuiltinsGenerator.makeIDISAFuncCall(idisaBuiltins2Lang, operationName, fieldWidth, arguments);
    385                
    386                
     385                String idisaFuncCallString = idisaBuiltinsGenerator.makeIDISAFuncCall(idisaBuiltins2Lang, fullyQualifiedName, fieldWidth, arguments);           
    387386               
    388387                code.setResultVarName(idisaFuncCallString);             // Function invocation as an expression
Note: See TracChangeset for help on using the changeset viewer.