aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/firrtlTests/LoFirrtlOptimizedEmitterTests.scala
diff options
context:
space:
mode:
authorKevin Laeufer2021-08-02 13:46:29 -0700
committerGitHub2021-08-02 20:46:29 +0000
commite04f1e7f303920ac1d1f865450d0e280aafb58b3 (patch)
tree73f26cd236ac8069d9c4877a3c42457d65d477fe /src/test/scala/firrtlTests/LoFirrtlOptimizedEmitterTests.scala
parentff1cd28202fb423956a6803a889c3632487d8872 (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.scala49
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())
+ }
+}