Go to file
Silviu Baranga 795c629ec9 [SCEV] Improve the run-time checking of the NoWrap predicate
Summary:
This implements a new method of run-time checking the NoWrap
SCEV predicates, which should be easier to optimize and nicer
for targets that don't correctly handle multiplication/addition
of large integer types (like i128).

If the AddRec is {a,+,b} and the backedge taken count is c,
the idea is to check that |b| * c doesn't have unsigned overflow,
and depending on the sign of b, that:

   a + |b| * c >= a (b >= 0) or
   a - |b| * c <= a (b <= 0)

where the comparisons above are signed or unsigned, depending on
the flag that we're checking.

The advantage of doing this is that we avoid extending to a larger
type and we avoid the multiplication of large types (multiplying
i128 can be expensive).

Reviewers: sanjoy

Subscribers: llvm-commits, mzolotukhin

Differential Revision: http://reviews.llvm.org/D19266

llvm-svn: 267389
2016-04-25 09:27:16 +00:00
clang [Clang][AVX512][BuiltIn] Adding support to intrinsics of VPERMD and VPERMW instruction set 2016-04-25 05:32:35 +00:00
clang-tools-extra clang-tidy/cppcoreguidelines/ProTypeMemberInitCheck.cpp: Use raw_string_ostream::str() to flush the buffer explicitly. 2016-04-23 14:54:28 +00:00
compiler-rt [esan] Fix uninitialized warning from interception context 2016-04-25 03:56:20 +00:00
debuginfo-tests
libclc prepare-builtins: Remove call to getGlobalContext() 2016-04-15 14:18:58 +00:00
libcxx Rename a few tests that had typos in their names. No functional change. Thanks to STL for the catch 2016-04-23 14:31:00 +00:00
libcxxabi Enable testing for static libc++abi 2016-04-19 12:47:38 +00:00
libunwind unwind: remove unnecessary header 2016-04-24 21:01:04 +00:00
lld [ELF] - Implemented comparsion operators for linkerscript. 2016-04-25 08:14:41 +00:00
lldb Add a --element-count option to the expression command 2016-04-25 00:52:47 +00:00
llgo [llgo] llgoi: separate evaluation from printing 2016-04-25 01:18:20 +00:00
llvm [SCEV] Improve the run-time checking of the NoWrap predicate 2016-04-25 09:27:16 +00:00
openmp [ITTNOTIFY] Remove serialized parallel regions from frame notification 2016-04-19 16:55:17 +00:00
polly Remove unused iterators [NFC] 2016-04-24 12:31:02 +00:00