Pekka Jaaskelainen [Thu, 7 Mar 2013 16:46:43 +0000 (16:46 +0000)]
Fixed a crash when cloning a function into a function with
different size argument list and without attributes in the
arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176632
91177308-0d34-0410-b5e6-
96231b3b80d8
Christian Konig [Thu, 7 Mar 2013 09:04:14 +0000 (09:04 +0000)]
R600/SI: rework input interpolation v2
v2: update CMakeLists.txt as well
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176626
91177308-0d34-0410-b5e6-
96231b3b80d8
Christian Konig [Thu, 7 Mar 2013 09:04:04 +0000 (09:04 +0000)]
R600/SI: remove SI_vs_load_buffer_index
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176625
91177308-0d34-0410-b5e6-
96231b3b80d8
Christian Konig [Thu, 7 Mar 2013 09:03:59 +0000 (09:03 +0000)]
R600/SI: remove SGPR address space v2
v2: fix R600 regressions
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176624
91177308-0d34-0410-b5e6-
96231b3b80d8
Christian Konig [Thu, 7 Mar 2013 09:03:52 +0000 (09:03 +0000)]
R600/SI: add proper formal parameter handling for SI
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176623
91177308-0d34-0410-b5e6-
96231b3b80d8
Christian Konig [Thu, 7 Mar 2013 09:03:46 +0000 (09:03 +0000)]
R600/SI: remove shader type intrinsic
Just encode the type as target specific attribute.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176622
91177308-0d34-0410-b5e6-
96231b3b80d8
Christian Konig [Thu, 7 Mar 2013 09:03:38 +0000 (09:03 +0000)]
R600/SI: switch types of SGPRs to v*i8
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176621
91177308-0d34-0410-b5e6-
96231b3b80d8
Christian Konig [Thu, 7 Mar 2013 09:03:30 +0000 (09:03 +0000)]
R600/SI: fix unused variable warning
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176620
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Thu, 7 Mar 2013 08:28:49 +0000 (08:28 +0000)]
Switch from a version 4.2/4.4 switch to a four-byte version string to be put
into the actual gcov file.
Instead of using the bottom 4 bytes as the function identifier, use a counter.
This makes the identifier numbers stable across multiple runs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176616
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Thu, 7 Mar 2013 06:34:49 +0000 (06:34 +0000)]
No need to go through int64 and APInt when generating a new constant.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176615
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 7 Mar 2013 05:47:54 +0000 (05:47 +0000)]
SDAG: Handle scalarizing an extend of a <1 x iN> vector.
Just scalarize the element and rebuild a vector of the result type
from that.
rdar://
13281568
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176614
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Thu, 7 Mar 2013 02:03:08 +0000 (02:03 +0000)]
Remove GCDAProfiling.c. This copy is old, the copy in compiler-rt is newer and
is the one that should be used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176608
91177308-0d34-0410-b5e6-
96231b3b80d8
Manman Ren [Thu, 7 Mar 2013 01:42:00 +0000 (01:42 +0000)]
Debug Info: store the files and directories for each compile unit.
We now emit a line table for each compile unit. To reduce the prologue size
of each line table, the files and directories used by each compile unit are
stored in std::map<unsigned, std::vector< > > instead of std::vector< >.
The prologue for a lto'ed image can be as big as 93K. Duplicating 93K for each
compile unit causes a huge increase of debug info. With this patch, each
prologue will only emit the files required by the compile unit.
rdar://problem/
13342023
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176605
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Thu, 7 Mar 2013 01:38:04 +0000 (01:38 +0000)]
ArrayRef has a OneElt constructor. Beautify the code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176604
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Thu, 7 Mar 2013 01:30:40 +0000 (01:30 +0000)]
Switch from std::vector to ArrayRef. Speedup FoldBitCast by 5x.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176602
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Thu, 7 Mar 2013 01:03:35 +0000 (01:03 +0000)]
SimplifyCFG fix for volatile load/store.
Fixes rdar:
13349374.
Volatile loads and stores need to be preserved even if the language
standard says they are undefined. "volatile" in this context means "get
out of the way compiler, let my platform handle it".
Additionally, this is the only way I know of with llvm to write to the
first page (when hardware allows) without dropping to assembly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176599
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Liao [Thu, 7 Mar 2013 01:01:29 +0000 (01:01 +0000)]
Fix two remaining issue after fixing PR15355 when CMOV is not available
- Phi nodes should be replaced/updated after lowering CMOV into branch
because 'mainMBB' updating operand in Phi node is changed.
- Add EFLAGS in livein before lowering the 2nd CMOV. It's necessary as
we will reuse the EFLAGS generated before the 1st lowered CMOV, which
won't clobber EFLAGS. However, we need explicitly specify that.
- '-attr=-cmov' test case are added.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176598
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 6 Mar 2013 21:32:03 +0000 (21:32 +0000)]
[mips] Custom-legalize BR_JT.
In N64-static, GOT address is needed to compute the branch address.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176580
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Wed, 6 Mar 2013 19:04:56 +0000 (19:04 +0000)]
Generalize my previous fix for -print-options.
Always print options that differ from their implicit default. At least
for simple option types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176572
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Liao [Wed, 6 Mar 2013 18:24:34 +0000 (18:24 +0000)]
Remove tailing whitespaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176570
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Wed, 6 Mar 2013 18:22:22 +0000 (18:22 +0000)]
Give -loop-vectorize an explicit default.
This way, clang -mllvm -print-options shows that the driver is overriding it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176569
91177308-0d34-0410-b5e6-
96231b3b80d8
Shuxin Yang [Wed, 6 Mar 2013 17:48:48 +0000 (17:48 +0000)]
Memory Dependence Analysis (not mem-dep test) take advantage of "invariant.load" metadata.
The "invariant.load" metadata indicates the memory unit being accessed is immutable.
A load annotated with this metadata can be moved across any store.
As I am not sure if it is legal to move such loads across barrier/fence, this
change dose not allow such transformation.
rdar://
11311484
Thank Arnold for code review.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176562
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 6 Mar 2013 05:44:53 +0000 (05:44 +0000)]
InstCombine: Don't shrink allocas when combining with a bitcast.
When considering folding a bitcast of an alloca into the alloca itself,
make sure we don't shrink the amount of memory being allocated, or
things rapidly go sideways.
rdar://
13324424
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176547
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Wed, 6 Mar 2013 01:58:03 +0000 (01:58 +0000)]
[mips] Add a line which checks function name. Rename file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176543
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Liao [Wed, 6 Mar 2013 00:17:04 +0000 (00:17 +0000)]
Fix PR15355
- Clear 'mayStore' flag when loading from the atomic variable before the
spin loop
- Clear kill flag from one use to multiple use in registers forming the
address to that atomic variable
- don't use a physical register as live-in register in BB (neither entry
nor landing pad.) by copying it into virtual register
(patch by Cameron Zwarich)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176538
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Wed, 6 Mar 2013 00:16:16 +0000 (00:16 +0000)]
Use dyn_cast instead of isa && cast. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176537
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Wed, 6 Mar 2013 00:04:32 +0000 (00:04 +0000)]
Remove duplicated forward declaration.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176536
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Tue, 5 Mar 2013 23:22:30 +0000 (23:22 +0000)]
[mips] Remove android calling convention.
This calling convention was added just to handle functions which return vector
of floats. The fix committed in r165585 solves the problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176530
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Tue, 5 Mar 2013 22:54:59 +0000 (22:54 +0000)]
[mips] Fix MipsCC::analyzeReturn so that, in soft-float mode, fp128 gets
returned in registers $2 and $4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176527
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Tue, 5 Mar 2013 22:41:55 +0000 (22:41 +0000)]
[mips] Fix MipsTargetLowering::LowerCallResult and LowerReturn to correctly
handle fp128 returns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176523
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Tue, 5 Mar 2013 22:20:28 +0000 (22:20 +0000)]
[mips] Fix MipsTargetLowering::LowerCall to pass fp128 arguments in floating
point registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176521
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Tue, 5 Mar 2013 22:13:04 +0000 (22:13 +0000)]
[mips] Correct handling of fp128 (long double) formals and read long double
parameters from floating point registers if target is mips64 hard float.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176520
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Tue, 5 Mar 2013 22:05:16 +0000 (22:05 +0000)]
Fix a few typos in comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176519
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Tue, 5 Mar 2013 22:01:15 +0000 (22:01 +0000)]
Add some constantness.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176518
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakub Staszak [Tue, 5 Mar 2013 21:53:57 +0000 (21:53 +0000)]
std::distance() == 0 means that iterators are equal. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176516
91177308-0d34-0410-b5e6-
96231b3b80d8
Meador Inge [Tue, 5 Mar 2013 21:47:40 +0000 (21:47 +0000)]
Add more functions to the TLI.
This patch adds many more functions to the target library information.
All of the functions being added were discovered while doing the migration
of the simplify-libcalls attribute annotation functionality to the
functionattrs pass. As a part of that work the attribute annotation logic
will query TLI to determine if a function should be annotated or not.
Signed-off-by: Meador Inge <meadori@codesourcery.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176514
91177308-0d34-0410-b5e6-
96231b3b80d8
Jyotsna Verma [Tue, 5 Mar 2013 20:29:23 +0000 (20:29 +0000)]
reverting patch 176508.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176513
91177308-0d34-0410-b5e6-
96231b3b80d8
Jyotsna Verma [Tue, 5 Mar 2013 19:37:46 +0000 (19:37 +0000)]
Hexagon: Add support for lowering block address.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176508
91177308-0d34-0410-b5e6-
96231b3b80d8
Vincent Lejeune [Tue, 5 Mar 2013 19:12:06 +0000 (19:12 +0000)]
R600: Do not predicate vector op
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176507
91177308-0d34-0410-b5e6-
96231b3b80d8
Jyotsna Verma [Tue, 5 Mar 2013 19:04:47 +0000 (19:04 +0000)]
Hexagon: Expand addc, adde, subc and sube.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176505
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Tue, 5 Mar 2013 19:04:12 +0000 (19:04 +0000)]
Use the right number of slashes in comment string
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176504
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Tue, 5 Mar 2013 18:56:14 +0000 (18:56 +0000)]
Fixes a test by replacing .align by .p2align and setting triples explicitly.
Patch by David Sehr
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176502
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Tue, 5 Mar 2013 18:54:05 +0000 (18:54 +0000)]
Update cmake build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176501
91177308-0d34-0410-b5e6-
96231b3b80d8
Jyotsna Verma [Tue, 5 Mar 2013 18:51:42 +0000 (18:51 +0000)]
Hexagon: Use MO operand flags to mark constant extended instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176500
91177308-0d34-0410-b5e6-
96231b3b80d8
Jyotsna Verma [Tue, 5 Mar 2013 18:42:28 +0000 (18:42 +0000)]
Hexagon: Add encoding bits to the TFR64 instructions.
Set imMoveImm, isAsCheapAsAMove flags for TFRI instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176499
91177308-0d34-0410-b5e6-
96231b3b80d8
Vincent Lejeune [Tue, 5 Mar 2013 18:41:32 +0000 (18:41 +0000)]
R600: initial scheduler code
This is a skeleton for a pre-RA MachineInstr scheduler strategy. Currently
it only tries to expose more parallelism for ALU instructions (this also
makes the distribution of GPR channels more uniform and increases the
chances of ALU instructions to be packed together in a single VLIW group).
Also it tries to reduce clause switching by grouping instruction of the
same kind (ALU/FETCH/CF) together.
Vincent Lejeune:
- Support for VLIW4 Slot assignement
- Recomputation of ScheduleDAG to get more parallelism opportunities
Tom Stellard:
- Fix assertion failure when trying to determine an instruction's slot
based on its destination register's class
- Fix some compiler warnings
Vincent Lejeune: [v2]
- Remove recomputation of ScheduleDAG (will be provided in a later patch)
- Improve estimation of an ALU clause size so that heuristic does not emit cf
instructions at the wrong position.
- Make schedule heuristic smarter using SUnit Depth
- Take constant read limitations into account
Vincent Lejeune: [v3]
- Fix some uninitialized values in ConstPair
- Add asserts to ensure an ALU slot is always populated
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176498
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Tue, 5 Mar 2013 16:53:24 +0000 (16:53 +0000)]
Clarify comment for function getObjectSize
Clarify that we mean the object starting at the pointer to the end of the
underlying object and not the size of the whole allocated object.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176491
91177308-0d34-0410-b5e6-
96231b3b80d8
David Sehr [Tue, 5 Mar 2013 16:46:54 +0000 (16:46 +0000)]
Add a test that .align directives on capable processors use long NOPs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176490
91177308-0d34-0410-b5e6-
96231b3b80d8
Vincent Lejeune [Tue, 5 Mar 2013 15:04:55 +0000 (15:04 +0000)]
R600: Remove LowerConstCopyPass and lower CONST_COPY right after ISel.
Maintaining CONST_COPY Instructions until Pre Emit may prevent some ifcvt case
and taking them in account for scheduling is difficult for no real benefit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176488
91177308-0d34-0410-b5e6-
96231b3b80d8
Vincent Lejeune [Tue, 5 Mar 2013 15:04:49 +0000 (15:04 +0000)]
R600: Turn BUILD_VECTOR into Reg_Sequence
Reviewed-by: Tom Stellard <thomas.stellard at amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176487
91177308-0d34-0410-b5e6-
96231b3b80d8
Vincent Lejeune [Tue, 5 Mar 2013 15:04:42 +0000 (15:04 +0000)]
R600: CONST_ADDRESS node is not marked as mayLoad anymore
Reviewed-by: Tom Stellard <thomas.stellard at amd.com>
mayLoad complexify scheduling and does not bring any usefull info
as the location is not writeable at all.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176486
91177308-0d34-0410-b5e6-
96231b3b80d8
Vincent Lejeune [Tue, 5 Mar 2013 15:04:37 +0000 (15:04 +0000)]
R600: Use MUL_IEEE for trig/fdiv intrinsic
Reviewed-by: Tom Stellard <thomas.stellard at amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176485
91177308-0d34-0410-b5e6-
96231b3b80d8
Vincent Lejeune [Tue, 5 Mar 2013 15:04:29 +0000 (15:04 +0000)]
R600: Add support for indirect addressing of non default const buffer
NOTE: This is a candidate for the Mesa stable branch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176484
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Samsonov [Tue, 5 Mar 2013 14:43:07 +0000 (14:43 +0000)]
Print a warning message if compiler-rt can't be built because of old CMake version to make this requirement more visible to users
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176481
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 5 Mar 2013 02:18:59 +0000 (02:18 +0000)]
llvm/test/CodeGen/Mips/mips64-f128.ll: Add explicit -mtriple=mips64el-unknown-unknown to appease win32.
FIXME: Is it expected for win32 to affect mips targets?
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176471
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Tue, 5 Mar 2013 02:18:52 +0000 (02:18 +0000)]
llvm/test/CodeGen/Thumb/iabs.ll: Add explicit -mtriple=thumb-unknown-unknown to appease win32 hosts.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176470
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 5 Mar 2013 01:00:45 +0000 (01:00 +0000)]
Remove unused #includes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176467
91177308-0d34-0410-b5e6-
96231b3b80d8
David Sehr [Tue, 5 Mar 2013 00:02:23 +0000 (00:02 +0000)]
The current X86 NOP padding uses one long NOP followed by the remainder in
one-byte NOPs. If the processor actually executes those NOPs, as it sometimes
does with aligned bundling, this can have a performance impact. From my
micro-benchmarks run on my one machine, a 15-byte NOP followed by twelve
one-byte NOPs is about 20% worse than a 15 followed by a 12. This patch
changes NOP emission to emit as many 15-byte (the maximum) as possible followed
by at most one shorter NOP.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176464
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 4 Mar 2013 22:40:44 +0000 (22:40 +0000)]
Check isDiscardableIfUnused, rather than hasLocalLinkage, when bumping
GlobalValue linkage up to ExternalLinkage in the ExtractGV pass. This
prevents linkonce and linkonce_odr symbols from being DCE'd.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176459
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Mon, 4 Mar 2013 22:25:01 +0000 (22:25 +0000)]
[mips] Print move instructions.
"move $4, $5" is printed instead of "or $4, $5, $zero".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176455
91177308-0d34-0410-b5e6-
96231b3b80d8
Jack Carter [Mon, 4 Mar 2013 21:33:15 +0000 (21:33 +0000)]
Mips specific inline assembler constraint 'R'
'R' An address that can be sued in a non-macro load or store.
This patch includes a positive test case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176452
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Mon, 4 Mar 2013 18:20:31 +0000 (18:20 +0000)]
Reapply r176381, writing the CHECKs in a more forgiving manner to account for
running llvm-objdump on Darwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176443
91177308-0d34-0410-b5e6-
96231b3b80d8
Preston Gurd [Mon, 4 Mar 2013 18:13:57 +0000 (18:13 +0000)]
Bypass Slow Divides
* Only apply divide bypass optimization when not optimizing for size.
* Fixed bug caused by constant for 0 value of type Int32,
used dividend type to generate the constant instead.
* For atom x86-64 apply the divide bypass to use 16-bit divides instead of
64-bit divides when operand values are small enough.
* Added lit tests for 64-bit divide bypass.
Patch by Tyler Nowicki!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176442
91177308-0d34-0410-b5e6-
96231b3b80d8
Tom Stellard [Mon, 4 Mar 2013 17:40:28 +0000 (17:40 +0000)]
R600: Clean up datalayout strings so they better match hardware capabilities
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176439
91177308-0d34-0410-b5e6-
96231b3b80d8
Jia Liu [Mon, 4 Mar 2013 01:06:54 +0000 (01:06 +0000)]
Mips ISD typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176426
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Sat, 2 Mar 2013 20:16:24 +0000 (20:16 +0000)]
ARM: Creating a vector from a lane of another.
The VDUP instruction source register doesn't allow a non-constant lane
index, so make sure we don't construct a ARM::VDUPLANE node asking it to
do so.
rdar://
13328063
http://llvm.org/bugs/show_bug.cgi?id=13963
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176413
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Sat, 2 Mar 2013 20:16:19 +0000 (20:16 +0000)]
Clean up code format a bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176412
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Sat, 2 Mar 2013 20:16:15 +0000 (20:16 +0000)]
Tidy up. Trailing whitespace.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176411
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Sat, 2 Mar 2013 19:38:33 +0000 (19:38 +0000)]
ARM NEON: Fix v2f32 float intrinsics
Mark them as expand, they are not legal as our backend does not match them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176410
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Sat, 2 Mar 2013 11:36:24 +0000 (11:36 +0000)]
recommit r172363 & r171325 (reverted in r172756)
This adds minimalistic support for PHI nodes to llvm.objectsize() evaluation
fingers crossed so that it does break clang boostrap again..
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176408
91177308-0d34-0410-b5e6-
96231b3b80d8
Nuno Lopes [Sat, 2 Mar 2013 11:23:34 +0000 (11:23 +0000)]
add getUnderlyingObjectSize()
this is similar to getObjectSize(), but doesnt subtract the offset
tweak the BasicAA code accordingly (per PR14988)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176407
91177308-0d34-0410-b5e6-
96231b3b80d8
Arnold Schwaighofer [Sat, 2 Mar 2013 04:02:52 +0000 (04:02 +0000)]
X86 cost model: Adjust cost for custom lowered vector multiplies
This matters for example in following matrix multiply:
int **mmult(int rows, int cols, int **m1, int **m2, int **m3) {
int i, j, k, val;
for (i=0; i<rows; i++) {
for (j=0; j<cols; j++) {
val = 0;
for (k=0; k<cols; k++) {
val += m1[i][k] * m2[k][j];
}
m3[i][j] = val;
}
}
return(m3);
}
Taken from the test-suite benchmark Shootout.
We estimate the cost of the multiply to be 2 while we generate 9 instructions
for it and end up being quite a bit slower than the scalar version (48% on my
machine).
Also, properly differentiate between avx1 and avx2. On avx-1 we still split the
vector into 2 128bits and handle the subvector muls like above with 9
instructions.
Only on avx-2 will we have a cost of 9 for v4i64.
I changed the test case in test/Transforms/LoopVectorize/X86/avx1.ll to use an
add instead of a mul because with a mul we now no longer vectorize. I did
verify that the mul would be indeed more expensive when vectorized with 3
kernels:
for (i ...)
r += a[i] * 3;
for (i ...)
m1[i] = m1[i] * 3; // This matches the test case in avx1.ll
and a matrix multiply.
In each case the vectorized version was considerably slower.
radar://
13304919
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176403
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Sat, 2 Mar 2013 01:43:08 +0000 (01:43 +0000)]
Added FIXME for future Hexagon cleanup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176400
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Sat, 2 Mar 2013 01:33:49 +0000 (01:33 +0000)]
PR14448 - prevent the loop vectorizer from vectorizing the same loop twice.
The LoopVectorizer often runs multiple times on the same function due to inlining.
When this happens the loop vectorizer often vectorizes the same loops multiple times, increasing code size and adding unneeded branches.
With this patch, the vectorizer during vectorization puts metadata on scalar loops and marks them as 'already vectorized' so that it knows to ignore them when it sees them a second time.
PR14448.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176399
91177308-0d34-0410-b5e6-
96231b3b80d8
Peter Collingbourne [Sat, 2 Mar 2013 01:20:18 +0000 (01:20 +0000)]
Modify {Call,Invoke}Inst::addAttribute to take an AttrKind.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176397
91177308-0d34-0410-b5e6-
96231b3b80d8
Jordan Rose [Sat, 2 Mar 2013 01:00:40 +0000 (01:00 +0000)]
CMake: Always include the CheckCXXCompilerFlag in HandleLLVMOptions.cmake.
Previously we relied on it being included by config-ix.cmake.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176396
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Gottesman [Sat, 2 Mar 2013 00:53:20 +0000 (00:53 +0000)]
Revert "Rewrite a test to count emitted instructions without using -stats"
This reverts commit
aac7922b8fe7ae733d3fe6697e6789fd730315dc. I am reverting the
commit since it broke the phase 1 public buildbot for a few hours.
http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RA/builds/2137
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176394
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Fri, 1 Mar 2013 23:32:40 +0000 (23:32 +0000)]
Remove duplicate line and move another closer to its actual use
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176391
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Fri, 1 Mar 2013 23:31:26 +0000 (23:31 +0000)]
MIsched machine model: tablegen subtarget emitter improvement.
Fix the way resources are counted. I'm taking some time to cleanup the
way MachineScheduler handles in-order machine resources. Eventually
we'll need more PPC/Atom test cases in tree.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176390
91177308-0d34-0410-b5e6-
96231b3b80d8
Argyrios Kyrtzidis [Fri, 1 Mar 2013 22:48:51 +0000 (22:48 +0000)]
In llvm::MemoryBuffer::getFile() remove an unnecessary stat call check.
The sys::fs::is_directory() check is unnecessary because, if the filename is
a directory, the function will fail anyway with the same error code returned.
Remove the check to avoid an unnecessary stat call.
Someone needs to review on windows and see if the check is necessary there or not.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176386
91177308-0d34-0410-b5e6-
96231b3b80d8
Stefanus Du Toit [Fri, 1 Mar 2013 22:20:03 +0000 (22:20 +0000)]
Fix my email address in CREDITS.TXT.
Checking to see if svn notifications also use correct address now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176385
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Fri, 1 Mar 2013 21:52:08 +0000 (21:52 +0000)]
[mips] Fix inefficient code generation.
This patch eliminates the need to emit a constant move instruction when this
pattern is matched:
(select (setgt a, Constant), T, F)
The pattern above effectively turns into this:
(conditional-move (setlt a, Constant + 1), F, T)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176384
91177308-0d34-0410-b5e6-
96231b3b80d8
Jean-Luc Duprat [Fri, 1 Mar 2013 21:37:24 +0000 (21:37 +0000)]
Removed extraneous #include "LLVMContextImpl.h" from lib/IR/Module.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176382
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Fri, 1 Mar 2013 21:34:37 +0000 (21:34 +0000)]
Rewrite a test to count emitted instructions without using -stats
Also removed the comments of "should produce..." because they completely
don't match the actually produced output.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176381
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Fri, 1 Mar 2013 21:22:21 +0000 (21:22 +0000)]
Fix indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176380
91177308-0d34-0410-b5e6-
96231b3b80d8
Akira Hatanaka [Fri, 1 Mar 2013 21:11:44 +0000 (21:11 +0000)]
Set properties for f128 type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176378
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Bendersky [Fri, 1 Mar 2013 20:54:00 +0000 (20:54 +0000)]
Rewrite a test to check actual output rather than intermediate implementation
detail.
The was this test was written, it was relying on an implementation detail
(fixups) and hence was very brittle (relying, among other things, on the
exact ordering of statistics printed by MC).
The test was rewritten to check a more observable output difference. While it
doesn't cover 100% of the things the original test covered, it's a good
practice to write regression tests this way. If we want to check that
internal details and invariants hold, such tests should be expressed as unit
tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176377
91177308-0d34-0410-b5e6-
96231b3b80d8
Edwin Vane [Fri, 1 Mar 2013 19:58:58 +0000 (19:58 +0000)]
No need to force-create clang-tools-extra lit.site.cfg
The make (all) target takes care of creating lit configs and auto-generating
tests. The problem with the original 'lit.site.cfg' target is it's not
recursive and doesn't fully create everything necessary for testing
clang-tools-extra.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176374
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Liao [Fri, 1 Mar 2013 19:23:37 +0000 (19:23 +0000)]
Add regression tests (WORKSFORME)
- These tests wont't crash on trunk but would be better to add them so that
they don't break again in the future.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176369
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 1 Mar 2013 19:12:05 +0000 (19:12 +0000)]
Generate an error message instead of asserting or segfaulting when we can't
handle indirect register inputs.
rdar://
13322011
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176367
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Fri, 1 Mar 2013 19:07:31 +0000 (19:07 +0000)]
LoopVectorize: Don't hang forever if a PHI only has skipped PHI uses.
Fixes PR15384.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176366
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Ilseman [Fri, 1 Mar 2013 18:48:54 +0000 (18:48 +0000)]
Cache the result of Function::getIntrinsicID() in a DenseMap attached to the LLVMContext.
This reduces the time actually spent doing string to ID conversion and shows a 10% improvement in compile time for a particularly bad case that involves ARM Neon intrinsics (these have many overloads).
Patch by Jean-Luc Duprat!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176365
91177308-0d34-0410-b5e6-
96231b3b80d8
Michael Liao [Fri, 1 Mar 2013 18:40:30 +0000 (18:40 +0000)]
Fix PR10475
- ISD::SHL/SRL/SRA must have either both scalar or both vector operands
but TLI.getShiftAmountTy() so far only return scalar type. As a
result, backend logic assuming that breaks.
- Rename the original TLI.getShiftAmountTy() to
TLI.getScalarShiftAmountTy() and re-define TLI.getShiftAmountTy() to
return target-specificed scalar type or the same vector type as the
1st operand.
- Fix most TICG logic assuming TLI.getShiftAmountTy() a simple scalar
type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176364
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Fri, 1 Mar 2013 18:30:38 +0000 (18:30 +0000)]
Add support for using non-pic code for arm and thumb1 when emitting the sjlj
dispatch code. As far as I can tell the thumb2 code is behaving as expected.
I was able to compile and run the associated test case for both arm and thumb1.
rdar://
13066352
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176363
91177308-0d34-0410-b5e6-
96231b3b80d8
Christian Konig [Fri, 1 Mar 2013 17:39:05 +0000 (17:39 +0000)]
R600/SI: fix sampler tests after fixing wait insertions
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176359
91177308-0d34-0410-b5e6-
96231b3b80d8
Jyotsna Verma [Fri, 1 Mar 2013 17:37:13 +0000 (17:37 +0000)]
Hexagon: Add constant extender support framework.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176358
91177308-0d34-0410-b5e6-
96231b3b80d8
Peng Cheng [Fri, 1 Mar 2013 16:49:35 +0000 (16:49 +0000)]
test commit to use consistent comment notation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176353
91177308-0d34-0410-b5e6-
96231b3b80d8
Yiannis Tsiouris [Fri, 1 Mar 2013 11:40:32 +0000 (11:40 +0000)]
GCInfoDeleter code cleanup after r175528
Remove GCInfoDeleter from passes and comments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176347
91177308-0d34-0410-b5e6-
96231b3b80d8
Christian Konig [Fri, 1 Mar 2013 09:46:27 +0000 (09:46 +0000)]
R600/SI: handle all registers in copyPhysReg v2
v2: based on Michels patch, but now allows copying of all registers sizes.
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Christian König <christian.koenig@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176346
91177308-0d34-0410-b5e6-
96231b3b80d8
Christian Konig [Fri, 1 Mar 2013 09:46:22 +0000 (09:46 +0000)]
R600/SI: remove S_MOV immediate patterns
They won't match anyway.
Signed-off-by: Christian König <christian.koenig@amd.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176345
91177308-0d34-0410-b5e6-
96231b3b80d8