diff options
| author | Kevin Laeufer | 2021-08-02 13:46:29 -0700 |
|---|---|---|
| committer | GitHub | 2021-08-02 20:46:29 +0000 |
| commit | e04f1e7f303920ac1d1f865450d0e280aafb58b3 (patch) | |
| tree | 73f26cd236ac8069d9c4877a3c42457d65d477fe /src/test/scala/firrtlTests/LoFirrtlOptimizedEmitterTests.scala | |
| parent | ff1cd28202fb423956a6803a889c3632487d8872 (diff) | |
add emitter for optimized low firrtl (#2304)
* rearrange passes to enable optimized firrtl emission
* Support ConstProp on padded arguments to comparisons with literals
* Move shr legalization logic into ConstProp
Continue calling ConstProp of shr in Legalize.
Co-authored-by: Jack Koenig <koenig@sifive.com>
Co-authored-by: Jack Koenig <koenig@sifive.com>
Diffstat (limited to 'src/test/scala/firrtlTests/LoFirrtlOptimizedEmitterTests.scala')
| -rw-r--r-- | src/test/scala/firrtlTests/LoFirrtlOptimizedEmitterTests.scala | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/test/scala/firrtlTests/LoFirrtlOptimizedEmitterTests.scala b/src/test/scala/firrtlTests/LoFirrtlOptimizedEmitterTests.scala new file mode 100644 index 00000000..6f1c56c5 --- /dev/null +++ b/src/test/scala/firrtlTests/LoFirrtlOptimizedEmitterTests.scala @@ -0,0 +1,49 @@ +// SPDX-License-Identifier: Apache-2.0 + +package firrtlTests + +import firrtl._ +import firrtl.stage._ +import firrtl.util.BackendCompilationUtilities +import org.scalatest.flatspec.AnyFlatSpec + +class LoFirrtlOptimizedEmitterTests extends AnyFlatSpec { + behavior.of("LoFirrtlOptimizedEmitter") + + it should "generate valid firrtl for AddNot" in { compileAndParse("AddNot") } + it should "generate valid firrtl for FPU" in { compileAndParse("FPU") } + it should "generate valid firrtl for HwachaSequencer" in { compileAndParse("HwachaSequencer") } + it should "generate valid firrtl for ICache" in { compileAndParse("ICache") } + it should "generate valid firrtl for Ops" in { compileAndParse("Ops") } + it should "generate valid firrtl for Rob" in { compileAndParse("Rob") } + it should "generate valid firrtl for RocketCore" in { compileAndParse("RocketCore") } + + private def compileAndParse(name: String): Unit = { + val testDir = os.RelPath( + BackendCompilationUtilities.createTestDirectory( + "LoFirrtlOptimizedEmitter_should_generate_valid_firrtl_for" + name + ) + ) + val inputFile = testDir / s"$name.fir" + val outputFile = testDir / s"$name.opt.lo.fir" + + BackendCompilationUtilities.copyResourceToFile(s"/regress/${name}.fir", (os.pwd / inputFile).toIO) + + val stage = new FirrtlStage + // run low-opt emitter + val args = Array( + "-ll", + "error", // surpress warnings to keep test output clean + "--target-dir", + testDir.toString, + "-i", + inputFile.toString, + "-E", + "low-opt" + ) + val res = stage.execute(args, Seq()) + + // load in result to check + stage.execute(Array("--target-dir", testDir.toString, "-i", outputFile.toString()), Seq()) + } +} |
