Changeset 889 for proto/Compiler


Ignore:
Timestamp:
Feb 4, 2011, 4:50:40 PM (8 years ago)
Author:
ksherdy
Message:

Add Carry_Adjust. Fix @any_carry in template. Add 'add_dump_stmts' support.

Location:
proto/Compiler
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • proto/Compiler/compiler2.py

    r880 r889  
    4242        s = ast.parse(input_string)
    4343        # Analysis and Transformation
    44         xfrmr = pablo.MainLoopTransformer(s)
     44        xfrmr = pablo.MainLoopTransformer(s, options.add_dump_stmts)
    4545        xfrmr.gen_globals()
    4646        xfrmr.gen_declarations()
    4747        xfrmr.gen_initializations()
    48         xfrmr.xfrm_block_stmts(options.add_dump_stmts)     
    49         xfrmr.add_loop_carryQ_adjust()
     48        xfrmr.xfrm_block_stmts()     
     49
    5050        # BACK END
    5151        template_contents = self.read_template()
  • proto/Compiler/pablo.py

    r880 r889  
    479479
    480480class MainLoopTransformer:
    481   def __init__(self, main_module, main_node_id='Main'):
     481  def __init__(self, main_module, add_dump_stmts=False, main_node_id='Main'):
     482       
    482483    self.main_module = main_module
    483484    self.main_node_id = main_node_id
     485    self.add_dump_stmts = add_dump_stmts
    484486   
    485487        # Gather and partition function definition nodes.
     
    503505                Bitwise_to_SIMD().xfrm(node)
    504506                CarryIntro().xfrm_fndef(node)
     507
     508                if self.add_dump_stmts:
     509                        Add_SIMD_Register_Dump().xfrm(node)
     510               
     511                if stream_function.carry_count > 0:
     512                        node.body += [mkCallStmt('CarryQ_Adjust', [ast.Name('carryQ', ast.Load()), ast.Num(stream_function.carry_count)])]
    505513               
    506514                stream_function.statements = Cgen.py2C(4).gen(node.body)
     
    548556                self.Cinits += self.emitter.declaration(self.stream_functions[key].type_name, self.stream_functions[key].instance_name, 2)
    549557                       
    550   def xfrm_block_stmts(self, add_dump_stmts=False):
     558  def xfrm_block_stmts(self):
    551559    AugAssignRemoval().xfrm(self.main_node)
    552560    Bitwise_to_SIMD().xfrm(self.main_node)
    553561    CarryIntro().xfrm_fndef(self.main_node)
    554     if add_dump_stmts:
     562    if self.add_dump_stmts:
    555563        Add_SIMD_Register_Dump().xfrm(self.main_node)
    556564               
    557     StreamFunctionCallXlator().xfrm(self.main_node, self.stream_function_node.keys())   
     565    StreamFunctionCallXlator().xfrm(self.main_node, self.stream_function_node.keys())
     566   
     567    if self.main_carry_count > 0:
     568                self.main_node.body += [mkCallStmt('CarryQ_Adjust', [ast.Name('carryQ', ast.Load()), ast.Num(self.main_carry_count)])]
     569   
     570   
     571       
    558572    self.Cstmts = Cgen.py2C().gen(self.main_node.body)
    559    
    560   def add_loop_carryQ_adjust(self):
    561     self.main_node.body += [mkCallStmt('CarryQ_Adjust', [ast.Name('carryQ', ast.Load()), ast.Num(self.main_carry_count)])]
    562573   
    563574if __name__ == "__main__":
Note: See TracChangeset for help on using the changeset viewer.