Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions xls/dev_tools/dev_passes/literalize_zero_bits_pass.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

#include "xls/dev_tools/dev_passes/literalize_zero_bits_pass.h"

#include <optional>
#include <string>
#include <vector>

#include "absl/status/statusor.h"
Expand All @@ -27,6 +29,13 @@
#include "xls/passes/pass_base.h"

namespace xls {

std::optional<std::string> LiteralizeZeroBits::GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const {
return std::string(short_name());
}

absl::StatusOr<bool> LiteralizeZeroBits::RunOnFunctionBaseInternal(
FunctionBase* f, const OptimizationPassOptions& options,
PassResults* results, OptimizationContext& context) const {
Expand Down
8 changes: 8 additions & 0 deletions xls/dev_tools/dev_passes/literalize_zero_bits_pass.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,27 @@
#ifndef XLS_DEV_TOOLS_DEV_PASSES_LITERALIZE_ZERO_BITS_PASS_H_
#define XLS_DEV_TOOLS_DEV_PASSES_LITERALIZE_ZERO_BITS_PASS_H_

#include <optional>
#include <string>
#include <string_view>

#include "absl/status/statusor.h"
#include "xls/ir/function_base.h"
#include "xls/passes/optimization_pass.h"
#include "xls/passes/pass_base.h"

namespace xls {

class LiteralizeZeroBits final : public OptimizationFunctionBasePass {
public:
static constexpr std::string_view kName = "literalize_zero_bits";
LiteralizeZeroBits()
: OptimizationFunctionBasePass(kName, "Literalize zero bits") {}
~LiteralizeZeroBits() override = default;

std::optional<std::string> GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const override;

protected:
absl::StatusOr<bool> RunOnFunctionBaseInternal(
Expand Down
12 changes: 12 additions & 0 deletions xls/dev_tools/dev_passes/proc_state_legalization_pass_shim.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@

#include "xls/dev_tools/dev_passes/proc_state_legalization_pass_shim.h"

#include <optional>
#include <string>
#include <utility>

#include "absl/status/statusor.h"
#include "xls/common/status/status_macros.h"
#include "xls/ir/package.h"
Expand All @@ -22,6 +26,14 @@
#include "xls/scheduling/scheduling_pass.h"

namespace xls {

std::optional<std::string>
ProcStateLegalizationPassShim::GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const {
return std::string(short_name());
}

absl::StatusOr<bool> ProcStateLegalizationPassShim::RunInternal(
Package* p, const OptimizationPassOptions& options,
PassResults* pass_results, OptimizationContext& context) const {
Expand Down
8 changes: 8 additions & 0 deletions xls/dev_tools/dev_passes/proc_state_legalization_pass_shim.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,16 @@
#ifndef XLS_DEV_TOOLS_DEV_PASSES_PROC_STATE_LEGALIZATION_PASS_SHIM_H_
#define XLS_DEV_TOOLS_DEV_PASSES_PROC_STATE_LEGALIZATION_PASS_SHIM_H_

#include <optional>
#include <string>
#include <string_view>

#include "absl/status/statusor.h"
#include "xls/ir/package.h"
#include "xls/passes/optimization_pass.h"
#include "xls/passes/pass_base.h"
#include "xls/scheduling/proc_state_legalization_pass.h"

namespace xls {

// Compatibility shim to use the scheduling pass 'ProcStateLegalizationPass' in
Expand All @@ -31,6 +34,11 @@ class ProcStateLegalizationPassShim : public OptimizationPass {
static constexpr std::string_view kName = "proc_state_legalization_shim";
ProcStateLegalizationPassShim()
: OptimizationPass(kName, "Proc State Legalization Pass") {}
~ProcStateLegalizationPassShim() override = default;

std::optional<std::string> GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const override;

protected:
absl::StatusOr<bool> RunInternal(Package* p,
Expand Down
8 changes: 8 additions & 0 deletions xls/dev_tools/dev_passes/remove_assert_and_cover_pass.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@

#include "xls/dev_tools/dev_passes/remove_assert_and_cover_pass.h"

#include <optional>
#include <string>
#include <vector>

#include "absl/status/statusor.h"
Expand All @@ -27,6 +29,12 @@

namespace xls {

std::optional<std::string> AssertAndCoverRemovalPass::GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const {
return std::string(short_name());
}

absl::StatusOr<bool> AssertAndCoverRemovalPass::RunOnFunctionBaseInternal(
FunctionBase* f, const OptimizationPassOptions& options,
PassResults* results, OptimizationContext& context) const {
Expand Down
8 changes: 8 additions & 0 deletions xls/dev_tools/dev_passes/remove_assert_and_cover_pass.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,28 @@
#ifndef XLS_DEV_TOOLS_DEV_PASSES_REMOVE_ASSERT_AND_COVER_PASS_H_
#define XLS_DEV_TOOLS_DEV_PASSES_REMOVE_ASSERT_AND_COVER_PASS_H_

#include <optional>
#include <string>
#include <string_view>

#include "absl/status/statusor.h"
#include "xls/ir/function_base.h"
#include "xls/ir/node.h"
#include "xls/passes/optimization_pass.h"
#include "xls/passes/pass_base.h"

namespace xls {

class AssertAndCoverRemovalPass : public OptimizationFunctionBasePass {
public:
static constexpr std::string_view kName = "assert_and_cover_removal";
AssertAndCoverRemovalPass()
: OptimizationFunctionBasePass(kName, "Assert and cover removal") {}
~AssertAndCoverRemovalPass() override = default;

std::optional<std::string> GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const override;

protected:
absl::StatusOr<bool> RunOnFunctionBaseInternal(
Expand Down
6 changes: 6 additions & 0 deletions xls/dslx/run_routines/run_routines.cc
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,12 @@ class QuickCheckProveAssertsNotFiredPass final
"add asserts to quickcheck goal") {}
~QuickCheckProveAssertsNotFiredPass() final = default;

std::optional<std::string> GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const override {
return std::string(short_name());
}

protected:
absl::StatusOr<bool> RunOnFunctionBaseInternal(
FunctionBase* fb, const OptimizationPassOptions& options,
Expand Down
9 changes: 9 additions & 0 deletions xls/passes/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -604,6 +604,7 @@ xls_pass(
"//xls/ir:value",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:span",
],
)
Expand Down Expand Up @@ -747,6 +748,7 @@ cc_library(
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:span",
],
Expand Down Expand Up @@ -1114,6 +1116,7 @@ xls_pass(
"@com_google_absl//absl/random",
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:span",
"@cppitertools",
],
Expand Down Expand Up @@ -1147,6 +1150,7 @@ xls_pass(
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:span",
],
)
Expand Down Expand Up @@ -1952,6 +1956,7 @@ cc_library(
"//xls/common/status:status_macros",
"//xls/ir",
"//xls/passes/tools:passes_profile",
"@com_google_absl//absl/container:flat_hash_set",
"@com_google_absl//absl/log",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status",
Expand Down Expand Up @@ -1991,8 +1996,11 @@ cc_test(
"@com_google_absl//absl/status",
"@com_google_absl//absl/status:status_matchers",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/time",
"@com_google_absl//absl/types:span",
"@com_google_protobuf//:duration_cc_proto",
"@googletest//:gtest",
],
)
Expand Down Expand Up @@ -2577,6 +2585,7 @@ xls_pass(
"@com_google_absl//absl/algorithm:container",
"@com_google_absl//absl/log:check",
"@com_google_absl//absl/status:statusor",
"@com_google_absl//absl/strings:str_format",
"@com_google_absl//absl/types:span",
"@cppitertools",
],
Expand Down
7 changes: 7 additions & 0 deletions xls/passes/arith_simplification_pass.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include <cstdlib>
#include <limits>
#include <optional>
#include <string>
#include <tuple>
#include <utility>
#include <vector>
Expand Down Expand Up @@ -2022,6 +2023,12 @@ absl::StatusOr<bool> MatchArithPatterns(int64_t opt_level, Node* n,

} // namespace

std::optional<std::string> ArithSimplificationPass::GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const {
return absl::StrFormat("%s(O%d)", short_name(), options.opt_level);
}

absl::StatusOr<bool> ArithSimplificationPass::RunOnFunctionBaseInternal(
FunctionBase* f, const OptimizationPassOptions& options,
PassResults* results, OptimizationContext& context) const {
Expand Down
8 changes: 8 additions & 0 deletions xls/passes/arith_simplification_pass.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
#ifndef XLS_PASSES_ARITH_SIMPLIFICATION_PASS_H_
#define XLS_PASSES_ARITH_SIMPLIFICATION_PASS_H_

#include <optional>
#include <string>
#include <string_view>

#include "absl/status/statusor.h"
Expand Down Expand Up @@ -169,6 +171,12 @@ class ArithSimplificationPass : public OptimizationFunctionBasePass {
: OptimizationFunctionBasePass(kName, "Arithmetic Simplifications") {}
~ArithSimplificationPass() override = default;

bool IsIdempotent() const override { return true; }

std::optional<std::string> GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const override;

protected:
absl::StatusOr<bool> RunOnFunctionBaseInternal(
FunctionBase* f, const OptimizationPassOptions& options,
Expand Down
6 changes: 6 additions & 0 deletions xls/passes/array_simplification_pass.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1699,6 +1699,12 @@ absl::StatusOr<SimplifyResult> SimplifySelect(Node* select,

} // namespace

std::optional<std::string> ArraySimplificationPass::GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const {
return absl::StrFormat("%s(O%d)", short_name(), options.opt_level);
}

absl::StatusOr<bool> ArraySimplificationPass::RunOnFunctionBaseInternal(
FunctionBase* func, const OptimizationPassOptions& options,
PassResults* results, OptimizationContext& context) const {
Expand Down
8 changes: 8 additions & 0 deletions xls/passes/array_simplification_pass.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
#ifndef XLS_PASSES_ARRAY_SIMPLIFICATION_PASS_H_
#define XLS_PASSES_ARRAY_SIMPLIFICATION_PASS_H_

#include <optional>
#include <string>
#include <string_view>

#include "absl/status/statusor.h"
Expand Down Expand Up @@ -176,6 +178,12 @@ class ArraySimplificationPass : public OptimizationFunctionBasePass {
explicit ArraySimplificationPass()
: OptimizationFunctionBasePass(kName, "Array Simplification") {}

bool IsIdempotent() const override { return true; }

std::optional<std::string> GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const override;

protected:
absl::StatusOr<bool> RunOnFunctionBaseInternal(
FunctionBase* f, const OptimizationPassOptions& options,
Expand Down
7 changes: 7 additions & 0 deletions xls/passes/array_untuple_pass.cc
Original file line number Diff line number Diff line change
Expand Up @@ -597,8 +597,15 @@ class UntupleVisitor : public DfsVisitorWithDefault {
absl::flat_hash_map<Node*, std::vector<Node*>> components_;
bool changed_ = false;
};

} // namespace

std::optional<std::string> ArrayUntuplePass::GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const {
return std::string(short_name());
}

absl::StatusOr<bool> ArrayUntuplePass::RunOnFunctionBaseInternal(
FunctionBase* f, const OptimizationPassOptions& options,
PassResults* results, OptimizationContext& context) const {
Expand Down
6 changes: 6 additions & 0 deletions xls/passes/array_untuple_pass.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
#ifndef XLS_PASSES_ARRAY_UNTUPLE_PASS_H_
#define XLS_PASSES_ARRAY_UNTUPLE_PASS_H_

#include <optional>
#include <string>
#include <string_view>

#include "absl/status/statusor.h"
Expand Down Expand Up @@ -180,6 +182,10 @@ class ArrayUntuplePass : public OptimizationFunctionBasePass {
: OptimizationFunctionBasePass(kName, "Array UnTuple") {}
~ArrayUntuplePass() override = default;

std::optional<std::string> GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const override;

protected:
absl::StatusOr<bool> RunOnFunctionBaseInternal(
FunctionBase* f, const OptimizationPassOptions& options,
Expand Down
8 changes: 8 additions & 0 deletions xls/passes/basic_simplification_pass.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@

#include <algorithm>
#include <functional>
#include <optional>
#include <string>
#include <vector>

#include "absl/container/flat_hash_map.h"
Expand Down Expand Up @@ -778,6 +780,12 @@ absl::StatusOr<bool> MatchPatterns(Node* n) {

} // namespace

std::optional<std::string> BasicSimplificationPass::GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const {
return std::string(short_name());
}

absl::StatusOr<bool> BasicSimplificationPass::RunOnFunctionBaseInternal(
FunctionBase* f, const OptimizationPassOptions& options,
PassResults* results, OptimizationContext& context) const {
Expand Down
8 changes: 8 additions & 0 deletions xls/passes/basic_simplification_pass.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
#ifndef XLS_PASSES_BASIC_SIMPLIFICATION_PASS_H_
#define XLS_PASSES_BASIC_SIMPLIFICATION_PASS_H_

#include <optional>
#include <string>
#include <string_view>

#include "absl/status/statusor.h"
Expand Down Expand Up @@ -127,6 +129,12 @@ class BasicSimplificationPass : public OptimizationFunctionBasePass {
: OptimizationFunctionBasePass(kName, "Basic Simplifications") {}
~BasicSimplificationPass() override = default;

bool IsIdempotent() const override { return true; }

std::optional<std::string> GetInvocationSignature(
const OptimizationPassOptions& options,
OptimizationContext& context) const override;

protected:
absl::StatusOr<bool> RunOnFunctionBaseInternal(
FunctionBase* f, const OptimizationPassOptions& options,
Expand Down
Loading
Loading