@@ -114,7 +114,7 @@ def copy_expr(
114114
115115 add_offset = offset_cppstr != "0"
116116
117- if def_type in [DefinedType .Pointer , DefinedType .ArrayInterface , DefinedType . Object ]:
117+ if def_type in [DefinedType .Pointer , DefinedType .Object ]:
118118 return "{}{}{}" .format (dt , expr , " + {}" .format (offset_cppstr ) if add_offset else "" )
119119 elif def_type == DefinedType .StreamArray :
120120 return "{}[{}]" .format (expr , offset_cppstr )
@@ -137,8 +137,7 @@ def memlet_copy_to_absolute_strides(dispatcher: 'TargetDispatcher',
137137 src_node : nodes .AccessNode ,
138138 dst_node : nodes .AccessNode ,
139139 src_name_override : Optional [str ] = None ,
140- dst_name_override : Optional [str ] = None ,
141- codegen : 'TargetCodeGenerator' = None ):
140+ dst_name_override : Optional [str ] = None ):
142141 memlet = edge .data
143142 copy_shape = memlet .subset .size_exact ()
144143 src_nodedesc = src_node .desc (sdfg )
@@ -150,10 +149,6 @@ def memlet_copy_to_absolute_strides(dispatcher: 'TargetDispatcher',
150149 dst_subset = memlet .get_dst_subset (edge , state )
151150 is_src_write = not memlet ._is_data_src
152151
153- if codegen is not None :
154- src_subset = codegen .adjust_subset_for_codegen (src_nodedesc , src_subset )
155- dst_subset = codegen .adjust_subset_for_codegen (dst_nodedesc , dst_subset )
156-
157152 if dispatcher is not None :
158153 src_expr = copy_expr (dispatcher ,
159154 sdfg ,
@@ -288,7 +283,7 @@ def emit_memlet_reference(dispatcher: 'TargetDispatcher',
288283 """
289284 desc = sdfg .arrays [memlet .data ]
290285 typedef = conntype .ctype
291- offset = cpp_offset_expr (desc , memlet .subset , codegen = codegen )
286+ offset = cpp_offset_expr (desc , memlet .subset )
292287 offset_expr = '[' + offset + ']'
293288 is_scalar = not isinstance (conntype , dtypes .pointer )
294289 ptrname = codegen .ptr (memlet .data , desc , sdfg , subset = memlet .subset , ancestor = ancestor , is_write = is_write )
@@ -317,8 +312,7 @@ def make_const(expr: str) -> str:
317312 else :
318313 return expr
319314
320- if (defined_type == DefinedType .Pointer
321- or (defined_type == DefinedType .ArrayInterface and isinstance (desc , data .View ))):
315+ if defined_type == DefinedType .Pointer :
322316 if not is_scalar and desc .dtype == conntype .base_type :
323317 # Cast potential consts
324318 typedef = defined_ctype
@@ -333,11 +327,6 @@ def make_const(expr: str) -> str:
333327 if memlet .data in dispatcher .frame .symbols_and_constants (sdfg ):
334328 ref = '*'
335329 typedef = make_const (typedef )
336-
337- elif defined_type == DefinedType .ArrayInterface :
338- base_ctype = conntype .base_type .ctype
339- typedef = f"{ base_ctype } *" if is_write else f"const { base_ctype } *"
340- is_scalar = False
341330 elif defined_type == DefinedType .Scalar :
342331 typedef = defined_ctype if is_scalar else (defined_ctype + '*' )
343332 if is_write is False and not isinstance (desc , data .Structure ):
@@ -481,45 +470,22 @@ def ndcopy_to_strided_copy(
481470 if copy_shape == src_copy_shape :
482471 srcdim = copydim
483472 else :
484- # TODO: Remove try-except in subsequent FPGA PR
485- try :
486- srcdim = next (i for i , c in enumerate (src_copy_shape ) if c != 1 )
487- except StopIteration :
488- # NOTE: This is the old stride computation code for FPGA
489- # compatibility
490- if len (copy_shape ) == len (src_shape ):
491- srcdim = copydim
492- else :
493- srcdim = next (i for i , c in enumerate (src_shape ) if c != 1 )
473+ srcdim = next (i for i , c in enumerate (src_copy_shape ) if c != 1 )
494474
495475 # In destination strides
496476 dst_copy_shape = dst_subset .size_exact ()
497477 if copy_shape == dst_copy_shape :
498478 dstdim = copydim
499479 else :
500- # TODO: Remove try-except in subsequent FPGA PR
501- try :
502- dstdim = next (i for i , c in enumerate (dst_copy_shape ) if c != 1 )
503- except StopIteration :
504- # NOTE: This is the old stride computation code for FPGA
505- # compatibility
506- if len (copy_shape ) == len (dst_shape ):
507- dstdim = copydim
508- else :
509- dstdim = next (i for i , c in enumerate (dst_shape ) if c != 1 )
480+ dstdim = next (i for i , c in enumerate (dst_copy_shape ) if c != 1 )
510481
511482 # Return new copy
512483 return [copy_shape [copydim ]], [src_strides [srcdim ]], [dst_strides [dstdim ]]
513484 else :
514485 return None
515486
516487
517- def cpp_offset_expr (d : data .Data ,
518- subset_in : subsets .Subset ,
519- offset = None ,
520- packed_veclen = 1 ,
521- indices = None ,
522- codegen : Optional ['TargetCodeGenerator' ] = None ) -> str :
488+ def cpp_offset_expr (d : data .Data , subset_in : subsets .Subset , offset = None , packed_veclen = 1 , indices = None ) -> str :
523489 """ Creates a C++ expression that can be added to a pointer in order
524490 to offset it to the beginning of the given subset and offset.
525491
@@ -533,10 +499,6 @@ def cpp_offset_expr(d: data.Data,
533499 :param codegen: Optional code generator to adjust subset.
534500 :return: A string in C++ syntax with the correct offset
535501 """
536- # Offset according to code generator
537- if codegen is not None :
538- subset_in = codegen .adjust_subset_for_codegen (d , subset_in )
539-
540502 # Offset according to parameters, then offset according to array
541503 if offset is not None :
542504 subset = subset_in .offset_new (offset , False )
@@ -570,7 +532,7 @@ def cpp_array_expr(sdfg,
570532 s = subset if relative_offset else subsets .Indices (offset )
571533 o = offset if relative_offset else None
572534 desc = (sdfg .arrays [memlet .data ] if referenced_array is None else referenced_array )
573- offset_cppstr = cpp_offset_expr (desc , s , o , packed_veclen , indices = indices , codegen = codegen )
535+ offset_cppstr = cpp_offset_expr (desc , s , o , packed_veclen , indices = indices )
574536
575537 # NOTE: Are there any cases where a mix of '.' and '->' is needed when traversing nested structs?
576538 # TODO: Study this when changing Structures to be (optionally?) non-pointers.
@@ -599,7 +561,7 @@ def make_ptr_vector_cast(dst_expr, dst_dtype, src_dtype, is_scalar, defined_type
599561 dst_expr = '*(%s *)(&%s)' % (src_dtype .ctype , dst_expr )
600562 elif src_dtype .base_type != dst_dtype :
601563 dst_expr = '(%s)(&%s)' % (src_dtype .ctype , dst_expr )
602- elif defined_type in [ DefinedType .Pointer , DefinedType . ArrayInterface ] :
564+ elif defined_type == DefinedType .Pointer :
603565 dst_expr = '&' + dst_expr
604566 elif not is_scalar :
605567 dst_expr = '&' + dst_expr
@@ -613,9 +575,7 @@ def cpp_ptr_expr(sdfg,
613575 relative_offset = True ,
614576 use_other_subset = False ,
615577 indices = None ,
616- is_write = None ,
617- codegen : 'TargetCodeGenerator' = None ,
618- decouple_array_interface = False ):
578+ codegen : 'TargetCodeGenerator' = None ):
619579 """ Converts a memlet to a C++ pointer expression. """
620580 subset = memlet .subset if not use_other_subset else memlet .other_subset
621581 s = subset if relative_offset else subsets .Indices (offset )
@@ -624,7 +584,7 @@ def cpp_ptr_expr(sdfg,
624584 if isinstance (indices , str ):
625585 offset_cppstr = indices
626586 else :
627- offset_cppstr = cpp_offset_expr (desc , s , o , indices = indices , codegen = codegen )
587+ offset_cppstr = cpp_offset_expr (desc , s , o , indices = indices )
628588 dname = codegen .ptr (memlet .data , desc , sdfg , memlet .subset )
629589
630590 if defined_type == DefinedType .Scalar :
@@ -1176,7 +1136,7 @@ def visit_Assign(self, node):
11761136 return node
11771137 elif isinstance (desc , data .Stream ):
11781138 if desc .is_stream_array ():
1179- index = cpp_offset_expr (desc , memlet .subset , codegen = self . codegen )
1139+ index = cpp_offset_expr (desc , memlet .subset )
11801140 target = f"{ ptrname } [{ index } ]"
11811141 else :
11821142 target = ptrname
@@ -1191,7 +1151,7 @@ def visit_Assign(self, node):
11911151 ptrname ,
11921152 cppunparse .cppunparse (value , expr_semicolon = False ),
11931153 ))
1194- elif ( var_type != DefinedType . ArrayInterface or isinstance (desc , data .View ) ):
1154+ elif isinstance (desc , data .View ):
11951155 newnode = ast .Name (id = "%s = %s;" % (
11961156 cpp_array_expr (self .sdfg , memlet , codegen = self .codegen ),
11971157 cppunparse .cppunparse (value , expr_semicolon = False ),
0 commit comments