2024-09-25 15:00:55 +02:00
|
|
|
#pragma once
|
|
|
|
|
#include "eval.hpp"
|
|
|
|
|
#include <map>
|
|
|
|
|
|
|
|
|
|
namespace shader::eval {
|
|
|
|
|
class Evaluator {
|
|
|
|
|
std::map<ir::Value, Value> values;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
virtual ~Evaluator() = default;
|
|
|
|
|
|
|
|
|
|
void invalidate(ir::Value node) { values.erase(node); }
|
2024-09-29 02:22:39 +02:00
|
|
|
void invalidate() { values.clear(); }
|
2024-09-25 15:00:55 +02:00
|
|
|
void setValue(ir::Value node, Value value) { values[node] = value; }
|
|
|
|
|
|
|
|
|
|
Value eval(const ir::Operand &op, ir::Value type = nullptr);
|
|
|
|
|
virtual Value eval(ir::Value op);
|
|
|
|
|
virtual Value eval(ir::InstructionId instId,
|
|
|
|
|
std::span<const ir::Operand> operands);
|
|
|
|
|
};
|
|
|
|
|
} // namespace shader::eval
|