| //===------ IslOperators.h --------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // Operator overloads for isl C++ objects. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "isl/isl-noexceptions.h" |
| namespace polly { |
| |
| inline isl::pw_aff operator+(isl::pw_aff A, isl::pw_aff B) { return A.add(B); } |
| |
| inline isl::pw_aff operator+(isl::val V, isl::pw_aff A) { |
| isl::pw_aff AV(A.domain(), V); |
| return A.add(AV); |
| } |
| |
| inline isl::pw_aff operator+(isl::pw_aff A, isl::val V) { return V + A; } |
| |
| inline isl::pw_aff operator+(int i, isl::pw_aff A) { |
| isl::ctx ctx = A.get_ctx(); |
| return A + isl::val(ctx, i); |
| } |
| |
| inline isl::pw_aff operator+(isl::pw_aff A, int i) { return i + A; } |
| |
| inline isl::pw_aff operator*(isl::pw_aff A, isl::pw_aff B) { return A.mul(B); } |
| |
| inline isl::pw_aff operator*(isl::val V, isl::pw_aff A) { |
| isl::pw_aff AV(A.domain(), V); |
| return A.add(AV); |
| } |
| |
| inline isl::pw_aff operator*(isl::pw_aff A, isl::val V) { return V * A; } |
| |
| inline isl::pw_aff operator*(int i, isl::pw_aff A) { |
| isl::ctx ctx = A.get_ctx(); |
| return A * isl::val(ctx, i); |
| } |
| |
| inline isl::pw_aff operator*(isl::pw_aff A, int i) { return i * A; } |
| |
| inline isl::pw_aff operator-(isl::pw_aff A, isl::pw_aff B) { return A.sub(B); } |
| |
| inline isl::pw_aff operator-(isl::val V, isl::pw_aff A) { |
| isl::pw_aff AV(A.domain(), V); |
| return AV - A; |
| } |
| |
| inline isl::pw_aff operator-(isl::pw_aff A, isl::val V) { |
| isl::pw_aff AV(A.domain(), V); |
| return A - AV; |
| } |
| |
| inline isl::pw_aff operator-(int i, isl::pw_aff A) { |
| isl::ctx ctx = A.get_ctx(); |
| return isl::val(ctx, i) - A; |
| } |
| |
| inline isl::pw_aff operator-(isl::pw_aff A, int i) { |
| isl::ctx ctx = A.get_ctx(); |
| return A - isl::val(ctx, i); |
| } |
| |
| inline isl::pw_aff operator/(isl::pw_aff A, isl::pw_aff B) { |
| return A.tdiv_q(B); |
| } |
| |
| inline isl::pw_aff operator/(isl::val V, isl::pw_aff A) { |
| isl::pw_aff AV(A.domain(), V); |
| return AV / A; |
| } |
| |
| inline isl::pw_aff operator/(isl::pw_aff A, isl::val V) { |
| isl::pw_aff AV(A.domain(), V); |
| return A / AV; |
| } |
| |
| inline isl::pw_aff operator/(int i, isl::pw_aff A) { |
| isl::ctx ctx = A.get_ctx(); |
| return isl::val(ctx, i) / A; |
| } |
| |
| inline isl::pw_aff operator/(isl::pw_aff A, int i) { |
| isl::ctx ctx = A.get_ctx(); |
| return A / isl::val(ctx, i); |
| } |
| |
| inline isl::pw_aff operator%(isl::pw_aff A, isl::pw_aff B) { |
| return A.tdiv_r(B); |
| } |
| |
| inline isl::pw_aff operator%(isl::val V, isl::pw_aff A) { |
| isl::pw_aff AV(A.domain(), V); |
| return AV % A; |
| } |
| |
| inline isl::pw_aff operator%(isl::pw_aff A, isl::val V) { |
| isl::pw_aff AV(A.domain(), V); |
| return A % AV; |
| } |
| |
| inline isl::pw_aff operator%(int i, isl::pw_aff A) { |
| isl::ctx ctx = A.get_ctx(); |
| return isl::val(ctx, i) % A; |
| } |
| |
| inline isl::pw_aff operator%(isl::pw_aff A, int i) { |
| isl::ctx ctx = A.get_ctx(); |
| return A % isl::val(ctx, i); |
| } |
| |
| } // namespace polly |