![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /proc/thread-self/root/usr/lib/llvm-10/include/polly/Support/ |
Upload File : |
//===------ ISLOperators.h --------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // Operator overloads for isl C++ objects. // //===----------------------------------------------------------------------===// #ifndef POLLY_ISLOPERATORS_H #define POLLY_ISLOPERATORS_H #include "isl/isl-noexceptions.h" namespace polly { /// Addition /// @{ inline isl::pw_aff operator+(isl::pw_aff Left, isl::pw_aff Right) { return Left.add(Right); } inline isl::pw_aff operator+(isl::val ValLeft, isl::pw_aff Right) { isl::pw_aff Left(Right.domain(), ValLeft); return Left.add(Right); } inline isl::pw_aff operator+(isl::pw_aff Left, isl::val ValRight) { isl::pw_aff Right(Left.domain(), ValRight); return Left.add(Right); } inline isl::pw_aff operator+(long IntLeft, isl::pw_aff Right) { isl::ctx Ctx = Right.get_ctx(); isl::val ValLeft(Ctx, IntLeft); isl::pw_aff Left(Right.domain(), ValLeft); return Left.add(Right); } inline isl::pw_aff operator+(isl::pw_aff Left, long IntRight) { isl::ctx Ctx = Left.get_ctx(); isl::val ValRight(Ctx, IntRight); isl::pw_aff Right(Left.domain(), ValRight); return Left.add(Right); } /// @} /// Multiplication /// @{ inline isl::pw_aff operator*(isl::pw_aff Left, isl::pw_aff Right) { return Left.mul(Right); } inline isl::pw_aff operator*(isl::val ValLeft, isl::pw_aff Right) { isl::pw_aff Left(Right.domain(), ValLeft); return Left.mul(Right); } inline isl::pw_aff operator*(isl::pw_aff Left, isl::val ValRight) { isl::pw_aff Right(Left.domain(), ValRight); return Left.mul(Right); } inline isl::pw_aff operator*(long IntLeft, isl::pw_aff Right) { isl::ctx Ctx = Right.get_ctx(); isl::val ValLeft(Ctx, IntLeft); isl::pw_aff Left(Right.domain(), ValLeft); return Left.mul(Right); } inline isl::pw_aff operator*(isl::pw_aff Left, long IntRight) { isl::ctx Ctx = Left.get_ctx(); isl::val ValRight(Ctx, IntRight); isl::pw_aff Right(Left.domain(), ValRight); return Left.mul(Right); } /// @} /// Subtraction /// @{ inline isl::pw_aff operator-(isl::pw_aff Left, isl::pw_aff Right) { return Left.sub(Right); } inline isl::pw_aff operator-(isl::val ValLeft, isl::pw_aff Right) { isl::pw_aff Left(Right.domain(), ValLeft); return Left.sub(Right); } inline isl::pw_aff operator-(isl::pw_aff Left, isl::val ValRight) { isl::pw_aff Right(Left.domain(), ValRight); return Left.sub(Right); } inline isl::pw_aff operator-(long IntLeft, isl::pw_aff Right) { isl::ctx Ctx = Right.get_ctx(); isl::val ValLeft(Ctx, IntLeft); isl::pw_aff Left(Right.domain(), ValLeft); return Left.sub(Right); } inline isl::pw_aff operator-(isl::pw_aff Left, long IntRight) { isl::ctx Ctx = Left.get_ctx(); isl::val ValRight(Ctx, IntRight); isl::pw_aff Right(Left.domain(), ValRight); return Left.sub(Right); } /// @} /// Division /// /// This division rounds towards zero. This follows the semantics of C/C++. /// /// @{ inline isl::pw_aff operator/(isl::pw_aff Left, isl::pw_aff Right) { return Left.tdiv_q(Right); } inline isl::pw_aff operator/(isl::val ValLeft, isl::pw_aff Right) { isl::pw_aff Left(Right.domain(), ValLeft); return Left.tdiv_q(Right); } inline isl::pw_aff operator/(isl::pw_aff Left, isl::val ValRight) { isl::pw_aff Right(Left.domain(), ValRight); return Left.tdiv_q(Right); } inline isl::pw_aff operator/(long IntLeft, isl::pw_aff Right) { isl::ctx Ctx = Right.get_ctx(); isl::val ValLeft(Ctx, IntLeft); isl::pw_aff Left(Right.domain(), ValLeft); return Left.tdiv_q(Right); } inline isl::pw_aff operator/(isl::pw_aff Left, long IntRight) { isl::ctx Ctx = Left.get_ctx(); isl::val ValRight(Ctx, IntRight); isl::pw_aff Right(Left.domain(), ValRight); return Left.tdiv_q(Right); } /// @} /// Remainder /// /// This is the remainder of a division which rounds towards zero. This follows /// the semantics of C/C++. /// /// @{ inline isl::pw_aff operator%(isl::pw_aff Left, isl::pw_aff Right) { return Left.tdiv_r(Right); } inline isl::pw_aff operator%(isl::val ValLeft, isl::pw_aff Right) { isl::pw_aff Left(Right.domain(), ValLeft); return Left.tdiv_r(Right); } inline isl::pw_aff operator%(isl::pw_aff Left, isl::val ValRight) { isl::pw_aff Right(Left.domain(), ValRight); return Left.tdiv_r(Right); } inline isl::pw_aff operator%(long IntLeft, isl::pw_aff Right) { isl::ctx Ctx = Right.get_ctx(); isl::val ValLeft(Ctx, IntLeft); isl::pw_aff Left(Right.domain(), ValLeft); return Left.tdiv_r(Right); } inline isl::pw_aff operator%(isl::pw_aff Left, long IntRight) { isl::ctx Ctx = Left.get_ctx(); isl::val ValRight(Ctx, IntRight); isl::pw_aff Right(Left.domain(), ValRight); return Left.tdiv_r(Right); } /// @} } // namespace polly #endif // POLLY_ISLOPERATORS_H