From: Francis Russell Date: Sat, 7 Apr 2012 09:34:05 +0000 (+0100) Subject: Move more PPD-related expressions into new symbols. X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=23d61ef0c6c7a5c1d3973530e651dce67c1b6b85;p=francis%2Fofc.git Move more PPD-related expressions into new symbols. --- diff --git a/src/ofc/codegen/ProducerStatement.scala b/src/ofc/codegen/ProducerStatement.scala index c734264..23ba91f 100644 --- a/src/ofc/codegen/ProducerStatement.scala +++ b/src/ofc/codegen/ProducerStatement.scala @@ -111,7 +111,8 @@ class ProducerStatement extends Statement { } } } - + + scope += statement block } } diff --git a/src/ofc/generators/onetep/PPDFunctionSet.scala b/src/ofc/generators/onetep/PPDFunctionSet.scala index 9d21ce7..2a6239a 100644 --- a/src/ofc/generators/onetep/PPDFunctionSet.scala +++ b/src/ofc/generators/onetep/PPDFunctionSet.scala @@ -17,10 +17,10 @@ class PPDFunctionSet(val basisName: String, dataName: String) extends FunctionSe val ppdIndex = producer.addIteration("ppd_index", 1, numPPDs) val ppdGlobalCount = (~(basis % FieldSymbol[PointerType[ArrayType[IntType]]]("ppd_list"))).readAt(ppdIndex, 1) - 1 - // We need to calculate the integer co-ordinates of the PPD (0-based) - val a3pos = ppdGlobalCount / (cellWidthInPPDs(0)*cellWidthInPPDs(1)) - val a2pos = (ppdGlobalCount % (cellWidthInPPDs(0)*cellWidthInPPDs(1)))/cellWidthInPPDs(0) - val a1pos = ppdGlobalCount % cellWidthInPPDs(0) + // The integer co-ordinates of the PPD (0-based) + val a3pos = producer.addExpression("ppd_pos1", ppdGlobalCount / (cellWidthInPPDs(0)*cellWidthInPPDs(1))) + val a2pos = producer.addExpression("ppd_pos2", (ppdGlobalCount % (cellWidthInPPDs(0)*cellWidthInPPDs(1)))/cellWidthInPPDs(0)) + val a1pos = producer.addExpression("ppd_pos3", ppdGlobalCount % cellWidthInPPDs(0)) val ppdPos = List(a1pos, a2pos, a3pos) val tightbox = (~(basis % FieldSymbol[PointerType[ArrayType[StructType]]]("tight_boxes"))).readAt(sphereIndex) @@ -29,11 +29,11 @@ class PPDFunctionSet(val basisName: String, dataName: String) extends FunctionSe val ppdStartOffsets = for(dim <- 1 to 3) yield tightbox % FieldSymbol[IntType]("start_pts"+dim) val ppdFinishOffsets = for(dim <- 1 to 3) yield tightbox % FieldSymbol[IntType]("finish_pts"+dim) - // The first and last PPDs in PPD co-ordinates (inside simulation cell) + // The first and last PPDs in PPD co-ordinates (0-based, inside simulation cell) val startPPDs = for(dim <- 0 to 2) yield - producer.addExpression("start_ppd"+(dim+1), (tightbox % FieldSymbol[IntType]("start_ppd"+(dim+1)) + cellWidthInPPDs(dim)) % cellWidthInPPDs(dim)) + producer.addExpression("start_ppd"+(dim+1), (tightbox % FieldSymbol[IntType]("start_ppd"+(dim+1)) + cellWidthInPPDs(dim)-1) % cellWidthInPPDs(dim)) val finishPPDs = for(dim <- 0 to 2) yield - producer.addExpression("finish_ppd"+(dim+1),(tightbox % FieldSymbol[IntType]("finish_ppd"+(dim+1)) + cellWidthInPPDs(dim)) % cellWidthInPPDs(dim)) + producer.addExpression("finish_ppd"+(dim+1),(tightbox % FieldSymbol[IntType]("finish_ppd"+(dim+1)) + cellWidthInPPDs(dim)-1) % cellWidthInPPDs(dim)) // Offsets for the current PPD being iterated over val loopStarts = for(dim <- 0 to 2) yield