blob: 4454598c20497275cdb1352c00f618ea26a11788 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#if TVM_MLIR_VERSION >= 150
#include <gtest/gtest.h>
#include <tvm/arith/analyzer.h>
#include <tvm/runtime/logging.h>
#include <tvm/te/operation.h>
#include "../src/arith/presburger_set.h"
TEST(PresburgerSet, eval) {
auto x = tvm::tir::Var("x");
auto y = tvm::tir::Var("y");
auto sub_constraint0 = (x + y < 20) && (x - y <= 0);
auto sub_constraint1 = x >= 0 && x < 20 && y >= 0 && y < 20;
auto constraint = sub_constraint0 && sub_constraint1;
auto set = tvm::arith::PresburgerSet(constraint);
auto target = x + 2 * y;
auto result = EvalSet(target, set);
ASSERT_TRUE(tvm::tir::is_zero(result.min()));
ASSERT_TRUE(tvm::tir::is_const_int(result.max(), 38));
}
#endif // TVM_MLIR_VERSION