Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] View of /branches/vis15/src/compiler/FIXME.md
ViewVC logotype

View of /branches/vis15/src/compiler/FIXME.md

Parent Directory Parent Directory | Revision Log Revision Log


Revision 4206 - (download) (annotate)
Thu Jul 14 13:20:47 2016 UTC (3 years, 2 months ago) by jhr
File size: 7983 byte(s)
  update TODO and FIXME lists
# FIXME issues
Organized by source directory.  We use the following command to find the FIXMEs:

````
bbfind --gui --name-pattern "*.in" --name-pattern "*.sml" FIXME .
````

### `ast`

No issues.

### `basis`

* more reductions: min/max on integers, sum on integers and tensors. (`basis-vars.sml`)

#### `cfg-ir`

* add additional checking (`check-ir-fn.sml`)
  - redundant bindings in the presence of loops
  - check the types of `SEQ` elements
  - check `EINAPP` bodies
  - check types for `MASSIGN`

* handle `EINAPP` nodes in `toString` function (`expr-fn.sml`)

* filter out unused constant variables (`rewrite-fn.sml`)

* add command-line flag to control compactness of IR printing (`ssa-pp-fn.sml`) **[FIXED: JHR]**

* avoid redundancy of setting bindings for variables (`translate-fn.sml` and `census-fn.sml`)

#### `codegen`

* precedence checking for `mkApply`; handle types in `expToString` (`clang.sml`)

* generalize handling of the `bool` type for targets that are pre C99 (`codegen-env.sml`)

* `apiTypeToC` does not handle dynamic sequences (`gen-library-interface.sml`)

* `infoOf` does not handle fixed-size sequences (`output-util.sml`)

* Printing "const" types (`print-as-c.sml`)

#### `common`

* Determine kernel continuity from kernel definitions (`kernel.sml`)

#### `cxx-util`

* fix the function names for loading dynamic sequences (`cxx-names.sml`) **[FIXED: JHR]**

* use assignment to copy small tensor types (`gen-inputs-util.sml`)

* handle strings in `copy` function (`gen-inputs-util.sml`)

* Generate error-handling code that puts the error message in the error buffer and returns
  and error status (`gen-outputs-util.sml`)

* various issues when synthesizing types and operations (`gen-tys-and-ops.sml`)
  - tuple types are not supported
  - some dynamic sequence types are not supported (e.g., strands)
  - printing for tuples, dynamic sequences, and fixed-size sequences

* printing types needs to be overhauled to correctly handle C++ type syntax (`print-as-cxx.sml`)

* printing support for classes that include protected or private members (`print-as-cxx.sml`)

* many issues in translating Tree IR to C++ (`tree-to-cxx.sml`)
  - type translation for tuples
  - support for `EigenVals2x2` and `EigenVals3x3`
  - support for `Select` operation on tuples
  - dynamic array operations: `MkDynamic`, `Append`, `Prepend`, `Concat`, `Range`, and `Length`
    **[FIXED: JHR]**
  - liveness analysis to enable *in situ* dynamic sequence operations
  - support for `SphereQuery`
  - add `vload_aligned` and `vpack_aligned` operations
  - refactor common code out of `trAssign` and `trDecl` functions

* handle tuples in `trQType` and `trType` (`type-to-cxx.sml`)

#### `driver`

No issues.

#### `ein`
 * add documentation for various ID types (`ein.sml`) **[FIXED; CC]**

 * use the `BorderCtl.ctl` type instead of defining a new type (`ein.sml`)

 * fix the type of `Delta` (`ein.sml`) **[FIXED; CC]**

 * fix the definition of the `sumrage` type (`ein.sml`) **[FIXED; CC]**

#### `fields`

No issues.

#### `global-env`

No issues.

#### `high-ir`

No issues.

#### `high-opt`

  * handle `PowReal` operator **[FIXED; CC]**

  * code clean up (`eps-util.sml`)
    - documentation
    - avoid use of append to build lists
    - rewrite `matchEps` function **[FIXED; CC]**

#### `high-to-mid`

  * Switch to `maxItem` function once SML/NJ 110.80 is released (`clean-index.sml`)

  * The `cut` function is specialized to 3D (`float-ein.sml`)

  * Expand integer powers into multiplications (`high-to-mid.sml`)

  * Need documentation for the `mkLdVoxel` function (`probe-ein.sml`)

  * Need documentation for the `arrangeBody` function (`probe-ein.sml`) **[FIXED; CC]**

  * error in tshape(`/clean-index.sml`) **[FIXED; CC]**

#### `inputs`

No issues.

#### `low-ir`

No issues.

#### `low-opt`

No issues.

#### `low-to-tree`

  * many issues in translating Low IR to Tree IR (`low-to-tree.sml`)
    - output globals in `mkGlobalVar`
    - `RealToInt` tranlation when the argument has multiple pieces
    - reduction operators
    - defer copying tensor refs into tensors
    - handle `x = y` assignments

#### `mid-ir`

No issues.

#### `mid-opt`

No issues.

#### `mid-to-low`

  * Handle `PowReal`, `PowEmb` operators in `expand` (`ein-to-scalar.sml`) **[FIXED; CC]**

  * Handle `Exp`, `PowInt`,  operators in `expand` (`ein-to-scalar.sml`) **[FIXED; CC]**

  * Generalize `imgToArgs` to handle arbitrary dimension images (`field-to-low.sml`)

  * Support IR operators `Clamp`, `MapClamp`, and `Lerp` on higher-order tensor types
    (`mid-to-low.sml`).

  * Generate vector operations instead of scalar operations in more places (`ein-to-low.sml`,
    `ein-to-scalar.sml`, and `ein-to-vector.sml`)
    

#### `mlton`

No issues.

#### `nrrd`

No issues.

#### `options`

No issues.

#### `parse-tree`

No issues.

#### `parser`

No issues.

#### `simple`

  * Invariant checking for Simple AST representation (`check-simple.sml`)

  * Pretty print reduction expressions (`simple-pp.sml`)

  * Distinguish between "Continue" in loops and "Continue" in strand methods
    (`simple.sml`)

  * Support fusion of reductions; this change will require IR changes (`simple.sml`)

#### `simplify`

  * The inliner cannot correctly handle functions that have deep returns on some code
    paths (`inliner.sml`) **[FIXED; JHR]**

  * Handle `S_MapReduce` and `AST.E_ParallelMap` expressions (`simplify.sml`,
    `simplify-fields.sml`, and `simplify-vars.sml`).

  * Support for `mean` and `variance` reductions (`util.sml`)

#### `target-cpu`

  * generate a default stabilize method for the dual-state case (`gen-strand.sml`)

  * handle create iterations over sequences (`gen-world.sml`)

  * what should we do about residual constants during code generation? (`gen.sml`)

  * code generation for libraries: input functions header file (`gen.sml`)

#### `translate`

  * Translation of `fn_normalize_t` is incorrect for scalars (`translate-basis.sml`) **[FIXED; JHR]**

  * Implement zero-tensor in Ein (`translate-basis.sml`)

  * Use Ein operators to implement tensor/field slicing and indexing (`translate.sml`)  **[FIXED; CC]**

  * Check possible issues with global initialization and conditionals (`translate.sml`)

  * Support for `S_MapReduce` (`translate.sml`)

  * Check possible issues with strand methods that do reach the exit node (`translate.sml`)

  * `division` and `cross product` between a tensor and field **[FIXED; CC]**

#### `tree-ir`

  * Parameterize the `check` function by the target's vector layout rules and
    check for valid layouts (`check-tree.sml`)

  * Checking for `S_MAssign` statements (`check-tree.sml`)

  * Checking for `S_LoadNrrd` statements (`check-tree.sml`)

  * Printing for inputs (`tree-pp.sml`) **[FIXED; JHR]**

#### `tree-opt`

No issues.

#### `typechecker`

  * Evaluation of constant tensor slice (`check-const.sml`)

  * Many issues in typechecking expressions (`check-expr.sml`)
    - improved overload resolution
    - resulting differentiation for inner, outer, and colon products
    - check index against shape of tensor
    - check for sequences of non-concrete types (*e.g.*, sequences of fields)
    - non-literal constant string expressions

  * Handle command-line definitions of constants (`check-globals.sml`)

  * Allow strands without outputs, once we have global outputs (`check-strand.sml`)

  * Check for situation where `initially` method has call to `stabilize` (`check-var-uses.sml`)

  * Check for globals and state variables that are not initialized in
    their respective initialization sections (`check-var-uses.sml`)

  * Unification of differentiation bounds (`unify.sml`)

# Questions

#### `ein`

  * QUESTION: should the int be IntInf.int?  (`ein.sml`)
    - Not sure CC

  * QUESTION: why is this index_kind list and not index_id list?(`ein.sml`)
    - They are both ints, but one is a variable index
      and the other binds the ranges of the variable indices.

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0