15#include <mlir/IR/BuiltinTypes.h>
17#include <llvm/ADT/ArrayRef.h>
18#include <llvm/ADT/DynamicAPInt.h>
19#include <llvm/ADT/StringRef.h>
20#include <llvm/Support/Error.h>
28template <
typename T,
typename U>
inline llvm::Expected<T>
checkedCast(U u) {
29 if (std::in_range<T>(u)) {
30 return static_cast<T
>(u);
32 return makeError(
"lossy integer conversion");
Information about the prime finite field used for the interval analysis.
llvm::Expected< T > checkedCast(U u)
std::mt19937_64 makeDefaultValueRng(const WitgenOptions &options)
Seed an RNG for random/default witness value materialization.
llvm::Expected< size_t > getStaticShapeElementCount(llvm::ArrayRef< int64_t > shape, llvm::StringRef context)
Return the static element count for one shape, rejecting dynamic sizes.
llvm::DynamicAPInt randomFieldElement(std::mt19937_64 &rng, const Field &field)
Draw a uniformly distributed field element in [0, prime).
bool randomBoolValue(std::mt19937_64 &rng)
Draw a uniformly distributed boolean value.
llvm::Expected< size_t > checkedDynamicAPIntToSize(const llvm::DynamicAPInt &value, llvm::StringRef context)
Convert a DynamicAPInt into size_t after validating its range.
llvm::Expected< size_t > getStaticElementCount(ShapedType type, llvm::StringRef context)
llvm::Expected< size_t > checkedShapeDimToSize(int64_t dim, llvm::StringRef context)
Convert one static dimension to size_t, rejecting dynamic or invalid sizes.
int64_t randomIndexValue(std::mt19937_64 &rng)
Draw a uniformly distributed signed index value.
llvm::Error makeError(const llvm::Twine &msg)
Build a string-backed error for user-facing witgen failures.