Kostya Serebryany [Mon, 11 May 2015 21:16:27 +0000 (21:16 +0000)]
[lib/Fuzzer] rename FuzzerDFSan.cpp to FuzzerTraceState.cpp; update comments. NFC expected
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237050
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 11 May 2015 21:07:09 +0000 (21:07 +0000)]
propagate IR-level fast-math-flags to DAG nodes; 2nd try; NFC
This is a less ambitious version of:
http://reviews.llvm.org/rL236546
because that was reverted in:
http://reviews.llvm.org/rL236600
because it caused memory corruption that wasn't related to FMF
but was actually due to making nodes with 2 operands derive from a
plain SDNode rather than a BinarySDNode.
This patch adds the minimum plumbing necessary to use IR-level
fast-math-flags (FMF) in the backend without actually using
them for anything yet. This is a follow-on to:
http://reviews.llvm.org/rL235997
...which split the existing nsw / nuw / exact flags and FMF
into their own struct.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237046
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Mon, 11 May 2015 21:02:34 +0000 (21:02 +0000)]
[LoopIdiomRecognize] Transform backedge-taken count check into an assertion.
runOnCountable() allowed the caller to call on a loop without a
predictable backedge-taken count. Change the code so that only loops
with computable backdge-count can call this function, in order to catch
abuses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237044
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Mon, 11 May 2015 20:51:19 +0000 (20:51 +0000)]
[lib/Fuzzer] add a trace-based mutatation logic. Same idea as with DFSan-based mutator, but instead of relying on taint tracking, try to find the data directly in the input. More (logic and comments) to go.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237043
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Mon, 11 May 2015 20:45:11 +0000 (20:45 +0000)]
Fixing build warnings
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237042
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Mon, 11 May 2015 19:41:19 +0000 (19:41 +0000)]
[WinEH] Update exception numbering to give handlers their own base state.
Differential Revision: http://reviews.llvm.org/D9512
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237014
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 11 May 2015 19:34:10 +0000 (19:34 +0000)]
group getNode() variants by purpose and add comments; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237013
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 11 May 2015 18:49:34 +0000 (18:49 +0000)]
[RewriteStatepointsForGC] Fix a bug on creating gc_relocate for pointer to vector of pointers
Summary:
In RewriteStatepointsForGC pass, we create a gc_relocate intrinsic for
each relocated pointer, and the gc_relocate has the same type with the
pointer. During the creation of gc_relocate intrinsic, llvm requires to
mangle its type. However, llvm does not support mangling of all possible
types. RewriteStatepointsForGC will hit an assertion failure when it
tries to create a gc_relocate for pointer to vector of pointers because
mangling for vector of pointers is not supported.
This patch changes the way RewriteStatepointsForGC pass creates
gc_relocate. For each relocated pointer, we erase the type of pointers
and create an unified gc_relocate of type i8 addrspace(1)*. Then a
bitcast is inserted to convert the gc_relocate to the correct type. In
this way, gc_relocate does not need to deal with different types of
pointers and the unsupported type mangling is no longer a problem. This
change would also ease further merge when LLVM erases types of pointers
and introduces an unified pointer type.
Some minor changes are also introduced to gc_relocate related part in
InstCombineCalls, CodeGenPrepare, and Verifier accordingly.
Patch by Chen Li!
Reviewers: reames, AndyAyers, sanjoy
Reviewed By: sanjoy
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9592
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237009
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Mon, 11 May 2015 18:47:47 +0000 (18:47 +0000)]
LiveRangeCalc: Improve error messages on malformed IR
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237008
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 11 May 2015 17:40:54 +0000 (17:40 +0000)]
CodeGen: Make MachineInstr::untieRegOperand() a public function
This makes it easier to update in place instructions with tied operands.
Differential Revision: http://reviews.llvm.org/D9231
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237005
91177308-0d34-0410-b5e6-
96231b3b80d8
Pirama Arumuga Nainar [Mon, 11 May 2015 17:14:39 +0000 (17:14 +0000)]
[X86] Updates to X86 backend for f16 promotion
Summary:
r235215 adds support for f16 to be considered as a load/store type and
promote f16 operations to f32.
This patch has miscellaneous fixes for the X86 backend so all f16
operations are handled:
1. Set loadextaction for f16 vectors to expand.
2. Handle FP_EXTEND in a switch statement when handling v2f32
3. Do not fold (FP_TO_SINT (load f16)) into FP_TO_INT*_IN_MEM or
(store (SINT_TO_FP )) to a FILD.
Tests included.
Reviewers: ab, srhines, delena
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9092
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237004
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Mon, 11 May 2015 14:42:20 +0000 (14:42 +0000)]
Rip min/max pattern matching out of InstCombine and into
ValueTracking.
This matching functionality is useful in more than just InstCombine, so
make it available in ValueTracking.
NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236998
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 11 May 2015 13:11:38 +0000 (13:11 +0000)]
Amends r236990, because I failed at hitting "save" before commit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236991
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 11 May 2015 13:10:17 +0000 (13:10 +0000)]
Replacing a range-based for loop with an old-style for loop. This code was previously causing a warning with MSVC about a compiler-generated local variable because TargetRegistry::begin() and end() are static member functions. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236990
91177308-0d34-0410-b5e6-
96231b3b80d8
Aaron Ballman [Mon, 11 May 2015 12:45:53 +0000 (12:45 +0000)]
Silencing an MSVC warning: '<<' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?); NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236987
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Mon, 11 May 2015 09:10:14 +0000 (09:10 +0000)]
[Testsuite] Renumber metadata in ScopedNoAliasAA test to match CHECK lines
Summary:
Now it's much easier to follow what's happening in this test.
Also removed some unused metadata entries.
Reviewers: hfinkel
Reviewed By: hfinkel
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9601
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236981
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Mon, 11 May 2015 09:03:14 +0000 (09:03 +0000)]
AVX-512: Changed CC parameter in "cmp" intrinsic
from i8 to i32 according to the Intel Spec
by Igor Breger (igor.breger@intel.com)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236979
91177308-0d34-0410-b5e6-
96231b3b80d8
Adam Nemet [Mon, 11 May 2015 08:30:28 +0000 (08:30 +0000)]
[Docs] Fix scoped noalias example
Summary:
As far as I understand the entire point of this example is to show that
if noalias is not a superset/equal to the alias.scope list on a scope
domain then load could reference locations that the store is not known
to not-alias i.e may alias.
Reviewers: hfinkel
Reviewed By: hfinkel
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9598
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236977
91177308-0d34-0410-b5e6-
96231b3b80d8
Hal Finkel [Mon, 11 May 2015 06:37:03 +0000 (06:37 +0000)]
[InstCombine/PowerPC] Fix single-precision QPX load/store replacement
The QPX single-precision load/store intrinsics have implied
truncation/extension from/to the declared value type of <4 x double> to the
memory type of <4 x float>. When we can prove the alignment of the pointer
argument, and thus replace the intrinsic with a regular load or store, we need
to load or store the correct data type (<4 x float>) instead of (<4 x double>).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236973
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Mon, 11 May 2015 06:23:41 +0000 (06:23 +0000)]
Fixed compilation warning, NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236972
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Mon, 11 May 2015 06:05:05 +0000 (06:05 +0000)]
AVX-512: Added SKX instructions and intrinsics:
{add/sub/mul/div/} x {ps/pd} x {128/256} 2. max/min with sae
By Asaf Badouh (asaf.badouh@intel.com)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236971
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Mon, 11 May 2015 05:33:27 +0000 (05:33 +0000)]
Make buildbots happy
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236970
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Mon, 11 May 2015 05:04:27 +0000 (05:04 +0000)]
[InstCombine] Canonicalize single element array store
Use the element type instead of the aggregate type.
Differential Revision: http://reviews.llvm.org/D9591
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236969
91177308-0d34-0410-b5e6-
96231b3b80d8
David Majnemer [Mon, 11 May 2015 05:04:22 +0000 (05:04 +0000)]
[InstCombine] Canonicalize single element array load
Use the element type instead of the aggregate type.
Differential Revision: http://reviews.llvm.org/D9596
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236968
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Sun, 10 May 2015 14:23:52 +0000 (14:23 +0000)]
AVX-512: fixed UINT_TO_FP operation for 512-bit types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236955
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 10 May 2015 14:14:51 +0000 (14:14 +0000)]
[SelectionDAG] Fixed constant folding issue when legalised types are smaller then the folded type.
Found when testing with llvm-stress on i686 targets.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236954
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Sun, 10 May 2015 13:45:05 +0000 (13:45 +0000)]
SanitizerCoverage: Use `createSanitizerCtor` to create ctor and call init
Second attempt; instead of using a named local variable, passing
arguments directly to `createSanitizerCtorAndInitFunctions` worked
on Windows.
Reviewers: kcc, samsonov
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8780
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236951
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Sun, 10 May 2015 10:33:32 +0000 (10:33 +0000)]
AVX-512: fixed a bug in i1 vectors lowering
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236947
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Sun, 10 May 2015 00:53:41 +0000 (00:53 +0000)]
SystemZ: silence a GCC warning
warning: enumeral and non-enumeral type in conditional expression
Cast the 0 to the appropriate type. NFC. Identified by GCC 4.9.2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236942
91177308-0d34-0410-b5e6-
96231b3b80d8
Tobias Grosser [Sat, 9 May 2015 09:08:56 +0000 (09:08 +0000)]
Add polly support to sort_includes.py
Changes:
- Add "isl/" as a system library prefix. Even though isl is regularly
imported into polly, it is still used like an external library.
- Add "json/" as a system library prefix. Polly uses json-cpp as external
library.
- Distinguish between llvm and subproject libraries. Always sort subprojects
before LLVM. This was already the case with clang, as 'clang' comes before
'llvm', but we also want 'polly' to be sorted before 'llvm'.
The sorting of headers that are not part of Polly or isl remains unchanged.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236929
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 9 May 2015 05:59:00 +0000 (05:59 +0000)]
llvm/test/CodeGen/AArch64/tailcall_misched_graph.ll: s/REQUIRE/REQUIRES/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236928
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Sat, 9 May 2015 03:13:37 +0000 (03:13 +0000)]
Fix MergeConsecutiveStore for non-byte-sized memory accesses.
The bug showed up as a compile-time assertion failure:
Assertion `NumBits >= MIN_INT_BITS && "bitwidth too small"' failed
when building msan tests on x86-64.
Prior to r236850, this bug was masked due to a bogus alignment check,
which also accidentally rejected non-byte-sized accesses. Afterwards,
an invalid ElementSizeBytes == 0 got further into the function, and
triggered the assertion failure.
It would probably be a good idea to allow it to handle merging stores
of unusual widths as well, but for now, to un-break it, I'm just
making the minimal fix.
Differential Revision: http://reviews.llvm.org/D9626
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236927
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Sat, 9 May 2015 00:56:07 +0000 (00:56 +0000)]
MachineCSE: Add a target query for the LookAheadLimit heurisitic
This is used to determine whether or not to CSE physical register
defs.
Differential Revision: http://reviews.llvm.org/D9472
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236923
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Sat, 9 May 2015 00:51:03 +0000 (00:51 +0000)]
[Fast-ISel] Don't mark the first use of a remat constant as killed.
When emitting something like 'add x, 1000' if we remat the 1000 then we should be able to
mark the vreg containing 1000 as killed. Given that we go bottom up in fast-isel, a later
use of 1000 will be higher up in the BB and won't kill it, or be impacted by the lower kill.
However, rematerialised constant expressions aren't generated bottom up. The local value save area
grows downwards. This means that if you remat 2 constant expressions which both use 1000 then the
first will kill it, then the second, which is *lower* in the BB will read a killed register.
This is the case in the attached test where the 2 GEPs both need to generate 'add x, 6680' for the constant offset.
Note that this commit only makes kill flag generation conservative. There's nothing else obviously wrong with
the local value save area growing downwards, and in fact it needs to for handling arbitrarily complex constant expressions.
However, it would be nice if there was a solution which would let us generate more accurate kill flags, or just kill flags completely.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236922
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Sat, 9 May 2015 00:10:25 +0000 (00:10 +0000)]
Fix compile error
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236921
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Sat, 9 May 2015 00:02:06 +0000 (00:02 +0000)]
Revert r236912.
Author: dblaikie
Date: Fri May 8 17:47:50 2015
New Revision: 236912
URL: http://llvm.org/viewvc/llvm-project?rev=236912&view=rev
Log:
[opaque pointer type] Cleanup a few references to pointee types using nearby non-pointee types of the same value
& cleanup a convoluted return expression while I'm here
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236919
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Fri, 8 May 2015 23:58:28 +0000 (23:58 +0000)]
[Target/ARM] Remove unused 'private' from class.
Differential Revision: http://reviews.llvm.org/D9611
Reviewed by: rengolin
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236918
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Fri, 8 May 2015 23:52:00 +0000 (23:52 +0000)]
ScheduleDAGInstrs: In functions with tail calls PseudoSourceValues are not non-aliasing distinct objects
The code that builds the dependence graph assumes that two PseudoSourceValues
don't alias. In a tail calling function two FixedStackObjects might refer to the
same location. Worse 'immutable' fixed stack objects like function arguments are
not immutable and will be clobbered.
Change this so that a load from a FixedStackObject is not invariant in a tail
calling function and don't return a PseudoSourceValue for an instruction in tail
calling functions when building the dependence graph so that we handle function
arguments conservatively.
Fix for PR23459.
rdar://
20740035
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236916
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 8 May 2015 22:47:50 +0000 (22:47 +0000)]
[opaque pointer type] Cleanup a few references to pointee types using nearby non-pointee types of the same value
& cleanup a convoluted return expression while I'm here
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236912
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 8 May 2015 21:45:19 +0000 (21:45 +0000)]
[lib/Fuzzer] build tests that work well with dfsan also w/o dfsan
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236909
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Fri, 8 May 2015 21:30:55 +0000 (21:30 +0000)]
[lib/Fuzzer] use -fsanitize-coverage=trace-cmp when building LLVM with LLVM_USE_SANITIZE_COVERAGE; in lib/Fuzzer try to reload the corpus to pick up new units from other processes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236906
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Fri, 8 May 2015 21:23:39 +0000 (21:23 +0000)]
Switch lowering: cluster adjacent fall-through cases even at -O0
It's cheap to do, and codegen is much faster if cases can be merged
into clusters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236905
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Berlin [Fri, 8 May 2015 21:17:24 +0000 (21:17 +0000)]
Add a comment about DepthFirstIterator's skipchildren behavior
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236904
91177308-0d34-0410-b5e6-
96231b3b80d8
Renato Golin [Fri, 8 May 2015 21:04:27 +0000 (21:04 +0000)]
TargetParser: FPU/ARCH/EXT parsing refactory - NFC
This new class in a global context contain arch-specific knowledge in order
to provide LLVM libraries, tools and projects with the ability to understand
the architectures. For now, only FPU, ARCH and ARCH extensions on ARM are
supported.
Current behaviour it to parse from free-text to enum values and back, so that
all users can share the same parser and codes. This simplifies a lot both the
ASM/Obj streamers in the back-end (where this came from), and the front-end
parsers for command line arguments (where this is going to be used next).
The previous implementation, using .def/.h includes is deprecated due to its
inflexibility to be built without the backend support and for being too
cumbersome. As more architectures join this scheme, and as more features of
such architectures are added (such as hardware features, type sizes, etc) into
a full blown TargetDescription class, having a set of classes is the most
sane implementation.
The ultimate goal of this refactor both LLVM's and Clang's target description
classes into one unique interface, so that we can de-duplicate and standardise
the descriptions, as well as make it available for other front-ends, tools,
etc.
The FPU parsing for command line options in Clang has been converted to use
this new library and a number of aliases were added for compatibility:
* A bogus neon-vfpv3 alias (neon defaults to vfp3)
* armv5/v6
* {fp4/fp5}-{sp/dp}-d16
Next steps:
* Port Clang's ARCH/EXT parsing to use this library.
* Create a TableGen back-end to generate this information.
* Run this TableGen process regardless of which back-ends are built.
* Expose more information and rename it to TargetDescription.
* Continue re-factoring Clang to use as much of it as possible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236900
91177308-0d34-0410-b5e6-
96231b3b80d8
Diego Novillo [Fri, 8 May 2015 21:01:29 +0000 (21:01 +0000)]
Update Function::getContext documentation. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236899
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 8 May 2015 20:46:54 +0000 (20:46 +0000)]
[Fast-ISel] Clear kill flags on registers replaced by updateValueMap.
When selecting an extract instruction, we don't actually generate code but instead work out which register we are reading, and rewrite uses of the extract def to the source register. This is done via updateValueMap,.
However, its possible that the source register we are rewriting *to* to also have uses. If those uses are after a kill of the value we are rewriting *from* then we have uses after a kill and the verifier fails.
This code checks for the case where the to register is also used, and if so it clears all kill on the from register. This is conservative, but better that always clearing kills on the from register.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236897
91177308-0d34-0410-b5e6-
96231b3b80d8
Brendon Cahoon [Fri, 8 May 2015 20:18:21 +0000 (20:18 +0000)]
[Hexagon] Generate more hardware loops
Refactored parts of the hardware loop pass to generate
more. Also, added more tests.
Differential Revision: http://reviews.llvm.org/D9568
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236896
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Fri, 8 May 2015 18:58:55 +0000 (18:58 +0000)]
[BasicAA] Fix zext & sext handling
Summary:
There are several unhandled edge cases in BasicAA's GetLinearExpression
method. This changes fixes outstanding issues, including zext / sext of
a constant with the sign bit set, and the refusal to decompose zexts or
sexts of wrapping arithmetic.
Test Plan: Unit tests added in //q.ext.ll//.
Patch by Nick White.
Reviewers: hfinkel, sanjoy
Reviewed By: hfinkel, sanjoy
Subscribers: sanjoy, llvm-commits, hfinkel
Differential Revision: http://reviews.llvm.org/D6682
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236894
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 8 May 2015 18:52:28 +0000 (18:52 +0000)]
Replace branch-to-unreachable with assertion.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236893
91177308-0d34-0410-b5e6-
96231b3b80d8
Pat Gavlin [Fri, 8 May 2015 18:37:49 +0000 (18:37 +0000)]
Fix a docs build break introduced by rL236888.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236891
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 8 May 2015 18:29:42 +0000 (18:29 +0000)]
[X86] Fast-ISel was incorrectly always killing the source of a truncate.
A trunc from i32 to i1 on x86_64 generates an instruction such as
%vreg19<def> = COPY %vreg9:sub_8bit<kill>; GR8:%vreg19 GR32:%vreg9
However, the copy here should only have the kill flag on the 32-bit path, not the 64-bit one.
Otherwise, we are killing the source of the truncate which could be used later in the program.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236890
91177308-0d34-0410-b5e6-
96231b3b80d8
Pat Gavlin [Fri, 8 May 2015 18:07:42 +0000 (18:07 +0000)]
Extend the statepoint intrinsic to allow statepoints to be marked as transitions from GC-aware code to code that is not GC-aware.
This changes the shape of the statepoint intrinsic from:
@llvm.experimental.gc.statepoint(anyptr target, i32 # call args, i32 unused, ...call args, i32 # deopt args, ...deopt args, ...gc args)
to:
@llvm.experimental.gc.statepoint(anyptr target, i32 # call args, i32 flags, ...call args, i32 # transition args, ...transition args, i32 # deopt args, ...deopt args, ...gc args)
This extension offers the backend the opportunity to insert (somewhat) arbitrary code to manage the transition from GC-aware code to code that is not GC-aware and back.
In order to support the injection of transition code, this extension wraps the STATEPOINT ISD node generated by the usual lowering lowering with two additional nodes: GC_TRANSITION_START and GC_TRANSITION_END. The transition arguments that were passed passed to the intrinsic (if any) are lowered and provided as operands to these nodes and may be used by the backend during code generation.
Eventually, the lowering of the GC_TRANSITION_{START,END} nodes should be informed by the GC strategy in use for the function containing the intrinsic call; for now, these nodes are instead replaced with no-ops.
Differential Revision: http://reviews.llvm.org/D9501
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236888
91177308-0d34-0410-b5e6-
96231b3b80d8
Jingyue Wu [Fri, 8 May 2015 18:07:24 +0000 (18:07 +0000)]
[NoTTI] reject negative scale in addressing mode
Summary:
I noticed this bug when deubging a WIP on LSR. I wonder whether and how we
should add a regression test for this.
Test Plan: no tests failed.
Reviewers: atrick
Subscribers: hfinkel, llvm-commits
Differential Revision: http://reviews.llvm.org/D9536
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236887
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 8 May 2015 17:54:32 +0000 (17:54 +0000)]
Clear kill flags on all used registers when sinking instructions.
The test here was sinking the AND here to a lower BB:
%vreg7<def> = ANDWri %vreg8, 0; GPR32common:%vreg7,%vreg8
TBNZW %vreg8<kill>, 0, <BB#1>; GPR32common:%vreg8
which meant that vreg8 was read after it was killed.
This commit changes the code from clearing kill flags on the AND to clearing flags on all registers used by the AND.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236886
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 8 May 2015 17:54:29 +0000 (17:54 +0000)]
80 cols fix since i'm looking at this function anyway. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236885
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Fri, 8 May 2015 16:59:53 +0000 (16:59 +0000)]
Remove duplicate cmake target I added in r236792.
Thanks to Daniel Jasper for pointing out the mistake.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236881
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Katzman [Fri, 8 May 2015 16:39:59 +0000 (16:39 +0000)]
Unbreak build: Makefile must have the same change as CMakeLists.txt
This was omitted from http://reviews.llvm.org/D9441
(the irony is that that was to detect omissions in something else)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236878
91177308-0d34-0410-b5e6-
96231b3b80d8
Brendon Cahoon [Fri, 8 May 2015 16:16:29 +0000 (16:16 +0000)]
[Hexagon] Update AnalyzeBranch, etc target hooks
Improved the AnalyzeBranch, InsertBranch, and RemoveBranch
functions in order to handle more of our branch instructions.
This requires changes to analyzeCompare and PredicateInstructions.
Specifically, we've added support for new value compare jumps,
improved handling of endloop, added more compare instructions,
and improved support for predicate instructions.
Differential Revision: http://reviews.llvm.org/D9559
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236876
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Katzman [Fri, 8 May 2015 15:34:12 +0000 (15:34 +0000)]
Prevent further errors of omission when adding backend names.
Differential Revision: http://reviews.llvm.org/D9441
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236865
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Fri, 8 May 2015 15:11:07 +0000 (15:11 +0000)]
[X86] Teach 'getTargetShuffleMask' how to look through ISD::WrapperRIP when decoding a PSHUFB mask.
The function 'getTargetShuffleMask' already knows how to deal with PSHUFB nodes
where the mask node is a load from constant pool, and the constant pool node
is wrapped by a X86ISD::Wrapper node. This patch extends that logic by teaching
it how to also look through X86ISD::WrapperRIP.
This helps function combineX86ShufflesRecusively to combine more shuffle
sequences containing PSHUFB nodes if we are in RIPRel PIC mode.
Before this change, llc (with -relocation-model=pic -march=x86-64) was unable
to decode a pshufb where the mask was loaded from a constant pool. For example,
the no-op shuffle from test 'x86-fold-pshufb.ll' was not folded into its
operand, so instead of generating a single 'movaps' the backend always
generated a sub-optimal 'movdqa + pshufb' sequence.
Added test x86-fold-pshufb.ll.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236863
91177308-0d34-0410-b5e6-
96231b3b80d8
Jozef Kolek [Fri, 8 May 2015 14:25:11 +0000 (14:25 +0000)]
[mips][microMIPSr6] Implement ALUIPC and AUIPC instructions
This patch implements ALUIPC and AUIPC instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8441
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236858
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Fri, 8 May 2015 14:04:54 +0000 (14:04 +0000)]
Fix test added in r236850 for OSX builders.
Need to specify triple so that llvm emits the asm syntax that the
test expected.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236855
91177308-0d34-0410-b5e6-
96231b3b80d8
Jozef Kolek [Fri, 8 May 2015 13:52:04 +0000 (13:52 +0000)]
[mips][microMIPSr6] Implement ADDIUPC and LWPC instructions
This patch implements ADDIUPC and LWPC instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8415
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236852
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Fri, 8 May 2015 13:47:01 +0000 (13:47 +0000)]
Fix alignment checks in MergeConsecutiveStores.
1) check whether the alignment of the memory is sufficient for the
*merged* store or load to be efficient.
Not doing so can result in some ridiculously poor code generation, if
merging creates a vector operation which must be aligned but isn't.
2) DON'T check that the alignment of each load/store is equal. If
you're merging 2 4-byte stores, the first *might* have 8-byte
alignment, but the second certainly will have 4-byte alignment. We do
want to allow those to be merged.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236850
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Laevsky [Fri, 8 May 2015 13:17:22 +0000 (13:17 +0000)]
Fix coding standart based on post submit comments.
Differential Revision: http://reviews.llvm.org/D7760
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236849
91177308-0d34-0410-b5e6-
96231b3b80d8
John Brawn [Fri, 8 May 2015 12:52:02 +0000 (12:52 +0000)]
[ARM] Reject invalid -march values
Restructure Triple::getARMCPUForArch so that invalid values will
return nullptr, while retaining the behaviour that an argument
specifying no particular architecture version will give a default
CPU. This will be used by clang to give an error on invalid -march
values.
Also restructure the extraction of the architecture version from
the MArch string a little to hopefully make what it's doing clearer.
Differential Revision: http://reviews.llvm.org/D9599
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236845
91177308-0d34-0410-b5e6-
96231b3b80d8
Denis Protivensky [Fri, 8 May 2015 12:21:03 +0000 (12:21 +0000)]
Fix gcc warning of different enum and non-enum types in ternary
Make '0' literal explicitly unsigned with '0u'.
This appeared after r236775.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236838
91177308-0d34-0410-b5e6-
96231b3b80d8
Toma Tabacu [Fri, 8 May 2015 12:15:04 +0000 (12:15 +0000)]
[mips] Only use FGR_{32,64} in TableGen descriptions. NFC.
Summary: Instead of explicitly adding the IsFP64bit and NotFP64bit predicates through AdditionalRequires.
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9566
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236835
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Laevsky [Fri, 8 May 2015 11:59:09 +0000 (11:59 +0000)]
This change is refactoring only. It moves basic block normalization for invokes to happen before replacement of a call with safepoint in "ReplaceWithStatepoint". Previously it was partly done before replacement of calls with safepoint and partly after call replacement but before RAUW's for gc_relocates, which was confusing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236829
91177308-0d34-0410-b5e6-
96231b3b80d8
Vasileios Kalintiris [Fri, 8 May 2015 09:10:15 +0000 (09:10 +0000)]
[mips] Emit the .insn directive for empty basic blocks.
Summary:
In microMIPS, labels need to know whether they are on code or data. This is
indicated with STO_MIPS_MICROMIPS and can be inferred by being followed
by instructions. For empty basic blocks, we can ensure this by emitting the
.insn directive after the label.
Also, this fixes some failures in our out-of-tree microMIPS buildbots, for the
exception handling regression tests under: SingleSource/Regression/C++/EH
Reviewers: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9530
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236815
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Fri, 8 May 2015 07:05:04 +0000 (07:05 +0000)]
[yaml2elf] Replace error message by assert call in writeSectionContent methods
Now caller of ELFState::writeSectionContent() methods is responsible to check
a section type and selects an appropriate writeSectionContent method.
So unexpected section type inside writeSectionContent method indicates
a wrong usage of the method and should be guarded by assert.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236808
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Fri, 8 May 2015 07:04:59 +0000 (07:04 +0000)]
[llvm-readobj/obj2yaml/yaml2obj] Support MIPS machine ELF header flags
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236807
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Fri, 8 May 2015 00:57:22 +0000 (00:57 +0000)]
Now that we have a soft-float attribute, use it instead of the
hard coded command line option for the Mips soft float tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236801
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Fri, 8 May 2015 00:42:26 +0000 (00:42 +0000)]
[opaque pointer type] Explicit pointee type for GEPOperator/GEPConstantExpr.
Also a couple of other changes to avoid use of
PointerType::getElementType here & there too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236799
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Thu, 7 May 2015 23:33:24 +0000 (23:33 +0000)]
Update CMake flags, LibFuzzer comments and docs for new -fsanitize-coverage= flags.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236797
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 7 May 2015 23:10:23 +0000 (23:10 +0000)]
InMips16HardFloat was only being set conditional on whether or
not IsSoftFloat was set so remove it from here simplifying the
accessor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236795
91177308-0d34-0410-b5e6-
96231b3b80d8
Eric Christopher [Thu, 7 May 2015 23:10:21 +0000 (23:10 +0000)]
Rename the MIPS routine abiUsesSoftFloat -> useSoftFloat to match
some incoming changes and the general scheme used by features (use/has).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236794
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Thu, 7 May 2015 22:53:11 +0000 (22:53 +0000)]
Add yaml-bench to the list of tools make check needs to run
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236792
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Thu, 7 May 2015 22:46:06 +0000 (22:46 +0000)]
Delete unused createSanitizerCoverageModulePass overload.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236791
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Thu, 7 May 2015 22:24:58 +0000 (22:24 +0000)]
[CMake] llvm/test/YAMLParser requires yaml-bench. This fixes r236754.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236787
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Thu, 7 May 2015 22:17:48 +0000 (22:17 +0000)]
Revert "SanitizerCoverage: Use `createSanitizerCtor` to create ctor and call init"
Will fix tomorrow. Unbreak build bots now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236786
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 7 May 2015 22:16:10 +0000 (22:16 +0000)]
Fix typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236785
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Thu, 7 May 2015 21:48:26 +0000 (21:48 +0000)]
Clear kill flags in tail duplication.
If we duplicate an instruction then we must also clear kill flags on any uses we rewrite.
Otherwise we might be killing a register which was used in other BBs.
For example, here the entry BB ended up with these instructions, the ADD having been tail duplicated.
%vreg24<def> = t2ADDri %vreg10<kill>, 1, pred:14, pred:%noreg, opt:%noreg; GPRnopc:%vreg24 rGPR:%vreg10
%vreg22<def> = COPY %vreg10; GPR:%vreg22 rGPR:%vreg10
The copy here is inserted after the add and so needs vreg10 to be live.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236782
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Thu, 7 May 2015 21:47:25 +0000 (21:47 +0000)]
When checking msan.module_ctor, use CHECK-LABEL instead of CHECK
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236781
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Thu, 7 May 2015 21:43:28 +0000 (21:43 +0000)]
SanitizerCoverage: Use `createSanitizerCtor` to create ctor and call init
Reviewers: kcc, samsonov
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8780
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236780
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Thu, 7 May 2015 21:41:52 +0000 (21:41 +0000)]
MSan: Use `createSanitizerCtor` to create ctor, and call `__msan_init`
Reviewers: kcc, eugenis
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8781
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236779
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Thu, 7 May 2015 21:41:23 +0000 (21:41 +0000)]
TSan: Use `createSanitizerCtor` to create ctor, and call `__tsan_init`
Reviewers: kcc, dvyukov
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8779
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236778
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Pazarbasi [Thu, 7 May 2015 21:40:46 +0000 (21:40 +0000)]
ASan: Use `createSanitizerCtor` to create ctor, and call `__asan_init`
Reviewers: kcc, samsonov
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8778
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236777
91177308-0d34-0410-b5e6-
96231b3b80d8
Matthias Braun [Thu, 7 May 2015 21:33:59 +0000 (21:33 +0000)]
Change getTargetNodeName() to produce compiler warnings for missing cases, fix them
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236775
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Thu, 7 May 2015 21:02:11 +0000 (21:02 +0000)]
[lib/Fuzzer] change the way we use taint information for fuzzing. Now, we run a single unit and collect suggested mutations based on tracing+taint data, then apply the suggested mutations one by one. The previous scheme was slower and more complex.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236772
91177308-0d34-0410-b5e6-
96231b3b80d8
Steven Wu [Thu, 7 May 2015 19:56:23 +0000 (19:56 +0000)]
Use auto instead of the long type name. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236768
91177308-0d34-0410-b5e6-
96231b3b80d8
Pete Cooper [Thu, 7 May 2015 19:21:36 +0000 (19:21 +0000)]
[AArch64] Fix sext/zext folding in address arithmetic.
We were accidentally folding a sign/zero extend in to address arithmetic in a different BB when the extend wasn't available there.
Cross BB fast-isel isn't safe, so restrict this to only when the extend is in the same BB as the use.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236764
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Thu, 7 May 2015 18:48:48 +0000 (18:48 +0000)]
Fix r236754: Add the missing yaml-bench dir to the makefile for utils.
This commit adds the missing yaml-bench utility to the
makefile in utils. It was missing before and it caused
the regression tests to fail on some buildbots when llvm-lit
couldn't find yaml-bench when llvm was built without
cmake after I committed r236754.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236761
91177308-0d34-0410-b5e6-
96231b3b80d8
Sergey Dmitrouk [Thu, 7 May 2015 18:33:50 +0000 (18:33 +0000)]
Disable r235989 "Reapply r235977 "[DebugInfo] Add debug locations to constant SD nodes""
Will be re-enabled with missing changes for ConstantFPSDNode and
fixes for wrong locations due to constant coalescing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236758
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Thu, 7 May 2015 18:32:29 +0000 (18:32 +0000)]
[lib/Fuzzer] minor refactoring/simplification, NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236757
91177308-0d34-0410-b5e6-
96231b3b80d8
Nemanja Ivanovic [Thu, 7 May 2015 18:24:05 +0000 (18:24 +0000)]
Add VSX Scalar loads and stores to the PPC back end
This patch corresponds to review:
http://reviews.llvm.org/D9440
It adds a new register class to the PPC back end to contain single precision
values in VSX registers. Additionally, it adds scalar loads and stores for
VSX registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236755
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Lorenz [Thu, 7 May 2015 18:08:46 +0000 (18:08 +0000)]
YAML: Enable the YAMLParser tests.
This commit enables the tests located in test/YAMLParser directory.
Those tests were never actually enabled, as llvm-lit didn't pick up the
files with the 'data' extension. The commit renames those test files to files
with the 'test' extension so that llvm-lit would find them.
This commit also modifies yaml-bench so that it returns an error status
if an error occurred during parsing. It also adds the '-use-color'
command line option to yaml-bench (to make sure that file check matches
the error messages in the output stream).
This commit modifies some of the renamed tests so that they wouldn't
fail. It gets rid of XFAILs and uses the 'not' command instead for
some of the tests that have to fail during parsing. This commit
also adds some 'FIXME' comments to a couple of tests that are
supposed to fail but currently pass because of various bugs
in the implementation of the yaml parser.
Reviewers: Justin Bogner
Differential Revision: http://reviews.llvm.org/D9448
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236754
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 7 May 2015 17:28:58 +0000 (17:28 +0000)]
Recommit r236670: [opaque pointer type] Pass explicit pointer type through GEP constant folding""
Clang regressions were caused by more stringent assertion checking
introduced by this change. Small fix needed to clang has been committed
in r236751.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236752
91177308-0d34-0410-b5e6-
96231b3b80d8
Diego Novillo [Thu, 7 May 2015 17:22:06 +0000 (17:22 +0000)]
Fix information loss in branch probability computation.
Summary:
This addresses PR 22718. When branch weights are too large, they were
being clamped to the range [1, MaxWeightForBB]. But this clamping is
only applied to edges that go outside the range, so it distorts the
relative branch probabilities.
This patch changes the weight calculation to scale every branch so the
relative probabilities are preserved. The scaling is done differently
now. First, all the branch weights are added up, and if the sum exceeds
32 bits, it computes an integer scale to bring all the weights within
the range.
The patch fixes an existing test that had slightly wrong branch
probabilities due to the previous clamping. It now gets branch weights
scaled accordingly.
Reviewers: dexonsmith
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D9442
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236750
91177308-0d34-0410-b5e6-
96231b3b80d8
Jozef Kolek [Thu, 7 May 2015 17:12:23 +0000 (17:12 +0000)]
[mips][microMIPSr6] Implement JIALC and JIC instructions
This patch implements JIALC and JIC instructions using mapping.
Differential Revision: http://reviews.llvm.org/D8389
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236748
91177308-0d34-0410-b5e6-
96231b3b80d8