Passes#

Applies to Linux

2023-06-14

3 min read time

pass#

struct pass#

An interface for applying a transformation to the instructions in a program

dead_code_elimination#

struct dead_code_elimination#

Remove instructions where the output is not used.

eliminate_common_subexpression#

struct eliminate_common_subexpression#

Remove identical instructions.

eliminate_concat#

struct eliminate_concat#

Remove concat operators by having each operator can write to different chunk of memory.

eliminate_contiguous#

struct eliminate_contiguous#

Remove contiguous instructions by checking if the operator can use non-standard shapes.

eliminate_identity#

struct eliminate_identity#

Remove identity instructions. Currently when used as the last pass, it will preserve the semantics of previous program state, therefore dead code elimination should not be used afterwards.

eliminate_pad#

struct eliminate_pad#

Remove pads if they can be written as an attribute to another op (im2col, convolution, pooling)

propagate_constant#

struct propagate_constant#

Replace instructions which take all literals with a literal of the computation.

rewrite_batchnorm#

struct rewrite_batchnorm#

Rewrite batchnorm to a multiply and add.

rewrite_rnn#

struct rewrite_rnn#

Rewrite rnn to gemm and add.

schedule#

struct schedule#

Schedule instructions for concurrent execution

simplify_algebra#

struct simplify_algebra#

Simplify many algebraic instructions to more efficient versions.

simplify_reshapes#

struct simplify_reshapes#

Eliminate redundant reshapes.