]> granicus.if.org Git - llvm/log
llvm
9 years agoMerging r233410:
Tom Stellard [Wed, 29 Apr 2015 00:41:55 +0000 (00:41 +0000)]
Merging r233410:

------------------------------------------------------------------------
r233410 | ahmed.bougacha | 2015-03-27 16:35:49 -0400 (Fri, 27 Mar 2015) | 10 lines

[CodeGen] Don't attempt a tail-call with a non-forwarded explicit sret.

Tailcalls are only OK with forwarded sret pointers. With explicit sret,
one approximation is to check that the pointer isn't an Instruction, as
in that case it might point into some local memory (alloca). That's not
OK with tailcalls.

Explicit sret counterpart to r233409.
Differential Revison: http://reviews.llvm.org/D8510

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236067 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r233409:
Tom Stellard [Wed, 29 Apr 2015 00:41:53 +0000 (00:41 +0000)]
Merging r233409:

------------------------------------------------------------------------
r233409 | ahmed.bougacha | 2015-03-27 16:28:30 -0400 (Fri, 27 Mar 2015) | 7 lines

[CodeGen] Don't attempt a tail-call with implicit sret.

Tailcalls are only OK with forwarded sret pointers. With sret demotion,
they're not, as we'd have a pointer into a soon-to-be-dead stack frame.

Differential Revison: http://reviews.llvm.org/D8510

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236066 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r232142:
Tom Stellard [Wed, 29 Apr 2015 00:41:51 +0000 (00:41 +0000)]
Merging r232142:

------------------------------------------------------------------------
r232142 | Hao.Liu | 2015-03-13 01:15:23 -0400 (Fri, 13 Mar 2015) | 9 lines

[MachineCopyPropagation] Fix a bug causing incorrect removal for the instruction sequences as follows
   %Q5_Q6<def> = COPY %Q2_Q3
   %D5<def> =
   %D3<def> =
   %D3<def> = COPY %D6     // Incorrectly removed in MachineCopyPropagation
   Using of %D3 results in incorrect result ...

   Reviewed in http://reviews.llvm.org/D8242

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236065 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMIPS: Fix test that uses 3.7 load syntax
Tom Stellard [Wed, 29 Apr 2015 00:41:48 +0000 (00:41 +0000)]
MIPS: Fix test that uses 3.7 load syntax

This was broken by r235973.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236064 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r232797:
Tom Stellard [Tue, 28 Apr 2015 21:23:06 +0000 (21:23 +0000)]
Merging r232797:

------------------------------------------------------------------------
r232797 | thomas.stellard | 2015-03-19 23:12:42 -0400 (Thu, 19 Mar 2015) | 2 lines

R600/SI: Add missing CHECK-LABEL lines to a test

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236041 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r232386:
Tom Stellard [Tue, 28 Apr 2015 21:23:04 +0000 (21:23 +0000)]
Merging r232386:

------------------------------------------------------------------------
r232386 | thomas.stellard | 2015-03-16 11:53:55 -0400 (Mon, 16 Mar 2015) | 8 lines

R600/SI: don't try min3/max3/med3 with f64

There are no opcodes for this. This also adds a test case.

v2: make test more robust

Patch by: Grigori Goronzy

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236040 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r231662:
Tom Stellard [Tue, 28 Apr 2015 21:23:02 +0000 (21:23 +0000)]
Merging r231662:

------------------------------------------------------------------------
r231662 | thomas.stellard | 2015-03-09 12:03:39 -0400 (Mon, 09 Mar 2015) | 2 lines

R600/SI: Fix opcode for ds_read2_b64 and ds_read2st64_b64

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236039 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r231659:
Tom Stellard [Tue, 28 Apr 2015 21:23:00 +0000 (21:23 +0000)]
Merging r231659:

------------------------------------------------------------------------
r231659 | marek.olsak | 2015-03-09 11:48:09 -0400 (Mon, 09 Mar 2015) | 4 lines

R600/SI: Limit SGPRs to 80 on Tonga and Iceland

This is a candidate for stable.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236038 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r231658:
Tom Stellard [Tue, 28 Apr 2015 21:22:56 +0000 (21:22 +0000)]
Merging r231658:

------------------------------------------------------------------------
r231658 | marek.olsak | 2015-03-09 11:48:00 -0400 (Mon, 09 Mar 2015) | 2 lines

R600/SI: Fix getNumSGPRsAllowed for VI

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236037 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r230147:
Tom Stellard [Tue, 28 Apr 2015 19:12:20 +0000 (19:12 +0000)]
Merging r230147:

------------------------------------------------------------------------
r230147 | Matthew.Arsenault | 2015-02-21 16:29:04 -0500 (Sat, 21 Feb 2015) | 2 lines

R600/SI: Don't crash when getting immediate operand size

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236022 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r230146:
Tom Stellard [Tue, 28 Apr 2015 19:12:19 +0000 (19:12 +0000)]
Merging r230146:

------------------------------------------------------------------------
r230146 | Matthew.Arsenault | 2015-02-21 16:29:00 -0500 (Sat, 21 Feb 2015) | 2 lines

R600/SI: Fix mad*k definitions

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236021 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229752:
Tom Stellard [Tue, 28 Apr 2015 19:12:16 +0000 (19:12 +0000)]
Merging r229752:

------------------------------------------------------------------------
r229752 | marek.olsak | 2015-02-18 17:12:45 -0500 (Wed, 18 Feb 2015) | 10 lines

R600/SI: Fix READLANE and WRITELANE lane select for VI

VOP2 declares vsrc1, but VOP3 declares src1.
We can't use the same "ins" if the operands have different names in VOP2
and VOP3 encodings.

This fixes a hang in geometry shaders which spill M0 on VI.
(BTW it doesn't look like M0 needs spilling and the spilling seems
duplicated 3 times)

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236020 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229751:
Tom Stellard [Tue, 28 Apr 2015 19:12:14 +0000 (19:12 +0000)]
Merging r229751:

------------------------------------------------------------------------
r229751 | marek.olsak | 2015-02-18 17:12:41 -0500 (Wed, 18 Feb 2015) | 2 lines

R600/SI: Simplify verification of AMDGPU::OPERAND_REG_INLINE_C

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236019 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229750:
Tom Stellard [Tue, 28 Apr 2015 19:12:12 +0000 (19:12 +0000)]
Merging r229750:

------------------------------------------------------------------------
r229750 | marek.olsak | 2015-02-18 17:12:37 -0500 (Wed, 18 Feb 2015) | 4 lines

R600/SI: Remove explicit VOP operand checking

This should be handled by the OperandType checking.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236018 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229507:
Tom Stellard [Tue, 28 Apr 2015 19:12:11 +0000 (19:12 +0000)]
Merging r229507:

------------------------------------------------------------------------
r229507 | thomas.stellard | 2015-02-17 11:36:00 -0500 (Tue, 17 Feb 2015) | 2 lines

R600/SI: Extend private extload pattern to include zext loads

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236017 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229239:
Tom Stellard [Tue, 28 Apr 2015 19:12:08 +0000 (19:12 +0000)]
Merging r229239:

------------------------------------------------------------------------
r229239 | Matthew.Arsenault | 2015-02-13 23:30:08 -0500 (Fri, 13 Feb 2015) | 4 lines

R600/SI: Implement correct f64 fdiv

This version passes the OpenCL conformance test.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@236016 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r232943:
Daniel Sanders [Tue, 28 Apr 2015 09:39:55 +0000 (09:39 +0000)]
Merging r232943:
------------------------------------------------------------------------
r232943 | petarj | 2015-03-23 12:28:13 +0000 (Mon, 23 Mar 2015) | 10 lines

Fix sign extension for MIPS64 in makeLibCall function

Fixing sign extension in makeLibCall for MIPS64. In MIPS64 architecture all
32 bit arguments (int, unsigned int, float 32 (soft float)) must be sign
extended. This fixes test "MultiSource/Applications/oggenc/".

Patch by Strahinja Petrovic.

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

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235973 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228765:
Daniel Sanders [Tue, 28 Apr 2015 09:39:13 +0000 (09:39 +0000)]
Merging r228765:
------------------------------------------------------------------------
r228765 | petarj | 2015-02-10 23:30:14 +0000 (Tue, 10 Feb 2015) | 12 lines

Fix makeLibCall argument (signed) in SoftenFloatRes_XINT_TO_FP function

The isSigned argument of makeLibCall function was hard-coded to false
(unsigned). This caused zero extension on MIPS64 soft float.
As the result SingleSource/Benchmarks/Stanford/FloatMM test and
SingleSource/UnitTests/2005-07-17-INT-To-FP test failed.
The solution was to use the proper argument.

Patch by Strahinja Petrovic.

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

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235972 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r231237:
Daniel Sanders [Mon, 27 Apr 2015 15:07:42 +0000 (15:07 +0000)]
Merging r231237:
------------------------------------------------------------------------
r231237 | vkalintiris | 2015-03-04 12:10:18 +0000 (Wed, 04 Mar 2015) | 6 lines

[mips] Specify the correct value type when combining a CMovFP node.

This commit fixes a bug introduced in r230956 where we were creating
CMovFP_{T,F} nodes with multiple return value types (one for each operand).
With this change the return value type of the new node is the same as the
value type of the True/False operands of the original node.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235888 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r230956:
Daniel Sanders [Mon, 27 Apr 2015 14:57:52 +0000 (14:57 +0000)]
Merging r230956:
------------------------------------------------------------------------
r230956 | vkalintiris | 2015-03-02 12:47:32 +0000 (Mon, 02 Mar 2015) | 10 lines

[mips] Optimize conditional moves where RHS is zero.

Summary:
When the RHS of a conditional move node is zero, we can utilize the $zero
register by inverting the conditional move instruction and by swapping the
order of its True/False operands.

Reviewers: dsanders

Differential Revision: http://reviews.llvm.org/D7945
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235886 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r230500:
Daniel Sanders [Mon, 27 Apr 2015 14:50:09 +0000 (14:50 +0000)]
Merging r230500:
------------------------------------------------------------------------
r230500 | vmedic | 2015-02-25 15:24:37 +0000 (Wed, 25 Feb 2015) | 1 line

[MIPS]Multiple and add instructions for Mips are currently available in mips32r2/mips64r2 and later but should also be available in mips4, mips5, and mips64. This patch fixes the requested features and updates the corresponding test files.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235885 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228403:
Daniel Sanders [Mon, 27 Apr 2015 14:41:51 +0000 (14:41 +0000)]
Merging r228403:
------------------------------------------------------------------------
r228403 | dsanders | 2015-02-06 16:37:30 +0000 (Fri, 06 Feb 2015) | 2 lines

[mips] Fix FileCheck prefixes with whitespace between 'CHECK' and ':'

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235884 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r233904:
Daniel Sanders [Mon, 27 Apr 2015 14:31:46 +0000 (14:31 +0000)]
Merging r233904:
------------------------------------------------------------------------
r233904 | vkalintiris | 2015-04-02 11:14:54 +0100 (Thu, 02 Apr 2015) | 9 lines

[mips] Make sure that we don't adjust the stack pointer by zero amount.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D8638
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235883 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r232382:
Daniel Sanders [Mon, 27 Apr 2015 13:36:41 +0000 (13:36 +0000)]
Merging r232382:
------------------------------------------------------------------------
r232382 | petarj | 2015-03-16 15:01:09 +0000 (Mon, 16 Mar 2015) | 13 lines

[MIPS] Fix justify error for small structures

Fix justify error for small structures bigger than 32 bits in fixed
arguments for MIPS64 big endian. There was a problem when small structures
are passed as fixed arguments. The structures that are bigger than 32 bits
but smaller than 64 bits were not left justified properly on MIPS64 big
endian. This is fixed by shifting the value to make it left justified when
appropriate.

Patch by Aleksandar Beserminji.

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

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235879 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r230748:
Daniel Sanders [Mon, 27 Apr 2015 13:07:43 +0000 (13:07 +0000)]
Merging r230748:
------------------------------------------------------------------------
r230748 | tomatabacu | 2015-02-27 10:44:02 +0000 (Fri, 27 Feb 2015) | 11 lines

[mips] Remove redundant periods from -mattr=help descriptions for MIPS.

Summary: Also fixes an infringement of the 80-column limit rule.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D7910
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235876 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r230742:
Daniel Sanders [Mon, 27 Apr 2015 12:56:05 +0000 (12:56 +0000)]
Merging r230742:
------------------------------------------------------------------------
r230742 | vkalintiris | 2015-02-27 09:01:39 +0000 (Fri, 27 Feb 2015) | 12 lines

[mips] Account for constant-zero operands in ADDE nodes.

Summary:
We identify the cases where the operand to an ADDE node is a constant
zero. In such cases, we can avoid generating an extra ADDu instruction
disguised as an identity move alias (ie. addu $r, $r, 0 --> move $r, $r).

Reviewers: dsanders

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D7906
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235874 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r230657:
Daniel Sanders [Mon, 27 Apr 2015 12:22:47 +0000 (12:22 +0000)]
Merging r230657:
------------------------------------------------------------------------
r230657 | petarj | 2015-02-26 18:35:15 +0000 (Thu, 26 Feb 2015) | 13 lines

Fix justify error for small structures in varargs for MIPS64BE

There was a problem when passing structures as variable arguments.
The structures smaller than 64 bit were not left justified on MIPS64
big endian. This is now fixed by shifting the value to make it left-
justified when appropriate.

This fixes the bug http://llvm.org/bugs/show_bug.cgi?id=21608

Patch by Aleksandar Beserminji.

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

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235872 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r230235:
Daniel Sanders [Mon, 27 Apr 2015 12:15:29 +0000 (12:15 +0000)]
Merging r230235:
------------------------------------------------------------------------
r230235 | dsanders | 2015-02-23 17:22:16 +0000 (Mon, 23 Feb 2015) | 16 lines

[mips] Honour -mno-odd-spreg for vector insert/extract when MSA is enabled.

Summary:
-mno-odd-spreg prohibits the use of odd-numbered single-precision floating
point registers. However, vector insert/extract was still using them when
manipulating the subregisters of an MSA register. Fixed this by ensuring
that insertion/extraction is only performed on even-numbered vector
registers when -mno-odd-spreg is given.

Reviewers: vmedic, sstankovic

Reviewed By: sstankovic

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D7672
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235870 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229675:
Daniel Sanders [Mon, 27 Apr 2015 12:08:26 +0000 (12:08 +0000)]
Merging r229675:
------------------------------------------------------------------------
r229675 | vkalintiris | 2015-02-18 14:57:05 +0000 (Wed, 18 Feb 2015) | 7 lines

[mips] Avoid redundant sign extension of the result of binary bitwise instructions.

Reviewers: dsanders

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D7581
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235869 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227430:
Daniel Sanders [Mon, 27 Apr 2015 11:59:49 +0000 (11:59 +0000)]
Merging r227430:
------------------------------------------------------------------------
r227430 | vmedic | 2015-01-29 11:33:41 +0000 (Thu, 29 Jan 2015) | 1 line

[Mips][Disassembler] When disassembler meets cache/pref instructions for r6 it crashes as the access to operands array is out of range. This patch adds dedicated decoder method for R6 CACHE_HINT_DESC class that properly handles decoding of these instructions.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235864 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227084:
Daniel Sanders [Mon, 27 Apr 2015 10:29:59 +0000 (10:29 +0000)]
Merging r227084:
------------------------------------------------------------------------
r227084 | vmedic | 2015-01-26 10:33:43 +0000 (Mon, 26 Jan 2015) | 1 line

When disassembler meets compact jump instructions for r6 it crashes as the access to operands array is out of range. This patch removes dedicated decoder method that wrongly handles decoding of these instructions.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235859 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227269:
Daniel Sanders [Mon, 27 Apr 2015 10:20:08 +0000 (10:20 +0000)]
Merging r227269:
------------------------------------------------------------------------
r227269 | petarj | 2015-01-27 23:30:18 +0000 (Tue, 27 Jan 2015) | 7 lines

[mips] Use __clear_cache builtin instead of cacheflush()

Use __clear_cache builtin instead of cacheflush() in
Unix Memory::InvalidateInstructionCache().

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

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235858 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r226905:
Daniel Sanders [Mon, 27 Apr 2015 09:44:39 +0000 (09:44 +0000)]
Merging r226905:
------------------------------------------------------------------------
r226905 | tomatabacu | 2015-01-23 10:40:19 +0000 (Fri, 23 Jan 2015) | 18 lines

[mips] Add new error message and improve testing for parsing the .module directive.

Summary:
We used to silently ignore any empty .module's and we used to give an error saying that we found
an "unexpected token at start of statement" when the value of the option wasn't an identifier (e.g. if it was a number).

We now give an error saying that we "expected .module option identifier" in both of those cases.

I also fixed the other tests in mips-abi-bad.s, which all seemed to be broken.

Reviewers: dsanders

Reviewed By: dsanders

Subscribers: llvm-commits

Differential Revision: http://reviews.llvm.org/D7095
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235856 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r226652:
Daniel Sanders [Mon, 27 Apr 2015 09:42:44 +0000 (09:42 +0000)]
Merging r226652:
------------------------------------------------------------------------
r226652 | vmedic | 2015-01-21 10:47:36 +0000 (Wed, 21 Jan 2015) | 1 line

[Mips][Disassembler]When disassembler meets load/store from coprocessor 2 instructions for mips r6 it crashes as the access to operands array is out of range. This patch adds dedicated decoder method that properly handles decoding of these instructions.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235855 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r226409:
Daniel Sanders [Mon, 27 Apr 2015 08:55:45 +0000 (08:55 +0000)]
Merging r226409:
------------------------------------------------------------------------
r226409 | dsanders | 2015-01-18 18:43:10 +0000 (Sun, 18 Jan 2015) | 2 lines

[mips] 'CHECK :' is not a valid check directive. Fixed.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235850 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r226408:
Daniel Sanders [Mon, 27 Apr 2015 08:53:54 +0000 (08:53 +0000)]
Merging r226408:
------------------------------------------------------------------------
r226408 | dsanders | 2015-01-18 18:38:36 +0000 (Sun, 18 Jan 2015) | 9 lines

[mips] Make whitespace in disassembler tests more consistent. NFC.

The tests for the ISA's should now be approximately diffable. That is, the
output of 'diff valid-mips1.txt valid-mips2.txt' should be emit the lines
for instructions that were added/removed to/from MIPS-I by MIPS-II. This
doesn't work perfectly at the moment due to ordering differences but it
should be close.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235849 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r226407:
Daniel Sanders [Mon, 27 Apr 2015 08:52:15 +0000 (08:52 +0000)]
Merging r226407:
------------------------------------------------------------------------
r226407 | dsanders | 2015-01-18 18:21:19 +0000 (Sun, 18 Jan 2015) | 3 lines

[mips] Make whitespace of disassembler tests more consistent by removing blank lines. NFC.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235848 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r226166:
Daniel Sanders [Mon, 27 Apr 2015 08:51:28 +0000 (08:51 +0000)]
Merging r226166:
------------------------------------------------------------------------
r226166 | vmedic | 2015-01-15 14:18:12 +0000 (Thu, 15 Jan 2015) | 1 line

Add disassembler tests for mips64r6 platform. There are no functional changes.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235847 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r226165:
Daniel Sanders [Mon, 27 Apr 2015 08:50:58 +0000 (08:50 +0000)]
Merging r226165:
------------------------------------------------------------------------
r226165 | vmedic | 2015-01-15 14:11:38 +0000 (Thu, 15 Jan 2015) | 1 line

Add disassembler tests for mips32r6 platform. There are no functional changes.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235846 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r226164:
Daniel Sanders [Mon, 27 Apr 2015 08:50:30 +0000 (08:50 +0000)]
Merging r226164:
------------------------------------------------------------------------
r226164 | vmedic | 2015-01-15 14:06:34 +0000 (Thu, 15 Jan 2015) | 1 line

Add disassembler tests for mips64r2 platform. There are no functional changes.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235845 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r226151:
Daniel Sanders [Mon, 27 Apr 2015 08:49:48 +0000 (08:49 +0000)]
Merging r226151:
------------------------------------------------------------------------
r226151 | vmedic | 2015-01-15 08:50:20 +0000 (Thu, 15 Jan 2015) | 1 line

Add disassembler tests for mips64 platform. There are no functional changes.
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235844 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229238:
Tom Stellard [Fri, 24 Apr 2015 01:30:56 +0000 (01:30 +0000)]
Merging r229238:

------------------------------------------------------------------------
r229238 | Matthew.Arsenault | 2015-02-13 23:24:28 -0500 (Fri, 13 Feb 2015) | 2 lines

R600/SI: Use complex operand folding for div_scale

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235686 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229236:
Tom Stellard [Fri, 24 Apr 2015 01:30:54 +0000 (01:30 +0000)]
Merging r229236:

------------------------------------------------------------------------
r229236 | Matthew.Arsenault | 2015-02-13 23:22:00 -0500 (Fri, 13 Feb 2015) | 7 lines

R600/SI: Fix implicit vcc operand to v_div_fmas_*

This should allow finally fixing the f64 fdiv implementation.

Test is disabled for VI since there seems to be a problem with one
of the buffer load instructions on it.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235685 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229235:
Tom Stellard [Fri, 24 Apr 2015 01:30:51 +0000 (01:30 +0000)]
Merging r229235:

------------------------------------------------------------------------
r229235 | Matthew.Arsenault | 2015-02-13 23:03:18 -0500 (Fri, 13 Feb 2015) | 2 lines

R600/SI: Fix schedule model for v_div_scale_{f32|f64}

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235684 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229234:
Tom Stellard [Fri, 24 Apr 2015 01:30:49 +0000 (01:30 +0000)]
Merging r229234:

------------------------------------------------------------------------
r229234 | Matthew.Arsenault | 2015-02-13 22:54:32 -0500 (Fri, 13 Feb 2015) | 2 lines

R600/SI: Really fix size of VReg_1

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235683 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229230:
Tom Stellard [Fri, 24 Apr 2015 01:05:03 +0000 (01:05 +0000)]
Merging r229230:

------------------------------------------------------------------------
r229230 | Matthew.Arsenault | 2015-02-13 22:40:35 -0500 (Fri, 13 Feb 2015) | 4 lines

R600/SI: Fix not encoding src2 for v_div_scale_{f32|f64}

This apparently got lost in the VI changes.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235678 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229228:
Tom Stellard [Thu, 23 Apr 2015 19:14:45 +0000 (19:14 +0000)]
Merging r229228:

------------------------------------------------------------------------
r229228 | Matthew.Arsenault | 2015-02-13 22:02:23 -0500 (Fri, 13 Feb 2015) | 2 lines

R600/SI: Fix VOP3b encoding on VI

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235625 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229227:
Tom Stellard [Thu, 23 Apr 2015 19:14:43 +0000 (19:14 +0000)]
Merging r229227:

------------------------------------------------------------------------
r229227 | Matthew.Arsenault | 2015-02-13 21:55:57 -0500 (Fri, 13 Feb 2015) | 2 lines

R600/SI: Fix phys reg copies in SIFoldOperands

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235624 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229226:
Tom Stellard [Thu, 23 Apr 2015 19:14:42 +0000 (19:14 +0000)]
Merging r229226:

------------------------------------------------------------------------
r229226 | Matthew.Arsenault | 2015-02-13 21:55:56 -0500 (Fri, 13 Feb 2015) | 5 lines

R600/SI: Fix copies from SGPR to VCC

This shows up without optimizations when vcc is required
to be used.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235623 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229225:
Tom Stellard [Thu, 23 Apr 2015 19:14:40 +0000 (19:14 +0000)]
Merging r229225:

------------------------------------------------------------------------
r229225 | Matthew.Arsenault | 2015-02-13 21:55:54 -0500 (Fri, 13 Feb 2015) | 4 lines

R600/SI: Add hack to copy from a VGPR to VCC

This hopefully should be fixed when VReg_1 is removed.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235622 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229223:
Tom Stellard [Thu, 23 Apr 2015 19:14:38 +0000 (19:14 +0000)]
Merging r229223:

------------------------------------------------------------------------
r229223 | Matthew.Arsenault | 2015-02-13 21:51:44 -0500 (Fri, 13 Feb 2015) | 5 lines

R600/SI: Fix size of VReg_1

This is really a 32-bit register, if we try to check the size of it,
we want 32-bits.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235621 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228848:
Tom Stellard [Wed, 22 Apr 2015 21:13:11 +0000 (21:13 +0000)]
Merging r228848:

------------------------------------------------------------------------
r228848 | thomas.stellard | 2015-02-11 12:11:48 -0500 (Wed, 11 Feb 2015) | 2 lines

R600/SI: Fix -march in test

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235550 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228374:
Tom Stellard [Wed, 22 Apr 2015 21:13:10 +0000 (21:13 +0000)]
Merging r228374:

------------------------------------------------------------------------
r228374 | michel.daenzer | 2015-02-05 21:51:29 -0500 (Thu, 05 Feb 2015) | 4 lines

R600/SI: Amend a test to ensure WQM is enabled for LDS in pixel shaders

Reviewed-by: Tom Stellard <tom@stellard.net>
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235549 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228373:
Tom Stellard [Wed, 22 Apr 2015 21:13:09 +0000 (21:13 +0000)]
Merging r228373:

------------------------------------------------------------------------
r228373 | michel.daenzer | 2015-02-05 21:51:25 -0500 (Thu, 05 Feb 2015) | 8 lines

R600/SI: Don't enable WQM for V_INTERP_* instructions v2

Doesn't seem necessary anymore. I think this was mostly compensating for
not enabling WQM for texture sampling instructions.

v2: Add test coverage
Reviewed-by: Tom Stellard <tom@stellard.net>
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235548 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228372:
Tom Stellard [Wed, 22 Apr 2015 21:13:07 +0000 (21:13 +0000)]
Merging r228372:

------------------------------------------------------------------------
r228372 | michel.daenzer | 2015-02-05 21:51:20 -0500 (Thu, 05 Feb 2015) | 12 lines

R600/SI: Also enable WQM for image opcodes which calculate LOD v3

If whole quad mode isn't enabled for these, the level of detail is
calculated incorrectly for pixels along diagonal triangle edges, causing
artifacts.

v2: Use a TSFlag instead of lots of switch cases
v3: Add test coverage

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88642
Reviewed-by: Tom Stellard <tom@stellard.net>
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235547 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228273:
Tom Stellard [Wed, 22 Apr 2015 21:13:04 +0000 (21:13 +0000)]
Merging r228273:

------------------------------------------------------------------------
r228273 | Matthew.Arsenault | 2015-02-05 01:05:13 -0500 (Thu, 05 Feb 2015) | 2 lines

R600/SI: Fix i64 truncate to i1

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235546 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228190:
Tom Stellard [Mon, 20 Apr 2015 20:05:00 +0000 (20:05 +0000)]
Merging r228190:

------------------------------------------------------------------------
r228190 | thomas.stellard | 2015-02-04 15:49:52 -0500 (Wed, 04 Feb 2015) | 2 lines

R600/SI: Expand misaligned 16-bit memory accesses

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235340 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228189:
Tom Stellard [Mon, 20 Apr 2015 20:04:59 +0000 (20:04 +0000)]
Merging r228189:

------------------------------------------------------------------------
r228189 | thomas.stellard | 2015-02-04 15:49:51 -0500 (Wed, 04 Feb 2015) | 9 lines

R600/SI: Make more store operations legal

v2i32, i32, trunc i32 to i16, and truc i32 to i8 stores are legal for
all address spaces.  We had marked them as custom in order to lower
them for the private address space, but this is no longer necessary.

This enables lowering of misaligned stores of these types in the
DAGLegalizer.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235339 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228188:
Tom Stellard [Mon, 20 Apr 2015 20:04:57 +0000 (20:04 +0000)]
Merging r228188:

------------------------------------------------------------------------
r228188 | thomas.stellard | 2015-02-04 15:49:49 -0500 (Wed, 04 Feb 2015) | 5 lines

R600: Don't promote i64 stores to v2i32 during DAG legalization

We take care of this during instruction selection now.  This
fixes a potential infinite loop when lowering misaligned stores.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235338 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228040:
Tom Stellard [Mon, 20 Apr 2015 20:04:54 +0000 (20:04 +0000)]
Merging r228040:

------------------------------------------------------------------------
r228040 | marek.olsak | 2015-02-03 16:53:27 -0500 (Tue, 03 Feb 2015) | 2 lines

R600/SI: Remove the -CHECK suffix from all FileCheck prefixes in LIT
tests

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235337 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228039:
Tom Stellard [Mon, 20 Apr 2015 20:04:48 +0000 (20:04 +0000)]
Merging r228039:

------------------------------------------------------------------------
r228039 | marek.olsak | 2015-02-03 16:53:08 -0500 (Tue, 03 Feb 2015) | 6 lines

R600/SI: Remove useless patterns in VALU which are already covered by SALU

Also remove hasPostISelHook=1 from V_LSHL_B32. It's defined by InstSI already.

Tested-by: Michel Dänzer <michel.daenzer@amd.com>
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235336 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228038:
Tom Stellard [Mon, 20 Apr 2015 18:06:16 +0000 (18:06 +0000)]
Merging r228038:

------------------------------------------------------------------------
r228038 | marek.olsak | 2015-02-03 16:53:05 -0500 (Tue, 03 Feb 2015) | 10 lines

R600/SI: Rewrite VOP1InstSI to contain a pseudo and _si opcode

What this does is that if you accidentally select these instructions on VI,
the code generation will fail, because the pseudo -> _vi mapping will be
undefined.

The idea is to be able to catch possible future bugs easily.

Tested-by: Michel Dänzer <michel.daenzer@amd.com>
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235319 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r228037:
Tom Stellard [Mon, 20 Apr 2015 18:06:14 +0000 (18:06 +0000)]
Merging r228037:

------------------------------------------------------------------------
r228037 | marek.olsak | 2015-02-03 16:53:01 -0500 (Tue, 03 Feb 2015) | 6 lines

R600/SI: Fix B64 VALU shifts on VI

SI only has standard versions. VI only has REV versions.

Tested-by: Michel Dänzer <michel.daenzer@amd.com>
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235318 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227990:
Tom Stellard [Mon, 20 Apr 2015 18:06:11 +0000 (18:06 +0000)]
Merging r227990:

------------------------------------------------------------------------
r227990 | marek.olsak | 2015-02-03 12:38:12 -0500 (Tue, 03 Feb 2015) | 14 lines

R600/SI: Don't generate non-existent LSHL, LSHR, ASHR B32 variants on VI

This can happen when a REV instruction is commuted.

The trick is not to define the _vi versions of instructions, which has these
consequences:
- code generation will always fail if a pseudo cannot be lowered
  (very useful to catch bugs where an unsupported instruction somehow makes
   it to the printer)
- ability to query if a pseudo can be lowered, which is done in commuteOpcode
  to prevent REV from commuting to non-REV on VI

Tested-by: Michel Dänzer <michel.daenzer@amd.com>
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235317 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227989:
Tom Stellard [Mon, 20 Apr 2015 18:06:09 +0000 (18:06 +0000)]
Merging r227989:

------------------------------------------------------------------------
r227989 | marek.olsak | 2015-02-03 12:38:05 -0500 (Tue, 03 Feb 2015) | 10 lines

R600/SI: Remove VOP2_REV definitions from target-specific instructions

The getCommute* functions are only used with pseudos, so this commit doesn't
change anything.

The issue with missing non-rev versions of shift instructions on VI will fixed
separately.

Tested-by: Michel Dänzer <michel.daenzer@amd.com>
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235316 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227988:
Tom Stellard [Mon, 20 Apr 2015 18:06:07 +0000 (18:06 +0000)]
Merging r227988:

------------------------------------------------------------------------
r227988 | marek.olsak | 2015-02-03 12:38:01 -0500 (Tue, 03 Feb 2015) | 11 lines

R600/SI: Trivial instruction definition corrections for VI (v2)

- V_MAC_LEGACY_F32 exists on VI, but it's VOP3-only.

- Define CVT_PK opcodes which are different between SI and VI. These are
  unused. The idea is to define all chip differences.

v2: keep V_MUL_LO_U32

Tested-by: Michel Dänzer <michel.daenzer@amd.com>
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235315 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227987:
Tom Stellard [Fri, 17 Apr 2015 16:59:33 +0000 (16:59 +0000)]
Merging r227987:

------------------------------------------------------------------------
r227987 | marek.olsak | 2015-02-03 12:37:57 -0500 (Tue, 03 Feb 2015) | 12 lines

R600/SI: Determine target-specific encoding of READLANE and WRITELANE early v2

These are VOP2 on SI and VOP3 on VI, and their pseudos are neither, which can
be a problem. In order to make isVOP2 and isVOP3 queries behave as expected,
the encoding must be determined first.

This doesn't fix any known issue, but better safe than sorry.

v2: add and use getMCOpcodeFromPseudo

Tested-by: Michel Dänzer <michel.daenzer@amd.com>
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235208 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227986:
Tom Stellard [Fri, 17 Apr 2015 16:59:32 +0000 (16:59 +0000)]
Merging r227986:

------------------------------------------------------------------------
r227986 | marek.olsak | 2015-02-03 12:37:52 -0500 (Tue, 03 Feb 2015) | 9 lines

R600/SI: Fix dependency between instruction writing M0 and S_SENDMSG on VI (v2)

This fixes a hang when using an empty geometry shader.

v2: - don't add s_nop when followed by s_waitcnt
    - comestic changes

Tested-by: Michel Dänzer <michel.daenzer@amd.com>
------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235207 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227822:
Tom Stellard [Fri, 17 Apr 2015 16:59:29 +0000 (16:59 +0000)]
Merging r227822:

------------------------------------------------------------------------
r227822 | thomas.stellard | 2015-02-02 13:02:28 -0500 (Mon, 02 Feb 2015) | 6 lines

R600/SI: 64-bit and larger memory access must be at least 4-byte aligned

This is true for SI only. CI+ supports unaligned memory accesses,
but this requires driver support, so for now we disallow unaligned
accesses for all GCN targets.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235206 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227482:
Tom Stellard [Fri, 17 Apr 2015 16:59:26 +0000 (16:59 +0000)]
Merging r227482:

------------------------------------------------------------------------
r227482 | Matthew.Arsenault | 2015-01-29 14:34:18 -0500 (Thu, 29 Jan 2015) | 2 lines

R600/SI: Fix tonga's basic scheduling model

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@235205 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoCherry-pick r231227: fix PR22408.
Kristof Beyls [Wed, 8 Apr 2015 07:19:32 +0000 (07:19 +0000)]
Cherry-pick r231227: fix PR22408.

Original message from r231227:
Fix PR22408 - LLVM producing AArch64 TLS relocations that GNU linkers cannot handle yet.

As is described at http://llvm.org/bugs/show_bug.cgi?id=22408, the GNU linkers
ld.bfd and ld.gold currently only support a subset of the whole range of AArch64
ELF TLS relocations. Furthermore, they assume that some of the code sequences to
access thread-local variables are produced in a very specific sequence.
When the sequence is not as the linker expects, it can silently mis-relaxe/mis-optimize
the instructions.
Even if that wouldn't be the case, it's good to produce the exact sequence,
as that ensures that linkers can perform optimizing relaxations.

This patch:

* implements support for 16MiB TLS area size instead of 4GiB TLS area size. Ideally clang
  would grow an -mtls-size option to allow support for both, but that's not part of this patch.
* by default doesn't produce local dynamic access patterns, as even modern ld.bfd and ld.gold
  linkers do not support the associated relocations. An option (-aarch64-elf-ldtls-generation)
  is added to enable generation of local dynamic code sequence, but is off by default.
* makes sure that the exact expected code sequence for local dynamic and general dynamic
  accesses is produced, by making use of a new pseudo instruction. The patch also removes
  two (AArch64ISD::TLSDESC_BLR, AArch64ISD::TLSDESC_CALL) pre-existing AArch64-specific pseudo
  SDNode instructions that are superseded by the new one (TLSDESC_CALLSEQ).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@234393 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoCherry-pick r233351, r233353, r233355: fix PR22304.
Pawel Bylica [Tue, 7 Apr 2015 07:58:46 +0000 (07:58 +0000)]
Cherry-pick r233351, r233353, r233355: fix PR22304.

Original message from r233351:
Fix a bug in SelectionDAG scheduling backtracking code: PR22304.

It can happen (by line CurSU->isPending = true; // This SU is not in
AvailableQueue right now.) that a SUnit is mark as available but is
not in the AvailableQueue. For SUnit being selected for scheduling
both conditions must be met.

This patch mainly defensively protects from invalid removing a node
from a queue. Sometimes nodes are marked isAvailable but are not in
the queue because they have been defered due to some hazard.

The other two commits move a test from CodeGen/Generic to Codegen/X86.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@234303 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r233153 and r233584:
Paul Robinson [Thu, 2 Apr 2015 00:15:35 +0000 (00:15 +0000)]
Merging r233153 and r233584:
------------------------------------------------------------------------
r233153 | probinson | 2015-03-24 17:10:24 -0700 (Tue, 24 Mar 2015) | 7 lines

'optnone' should not disable DAG combiner.

Reverts the code change from r221168 and the relevant test.
It was a mistake to disable the combiner, and based on the ultimate
definition of 'optnone' we shouldn't have considered the test case
as failing in the first place.

------------------------------------------------------------------------
r233584 | probinson | 2015-03-30 12:37:44 -0700 (Mon, 30 Mar 2015) | 9 lines

Verify 'optnone' can run DAG combiner when appropriate.

Adds a test to verify the behavior that r233153 restored: 'optnone'
does not spuriously disable the DAG combiner, and in fact there are
cases where the DAG combiner must run (even at -O0 or 'optnone') in
order for codegen to succeed.

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

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@233871 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227214:
Tom Stellard [Tue, 31 Mar 2015 19:12:49 +0000 (19:12 +0000)]
Merging r227214:

------------------------------------------------------------------------
r227214 | marek.olsak | 2015-01-27 12:27:15 -0500 (Tue, 27 Jan 2015) | 2
lines

R600/SI: Enable all tests that pass on VI without changes

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@233734 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227213:
Tom Stellard [Tue, 31 Mar 2015 19:12:07 +0000 (19:12 +0000)]
Merging r227213:

------------------------------------------------------------------------
r227213 | marek.olsak | 2015-01-27 12:25:15 -0500 (Tue, 27 Jan 2015) | 2 lines

R600/SI: Fix MIN3/MAX3 on VI, define MED3

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@233733 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227212:
Tom Stellard [Tue, 31 Mar 2015 19:12:06 +0000 (19:12 +0000)]
Merging r227212:

------------------------------------------------------------------------
r227212 | marek.olsak | 2015-01-27 12:25:11 -0500 (Tue, 27 Jan 2015) | 9 lines

R600/SI: Don't set patterns for chip-specific instructions while having pseudos

Only pseudos have patterns on them.

Also don't set the asm string for VINTRP_Pseudo. All pseudos should have empty
asm.

This matches what all other multiclasses do.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@233732 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227211:
Tom Stellard [Tue, 31 Mar 2015 19:12:04 +0000 (19:12 +0000)]
Merging r227211:

------------------------------------------------------------------------
r227211 | marek.olsak | 2015-01-27 12:25:07 -0500 (Tue, 27 Jan 2015) | 5 lines

R600/SI: Add VI versions of LDS atomics

Each class is split into two: one adds let statements around non-pseudos,
and the other one specifies the parameters.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@233731 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227210:
Tom Stellard [Tue, 31 Mar 2015 19:12:02 +0000 (19:12 +0000)]
Merging r227210:

------------------------------------------------------------------------
r227210 | marek.olsak | 2015-01-27 12:25:02 -0500 (Tue, 27 Jan 2015) | 2 lines

R600/SI: Add VI versions of MUBUF atomics

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@233730 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227209:
Tom Stellard [Tue, 31 Mar 2015 19:12:00 +0000 (19:12 +0000)]
Merging r227209:

------------------------------------------------------------------------
r227209 | marek.olsak | 2015-01-27 12:24:58 -0500 (Tue, 27 Jan 2015) | 4 lines

R600/SI: Add VI versions of MUBUF loads and stores

This enables a lot of existing patterns for VI.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@233729 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227208:
Tom Stellard [Tue, 31 Mar 2015 19:11:56 +0000 (19:11 +0000)]
Merging r227208:

------------------------------------------------------------------------
r227208 | marek.olsak | 2015-01-27 12:24:54 -0500 (Tue, 27 Jan 2015) | 7 lines

R600/SI: Add pseudos for MUBUF loads and stores

This defines the SI versions only, so it shouldn't change anything.

There are no changes other than using the new multiclasses, adding missing
mayLoad/mayStore, and formatting fixes.

------------------------------------------------------------------------

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@233728 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[release_36] Cherry-pick r231219.
Andrea Di Biagio [Fri, 20 Mar 2015 12:28:49 +0000 (12:28 +0000)]
[release_36] Cherry-pick r231219.

Original message:
[DAGCombine] Fix a bug in a BUILD_VECTOR combine

When trying to convert a BUILD_VECTOR into a shuffle, we try to split a single source vector that is twice as wide as the destination vector.
We can not do this when we also need the zero vector to create a blend.
This fixes PR22774.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@232807 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[release_36] Cherry-pick r232046.
Andrea Di Biagio [Fri, 20 Mar 2015 11:18:14 +0000 (11:18 +0000)]
[release_36] Cherry-pick r232046.

Original message:
[X86] Fix wrong target specific combine on SETCC nodes.

Part of the folding logic implemented by function 'PerformISDSETCCCombine'
only worked under the assumption that the condition code in input could have
been either SETNE or SETEQ.
Unfortunately that assumption was incorrect, and in some cases the algorithm
ended up incorrectly folding SETCC nodes.

The incorrect folding only affected SETCC dag nodes where:
 - one of the operands was a build_vector of all zeroes;
 - the other operand was a SIGN_EXTEND from a vector of MVT:i1 elements;
 - the condition code was neither SETNE nor SETEQ.

Example:
  (setcc (v4i32 (sign_extend v4i1:%A)), (v4i32 VectorOfAllZeroes), setge)

Before this patch, the entire dag node sequence from the example was
incorrectly folded to node %A.

With this patch, the dag node sequence is folded to a
  (xor %A, (v4i1 VectorOfAllOnes)).

Added test setcc-combine.ll.

Thanks to Greg Bedwell for spotting this issue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@232804 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[release_36] Cherry-pick r231601.
Andrea Di Biagio [Fri, 20 Mar 2015 10:36:35 +0000 (10:36 +0000)]
[release_36] Cherry-pick r231601.

Original commit message:
[X86][AVX] Fix wrong lowering of VPERM2X128 nodes

There were cases where the backend computed a wrong permute mask for a VPERM2X128 node.

Example:
\code
define <8 x float> @foo(<8 x float> %a, <8 x float> %b) {
  %shuffle = shufflevector <8 x float> %a, <8 x float> %b, <8 x i32> <i32 undef, i32 undef, i32 6, i32 7, i32 undef, i32 undef, i32 6, i32 7>
  ret <8 x float> %shuffle
}
\code end

Before this patch, llc (with -mattr=+avx) emitted the following vperm2f128:
  vperm2f128 $0, %ymm0, %ymm0, %ymm0  # ymm0 = ymm0[0,1,0,1]

With this patch, llc emits a vperm2f128 with a correct permute mask:
  vperm2f128 $17, %ymm0, %ymm0, %ymm0  # ymm0 = ymm0[2,3,2,3]

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@232803 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[release_36] Cherry-pick r232179.
Andrea Di Biagio [Thu, 19 Mar 2015 19:50:11 +0000 (19:50 +0000)]
[release_36] Cherry-pick r232179.

Original commit message:
[X86][AVX] Fix wrong lowering of v4x64 shuffles into concat_vector plus extract_subvector nodes.

This patch fixes a bug in the shuffle lowering logic implemented by function
'lowerV2X128VectorShuffle'.

The are few cases where function 'lowerV2X128VectorShuffle' wrongly expands a
shuffle of two v4X64 vectors into a CONCAT_VECTORS of two EXTRACT_SUBVECTOR
nodes. The problematic expansion only occurs when the shuffle mask M has an
'undef' element at position 2, and M is equivalent to mask <0,1,4,5>.
In that case, the algorithm propagates the wrong vector to one of the two
new EXTRACT_SUBVECTOR nodes.

Example:
;;
define <4 x double> @test(<4 x double> %A, <4 x double> %B) {
entry:
  %0 = shufflevector <4 x double> %A, <4 x double> %B, <4 x i32><i32 undef, i32 1, i32 undef, i32 5>
  ret <4 x double> %0
}
;;

Before this patch, llc (-mattr=+avx) generated:
  vinsertf128 $1, %xmm0, %ymm0, %ymm0

With this patch, llc correctly generates:
  vinsertf128 $1, %xmm1, %ymm0, %ymm0

Added test lower-vec-shuffle-bug.ll

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@232753 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerge r232189 from trunk to 3.6
Sanjoy Das [Mon, 16 Mar 2015 21:15:49 +0000 (21:15 +0000)]
Merge r232189 from trunk to 3.6

Original commit message:

Summary:
ScalarEvolutionExpander assumes that the header block of a loop is a
legal place to have a use for a phi node.  This is true only for phis
that are either in the header or dominate the header block, but it is
not true for phi nodes that are strictly internal to the loop body.

This change teaches ScalarEvolutionExpander to place uses of PHI nodes
in the basic block the PHI nodes belong to.  This is always legal, and
`hoistIVInc` ensures that the said position dominates `IsomorphicInc`.

Reviewers: atrick

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@232416 91177308-0d34-0410-b5e6-96231b3b80d8

9 years ago[release_36] Cherry-pick r232085.
Quentin Colombet [Thu, 12 Mar 2015 22:53:04 +0000 (22:53 +0000)]
[release_36] Cherry-pick r232085.

Original commit message:
[X86] Fix a regression introduced by r223641.
The permps and permd instructions have their operands swapped compared to the
intrinsic definition. Therefore, they do not fall into the INTR_TYPE_2OP
category.

I did not create a new category for those two, as they are the only one AFAICT
in that case.

<rdar://problem/20108262>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@232118 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227089:
Dimitry Andric [Tue, 10 Mar 2015 22:03:11 +0000 (22:03 +0000)]
Merging r227089:
------------------------------------------------------------------------
r227089 | vkalintiris | 2015-01-26 13:33:22 +0100 (Mon, 26 Jan 2015) | 15 lines

[mips] Enable arithmetic and binary operations for the i128 data type.

Summary:
This patch adds support for some operations that were missing from
128-bit integer types (add/sub/mul/sdiv/udiv... etc.). With these
changes we can support the __int128_t and __uint128_t data types
from C/C++.

Depends on D7125

Reviewers: dsanders

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@231860 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r227087:
Dimitry Andric [Tue, 10 Mar 2015 21:59:18 +0000 (21:59 +0000)]
Merging r227087:
------------------------------------------------------------------------
r227087 | vkalintiris | 2015-01-26 13:04:40 +0100 (Mon, 26 Jan 2015) | 7 lines

[mips] Add tests for bitwise binary and integer arithmetic operators.

Reviewers: dsanders

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@231857 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r231563 from adibiagio:
Joerg Sonnenberger [Mon, 9 Mar 2015 21:12:42 +0000 (21:12 +0000)]
Merging r231563 from adibiagio:

[DAGCombiner] Fix wrong folding of AND dag nodes.

This patch fixes the logic in the DAGCombiner that folds an AND node according
to rule: (and (X (load V)), C) -> (X (load V))

An AND between a vector load 'X' and a constant build_vector 'C' can be folded
into the load itself only if we can prove that the AND operation is redundant.
The algorithm implemented by 'visitAND' firstly computes the splat value 'S'
from C, and then checks if S has the lower 'B' bits set (where B is the size in
bits of the vector element type). The algorithm takes into account also the
'undef' bits in the splat mask.

Unfortunately, the algorithm only worked under the assumption that the size of S
is a multiple of the vector element type. With this patch, we conservatively
avoid folding the AND if the splat bits are not compatible with the vector
element type.

Added X86 test and-load-fold.ll

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@231702 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r230058 by d0k:
Joerg Sonnenberger [Mon, 9 Mar 2015 20:26:36 +0000 (20:26 +0000)]
Merging r230058 by d0k:
LoopRotate: When reconstructing loop simplify form don't split edges
from indirectbrs.

Yet another chapter in the endless story. While this looks like we leave
the loop in a non-canonical state this replicates the logic in
LoopSimplify so it doesn't diverge from the canonical form in any way.

PR21968

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@231698 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoMerging r229911 by d0k:
Joerg Sonnenberger [Mon, 9 Mar 2015 18:07:19 +0000 (18:07 +0000)]
Merging r229911 by d0k:
MC: Allow multiple comma-separated expressions on the .uleb128
directive.

For compatiblity with GNU as. Binutils documents this as
'.uleb128 expressions'. Subtle, isn't it?

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@231675 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoBump version to 3.6.1
Tom Stellard [Wed, 4 Mar 2015 17:29:43 +0000 (17:29 +0000)]
Bump version to 3.6.1

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@231258 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRevert 224782: "Finish removing DestroySource."
Hans Wennborg [Wed, 25 Feb 2015 02:00:21 +0000 (02:00 +0000)]
Revert 224782: "Finish removing DestroySource."

Filip Pizlo pointed out that this changes the C API.

It's too late in the release process to figure out how we want to
handle this. Reverting the patch is essentially a way of buying time:
we don't change the API at the source level for now, we're not
trying to fix it with a last-minute patch with a risk of unintended
effects, and we preserve our options for fixing this in 3.6.1.

This is not ideal, but I think it's the best compromise at this stage.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@230431 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoReleaseNotes: final touch-ups
Hans Wennborg [Tue, 24 Feb 2015 17:12:04 +0000 (17:12 +0000)]
ReleaseNotes: final touch-ups

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@230346 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoReleaseNotes: add LLVMSharp & ClangSharp, by Mukul Sabharwal
Hans Wennborg [Tue, 24 Feb 2015 00:11:32 +0000 (00:11 +0000)]
ReleaseNotes: add LLVMSharp & ClangSharp, by Mukul Sabharwal

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@230287 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix typo in the release notes: mechanism -> mechanisms
Hal Finkel [Tue, 24 Feb 2015 00:04:18 +0000 (00:04 +0000)]
Fix typo in the release notes: mechanism -> mechanisms

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@230284 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoFix typo in release notes (owns -> own)
Hal Finkel [Mon, 23 Feb 2015 23:47:03 +0000 (23:47 +0000)]
Fix typo in release notes (owns -> own)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@230282 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoNote stackmap/patchpoint support for PowerPC in the release notes
Hal Finkel [Mon, 23 Feb 2015 23:29:11 +0000 (23:29 +0000)]
Note stackmap/patchpoint support for PowerPC in the release notes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@230281 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoRelease Notes: add text about garbage collection, from Philip Reames
Hans Wennborg [Mon, 23 Feb 2015 23:00:55 +0000 (23:00 +0000)]
Release Notes: add text about garbage collection, from Philip Reames

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@230277 91177308-0d34-0410-b5e6-96231b3b80d8

9 years agoAdd release notes about vectorcall support and Win64 unwind info
Reid Kleckner [Thu, 19 Feb 2015 17:51:19 +0000 (17:51 +0000)]
Add release notes about vectorcall support and Win64 unwind info

git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_36@229874 91177308-0d34-0410-b5e6-96231b3b80d8