Convert riscv scf for to frep
convert_riscv_scf_for_to_frep
¶
ScfForLowering
¶
Bases: RewritePattern
Source code in xdsl/transforms/convert_riscv_scf_for_to_frep.py
match_and_rewrite(op: riscv_scf.ForOp, rewriter: PatternRewriter) -> None
¶
Source code in xdsl/transforms/convert_riscv_scf_for_to_frep.py
ScfYieldLowering
¶
Bases: RewritePattern
Source code in xdsl/transforms/convert_riscv_scf_for_to_frep.py
match_and_rewrite(op: riscv_scf.YieldOp, rewriter: PatternRewriter) -> None
¶
Source code in xdsl/transforms/convert_riscv_scf_for_to_frep.py
ConvertRiscvScfForToFrepPass
dataclass
¶
Bases: ModulePass
Converts all riscv_scf.for loops to riscv_snitch.frep_outer loops, if the loops pass the riscv_snitch.frep_outer verification criteria:
- The induction variable is not used
- Step is 1
- All operations in the loop all operate on float registers
- All operations are pure or one of a) riscv_snitch.read b) riscv_snitch.write c) builtin.unrealized_conversion_cast