34512 Commits

Author SHA1 Message Date
Craig Topper
73b16a70f1 [X86] Add ADX and RDSEED to Skylake processor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244396 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-08 07:31:15 +00:00
Craig Topper
bef8d8f82e Add SlowBTMem to Sandy Bridge and newer Intel CPUs. Reading through Agner Fog's table suggests there have been no improvements to these processors relative to Westmere for bit test instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244395 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-08 07:20:04 +00:00
Tom Stellard
56697dd222 AMDGPU/SI: Another attempt to fix Windows bots broken by r244372
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244383 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-08 01:11:07 +00:00
Matt Arsenault
f58d2bf088 Remove unnecessary includes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244382 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-08 00:41:53 +00:00
Matt Arsenault
8f019b2aa3 AMDGPU: Implement AMDGPUOperand::print()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244381 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-08 00:41:51 +00:00
Matt Arsenault
d3ff1cd1f5 AMDGPU/SI: Remove VCCReg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244380 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-08 00:41:48 +00:00
Matt Arsenault
f456aa53d9 AMDGPU/SI: Remove source uses of VCCReg
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244379 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-08 00:41:45 +00:00
Tom Stellard
7d83dfa8a5 AMDGPU/SI: Attempt to fix Windows bots broken by r244372
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244376 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-08 00:17:59 +00:00
Tom Stellard
945ad7d241 AMDGPU: Add pass to lower OpenCL image and sampler arguments.
The pass adds new kernel arguments for image attributes, and
resolves calls to dummy attribute and resource id getter functions.

Patch by: Zoltan Gilian

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244372 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-07 23:19:30 +00:00
Quentin Colombet
c5f0fbcb1a [AArch64][LoadStoreOptimizer] Turn a test into an assert. NFC.
At this point the given Opc must be valid, otherwise we should
not look for a matching pair to form paired load or store.

Thanks to Chad to point out this piece of code!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244366 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-07 22:40:51 +00:00
Tom Stellard
b56c34eb0e AMDGPU/SI: Use InstAlias instead of MnemonicAlias for VOPC instructions
Summary:
With InstAlias, we don't need to print the _e32 portion of the mnemonic
when we print the $dst operand.  This change makes it possible to
include vcc in the asm string when we switch VOPC over to having
implicit vcc defs.

Reviewers: arsenm

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244362 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-07 22:00:56 +00:00
Matt Arsenault
48b5b553ae AMDGPU: Assume SMRD access for constant address space
Since r243294 these are selected to SMRD and
moved later if required.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244354 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-07 20:18:34 +00:00
Chad Rosier
7f6b762785 [ARM] Remove an unused reference to MachineRegisterInfo. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244334 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-07 17:02:29 +00:00
Tom Stellard
e8ad273f98 AMDGPU/SI: Use correct encoding of vopc for VI in the assembler
Summary: We were using the SI encoding for VI.

Reviewers: arsenm

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244332 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-07 16:45:33 +00:00
Tom Stellard
98203b8215 AMDGPU/SI: v_mac_legacy_f32 does not exist on VI
Reviewers: arsenm

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244322 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-07 15:34:30 +00:00
Tom Stellard
779291b8db AMDGPU/SI: Remove unused outs parameter from VOPC TableGen classes
Reviewers: arsenm

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244321 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-07 15:34:27 +00:00
Silviu Baranga
1962b1b6b7 Fix unused variable warning introduced in r244314
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244315 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-07 12:05:46 +00:00
Silviu Baranga
441de0574a [ARM] Update ReconstructShuffle to handle mismatched types
Summary:
Port the ReconstructShuffle function from AArch64 to ARM
to handle mismatched incoming types in the BUILD_VECTOR
node.

This fixes an outstanding FIXME in the ReconstructShuffle
code.

Reviewers: t.p.northover, rengolin

Subscribers: aemerson, llvm-commits, rengolin

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244314 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-07 11:40:46 +00:00
JF Bastien
6d2f2ee4ab WebAssembly: textual emission uses expected opcode names
Summary: WebAssembly's tablegen instructions have the names WebAssembly expects, but by LLVM convention they're uppercase and suffixed with their type after an underscore. Leave the C++ code that way, but print outt he names WebAssembly expects (lowercase, no type). We could teach tablegen to do this later, maybe by using `!cast<string>(node)` in the .td files.

Reviewers: sunfish

Subscribers: jfb, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244305 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-07 01:57:03 +00:00
Juergen Ributzka
138cd6dae8 [AArch64][FastISel] Always use AND before checking the branch flag.
When we are not emitting the condition for the branch, because the condition is
in another BB or SDAG did the selection for us, then we have to mask the flag in
the register with AND.

This is required when the condition comes from a truncate, because SDAG only
truncates down to a legal size of i32.

This fixes rdar://problem/22161062.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244291 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 22:44:15 +00:00
Juergen Ributzka
6f653ee44c Revert "[AArch64][FastISel] Add more truncation tests." and "[AArch64][FastISel] Always use an AND instruction when truncating to non-legal types."
This reverts commit r243198 and 243304.

Turns out this wasn't the correct fix for this problem. It works only within
FastISel, but fails when the truncate is selected by SDAG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244287 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 22:13:48 +00:00
Pete Cooper
be21eab7ac Convert a bunch of loops to foreach. NFC.
After r244074, we now have a successors() method to iterate over
all the successors of a TerminatorInst.  This commit changes a bunch
of eligible loops to use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244260 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 20:22:46 +00:00
Tom Stellard
f5063f40fd AMDGPU/SI: Add Fiji support
Patch by: Alex Deucher

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244255 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 19:43:02 +00:00
Tom Stellard
825c884e40 AMDGPU/SI: Add support for 32-bit immediate SMRD offsets on CI
Reviewers: arsenm

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244254 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 19:28:38 +00:00
Tom Stellard
732a4ceeee AMDGPU/SI: Use ComplexPatterns for SMRD addressing modes
Summary: This allows us to consolidate several of the TableGen patterns.

Reviewers: arsenm

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244253 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 19:28:30 +00:00
Nico Rieck
3dd7bf5e76 Rename inst_range() to instructions() for consistency. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244248 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 19:10:45 +00:00
Chad Rosier
11c15775e9 [AArch64] Use a static function and other minor cleanup for readability. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244233 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 17:37:18 +00:00
Chad Rosier
535cac4261 [AArch64] Improve the readability of the ld/st optimization pass. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244222 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 15:50:12 +00:00
Douglas Katzman
d7d997277a [SPARC] Don't compare arch name as a string, use the enum instead.
Fixes PR22695

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244221 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 15:44:12 +00:00
Michael Liao
da135386a4 Removing tailing whitespaces
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244203 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 09:06:20 +00:00
Michael Kuperstein
1fc0f627b1 [X86] Improve EmitLoweredSelect for contiguous CMOV pseudo instructions.
This change improves EmitLoweredSelect() so that multiple contiguous CMOV pseudo
instructions with the same (or exactly opposite) conditions get lowered using a single
new basic-block. This eliminates unnecessary extra basic-blocks (and CFG merge points)
when contiguous CMOVs are being lowered.

Patch by: kevin.b.smith@intel.com
Differential Revision: http://reviews.llvm.org/D11428


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244202 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 08:45:34 +00:00
Alex Lorenz
3c99e77ff9 MIR Serialization: Initial serialization of the machine operand target flags.
This commit implements the initial serialization of the machine operand target
flags. It extends the 'TargetInstrInfo' class to add two new methods that help
to provide text based serialization for the target flags.

This commit can serialize only the X86 target flags, and the target flags for
the other targets will be serialized in the follow-up commits.

Reviewers: Duncan P. N. Exon Smith


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244185 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-06 00:44:07 +00:00
JF Bastien
7fac429c84 x86: NFC remove needless InstrCompiler cast
Summary: The casts from String to PatFrag weren't needed if we instead provided an SDNode. This fix was suggested by @pete in D11382.

Subscribers: pete, llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244167 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 23:15:37 +00:00
Bjarke Hammersholt Roune
b6d9668365 [NVPTX] Use LDG for pointer induction variables.
More specifically, make NVPTXISelDAGToDAG able to emit cached loads (LDG) for pointer induction variables.

Also fix latent bug where LDG was not restricted to kernel functions. I believe that this could not be triggered so far since we do not currently infer that a pointer is global outside a kernel function, and only loads of global pointers are considered for cached loads.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244166 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 23:11:57 +00:00
David Blaikie
cea26c272b -Wdeprecated: Remove some dead code that was relying on a questionable (rule-of-3-violating) copy ctor in MCInstPrinter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244133 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 21:15:48 +00:00
Krzysztof Parzyszek
a588f3f3d1 [Hexagon] Edit a comment. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244130 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 21:08:26 +00:00
JF Bastien
8cfa23f93a x86 atomic: optimize a.store(reg op a.load(acquire), release)
Summary: PR24191 finds that the expected memory-register operations aren't generated when relaxed { load ; modify ; store } is used. This is similar to PR17281 which was addressed in D4796, but only for memory-immediate operations (and for memory orderings up to acquire and release). This patch also handles some floating-point operations.

Reviewers: reames, kcc, dvyukov, nadav, morisset, chandlerc, t.p.northover, pete

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244128 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 21:04:59 +00:00
JF Bastien
3e8a65d346 Revert "Fix MO's analyzePhysReg, it was confusing sub- and super-registers. Problem pointed out by Michael Hordijk."
I mistakenly committed the patch for D6629, and was trying to commit another. Reverting until it gets proper signoff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244121 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 20:53:56 +00:00
JF Bastien
a41cc3c3b8 Fix MO's analyzePhysReg, it was confusing sub- and super-registers. Problem pointed out by Michael Hordijk.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244120 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 20:49:46 +00:00
Krzysztof Parzyszek
cebdc2689e [Hexagon] Implement TargetTransformInfo for Hexagon
Author: Brendon Cahoon <bcahoon@codeaurora.org>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244089 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 18:35:37 +00:00
Chandler Carruth
da49414c4b [TTI] Make the cost APIs in TargetTransformInfo consistently use 'int'
rather than 'unsigned' for their costs.

For something like costs in particular there is a natural "negative"
value, that of savings or saved cost. As a consequence, there is a lot
of code that subtracts or creates negative values based on cost, all of
which is prone to awkwardness or bugs when dealing with an unsigned
type. Similarly, we *never* want these values to wrap, as that would
cause Very Bad code generation (likely percieved as an infinite loop as
we try to emit over 2^32 instructions or some such insanity).

All around 'int' seems a much better fit for these basic metrics. I've
added asserts to ensure that at least the TTI interface never returns
negative numbers here. If we ever have a use case for negative numbers,
we can remove this, but this way a bug where someone used '-1' to
produce a 'very large' cost will be caught by the assert.

This passes all tests, and is also UBSan clean.

No functional change intended.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244080 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 18:08:10 +00:00
Pete Cooper
baa8ef1276 Move BB succ_iterator to be inside TerminatorInst. NFC.
To get the successors of a BB we currently do successors(BB) which
ultimately walks the successors of the BB's terminator.

This moves the iterator to TerminatorInst as thats what we're actually
using to do the iteration, and adds a member function to TerminatorInst
to allow us to iterate directly over successors given an instruction.

For example, we can now do

  for (auto *Succ : BI->successors())

instead of

  for (unsigned i = 0, e = BI->getNumSuccessors(); i != e; ++i)

Reviewed by Tobias Grosser.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244074 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 17:43:01 +00:00
Chad Rosier
8e1615ce40 [AArch64] Register AArch64DeadRegisterDefinition pass with LLVM pass manager.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244067 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 17:35:34 +00:00
James Y Knight
7ce592543d [Sparc] Fix disassembly of popc instruction.
And add tests.

Patch by David Wiberg!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244064 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 17:00:30 +00:00
Matt Arsenault
e601cbe15d AMDGPU/SI: Remove EXECReg
For the same reasons as the other physical registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244062 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 16:42:57 +00:00
Matt Arsenault
de67abf186 AMDGPU: Remove SCCReg.
These should be handled as a physical register rather
than a virtual register class with one member.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244061 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 16:42:54 +00:00
Chad Rosier
22c5f2a36e [AArch64] Register (existing) AArch64BranchRelaxation pass with LLVM pass manager.
Summary: Among other things, this allows -print-after-all/-print-before-all to
dump IR around this pass.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244060 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 16:12:10 +00:00
Chad Rosier
f9bc05ce57 [AArch64] Make the naming of the Address Type Promotion pass consistent.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244057 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 15:32:23 +00:00
Chad Rosier
085e440316 [AArch64] Register (existing) AArch64AdvSIMDScalar pass with LLVM pass manager.
Summary: Among other things, this allows -print-after-all/-print-before-all to
dump IR around this pass.

IIRC, this pass is off by default, but it's still helpful when debugging.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244056 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 15:18:58 +00:00
Chad Rosier
7e16546ad8 Make this less error prone by using a #define. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@244048 91177308-0d34-0410-b5e6-96231b3b80d8
2015-08-05 14:48:44 +00:00