• Home
  • History
  • Annotate
  • only in /external/llvm/include/llvm/IR/
History log of /external/llvm/include/llvm/IR/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cd81d94322a39503e4a3e87b6ee03d4fcb3465fb 21-Jul-2014 Stephen Hines <srhines@google.com> Update LLVM for rebase to r212749.

Includes a cherry-pick of:
r212948 - fixes a small issue with atomic calls

Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
ttributes.h
utoUpgrade.h
omdat.h
onstant.h
IBuilder.h
ataLayout.h
ebugInfo.h
ebugLoc.h
iagnosticInfo.h
ominators.h
VMaterializer.h
lobalAlias.h
lobalObject.h
lobalValue.h
lobalVariable.h
RBuilder.h
nstructions.h
ntrinsics.h
ntrinsics.td
ntrinsicsAArch64.td
ntrinsicsARM.td
ntrinsicsNVVM.td
ntrinsicsR600.td
ntrinsicsX86.td
egacyPassNameParser.h
odule.h
ser.h
alue.h
alueMap.h
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
rgument.h
ttributes.h
asicBlock.h
allSite.h
allingConv.h
onstantRange.h
onstants.h
IBuilder.h
ataLayout.h
ebugInfo.h
ebugLoc.h
erivedTypes.h
iagnosticInfo.h
ominators.h
unction.h
VMaterializer.h
etElementPtrTypeIterator.h
lobalAlias.h
lobalObject.h
lobalValue.h
lobalVariable.h
RBuilder.h
nstrTypes.h
nstruction.h
nstructions.h
ntrinsics.td
ntrinsicsAArch64.td
ntrinsicsARM.td
ntrinsicsARM64.td
ntrinsicsNVVM.td
ntrinsicsX86.td
LVMContext.h
egacyPassManagers.h
egacyPassNameParser.h
DBuilder.h
etadata.h
odule.h
assManager.h
redIteratorCache.h
ymbolTableListTraits.h
ype.h
se.h
ser.h
alue.h
alueHandle.h
alueMap.h
erifier.h
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
rgument.h
ssemblyAnnotationWriter.h
ttributes.h
utoUpgrade.h
asicBlock.h
FG.h
MakeLists.txt
allSite.h
allingConv.h
onstant.h
onstantFolder.h
onstantRange.h
onstants.h
IBuilder.h
ataLayout.h
ebugInfo.h
ebugLoc.h
erivedTypes.h
iagnosticInfo.h
iagnosticPrinter.h
ominators.h
unction.h
VMaterializer.h
etElementPtrTypeIterator.h
lobalAlias.h
lobalValue.h
lobalVariable.h
RBuilder.h
RPrintingPasses.h
nlineAsm.h
nstIterator.h
nstVisitor.h
nstrTypes.h
nstruction.h
nstructions.h
ntrinsicInst.h
ntrinsics.h
ntrinsics.td
ntrinsicsAArch64.td
ntrinsicsARM.td
ntrinsicsARM64.td
ntrinsicsMips.td
ntrinsicsNVVM.td
ntrinsicsX86.td
ntrinsicsXCore.td
LVMContext.h
eakDetector.h
egacyPassManager.h
egacyPassManagers.h
egacyPassNameParser.h
DBuilder.h
angler.h
etadata.h
odule.h
oFolder.h
perator.h
assManager.h
atternMatch.h
redIteratorCache.h
ype.h
se.h
ser.h
alue.h
alueHandle.h
alueMap.h
erifier.h
7bb782b1cd3b931cf27565bd7c5a8952037f01cb 09-Dec-2013 Manman Ren <manman.ren@gmail.com> Merging r196144:
------------------------------------------------------------------------
r196144 | mren | 2013-12-02 12:09:52 -0800 (Mon, 02 Dec 2013) | 4 lines

Debug Info: Move the constant for Debug Info Version from Dwarf.h to Metadata.h.

Suggested by Eric.

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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196819 91177308-0d34-0410-b5e6-96231b3b80d8
etadata.h
cf5f97edf1355be0d7847c73559f8f2b73b54074 08-Dec-2013 Bill Wendling <isanbard@gmail.com> Merging r196637:
------------------------------------------------------------------------
r196637 | arsenm | 2013-12-06 18:58:41 -0800 (Fri, 06 Dec 2013) | 1 line

Add getBitCastOrAddrSpaceCast
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@196707 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.h
5f1f4773d95560b68a9c75856563e45e3a4d57e3 01-Dec-2013 Bill Wendling <isanbard@gmail.com> Merging r195803:
------------------------------------------------------------------------
r195803 | mcrosier | 2013-11-26 17:45:58 -0800 (Tue, 26 Nov 2013) | 1 line

[AArch64] Add support for NEON scalar floating-point absolute difference.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195994 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
2527bdac885f5822bb2b9a805fc9d80b35dd8f8b 01-Dec-2013 Bill Wendling <isanbard@gmail.com> Merging r195788:
------------------------------------------------------------------------
r195788 | mcrosier | 2013-11-26 14:17:37 -0800 (Tue, 26 Nov 2013) | 2 lines

[AArch64] Add support for NEON scalar floating-point to integer convert
instructions.
------------------------------------------------------------------------


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195993 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
83a5c7898e26166199ef8a55527d176b5dc4cb04 25-Nov-2013 Bill Wendling <isanbard@gmail.com> Merging r195327:
------------------------------------------------------------------------
r195327 | apazos | 2013-11-20 23:37:04 -0800 (Wed, 20 Nov 2013) | 6 lines

Implemented Neon scalar by element intrinsics.

Intrinsics implemented: vqdmull_lane, vqdmulh_lane, vqrdmulh_lane,
vqdmlal_lane, vqdmlsl_lane scalar Neon intrinsics.


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


git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_34@195611 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
97577757c6dc84233ad10cd432664257e593e76d 18-Nov-2013 Hao Liu <Hao.Liu@arm.com> Implement the newly added ACLE functions for ld1/st1 with 2/3/4 vectors.
The functions are like: vst1_s8_x2 ...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194990 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
1572ba716bad4944a83040adef76c186c4841e95 18-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix spacing, forward declare order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194985 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.h
8417e857818e972f318bd549caabc54bdf537c26 17-Nov-2013 Chandler Carruth <chandlerc@gmail.com> [PM] Completely remove support for explicit 'require' methods on the
AnalysisManager. All this method did was assert something and we have
a perfectly good way to trigger that assert from the query path.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194947 91177308-0d34-0410-b5e6-96231b3b80d8
assManager.h
a53bf06f7a998f9ea9e13ba844efc2460a2185dd 16-Nov-2013 Ana Pazos <apazos@codeaurora.org> Implemented aarch64 Neon scalar vmulx_lane intrinsics
Implemented aarch64 Neon scalar vfma_lane intrinsics
Implemented aarch64 Neon scalar vfms_lane intrinsics

Implemented legacy vmul_n_f64, vmul_lane_f64, vmul_laneq_f64
intrinsics (v1f64 parameter type) using Neon scalar instructions.

Implemented legacy vfma_lane_f64, vfms_lane_f64,
vfma_laneq_f64, vfms_laneq_f64 intrinsics (v1f64 parameter type)
using Neon scalar instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194888 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
5758c3c832daf4c0b37042684f822fa1896966ac 15-Nov-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Fix the scalar NEON ACLE functions so that they return float/double
rather than the vector equivalent.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194853 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
28e12e9f02cf1c5029994b4a6d7e2988512e1310 15-Nov-2013 Cameron McInally <cameron.mcinally@nyu.edu> Add AVX512 unmasked FMA intrinsics and support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194824 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
59d3ae6cdc4316ad338cd848251f33a236ccb36c 15-Nov-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Add addrspacecast instruction.

Patch by Michele Scandale!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194760 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.h
RBuilder.h
nstruction.def
nstructions.h
4701c4702e2f37d7a9f3ea9ef91ec47d73515093 14-Nov-2013 Chandler Carruth <chandlerc@gmail.com> Fix the header comment of the new pass manager stuff to not claim to be
the legacy stuff. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194689 91177308-0d34-0410-b5e6-96231b3b80d8
assManager.h
0710afb9af81cff9846ceda7b56d03cf177dd6ef 14-Nov-2013 Kevin Qin <Kevin.Qin@arm.com> [AArch64 neon] support poly64 and relevant intrinsic functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194659 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
a08063a000cfc7499f08a472d85f14e7a5e90f8d 14-Nov-2013 Kevin Qin <Kevin.Qin@arm.com> Implement aarch64 neon instruction class SIMD misc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194656 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
082ac99cc86b17c7cd2a1f2a6faa2d1adc184e17 14-Nov-2013 Jiangning Liu <jiangning.liu@arm.com> Implement AArch64 NEON instruction set AdvSIMD (table).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194648 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
11966d7c984c3e32b102ecd26083c6f274973d96 13-Nov-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Add support for legacy AArch32 NEON scalar shift by immediate
instructions. This patch does not include the shift right and accumulate
instructions. A number of non-overloaded intrinsics have been remove in favor
of their overloaded counterparts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194598 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
429af0e0a790f915595726cec47154f670cf7f87 13-Nov-2013 Chandler Carruth <chandlerc@gmail.com> Add another (perhaps better) video for Sean's talk. (Thanks Marshall!)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194549 91177308-0d34-0410-b5e6-96231b3b80d8
assManager.h
cfe36cb02a4c2d99fd2ea0892e7b2668f2df2b8b 13-Nov-2013 Chandler Carruth <chandlerc@gmail.com> Give folks a reference to some material on the fundamental design
pattern in use here. Addresses review feedback from Sean (thanks!) and
others.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194541 91177308-0d34-0410-b5e6-96231b3b80d8
assManager.h
f348c9782c5c31309dfd2d04e3dbee21fefe07ff 13-Nov-2013 Chandler Carruth <chandlerc@gmail.com> Introduce an AnalysisManager which is like a pass manager but with a lot
more smarts in it. This is where most of the interesting logic that used
to live in the implicit-scheduling-hackery of the old pass manager will
live.

Like the previous commits, note that this is a very early prototype!
I expect substantial changes before this is ready to use.

The core of the design is the following:

- We have an AnalysisManager which can be used across a series of
passes over a module.
- The code setting up a pass pipeline registers the analyses available
with the manager.
- Individual transform passes can check than an analysis manager
provides the analyses they require in order to fail-fast.
- There is *no* implicit registration or scheduling.
- Analysis passes are different from other passes: they produce an
analysis result that is cached and made available via the analysis
manager.
- Cached results are invalidated automatically by the pass managers.
- When a transform pass requests an analysis result, either the analysis
is run to produce the result or a cached result is provided.

There are a few aspects of this design that I *know* will change in
subsequent commits:
- Currently there is no "preservation" system, that needs to be added.
- All of the analysis management should move up to the analysis library.
- The analysis management needs to support at least SCC passes. Maybe
loop passes. Living in the analysis library will facilitate this.
- Need support for analyses which are *both* module and function passes.
- Need support for pro-actively running module analyses to have cached
results within a function pass manager.
- Need a clear design for "immutable" passes.
- Need support for requesting cached results when available and not
re-running the pass even if that would be necessary.
- Need more thorough testing of all of this infrastructure.

There are other aspects that I view as open questions I'm hoping to
resolve as I iterate a bit on the infrastructure, and especially as
I start writing actual passes against this.
- Should we have separate management layers for function, module, and
SCC analyses? I think "yes", but I'm not yet ready to switch the code.
Adding SCC support will likely resolve this definitively.
- How should the 'require' functionality work? Should *that* be the only
way to request results to ensure that passes always require things?
- How should preservation work?
- Probably some other things I'm forgetting. =]

Look forward to more patches in shorter order now that this is in place.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194538 91177308-0d34-0410-b5e6-96231b3b80d8
assManager.h
72c84a8294a061208d2dc76caf282d83b0f84549 12-Nov-2013 Weiming Zhao <weimingz@codeaurora.org> Export intrinsics:__builtin_arm_{dmb,dsb} to frontend


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194505 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsARM.td
4c433cf673199528b601f664be3d4c121991a7e2 11-Nov-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] The shift right/left and insert immediate builtins expect 3
source operands, a vector, an element to insert, and a shift amount.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194406 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
30b2a19f3be840da1bc4aefcaabcbddd2e0130fc 11-Nov-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Add support for NEON scalar floating-point convert to fixed-point instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194394 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
ea9988447c5bd59827baf1b45dd5b62b4065d553 09-Nov-2013 Chandler Carruth <chandlerc@gmail.com> [PM] Start sketching out the new module and function pass manager.

This is still just a skeleton. I'm trying to pull together the
experimentation I've done into committable chunks, and this is the first
coherent one. Others will follow in hopefully short order that move this
more toward a useful initial implementation. I still expect the design
to continue evolving in small ways as I work through the different
requirements and features needed here though.

Keep in mind, all of this is off by default.

Currently, this mostly exercises the use of a polymorphic smart pointer
and templates to hide the polymorphism for the pass manager from the
pass implementation. The next step will be more significant, adding the
first framework of analysis support.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194325 91177308-0d34-0410-b5e6-96231b3b80d8
assManager.h
49837ef8111fbeace7ae6379ca733c8f8fa94cfe 09-Nov-2013 Chandler Carruth <chandlerc@gmail.com> Move the old pass manager infrastructure into a legacy namespace and
give the files a legacy prefix in the right directory. Use forwarding
headers in the old locations to paper over the name change for most
clients during the transitional period.

No functionality changed here! This is just clearing some space to
reduce renaming churn later on with a new system.

Even when the new stuff starts to go in, it is going to be hidden behind
a flag and off-by-default as it is still WIP and under development.

This patch is specifically designed so that very little out-of-tree code
has to change. I'm going to work as hard as I can to keep that the case.
Only direct forward declarations of the PassManager class are impacted
by this change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194324 91177308-0d34-0410-b5e6-96231b3b80d8
egacyPassManager.h
egacyPassManagers.h
623d2e618f4e672c47edff9ec63ed6d733ac81d3 09-Nov-2013 Juergen Ributzka <juergen@apple.com> [Stackmap] Add AnyReg calling convention support for patchpoint intrinsic.

The idea of the AnyReg Calling Convention is to provide the call arguments in
registers, but not to force them to be placed in a paticular order into a
specified set of registers. Instead it is up tp the register allocator to assign
any register as it sees fit. The same applies to the return value (if
applicable).

Differential Revision: http://llvm-reviews.chandlerc.com/D2009

Reviewed by Andy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194293 91177308-0d34-0410-b5e6-96231b3b80d8
allingConv.h
3ff3a8aa7511bede13e836303a083af37fec4f4e 05-Nov-2013 Jiangning Liu <jiangning.liu@arm.com> Implement AArch64 Neon Crypto instruction classes AES, SHA, and 3 SHA.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194085 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
2e58f1d4cf95e44674cbc4975e713f9293255d5f 04-Nov-2013 Cameron McInally <cameron.mcinally@nyu.edu> Add support for AVX512 masked vector blend intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194006 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
6a907f8c7d6b440bbadaa9aaafb03b489673ae1f 04-Nov-2013 Elena Demikhovsky <elena.demikhovsky@intel.com> AVX-512: fixed a typo in builtin name


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193988 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
633f98bdfa266871dcd17ab27af1594c6cc31d9e 03-Nov-2013 Elena Demikhovsky <elena.demikhovsky@intel.com> AVX-512: added VPCONFLICT instruction and intrinsics,
added EVEX_KZ to tablegen


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193959 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
19794da02cc48a772ae6f4756b14b111a627170e 01-Nov-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove linkonce_odr_auto_hide.

linkonce_odr_auto_hide was in incomplete attempt to implement a way
for the linker to hide symbols that are known to be available in every
TU and whose addresses are not relevant for a particular DSO.

It was redundant in that it all its uses are equivalent to
linkonce_odr+unnamed_addr. Unlike those, it has never been connected
to clang or llvm's optimizers, so it was effectively dead.

Given that nothing produces it, this patch just nukes it
(other than the llvm-c enum value).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193865 91177308-0d34-0410-b5e6-96231b3b80d8
lobalValue.h
1a035dd6df1d953af57656491eda28ceef9ad4a3 31-Oct-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Add support for NEON scalar fixed-point convert to floating-point instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193816 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
2ddc56dec8e523cee56d36e2e4c9a1c469e72e1c 31-Oct-2013 Andrew Trick <atrick@apple.com> Add new calling convention for WebKit Java Script.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193812 91177308-0d34-0410-b5e6-96231b3b80d8
allingConv.h
1d28917dc39f38847f5c69c0a60cd1491430bdad 31-Oct-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Add support for NEON scalar shift immediate instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193790 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
aa8c95ec289bc14351bc7597d5c9251ce6f98c14 31-Oct-2013 Manman Ren <manman.ren@gmail.com> Cleanup: update comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193773 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.h
ab7431b0d47926e804a4a07fdca12e575c976daf 31-Oct-2013 Andrew Trick <atrick@apple.com> Add experimental stackmap intrinsics to definition file and documenation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193767 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.td
2e50b8a08d40ce72ae35c73528140d3ee25209e0 31-Oct-2013 Andrew Trick <atrick@apple.com> Enable variable arguments support for intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193766 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.h
424f19732e948a854b454c70722a4eca8957bc20 31-Oct-2013 Cameron McInally <cameron.mcinally@nyu.edu> Add AVX512 unmasked integer broadcast intrinsics and support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193748 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
02fbffd4e8e1a28539b302e4de84203814898153 30-Oct-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Correct definition of bins[lr] and CHECK-DAG-ize related tests


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193695 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
c385709d8397ca1535481c04564b67d07c66c619 30-Oct-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added support for matching bmnz, bmnzi, bmz, and bmzi from normal IR (i.e. not intrinsics)

Also corrected the definition of the intrinsics for these instructions (the
result register is also the first operand), and added intrinsics for bsel and
bseli to clang (they already existed in the backend).

These four operations are mostly equivalent to bsel, and bseli (the difference
is which operand is tied to the result). As a result some of the tests changed
as described below.

bitwise.ll:
- bsel.v test adapted so that the mask is unknown at compile-time. This stops
it emitting bmnzi.b instead of the intended bsel.v.
- The bseli.b test now tests the right thing. Namely the case when one of the
values is an uimm8, rather than when the condition is a uimm8 (which is
covered by bmnzi.b)

compare.ll:
- bsel.v tests now (correctly) emits bmnz.v instead of bsel.v because this
is the same operation (see MSA.txt).

i8.ll
- CHECK-DAG-ized test.
- bmzi.b test now (correctly) emits equivalent bmnzi.b with swapped operands
because this is the same operation (see MSA.txt).
- bseli.b still emits bseli.b though because the immediate makes it
distinguishable from bmnzi.b.

vec.ll:
- CHECK-DAG-ized test.
- bmz.v tests now (correctly) emits bmnz.v with swapped operands (see
MSA.txt).
- bsel.v tests now (correctly) emits bmnz.v with swapped operands (see
MSA.txt).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193693 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
f853a034a1fdccd194da04ca1e2e1aa8bcbd16b4 30-Oct-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Add support for NEON scalar floating-point compare instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193691 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
95efb037f7ddc4cac67007eb3a9864e6012eda3b 30-Oct-2013 Cameron McInally <cameron.mcinally@nyu.edu> Refactor the AVX512 intrinsics. Cluster the intrinsics into the appropriate vector extension class within the .td file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193690 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
6ff1ef9931b50763a40e9ae8696cfab9e25cf4de 30-Oct-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added support for matching bins[lr]i.[bhwd] from normal IR (i.e. not intrinsics)

This required correcting the definition of the bins[lr]i intrinsics because
the result is also the first operand.

It also required removing the (arbitrary) check for 32-bit immediates in
MipsSEDAGToDAGISel::selectVSplat().

Currently using binsli.d with 2 bits set in the mask doesn't select binsli.d
because the constant is legalized into a ConstantPool. Similar things can
happen with binsri.d with more than 10 bits set in the mask. The resulting
code when this happens is correct but not optimal.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193687 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
1313a223ed2e8d41b6a13d3738123042b5573b88 29-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Clarify that GlobalVariables definitions must have an initializer.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193609 91177308-0d34-0410-b5e6-96231b3b80d8
lobalVariable.h
62d66cbec5b2d4e00e86457762df0127ae234e6f 27-Oct-2013 Elena Demikhovsky <elena.demikhovsky@intel.com> AVX-512: PMIN/PMAX intrinsics and patterns
Patch by Cameron McInally <cameron.mcinally@nyu.edu>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193497 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
69bd41dfe33f24414be281ba5e2204b7348c33ae 27-Oct-2013 Shuxin Yang <shuxin.llvm@gmail.com> Revert r193251 : Use address-taken to disambiguate global variable and indirect memops.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193489 91177308-0d34-0410-b5e6-96231b3b80d8
lobalVariable.h
62ef05811661d7aff6276e64cc4ba7d325a408d6 24-Oct-2013 Elena Demikhovsky <elena.demikhovsky@intel.com> AVX-512: added VCVTPH2PS, VCVTPS2PH with intrinsics


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193312 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
3d0b7e1cc5856ae0c17687e1be3cddeb79704bca 23-Oct-2013 Yuchen Wu <yuchenericwu@hotmail.com> Fixed doxygen comment to match Module.cpp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193273 91177308-0d34-0410-b5e6-96231b3b80d8
odule.h
8e3851a6eb9fe5fc30094c3a00d2b89c7cd68cbd 23-Oct-2013 Shuxin Yang <shuxin.llvm@gmail.com> Use address-taken to disambiguate global variable and indirect memops.

Major steps include:
1). introduces a not-addr-taken bit-field in GlobalVariable
2). GlobalOpt pass sets "not-address-taken" if it proves a global varirable
dosen't have its address taken.
3). AA use this info for disambiguation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193251 91177308-0d34-0410-b5e6-96231b3b80d8
lobalVariable.h
b5eae81267649a7ce53debe8196533f7a0472f5b 21-Oct-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Add the constraint to NEON scalar mla/mls instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193117 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
f89f66e61b26974bb73b5832d5825091873b51dc 21-Oct-2013 Matheus Almeida <matheus.almeida@imgtec.com> [mips][msa] Fix definition of SLD instruction.

The second parameter of the SLD intrinsic is the number of columns (GPR) to
slide left the source array.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193076 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
3b370a2ac433c4abfbfe8f47c63fee0dbcfcc9e6 17-Oct-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Add support for NEON scalar three register different instruction
class. The instruction class includes the signed saturating doubling
multiply-add long, signed saturating doubling multiply-subtract long, and
the signed saturating doubling multiply long instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192908 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
52244da7f2b3def646900520668b859343b84a33 17-Oct-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added lsa instruction



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192895 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
db8a16252b9d29bd7a3442d5c3bad0398dd85908 17-Oct-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Removed ldx.[bhwd] and stx.[bhwd].

These were present in a previous version of the MSA spec but are not
present in the published version. There is no hardware that uses these
instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192888 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
dceac4c5a611f26ebcc88c75cc39075c7df2466e 16-Oct-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Add support for NEON scalar negate instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192843 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
a249914462c7b8f0c25b21eca77df264455290ee 16-Oct-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Add support for NEON scalar absolute value instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192842 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
8225b23c6adcb1be605108425b7eb169b6439b64 16-Oct-2013 Chad Rosier <mcrosier@codeaurora.org> Update comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192806 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
a2cd42a0a7c46d158714c09047a77b7bc1cf9d69 16-Oct-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Add support for NEON scalar signed saturating accumulated of unsigned
value and unsigned saturating accumulate of signed value instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192800 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
1e6810005f426798ce2541c26f0cdc7a08670846 16-Oct-2013 Will Dietz <wdietz2@illinois.edu> TypeFinder: prefer iterative algorithm to keep stack usage low.

Introduce subtype_reverse_iterator to maintain
the numbering assigned during the recursive type walk.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192770 91177308-0d34-0410-b5e6-96231b3b80d8
ype.h
390ff499f053771cba51a2f42651f126a7e096f7 15-Oct-2013 Craig Topper <craig.topper@gmail.com> Remove x86_sse42_crc32_64_8 intrinsic. It has no functional difference from x86_sse42_crc32_32_8 and was not mapped to a clang builtin. I'm not even sure why this form of the instruction is even called out explicitly in the docs. Also add AutoUpgrade support to convert it into the other intrinsic with appropriate trunc and zext.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192672 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
942827b1139c432239648ef54d1df5074eac36ec 14-Oct-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Add support for NEON scalar integer compare instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192596 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
1a525e8c80305777e3ca0cba0e1903fdbf04aa86 09-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a GlobalAlias::isValidLinkage to reduce code duplication.

Thanks to Reid Kleckner for the suggestion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192298 91177308-0d34-0410-b5e6-96231b3b80d8
lobalAlias.h
50dc2ad46ca9a5391bc75c9e3620337afefb995c 09-Oct-2013 Elena Demikhovsky <elena.demikhovsky@intel.com> AVX-512: Added VRCP28 and VRSQRT28 instructions and intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192283 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
c97650079383110d66ab104ee60d03ded2be8e35 09-Oct-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Add support for NEON scalar floating-point reciprocal estimate,
reciprocal exponent, and reciprocal square root estimate instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192242 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
25180dc319774a68d8aa8c3264e3ce63b8e01f00 08-Oct-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix duplicated assertions.

Do what some other instructions do, and add an assert method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192236 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.h
3dfe644f7b6a560e1991b03d8c419c973ac7ed8d 08-Oct-2013 Chad Rosier <mcrosier@codeaurora.org> [AArch64] Add support for NEON scalar signed/unsigned integer to floating-point
convert instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192231 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
e3c2f07005aa2e4c935adb65f7f3e0176810fe68 08-Oct-2013 Benjamin Kramer <benny.kra@googlemail.com> IRBuilder: Downgrade InsertPointGuard's instruction pointer to a raw pointer.

Sadly this loses the checking from AssertingVH, but apparently storing the
end() of a BasicBlock into an AssertingVH has bad consequences as it's not
really an instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192209 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
c4a8c07f6489c0081207f722ce0a4502614aef69 07-Oct-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Change objectsize intrinsic to accept different address spaces.

Bitcasting everything to i8* won't work. Autoupgrade the old
intrinsic declarations to use the new mangling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192117 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.td
714319a169784577e33fb1ea28ac06be32c9e735 06-Oct-2013 Elena Demikhovsky <elena.demikhovsky@intel.com> AVX-512: added scalar convert instructions and intrinsics.
Fixed load folding in VPERM2I instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192063 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
22abf7e17f47f26691fdf4c590ebd88ebf560c73 05-Oct-2013 Craig Topper <craig.topper@gmail.com> Remove unneeded TBM intrinsics. The arithmetic/logical operation patterns are sufficient.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192039 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
beb6afa84397a27e48a9d72ac1d588bc6fcaf564 05-Oct-2013 Jiangning Liu <jiangning.liu@arm.com> Implement aarch64 neon instruction set AdvSIMD (Across).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192028 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
fafe4bbd6c25551b7ea92cf63a8bb4a79c6c4324 03-Oct-2013 Craig Topper <craig.topper@gmail.com> Add patterns for selecting TBM instructions from logical operations. Patch from Yunzhong Gao.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191871 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
da750239bd1f02aef403baa4805805fb580e78e1 03-Oct-2013 Pete Cooper <peter_cooper@apple.com> Add v4f16 to supported value types.

This is useful for some ARM intrinsics such as VCVTN which does a <4 x float> <-> <4 x half> conversion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191870 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.td
d1311ac171f9cb90cab4906a6c0e091b6b65b862 01-Oct-2013 Joey Gouly <joey.gouly@arm.com> [ARM] Introduce the 'sevl' instruction in ARMv8.

This also removes the restriction on the immediate field of the 'hint'
instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191744 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsARM.td
adb412daa41aef94a9f724dfd1ade9f579bb3a84 30-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> IRBuilder: Add RAII objects to reset insertion points or fast math flags.

Inspired by the object from the SLPVectorizer. This found a minor bug in the
debug loc restoration in the vectorizer where the location of a following
instruction was attached instead of the location from the original instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191673 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
5a17a462cdba1b894cdd618798596076ed79c9ac 30-Sep-2013 Benjamin Kramer <benny.kra@googlemail.com> IRBuilder: Move fast math flags to IRBuilderBase.

They don't depend on the templated stuff.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191672 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
685707c28e2c7117f025fb4e95e6ca64ed179bb0 27-Sep-2013 Yunzhong Gao <Yunzhong_Gao@playstation.sony.com> Adding intrinsics to the llvm backend for TBM instruction set.
Phabricator code review is located here: http://llvm-reviews.chandlerc.com/D1750



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191539 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
4d835f1cbe5d8c5f6cea4040bea9b180927a1c05 27-Sep-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Implemented insert.d intrinsic.

This intrinsic is lowered into an equivalent INSERT_VECTOR_ELT which is
further lowered into a sequence of insert.w's on MIPS32.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191521 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
9f30d43122dce961ae1625c2c429bf74bf292324 27-Sep-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Implemented fill.d intrinsic.

This intrinsic is lowered into an equivalent BUILD_VECTOR which is further
lowered into a sequence of insert.w's on MIPS32.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191519 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
e8eafdb67685d4f5d52ab0dce2339c37e39cdc44 27-Sep-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Implemented copy_[us].d intrinsic.

This intrinsic is lowered into equivalent copy_s.w instructions during
legalization.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191518 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
7e0df9aa2966d0462e34511524a4958e226b74ee 24-Sep-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added support for matching vshf from normal IR (i.e. not intrinsics)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191301 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
38a10ff063971c2f7f7384cceba3253bca32e27a 24-Sep-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added support for matching bsel and bseli from normal IR (i.e. not intrinsics)

This required correcting the definition of the bsel and bseli intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191290 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
477fc628b3c9ce1c970d4a678dd5607b15242cc8 24-Sep-2013 Jiangning Liu <jiangning.liu@arm.com> Initial support for Neon scalar instructions.

Patch by Ana Pazos.

1.Added support for v1ix and v1fx types.
2.Added Scalar Pairwise Reduce instructions.
3.Added initial implementation of Scalar Arithmetic instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191263 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.td
ntrinsicsAArch64.td
118a0659ab8a4d0e0af343b88e5fa71a5c1eb6a6 24-Sep-2013 Reid Kleckner <reid@kleckner.net> Explicitly request unsigned enum types when desired

The underlying type of all plain enums in MSVC is 'int', even if the
enumerator contains large 32-bit unsigned values or values greater than
UINT_MAX. The only way to get a large or unsigned enum type is to
request it explicitly with the C++11 strong enum types feature.

However, since LLVM isn't C++11 yet, I had to add a conditional
LLVM_ENUM_INT_TYPE to Compiler.h to control its usage.

The motivating true positive for this change is compiling PointerIntPair
with MSVC for win64. The PointerIntMask value is supposed to be pointer
sized value of all ones with some low zeros. Instead, it's truncated to
32-bits! We are only saved later because it is sign extended back in
the AND with int64_t, and we happen to want all ones.

This silences lots of -Wmicrosoft warnings during a clang self-host
targeting Windows.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191241 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
nlineAsm.h
9a1aaeb012e593fba977015c5d8b6b1aa41a908c 23-Sep-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added support for matching insert and copy from normal IR (i.e. not intrinsics)

Changes to MIPS SelectionDAG:
* Added nodes VEXTRACT_[SZ]EXT_ELT to represent extract and extend in a single
operation and implemented the DAG combines necessary to fold sign/zero
extends into the extract.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191199 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
5df37dab763ce377095389c4ea1cff88db369954 19-Sep-2013 Amara Emerson <amara.emerson@arm.com> [ARMv8] Add support for the v8 cryptography extensions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190996 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsARM.td
a4d46d7fc6431ec3576839f11cb61862b784cb3e 18-Sep-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Add CRC instructions.

Patch by Bradley Smith!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190928 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsARM.td
215585920ff264a46cd41a7c5b4aeb8ce17daa90 17-Sep-2013 Ben Langmuir <ben.langmuir@intel.com> Add llvm.x86.* intrinsics for Intel SHA Extensions

Add llvm.x86.* intrinsics for all of the Intel SHA Extensions instructions, as
well as tests. Also remove mayLoad and hasSideEffects, which can be inferred
from the instruction patterns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190864 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
2898b3c28d13f109b4c741e637eec28e63e79d49 17-Sep-2013 Craig Topper <craig.topper@gmail.com> Make a more clear AVX-512 section header that matches similar in the file.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190843 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
4b28ee208895d2a9c98b9e63d0c39985500e9291 17-Sep-2013 Matt Arsenault <Matthew.Arsenault@amd.com> MemCpyOptimizer: Use max legal int size instead of pointer size

If there are no legal integers, assume 1 byte.

This makes more sense than using the pointer size as
a guess for the maximum GPR width.

It is conceivable to want to use some 64-bit pointers
on a target where 64-bit integers aren't legal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190817 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.h
1e3037f0be430ef2339838bbdede11f45658bd82 16-Sep-2013 Peter Collingbourne <peter@pcc.me.uk> Implement function prefix data as an IR feature.

Previous discussion:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-July/063909.html

Differential Revision: http://llvm-reviews.chandlerc.com/D1191

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190773 91177308-0d34-0410-b5e6-96231b3b80d8
unction.h
b95237f10cf718c63b153e362b3b5b548ce50698 12-Sep-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix comment to match what the assert actually enforces

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190566 91177308-0d34-0410-b5e6-96231b3b80d8
perator.h
8857294192bdc1992d60a14a6ff6c519ddee63e3 11-Sep-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Corrected the definition of the dotp_[su].[hwd] intrinsics

The elements of the operands should be half the width of the elements of
the result.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190505 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
436f64567ceb0b45e6b5b680fa09485002094830 10-Sep-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Removed unsupported dot product instructions (dotp_[su].b)

The dotp_[su].b instructions never existed in any revision of the MSA spec.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190398 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
db3a9e64f856e3a233a427da1f3969fd3a65a438 09-Sep-2013 Bob Wilson <bob.wilson@apple.com> Revert patches to add case-range support for PR1255.

The work on this project was left in an unfinished and inconsistent state.
Hopefully someone will eventually get a chance to implement this feature, but
in the meantime, it is better to put things back the way the were. I have
left support in the bitcode reader to handle the case-range bitcode format,
so that we do not lose bitcode compatibility with the llvm 3.3 release.

This reverts the following commits: 155464, 156374, 156377, 156613, 156704,
156757, 156804 156808, 156985, 157046, 157112, 157183, 157315, 157384, 157575,
157576, 157586, 157612, 157810, 157814, 157815, 157880, 157881, 157882, 157884,
157887, 157901, 158979, 157987, 157989, 158986, 158997, 159076, 159101, 159100,
159200, 159201, 159207, 159527, 159532, 159540, 159583, 159618, 159658, 159659,
159660, 159661, 159703, 159704, 160076, 167356, 172025, 186736

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190328 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.h
0b3d39235aaed8bc66ccffb3942bf7b5f185329c 07-Sep-2013 Manman Ren <manman.ren@gmail.com> TBAA: add isTBAAVtableAccess to MDNode so clients can call the function
instead of having its own implementation.

The implementation of isTBAAVtableAccess is in TypeBasedAliasAnalysis.cpp
since it is related to the format of TBAA metadata.

The path for struct-path tbaa will be exercised by
test/Instrumentation/ThreadSanitizer/read_from_global.ll, vptr_read.ll, and
vptr_update.ll when struct-path tbaa is on by default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190216 91177308-0d34-0410-b5e6-96231b3b80d8
etadata.h
4598bd53ab89c3d120ad8249abbfdc7e2d64d291 06-Sep-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Use type helper functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190113 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.h
4897151df698197f0eb5c4085545312dbb20c94d 05-Sep-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Implement the new DMB/DSB operands.

This removes the custom ISD Node: MEMBARRIER and replaces it
with an intrinsic.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190055 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsARM.td
9718158222ad9c52b2fb14609a341d4e24def8bb 04-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Revert "Add r159136 back now that pr13124 has been fixed."

This reverts commit r189886.

I found a corner case where this optimization is not valid:

Say we have a "linkonce_odr unnamed_addr" in two translation units:
* In TU 1 this optimization kicks in and makes it hidden.
* In TU 2 it gets const merged with a constant that is *not* unnamed_addr,
resulting in a non unnamed_addr constant with default visibility.
* The static linker rules for combining visibility them produce a hidden
symbol, which is incorrect from the point of view of the non unnamed_addr
constant.

The one place we can do this is when we know that the symbol is not used from
another TU in the same shared object, i.e., during LTO. I will move it there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189954 91177308-0d34-0410-b5e6-96231b3b80d8
lobalValue.h
19fdc268c316b3b0bdcb2b558449819f4f402d6a 04-Sep-2013 Hao Liu <Hao.Liu@arm.com> Inplement aarch64 neon instructions in AdvSIMD(shift). About 24 shift instructions:
sshr,ushr,ssra,usra,srshr,urshr,srsra,ursra,sri,shl,sli,sqshlu,sqshl,uqshl,shrn,sqrshrun,sqshrn,uqshr,sqrshrn,uqrshrn,sshll,ushll
and 4 convert instructions:
scvtf,ucvtf,fcvtzs,fcvtzu


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189925 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsAArch64.td
79869ee59abc3aeebda6e15540273a7e5936adb4 04-Sep-2013 Rafael Espindola <rafael.espindola@gmail.com> Add r159136 back now that pr13124 has been fixed.

Original message:
If a constant or a function has linkonce_odr linkage and unnamed_addr, mark
hidden. Being linkonce_odr guarantees that it is available in every dso that
needs it. Being a constant/function with unnamed_addr guarantees that the
copies don't have to be merged.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189886 91177308-0d34-0410-b5e6-96231b3b80d8
lobalValue.h
fdb6a38913cc54e9523b1ee1aab2cc3be27ea4f7 03-Sep-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added IntrNoMem and removed Commutative from sub intrinsics.

This changes the SelectionDAG nodes from ISD::INTRINSIC_W_CHAIN to
ISD::INTRINSIC_WO_CHAIN which enables easy lowering to equivalent SelectionDAG
nodes (e.g. __builtin_msa_sub_w -> ISD::SUB) in future patches since nodes
such as ISD::SUB do not have a chain.
It also corrects an obvious mistake, namely that the subtract intrinsics were
marked as being commutative.

As per a similar change in r189106
(http://llvm.org/viewvc/llvm-project?rev=189106&view=rev) there isn’t a new
testcase in this patch since the existing tests should test the intrinsics to
the same standard and the best I can do for a testcase would be a fragile
pass/maybe test of whether memory operations can (and do) cross the intrinsic.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189784 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
8092b710016873ebf569f66e598911fa94b4ea85 03-Sep-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added IntrNoMem to the floating-point intrinsics.

This changes the SelectionDAG nodes from ISD::INTRINSIC_W_CHAIN to
ISD::INTRINSIC_WO_CHAIN which enables easy lowering to equivalent SelectionDAG
nodes (e.g. __builtin_msa_fadd_w -> ISD::FADD) in future patches since nodes
such as ISD::FADD do not have a chain.

As per a similar change in r189106
(http://llvm.org/viewvc/llvm-project?rev=189106&view=rev) there isn’t a new
testcase in this patch since the existing tests should test the intrinsics to
the same standard and the best I can do for a testcase would be a fragile
pass/maybe test of whether memory operations can (and do) cross the intrinsic.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189782 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
d3128a4a5a8531a256a224422d7da178d18459eb 28-Aug-2013 Tim Northover <tnorthover@apple.com> ARM: remove unused v(add|sub)hn and vqdml[as]l intrinsics.

Clang is now generating cleaner IR, so this removes the old variants which
should be completely unused.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189481 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsARM.td
3c380d5e28f86984b147fcd424736c498773f37e 28-Aug-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added bnz.df, bnz.v, bz.df, and bz.v

These intrinsics are legalized to V(ALL|ANY)_(NON)?ZERO nodes,
are matched as SN?Z_[BHWDV]_PSEUDO pseudo's, and emitted as
a branch/mov sequence to evaluate to 0 or 1.

Note: The resulting code is sub-optimal since it doesnt seem to be possible
to feed the result of an intrinsic directly into a brcond. At the moment
it uses (SETCC (VALL_ZERO $ws), 0, SETEQ) and similar which unnecessarily
evaluates the boolean twice.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189478 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
2fd3e67dc6438cee5e32e0d7d7d42891df7edd96 28-Aug-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added load/store intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189476 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
abbcf3bd47ad8ffa70f48ebd924f99fff5c22131 28-Aug-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added move.v


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189471 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
a6c3a4ee76ef8464d3c83472e15af521ade7eeb4 28-Aug-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added cfcmsa, and ctcmsa

The MSA control registers have been added as reserved registers,
and are only used via ISD::Copy(To|From)Reg. The intrinsics are lowered
into these nodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189468 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
f00539cc5a5e66ce6b7ce3779b00fd381e2d2dee 28-Aug-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added f[cs]af, f[cs]or, f[cs]ueq, f[cs]ul[et], f[cs]une, fsun, ftrunc_[su], hadd_[su], hsub_[su], sr[al]r, sr[al]ri


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189467 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
e307a9c58ce91dfde160c9a4acf28bfcdedfb498 23-Aug-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Few MSA Builtins have side-effects. Added IntrNoMem to those that don't.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189106 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
5768bb8d77892926dff0d078b1fb08c14ea791f3 23-Aug-2013 Andrea Di Biagio <Andrea_DiBiagio@sn.scee.net> Add function attribute 'optnone'.

This function attribute indicates that the function is not optimized
by any optimization or code generator passes with the
exception of interprocedural optimization passes.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189101 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
f73826bef09fcc38d2db7b69baf0b8a45c9788f8 22-Aug-2013 Chandler Carruth <chandlerc@gmail.com> Add a new helper method to Value to strip in-bounds constant offsets of
pointers, but accumulate the offset into an APInt in the process of
stripping it.

This is a pretty handy thing to have, such as when trying to determine
if two pointers are at some constant relative offset. I'll be committing
a patch shortly to use it for exactly that purpose.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189000 91177308-0d34-0410-b5e6-96231b3b80d8
alue.h
f6db9425648e9d9b965dc0aae9f63afbb3e7a5b8 22-Aug-2013 Chandler Carruth <chandlerc@gmail.com> Clean up the doxygen formatting of the comments on the strip* methods on
Value. These methods probably don't belong here, and I'm discussing
moving the lot of them to a better home, but for now I'm about to extend
their functionality and wanted to tidy them up first.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188997 91177308-0d34-0410-b5e6-96231b3b80d8
alue.h
c5158b869bbde7b08c486c6f326bd1c701367c98 20-Aug-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Removed fcge, fcgt, fsge, fsgt

These instructions were present in a draft spec but were removed before
publication.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188782 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
6ef333501eb917cbd79a51c84294051a1a257a0b 20-Aug-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added insve



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188777 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
c149fbbe279ef623e6067304fd08dc1a62d74f7d 20-Aug-2013 Daniel Sanders <daniel.sanders@imgtec.com> [mips][msa] Added and.v, bmnz.v, bmz.v, bsel.v, nor.v, or.v, xor.v


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188767 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
66d1fa6f4b443ac9f8bcea5d1f71a73ada733a42 20-Aug-2013 Hal Finkel <hfinkel@anl.gov> Add a llvm.copysign intrinsic

This adds a llvm.copysign intrinsic; We already have Libfunc recognition for
copysign (which is turned into the FCOPYSIGN SDAG node). In order to
autovectorize calls to copysign in the loop vectorizer, we need a corresponding
intrinsic as well.

In addition to the expected changes to the language reference, the loop
vectorizer, BasicTTI, and the SDAG builder (the intrinsic is transformed into
an FCOPYSIGN node, just like the function call), this also adds FCOPYSIGN to a
few lists in LegalizeVector{Ops,Types} so that vector copysigns can be
expanded.

In TargetLoweringBase::initActions, I've made the default action for FCOPYSIGN
be Expand for vector types. This seems correct for all in-tree targets, and I
think is the right thing to do because, previously, there was no way to generate
vector-values FCOPYSIGN nodes (and most targets don't specify an action for
vector-typed FCOPYSIGN).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188728 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.td
abd37961d55680e5e946b9e336ce14b4ac56f830 20-Aug-2013 Peter Collingbourne <peter@pcc.me.uk> Introduce non-const overloads for GlobalAlias::{get,resolve}AliasedGlobal.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188725 91177308-0d34-0410-b5e6-96231b3b80d8
lobalAlias.h
c892bd6a74ba92b5631c89cfac8961a8005b644a 19-Aug-2013 Elena Demikhovsky <elena.demikhovsky@intel.com> AVX-512: compiler intrinsics

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188654 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
68af19cbb1faec31dad274601d8937c2da9794c2 17-Aug-2013 Juergen Ributzka <juergen@apple.com> The vbroadcastsi256 intrinsic does not exactly resemble the GCC
builtin. The GCC builtin expects the arguments to be passed by val,
whereas the LLVM intrinsic expects a pointer instead.

This is related to PR 16581 and rdar:14747994.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188608 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
bd71eea899d579deb1fcee02944f955a4708091a 15-Aug-2013 Jack Carter <jack.carter@imgtec.com> [Mips][msa] Added the simple builtins (madd_q to xori)

Includes:
madd_q, maddr_q, maddv, max_[asu], maxi_[su], min_[asu], mini_[su], mod_[su],
msub_q, msubr_q, msubv, mul_q, mulr_q, mulv, nloc, nlzc, nori, ori, pckev,
pckod, pcnt, sat_[su], shf, sld, sldi, sll, slli, splat, splati, sr[al],
sr[al]i, subs_[su], subss_u, subus_s, subv, subvi, vshf, xori

Patch by Daniel Sanders


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188460 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
d0f99639c16ddad697db30e75643ae4cc52c3e80 15-Aug-2013 Jack Carter <jack.carter@imgtec.com> [Mips][msa] Added the simple builtins (fadd to ftq)

Includes:
fadd, fceq, fcg[et], fclass, fcl[et], fcne, fcun, fdiv, fexdo, fexp2,
fexup[lr], ffint_[su], ffql, ffqr, fill, flog2, fmadd, fmax, fmax_a, fmin,
fmin_a, fmsub, fmul, frint, frcp, frsqrt, fseq, fsge, fsgt, fsle, fslt,
fsne, fsqr, fsub, ftint_s, ftq

Patch by Daniel Sanders


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188458 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.td
ntrinsicsMips.td
e2a9376b1bd2204ea6f56a35b762e28e0ef4e35a 15-Aug-2013 Jack Carter <jack.carter@imgtec.com> [Mips][msa] Added the simple builtins (add_a to dpsub[su], ilvev to ldi)

Includes:
add_a, adds_[asu], addv, addvi, andi.b, asub_[su].[bhwd], aver?_[su]_[bhwd],
bclr, bclri, bins[lr], bins[lr]i, bmnzi, bmzi, bneg, bnegi, bseli, bset, bseti,
c(eq|ne), c(eq|ne)i, cl[et]_[su], cl[et]i_[su], copy_[su].[bhw], div_[su],
dotp_[su], dpadd_[su], dpsub_[su], ilvev, ilvl, ilvod, ilvr, insv, insve,
ldi

Patch by Daniel Sanders


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188457 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
2a64a639e5f2870a2a898a593fc37a800f977d5e 12-Aug-2013 Michael Gottesman <mgottesman@apple.com> [stackprotector] Added intrinsic llvm.stackprotectorcheck.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188191 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.td
41418d17cced656f91038b2482bc9d173b4974b0 08-Aug-2013 Hal Finkel <hfinkel@anl.gov> Add ISD::FROUND for libm round()

All libm floating-point rounding functions, except for round(), had their own
ISD nodes. Recent PowerPC cores have an instruction for round(), and so here I'm
adding ISD::FROUND so that round() can be custom lowered as well.

For the most part, this is straightforward. I've added an intrinsic
and a matching ISD node just like those for nearbyint() and friends. The
SelectionDAG pattern I've named frnd (because ISD::FP_ROUND has already claimed
fround).

This will be used by the PowerPC backend in a follow-up commit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187926 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.td
13e6e9171f79a481d7f814aad958460dfd867c71 05-Aug-2013 Elena Demikhovsky <elena.demikhovsky@intel.com> AVX-512 set: added mask operations, lowering BUILD_VECTOR for i1 vector types.
Added intrinsics and tests.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187717 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
4da77f8d5f1fe4977b037afc110bc9b23bb2c350 01-Aug-2013 Robert Lytton <robert@xmos.com> remove executable permission from IntrinsicsXCore.td

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187584 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsXCore.td
87773c318fcee853fb34a80a10c4347d523bdafb 01-Aug-2013 Tim Northover <tnorthover@apple.com> AArch64: add initial NEON support

Patch by Ana Pazos.

- Completed implementation of instruction formats:
AdvSIMD three same
AdvSIMD modified immediate
AdvSIMD scalar pairwise

- Completed implementation of instruction classes
(some of the instructions in these classes
belong to yet unfinished instruction formats):
Vector Arithmetic
Vector Immediate
Vector Pairwise Arithmetic

- Initial implementation of instruction formats:
AdvSIMD scalar two-reg misc
AdvSIMD scalar three same

- Intial implementation of instruction class:
Scalar Arithmetic

- Initial clang changes to support arm v8 intrinsics.
Note: no clang changes for scalar intrinsics function name mangling yet.

- Comprehensive test cases for added instructions
To verify auto codegen, encoding, decoding, diagnosis, intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187567 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.td
ntrinsicsAArch64.td
691aa094dafe54151b6f70168f066bd87c161e8d 01-Aug-2013 Robert Lytton <robert@xmos.com> XCore target: add GCCBuiltin to four intrinsics

The following are made available by clang in the XCore ABI
__builtin_bitrev
__builtin_getid
__builtin_getps
__builtin_setps

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187566 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsXCore.td
485c7fd76b32a69c46782a715682ed8831b0873b 31-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Revert "Remove isCastable since nothing uses it now"

Apparently dragonegg uses it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187454 91177308-0d34-0410-b5e6-96231b3b80d8
nstrTypes.h
0de6832c16ce48f6546c74f6b17e27d149eebfb2 30-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Remove isCastable since nothing uses it now

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187448 91177308-0d34-0410-b5e6-96231b3b80d8
nstrTypes.h
f34dc428fa577d6d5d71ab3a1f9765b4e5da5a4f 30-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Change behavior of calling bitcasted alias functions.

It will now only convert the arguments / return value and call
the underlying function if the types are able to be bitcasted.
This avoids using fp<->int conversions that would occur before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187444 91177308-0d34-0410-b5e6-96231b3b80d8
nstrTypes.h
58376d8ede436eb1fe474bca1582a4f7afe613f9 26-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Re-add DataLayout pointer size convenience functions.

These were reverted in r167222 along with the rest
of the last different address space pointer size attempt.
These will be used in later commits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187223 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.h
6fccaafd8be0eb7619b5a210387b0d1254ef4174 25-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove the mblaze backend from llvm.

Approval in here http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-July/064169.html

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187145 91177308-0d34-0410-b5e6-96231b3b80d8
allingConv.h
9e2ef7780b91d8e01a9ab172f80272fc94f6956b 25-Jul-2013 Bill Wendling <isanbard@gmail.com> Add a way to add a kind-value string pair to an attribute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187138 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
unction.h
2d680824e3a5272e386aa6c1d2a66676de7899fd 25-Jul-2013 Rafael Espindola <rafael.espindola@gmail.com> Make these methods const correct.

Thanks to Nick Lewycky for noticing it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187098 91177308-0d34-0410-b5e6-96231b3b80d8
odule.h
9b344d920f6b3496885094bd2f364453cb8d968f 25-Jul-2013 Bill Wendling <isanbard@gmail.com> Add helpful accessor methods to get the specified function attribute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187088 91177308-0d34-0410-b5e6-96231b3b80d8
unction.h
e08a57824c78c98601860df12d4184acbf1c9de2 22-Jul-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix missing const

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186857 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
6fec715a1a662ce3b560f85c710875cfeeb1fb98 19-Jul-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Implement the NEON instructions VRINT{N, X, A, Z, M, P}.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186688 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsARM.td
59b3300664d062bf04159eacaeb44d6c729e6a8c 18-Jul-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Add NEON instructions VCVT{A, N, P, M}.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186574 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsARM.td
7a8503c4114d5f56b7ba4a7b07c6dd07a06c1c23 18-Jul-2013 Adrian Prantl <aprantl@apple.com> Get rid of the Dis/EnableDebugLocations() API.
I'm moving this functionality into clang instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186549 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
19c14abf1c4ccebfa7d07bdd6ea8462a15c0b749 17-Jul-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Add support for the NEON instructions vmaxnm/vminnm.

This adds a new class for non-predicable NEON instructions and a
new DecoderNamespace for v8 NEON instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186504 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsARM.td
c8cfaa1625a72aa3660a268dae753748cfed67d0 17-Jul-2013 Manman Ren <mren@apple.com> Add getModuleFlag(StringRef Key) to query a module flag given Key.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186470 91177308-0d34-0410-b5e6-96231b3b80d8
odule.h
2f438131f115a3860ee344a827a091790d6dc13d 16-Jul-2013 Tim Northover <tnorthover@apple.com> ARM: implement ldrex, strex and clrex intrinsics

Intrinsics already existed for the 64-bit variants, so these support operations
of size at most 32-bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186392 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsARM.td
36dbbf06fb6d77698a723acfeb670af6b8ac77e8 13-Jul-2013 Craig Topper <craig.topper@gmail.com> Remove unneeded forward declarations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186244 91177308-0d34-0410-b5e6-96231b3b80d8
etadata.h
7ffc422659e29061511b9ae5f6fdda2458a76b50 12-Jul-2013 Benjamin Kramer <benny.kra@googlemail.com> Mark MDNode::getOperand as readonly.

We can't inline it but we can still CSE calls to it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186156 91177308-0d34-0410-b5e6-96231b3b80d8
etadata.h
ac226bbf457f6b5e5210a4a82b1ce678298b2d89 12-Jul-2013 Charles Davis <cdavis5x@gmail.com> Target/X86: Add explicit Win64 and System V/x86-64 calling conventions.

Summary:
This patch adds explicit calling convention types for the Win64 and
System V/x86-64 ABIs. This allows code to override the default, and use
the Win64 convention on a target that wants to use SysV (and
vice-versa). This is needed to implement the `ms_abi` and `sysv_abi` GNU
attributes.

Reviewers:

CC:

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186144 91177308-0d34-0410-b5e6-96231b3b80d8
allingConv.h
bcd5a0f7efa75eb48c88e0e94168ed7c77b6575d 09-Jul-2013 Nadav Rotem <nrotem@apple.com> IRBuilder: add an assertion that checks if we try to get a debug loc from ->end();

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185952 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
7b934079c044311c56ebf3809c8c0047d88f825a 09-Jul-2013 Nadav Rotem <nrotem@apple.com> Fix a bug in IRBuilder::ClearInsertionPoint. The IR Builder needs to reset both the BB and the insert point inside the BB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185883 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
6bd46a40e8258b4321a2c6f35a8c61b3fa22116c 07-Jul-2013 Nick Lewycky <nicholas@mxc.ca> Add missing per-argument doesNotAccessMemory accessors. No functionality change
since it has no callers today.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185775 91177308-0d34-0410-b5e6-96231b3b80d8
unction.h
dc89737bcdbb8f69d8ae7578bdfa904cabcfc5ed 06-Jul-2013 Nick Lewycky <nicholas@mxc.ca> Extend 'readonly' and 'readnone' to work on function arguments as well as
functions. Make the function attributes pass add it to known library functions
and when it can deduce it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185735 91177308-0d34-0410-b5e6-96231b3b80d8
rgument.h
unction.h
ntrinsics.td
2d6e3bd8814db99c70aba5c2163825b92f9ed4b8 29-Jun-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix extra whitespace / formatting

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185238 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.h
1c07dae9fcd04469779edf7b86fef37fecc9466c 28-Jun-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Remove i8 register class. PTX support for i8 (.b8, .u8, .s8) is rather poor and we're better off just ignoring it and letting LLVM expand all i8 ops out to i16.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185174 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsNVVM.td
2253a2f52f3c46ae75cd05f5885acb987bd1d6b6 27-Jun-2013 Michael Gottesman <mgottesman@apple.com> Added support for the Builtin attribute.

The Builtin attribute is an attribute that can be placed on function call site that signal that even though a function is declared as being a builtin,

rdar://problem/13727199

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185049 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
nstructions.h
e0026d00f90027a9f2b8ad6b6a2b48e36f808dbe 21-Jun-2013 Kostya Serebryany <kcc@google.com> add Function::removeFnAttr()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184536 91177308-0d34-0410-b5e6-96231b3b80d8
unction.h
389ee19eabbfef205472ae1eb7131f8a2e32fde5 18-Jun-2013 Chris Lattner <sabre@nondot.org> remove some @deprecated markers: LLVM APIs aren't deprecated, they are removed when obsolete.
These APIs are still used, and the constant APIs are actually really important.

Removing these makes -Wdocumentation more useful.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184170 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.h
nstructions.h
8a0d41e1a649c32e1f0e22c6c201a2e0d8463e30 14-Jun-2013 Derek Schuff <dschuff@google.com> Make PrologEpilogInserter save/restore all callee saved registers
in functions which call __builtin_unwind_init()

__builtin_unwind_init() is an undocumented gcc intrinsic which has this effect,
and is used in libgcc_eh.

Goes part of the way toward fixing PR8541.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183984 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.td
b7eb5c04065d7e13642e203b0f59fd079d85118c 14-Jun-2013 Jakub Staszak <kubastaszak@gmail.com> #include <climits> instead of <limits.h> in C++ header file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183957 91177308-0d34-0410-b5e6-96231b3b80d8
ypeBuilder.h
7c2b4be2a718b994298803dd09e81e49a016ffb2 01-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> Move getRealLinkageName to a common place and remove all the duplicates of it.

Also simplify code a bit while there. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183076 91177308-0d34-0410-b5e6-96231b3b80d8
lobalValue.h
04b0bcf7b1410fcd125434938555ee41af03dc28 31-May-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Fix wrong comment. Null is not acceptable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182979 91177308-0d34-0410-b5e6-96231b3b80d8
nstrTypes.h
4e505a47c76967ded5ec91acc25e7d0f9ac997c1 25-May-2013 Jim Grosbach <grosbach@apple.com> Tidy up. Whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182689 91177308-0d34-0410-b5e6-96231b3b80d8
LVMContext.h
77226a03dca98e6237c1068f2652fe41bea7b687 24-May-2013 Diego Novillo <dnovillo@google.com> Add a new function attribute 'cold' to functions.

Other than recognizing the attribute, the patch does little else.
It changes the branch probability analyzer so that edges into
blocks postdominated by a cold function are given low weight.

Added analysis and code generation tests. Added documentation for the
new attribute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182638 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
f8c243abba01d9d4fe53f7ab962139593f184400 24-May-2013 Daniel Malea <daniel.malea@intel.com> Re-implement DebugIR in a way that does not subclass AssemblyWriter:
- move AsmWriter.h from public headers into lib
- marked all AssemblyWriter functions as non-virtual; no need to override them
- DebugIR now "plugs into" AssemblyWriter with an AssemblyAnnotationWriter helper
- exposed flags to control hiding of a) debug metadata b) debug intrinsic calls

C/R: Paul Redmond



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182617 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.h
b9c26dcb2438266567ce94570bf294d00d10cc87 21-May-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add @llvm.nvvm.sqrt.f() intrinsic

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182394 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsNVVM.td
e932e891e55d90398f07957b7333b4ce66ae3829 20-May-2013 Benjamin Kramer <benny.kra@googlemail.com> Enable pod-like optimizations for pred and succ iterators.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182257 91177308-0d34-0410-b5e6-96231b3b80d8
se.h
2aa6db98df22ea328fbf49018cd0473e56a9ec4b 16-May-2013 Eli Bendersky <eliben@google.com> Remove dead code.

This method is not being used/tested anywhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181943 91177308-0d34-0410-b5e6-96231b3b80d8
odule.h
b1fd3cd78f8acd21dbf514b75fef991827c343b6 15-May-2013 Hal Finkel <hfinkel@anl.gov> Implement PPC counter loops as a late IR-level pass

The old PPCCTRLoops pass, like the Hexagon pass version from which it was
derived, could only handle some simple loops in canonical form. We cannot
directly adapt the new Hexagon hardware loops pass, however, because the
Hexagon pass contains a fundamental assumption that non-constant-trip-count
loops will contain a guard, and this is not always true (the result being that
incorrect negative counts can be generated). With this commit, we replace the
pass with a late IR-level pass which makes use of SE to calculate the
backedge-taken counts and safely generate the loop-count expressions (including
any necessary max() parts). This IR level pass inserts custom intrinsics that
are lowered into the desired decrement-and-branch instructions.

The most fragile part of this new implementation is that interfering uses of
the counter register must be detected on the IR level (and, on PPC, this also
includes any indirect branches in addition to function calls). Also, to make
all of this work, we need a variant of the mtctr instruction that is marked
as having side effects. Without this, machine-code level CSE, DCE, etc.
illegally transform the resulting code. Hopefully, this can be improved
in the future.

This new pass is smaller than the original (and much smaller than the new
Hexagon hardware loops pass), and can handle many additional cases correctly.
In addition, the preheader-creation code has been copied from LoopSimplify, and
after we decide on where it belongs, this code will be refactored so that it
can be explicitly shared (making this implementation even smaller).

The new test-case files ctrloop-{le,lt,ne}.ll have been adapted from tests for
the new Hexagon pass. There are a few classes of loops that this pass does not
transform (noted by FIXMEs in the files), but these deficiencies can be
addressed within the SE infrastructure (thus helping many other passes as well).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181927 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsPowerPC.td
d0fef32e5f3700c7de6dfc50a1a3815659b7d19e 08-May-2013 Daniel Malea <daniel.malea@intel.com> Pull up AssemblyWriter interface into header to allow subclassing
- made all functions virtual so that subclasses can specialize them
- add printInstructionLine so that subclasses can choose whether or not to
print the newline character (without having to implement printBasicBlock()
- added a second constructor to AssemblyWriter that does not require a
SlotTracker, as required in order to keep the SlotTracker helper class outside
AsmWriter.h and buried in the implementation.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181466 91177308-0d34-0410-b5e6-96231b3b80d8
smWriter.h
eaf14786ca3975266ed7041ac242122c02baf1cf 06-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Fix const merging when an alias of a const is llvm.used.

We used to disable constant merging not only if a constant is llvm.used, but
also if an alias of a constant is llvm.used. This change fixes that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181175 91177308-0d34-0410-b5e6-96231b3b80d8
alue.h
5c332dbd30d9398ed25b30c3080506f7b8e92290 05-May-2013 Dmitri Gribenko <gribozavr@gmail.com> Add ArrayRef constructor from None, and do the cleanups that this constructor enables

Patch by Robert Wilhelm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181138 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.h
ceb7fb8935b384585d3505aae4e99cad0f95778c 03-May-2013 Akira Hatanaka <ahatanaka@mips.com> [mips] Remove "Commutative" from property list of non-commutative intrinsics.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180988 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsMips.td
f9bccc2f1a78ad1ffecc1e95c47a30e6adb3ef5c 02-May-2013 Adrian Prantl <aprantl@apple.com> Provide an API to temporarily suppress DebugLocations from being attached
to emitted instructions. Use this if you want an instruction to be
counted towards the prologue or if there is no useful source location.

rdar://problem/13442648

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180929 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
40be1e85665d10f5444186f0e7106e368dd735b8 01-May-2013 Filip Pizlo <fpizlo@apple.com> This patch breaks up Wrap.h so that it does not have to include all of
the things, and renames it to CBindingWrapping.h. I also moved
CBindingWrapping.h into Support/.

This new file just contains the macros for defining different wrap/unwrap
methods.

The calls to those macros, as well as any custom wrap/unwrap definitions
(like for array of Values for example), are put into corresponding C++
headers.

Doing this required some #include surgery, since some .cpp files relied
on the fact that including Wrap.h implicitly caused the inclusion of a
bunch of other things.

This also now means that the C++ headers will include their corresponding
C API headers; for example Value.h must include llvm-c/Core.h. I think
this is harmless, since the C API headers contain just external function
declarations and some C types, so I don't believe there should be any
nasty dependency issues here.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180881 91177308-0d34-0410-b5e6-96231b3b80d8
asicBlock.h
RBuilder.h
LVMContext.h
odule.h
ype.h
se.h
alue.h
e42240517b9759fcc77220edc30fcb868e2b72c8 01-May-2013 Peng Cheng <gm4cheng@gmail.com> get rid of windows warning:

warning C4946: reinterpret_cast used between related classes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180852 91177308-0d34-0410-b5e6-96231b3b80d8
lobalValue.h
dc42e3d831eee01f1552d9ccae4d088a4d154934 01-May-2013 Peng Cheng <gm4cheng@gmail.com> get rid of windows warning:

warning C4800: forcing value to bool 'true' or 'false' (performance warning)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180851 91177308-0d34-0410-b5e6-96231b3b80d8
erivedTypes.h
ae2a1dacb7fed0d037db2116f5790be3b69b73fb 01-May-2013 Peng Cheng <gm4cheng@gmail.com> replace reinterpret_cast by cast or remove reinterpret_cast to get rid of windows warning: warning C4946: reinterpret_cast used between related classes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180850 91177308-0d34-0410-b5e6-96231b3b80d8
onstants.h
aae0298921d946a64385052ce6e678d36f936fb3 01-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Now that the underlying issue is fixed, revert r180750 and r180722.

The cause of the windows failures was fixed by r180791. Revert to the state
after Sabre's original revert.

Original message:

revert r179735, it has no testcases, and doesn't really make sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180844 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
8c3a54998bcbdd10e1997519ba1c17b7f0850709 01-May-2013 Duncan Sands <baldrick@free.fr> Correct comment: there is no numTys parameter any more now that this is using
ArrayRef.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180840 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.h
76f103e02164d27b41bd92a9767c7012482ba31a 30-Apr-2013 Rafael Espindola <rafael.espindola@gmail.com> Change getSlotIndex to return unsigned.

The actual storage was already using unsigned, but the interface was using
uint64_t. This is wasteful on 32 bits and looks to be the root causes of
a miscompilation on Windows where a value was being sign extended to 64bits
to compare with the result of getSlotIndex.

Patch by Pasi Parviainen!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180791 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
f2e83499fcc41484cb5dac073c4fe87525926d2b 29-Apr-2013 Reid Kleckner <reid@kleckner.net> Revert "revert r179735, it has no testcases, and doesn't really make sense."

This un-reverts r179735 and reverts commit r180574.

This fixes assertion failures for me locally and should fix the failures
on Windows reported widely on llvm-dev. We should check if the bots
caught this and if so why not.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180722 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
a5b314c27a585b979ac9c9da944aa3cec27d22a6 27-Apr-2013 Manman Ren <mren@apple.com> Struct-path aware TBAA: change the format of TBAAStructType node.

We switch the order of offset and field type to make TBAAStructType node
(name, parent node, offset) similar to scalar TBAA node (name, parent node).
TypeIsImmutable is added to TBAAStructTag node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180654 91177308-0d34-0410-b5e6-96231b3b80d8
DBuilder.h
29fce9ad39636d38f43add5d7c23e83d9d1cc249 25-Apr-2013 Chris Lattner <sabre@nondot.org> revert r179735, it has no testcases, and doesn't really make sense.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180574 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
456ca048af35163b9f52187e92a23ee0a9f059e8 20-Apr-2013 Stephen Lin <stephenwlin@gmail.com> Add CodeGen support for functions that always return arguments via a new parameter attribute 'returned', which is taken advantage of in target-independent tail call opportunity detection and in ARM call lowering (when placed on an integral first parameter).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179925 91177308-0d34-0410-b5e6-96231b3b80d8
rgument.h
ttributes.h
a88a016f2d99488f2eff0eb6be256f2f43602afa 18-Apr-2013 Bill Wendling <isanbard@gmail.com> Make the TargetIndependent flag have the right boolean value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179798 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
8a6a7bb6a601061031cddd77129532a3b467300b 18-Apr-2013 Bill Wendling <isanbard@gmail.com> Cleanup patch:

Semantics of parameters named Index and Idx were inconsistent between
"include/llvm/IR/Attributes.h", "lib/IR/AttributeImpl.h" and
"lib/IR/Attributes.cpp": sometimes these were fixed 1-based indexes of IR
parameters (or AttributeSet::ReturnIndex for IR return values or
AttributeSet::FunctionIndex for IR functions), other times they were the
internal slot for storage in the underlying AttributeSetImpl. I renamed usage of
the former to "Index" and usage of the latter to "Slot" ("Slot" was already
being used consistently for the latter in a subset of cases)

Patch by Stephen Lin!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179791 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
bb1b63c48397a3bac5d00f2ac9d33cc14efd714c 18-Apr-2013 Bill Wendling <isanbard@gmail.com> This patch addresses two cleanup issues:

1. Verify::VerifyParameterAttrs in "lib/IR/Verifier.cpp" and
AttrBuilder::removeFunctionOnlyAttrs in "lib/IR/Attributes.cpp" (only called
by Verify::VerifyFunctionAttrs) separately maintained a list of function-only
attribute types. I've consolidated the logic into a new function used for
both cases in "lib/IR/Verifier.cpp", so this logic is in one place (other
than the AsmParser front-end)

2. Various functions in "lib/IR/Verifier.cpp" passed AttributeSet around by
reference needlessly, as it's just a handle to an immutable pimpl body.

Patch by Stephen Lin!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179790 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
b1ac6e617291e2a628bc460933bde97c73466cb0 18-Apr-2013 Bill Wendling <isanbard@gmail.com> Add an option `-enable-old-style-attr-syntax' to print out function attributes in the "old" style.

It's sometimes beneficial to emit a testcase with the old style attribute
syntax. Allow someone to do this.
<rdar://problem/13563209>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179735 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
6b51f75cc58b5a431cfb9e808f27f1fc4432913e 16-Apr-2013 Eli Bendersky <eliben@google.com> Cleanup naming: DataLayout s/TD/DL/



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179601 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.h
327f0100d1c1aa738d13b45d70eab08d0d2030fb 12-Apr-2013 Manman Ren <mren@apple.com> TBAA: add utility to create a TBAA scalar type node

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179331 91177308-0d34-0410-b5e6-96231b3b80d8
DBuilder.h
6e43efe071c5bfaa5cebf4d42d93d0f117c1aa2a 07-Apr-2013 Hal Finkel <hfinkel@anl.gov> PPC Altivec load/store intrinsics can be marked IntrRead[Write]ArgMem

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178983 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsPowerPC.td
082bb7cf57e3a7089b8302a7d676fddf0bce276e 02-Apr-2013 Manman Ren <mren@apple.com> Add MDBuilder utilities for path-aware TBAA.

Add utilities to create struct nodes in TBAA type DAG and to create path-aware
tags. The format of struct nodes in TBAA type DAG: a unique name, a list of
fields with field offsets and field types. The format of path-aware tags:
a base type in TBAA type DAG, an access type and an offset relative to the base
type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178564 91177308-0d34-0410-b5e6-96231b3b80d8
DBuilder.h
c26392aa5d9c2dbca2909d6874d181455f8aeb8f 29-Mar-2013 Michael Liao <michael.liao@intel.com> Add support of RDSEED defined in AVX2 extension



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178314 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
7fe65d691dcce550d53ec9310913aab67ab6d654 27-Mar-2013 Rafael Espindola <rafael.espindola@gmail.com> Cleanup the simplify_type implementation.

As far as simplify_type is concerned, there are 3 kinds of smart pointers:

* const correct: A 'const MyPtr<int> &' produces a 'const int*'. A
'MyPtr<int> &' produces a 'int *'.
* always const: Even a 'MyPtr<int> &' produces a 'const int*'.
* no const: Even a 'const MyPtr<int> &' produces a 'int*'.

This patch then does the following:

* Removes the unused specializations. Since they are unused, it is hard
to know which kind should be implemented.
* Make sure we don't drop const.
* Fix the default forwarding so that const correct pointer only need
one specialization.
* Simplifies the existing specializations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178147 91177308-0d34-0410-b5e6-96231b3b80d8
se.h
ser.h
f8fd883fd368316ad3738dad6c15b1b8f3850f88 26-Mar-2013 Michael Liao <michael.liao@intel.com> Add XTEST codegen support



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178083 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsX86.td
1ca6468c0518b2c2dcd69c68b2099ae93f57f8f9 22-Mar-2013 Bill Wendling <isanbard@gmail.com> Revert r177675. This is language-specific and shouldn't be in the API.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177748 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.h
2be921adc41fb079ce25d36bdd6402ca70d56451 22-Mar-2013 Arnaud A. de Grandmaison <arnaud.adegm@gmail.com> InstCombine: Improve the result bitvect type when folding (cmp pred (load (gep GV, i)) C) to a bit test.

The original code used i32, and i64 if legal. This introduced unneeded
casts when they aren't legal, or when the index variable i has another
type. In order of preference: try to use i's type; use the smallest
fitting legal type (using an added DataLayout method); default to i32.
A testcase checks that this works when the index gep operand is i16.

Patch by : Ahmed Bougacha <ahmed.bougacha@gmail.com>
Reviewed by : Duncan

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177712 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.h
8233050895f781befc1d4165435d0fff605b6b70 22-Mar-2013 Bill Wendling <isanbard@gmail.com> Add a query to tell if a landing pad has a catch-all.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177675 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.h
c57f5dd8bd399667d2b93d3ca05f47feae17629c 21-Mar-2013 Chandler Carruth <chandlerc@gmail.com> Hoist the definition of getTypeSizeInBits to be inlinable and in the
header.

This method is called in the hot path for *many* passes, SROA is what
caught my interest. A common pattern is that which branch of the switch
should be taken is known in the callsite and so it is a very good
candidate for inlining and simplification. Moving it into the header
allows the optimizer to fold a lot of boring, repeatitive code in
callers of this routine.

I'm seeing pretty significant speedups in parts of SROA and I suspect
other passes will see similar speedups if they end up working with type
sizes frequently. I've not seen any significant growth of the binaries
as a consequence, but let me know if you see anything suspicious here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177632 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.h
72f0cdea4160ec3a5f5123831a57f96d3a95456c 18-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove default copy ctor/assignment, makes AttributeSet trivially copyable.

And enables SmallVector's pod optimizations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177281 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
9106f73246168fb30d26fb14085c0b3d81fcd350 13-Mar-2013 Reed Kotler <rkotler@mips.com> Add some additonal attribute helper functions. Test will be on follow
up putback to clang for mips16.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176968 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
unction.h
8f8af529fc6239985f73a4b3cf3a0b25692824ed 12-Mar-2013 Pete Cooper <peter_cooper@apple.com> Add a doFinalization method to the DataLayout pass.

This pass is meant to be immutable, however it holds mutable state to cache StructLayouts.
This method will allow the pass manager to clear the mutable state between runs.

Note that unfortunately it is still necessary to have the destructor, even though it does the
same thing as doFinalization. This is because most TargetMachines embed a DataLayout on which
doFinalization isn't run as its never added to the pass manager.

I also didn't think it was necessary to complication things with a deInit method for which
doFinalization and ~DataLayout both call as there's only one field of mutable state. If we had
more fields to finalize i'd have added this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176877 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.h
87d212095feced42295c2a5813f1ce577d01d44f 07-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> Fix tautological compare. Not sure why this didn't trigger any test failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176652 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.h
4a521da51a4eea92d76a7d635b63ab9f8a57c936 07-Mar-2013 Jakub Staszak <kubastaszak@gmail.com> Change Index type from unsigned long to unsigned. This should fix PR14980.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176645 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.h
4b7e609548934542ffd92b1d63ea8597b43a565a 07-Mar-2013 Jakub Staszak <kubastaszak@gmail.com> Remove trailing spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176643 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.h
985dac65791b9f6f631bdd51c18fe66592a67469 06-Mar-2013 Shuxin Yang <shuxin.llvm@gmail.com> 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
LVMContext.h
328d1b65002e68ae65ffef05eed19122cbf721f5 02-Mar-2013 Peter Collingbourne <peter@pcc.me.uk> 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
nstructions.h
4c8e74f0b75cb10820c45c86399fbd02e4a8832a 01-Mar-2013 Michael Ilseman <milseman@apple.com> 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
unction.h
ae1dbb39f7f769ac83ec2ec6a6c243c26c2aba02 01-Mar-2013 Peng Cheng <gm4cheng@gmail.com> test commit to use consistent comment notation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176353 91177308-0d34-0410-b5e6-96231b3b80d8
erivedTypes.h
72a001d1f8e537624930c437808825a23e8b46bf 01-Mar-2013 Michael Liao <michael.liao@intel.com> Minor coding style fix



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176334 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.h
cd275c57afda09f7c0ee98f23d0f243d5dc3fc8b 27-Feb-2013 David Blaikie <dblaikie@gmail.com> Copy missing member in DataLayout copy ctor.

Test case is missing due to it not being reachable through the current tools
but out of tree code such as the sample at
http://llvm.org/docs/tutorial/LangImpl4.html

Patch by Peng Cheng <gm4cheng@gmail.com>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176213 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.h
8eec41fc778e99d42172a7f6de76faa43a6d8847 26-Feb-2013 Kostya Serebryany <kcc@google.com> Unify clang/llvm attributes for asan/tsan/msan (LLVM part)

These are two related changes (one in llvm, one in clang).
LLVM:
- rename address_safety => sanitize_address (the enum value is the same, so we preserve binary compatibility with old bitcode)
- rename thread_safety => sanitize_thread
- rename no_uninitialized_checks -> sanitize_memory

CLANG:
- add __attribute__((no_sanitize_address)) as a synonym for __attribute__((no_address_safety_analysis))
- add __attribute__((no_sanitize_thread))
- add __attribute__((no_sanitize_memory))

for S in address thread memory
If -fsanitize=S is present and __attribute__((no_sanitize_S)) is not
set llvm attribute sanitize_S


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176075 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
143d46476cdcf5b88b9ee18ebd799e5820a2db0e 22-Feb-2013 Bill Wendling <isanbard@gmail.com> Implement the NoBuiltin attribute.

The 'nobuiltin' attribute is applied to call sites to indicate that LLVM should
not treat the callee function as a built-in function. I.e., it shouldn't try to
replace that function with different code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175835 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
03544ec2a43fab162d25cf44627d1d08430bcccd 19-Feb-2013 Nadav Rotem <nrotem@apple.com> Fix a bug in mayHaveSideEffects. Functions that do not return are now considered as instructions with side effects.

rdar://13227456



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175553 91177308-0d34-0410-b5e6-96231b3b80d8
nstruction.h
5b0a8d9ca6602ba22d20a5ed7cbf50e5f5f2b369 19-Feb-2013 Bill Wendling <isanbard@gmail.com> Add some convenience methods for querying function attributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175469 91177308-0d34-0410-b5e6-96231b3b80d8
unction.h
a39058aaed4540fc37681cad728b99546595b2e8 19-Feb-2013 David Blaikie <dblaikie@gmail.com> Use LLVM_DELETED_FUNCTION rather than '// do not implement' comments.

Also removes some redundant DNI comments on function declarations already
using the macro.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175466 91177308-0d34-0410-b5e6-96231b3b80d8
perator.h
se.h
fbed8555ad409ba74a032baf53ece1c873c2b9a3 18-Feb-2013 Jakub Staszak <kubastaszak@gmail.com> Use llvm::cast instead of reinterpret_cast.
Also, GetElementPtrInst::getType() method returns SequentialType now, instead of
PointerType. There wasn't any issue yet, so no testcase attached.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175452 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.h
3f213e7b3a6829a154d4e8ceb7d8689b389bd5dc 18-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Futureproof AttrBuild if we ever have more than 64 attr enum values.

Currently we're at 34. Bitset should compile into virtually the same code as
uint64_t here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175437 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
886a7663c72cb04eaee58cb6997c394f5096a8b9 16-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Remove comma at the end of enum. Still my favourite C++11 feature.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175372 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
c835b8c30127d15599de2d614434d39a6cc3ae17 16-Feb-2013 Benjamin Kramer <benny.kra@googlemail.com> Turn the enum attributes DenseSet in AttrBuilder into a set of bits.

Avoids malloc and is a lot denser. We lose iteration over target independent
attributes, but that's a strange interface anyways and didn't have any users
outside of AttrBuilder.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175370 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
0e9d5d059c4aa959e9ef4dff011dbd38d45a1016 13-Feb-2013 Bill Wendling <isanbard@gmail.com> Add some accessor and query methods for retrieving Attribute objects and such.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175046 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
ad19d9c4228718b0ac167d0dfa013d14c3c9f135 13-Feb-2013 Bill Wendling <isanbard@gmail.com> Add a default empty string to the 'value' of a string attribute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175016 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
7eacad03efda36e09ebd96e95d7891cadaaa9087 12-Feb-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Disable vector registers

Vectors were being manually scalarized by the backend. Instead,
let the target-independent code do all of the work. The manual
scalarization was from a time before good target-independent support
for scalarization in LLVM. However, this forces us to specially-handle
vector loads and stores, which we can turn into PTX instructions that
produce/consume multiple operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174968 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsNVVM.td
e3db2048ea2ce2743acce76a6bb22214a197c364 11-Feb-2013 Bill Wendling <isanbard@gmail.com> Rename to something more sensible. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174909 91177308-0d34-0410-b5e6-96231b3b80d8
unction.h
ff5adad9f39f60dc9f1caadef03b6aa7922ed168 11-Feb-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Remove NoCapture from address space conversion intrinsics. NoCapture is not valid in this case, and was causing incorrect optimizations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174896 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsicsNVVM.td
b29ce26ea60f7516c853318ffbfc107fde9ad897 11-Feb-2013 Bill Wendling <isanbard@gmail.com> Add support for printing out the attribute groups.

This emits the attribute groups that are used by the functions. (It currently
doesn't print out return type or parameter attributes within attribute groups.)

Note: The functions still retrieve their attributes from the "old" bitcode
format (using the deprecated 'Raw()' method). This means that string attributes
within an attribute group will not show up during a disassembly. This will be
addressed in a future commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174867 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
ab39afa9d9b99c61842c8e3d0eb706bd16efdcf3 11-Feb-2013 Kostya Serebryany <kcc@google.com> [tsan/msan] adding thread_safety and uninitialized_checks attributes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174864 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
f64c889cc94417322b0ff8ad1c61939183bf3c38 11-Feb-2013 Bob Wilson <bob.wilson@apple.com> Revert "Rename LLVMContext diagnostic handler types and functions."

This reverts my commit 171047. Now that I've removed my misguided attempt to
support backend warnings, these diagnostics are only about inline assembly.
It would take quite a bit more work to generalize them properly, so I'm
just reverting this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174860 91177308-0d34-0410-b5e6-96231b3b80d8
LVMContext.h
87de71cb9f12d874e88d4f314ab245985c1b36bc 10-Feb-2013 Bill Wendling <isanbard@gmail.com> Add 'empty' query methods to the builder and use them in the verifier.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174832 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
85b3fbecdfe934ac7519a8831c4bd262cba99d12 10-Feb-2013 Bill Wendling <isanbard@gmail.com> Add accessor for the LLVMContext.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174824 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
16274258d16342a2f91aaa3690b78ce74e4105f1 09-Feb-2013 Bill Wendling <isanbard@gmail.com> Add a DenseMapInfo class for the AttributeSet.

We are going to place the AttributeSet into a DenseMap during assembly writing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174812 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
58446916b71c4ff79962081ea7c4df078c388b0e 08-Feb-2013 Bob Wilson <bob.wilson@apple.com> Revert "Add LLVMContext::emitWarning methods and use them. <rdar://problem/12867368>"

This reverts r171041. This was a nice idea that didn't work out well.
Clang warnings need to be associated with warning groups so that they can
be selectively disabled, promoted to errors, etc. This simplistic patch didn't
allow for that. Enhancing it to provide some way for the backend to specify
a front-end warning type seems like overkill for the few uses of this, at
least for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174748 91177308-0d34-0410-b5e6-96231b3b80d8
LVMContext.h
c3662eeaa4a1a4061fc6d5c81e3eed48c5d9da26 06-Feb-2013 Bill Wendling <isanbard@gmail.com> Improve comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174536 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
c342d9d345acdbd95577c7c6e9ce7d3a1bdb57bf 06-Feb-2013 Bill Wendling <isanbard@gmail.com> Add a 'StringRef' version of hasAttribute.

Fix the 'operator==' and 'hasAttributes' queries to take into account
target-dependent attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174481 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
85df6b43403d3ebf5d80023a85699c6fb254941a 06-Feb-2013 Bill Wendling <isanbard@gmail.com> Add methods to merge an AttrBuilder into another builder.

This is useful when parsing an object that references multiple attribute groups.

N.B. If both builders have alignments specified, then they should match!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174480 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
64754f499058b5dc748ea6d06a084af0ed539ec4 06-Feb-2013 Bill Wendling <isanbard@gmail.com> Add the target-dependent (string) attributes from the AttrBuilder to the AttributeSet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174467 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
8c74ecfbddabe89e150abff4fdff0a27108874b9 05-Feb-2013 Bill Wendling <isanbard@gmail.com> Convert to storing the attribute's internals as enums, integers, and strings.

The stuff we're handing are all enums (Attribute::AttrKind), integers and
strings. Don't convert them to Constants, which is an unnecessary step here. The
rest of the changes are mostly mechanical.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174456 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
ea59f896a672c2e1ef9f02277bce60257aa60989 05-Feb-2013 Bill Wendling <isanbard@gmail.com> Add target-dependent versions of addAttribute/removeAttribute to AttrBuilder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174356 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
ca531fd4869a17b7a6b16008b9b85741aa6b61e8 05-Feb-2013 Michael Gottesman <mgottesman@apple.com> Changed in comment cxx -> C++. Thanks Richard Smith!.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174355 91177308-0d34-0410-b5e6-96231b3b80d8
lobalVariable.h
e1b6b5290373073c95f6865ceaf76fa7848ecf44 05-Feb-2013 Michael Gottesman <mgottesman@apple.com> Add code to GlobalVariable.h so that global variables marked as
externally_initialized return false for hasDefiniteInitializer and
hasUniqueInitializer.

rdar://12580965.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174345 91177308-0d34-0410-b5e6-96231b3b80d8
lobalVariable.h
f9271ea159b97e2febedcf095c3c4122cb24d077 05-Feb-2013 Bill Wendling <isanbard@gmail.com> Initial cleanups of the param-attribute code in the bitcode reader/writer.

Rename the PARAMATTR_CODE_ENTRY to PARAMATTR_CODE_ENTRY_OLD. It will be replaced
by another encoding. Keep around the current LLVM attribute encoder/decoder
code, but move it to the bitcode directories so that no one's tempted to use
them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174335 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
af2f494c2d87a77c46efb85856f235ddd7f3c6ab 03-Feb-2013 Michael Gottesman <mgottesman@apple.com> Added instance variable/initializers/getter/setters for new keyword externally initialized to GlobalVariable. No *TRUE* functionality change.

I am going to add in the actual test cases with the actual functionality
changes in a later patch because I want to include some test cases.

To be clear when I say no *TRUE* functionality change I mean that this
patch (like it says in the title) only contains getters/setters and sets
up a default initial value of the instance variable to false so that
this patch does not affect any other uses of Global Variable.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174295 91177308-0d34-0410-b5e6-96231b3b80d8
lobalVariable.h
fca0ed28c81a505b0b71605e8b59e4bb6daeda0e 02-Feb-2013 Bill Wendling <isanbard@gmail.com> Remove AttrBuilder::Raw().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174251 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
5a4041e7282ca1dba93fe1a97c8260c0ef621f5d 01-Feb-2013 Bill Wendling <isanbard@gmail.com> Change the AttributeImpl to hold a single Constant* for the values.

This Constant could be an aggregate to represent multiple values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174228 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
f715dbd263149efeb9c684dfdb0637cf84f94399 01-Feb-2013 Bill Wendling <isanbard@gmail.com> Remove one of the odious 'Raw' methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174130 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
16c4b3cf2943ae2327752cf3de39769d14cfcece 01-Feb-2013 Bill Wendling <isanbard@gmail.com> Add iterators to the AttributeSet class so that we can access the Attributes in a nice way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174120 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
39da078977ae98b6bf1c3c76a472ed24f5f2a2d2 01-Feb-2013 Bill Wendling <isanbard@gmail.com> s/AttrBuilder::addAttributes/AttrBuilder::addAttribute/g because that's more descriptive of what it actually is.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174116 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
169d5270751597aed4095ead00401a3374906147 01-Feb-2013 Bill Wendling <isanbard@gmail.com> Remove the AttrBuilder form of the Attribute::get creators.

The AttrBuilder is for building a collection of attributes. The Attribute object
holds only one attribute. So it's not really useful for the Attribute object to
have a creator which takes an AttrBuilder.

This has two fallouts:

1. The AttrBuilder no longer holds its internal attributes in a bit-mask form.
2. The attributes are now ordered alphabetically (hence why the tests have changed).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174110 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
82aea644c6d2a21464958fe2e3a1cd0f6bfc82db 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove the Attribute::hasAttributes() function.

That function doesn't make sense anymore because there's only one attribute per
Attribute object now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174044 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
eddab1550ee10cce3bb26a26e88529cb19451aa3 31-Jan-2013 NAKAMURA Takumi <geek4civic@gmail.com> Revert r174026, "Remove Attribute::hasAttributes() and make Attribute::hasAttribute() private."

It broke many hosts to crash.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174035 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
85238aae1a4b6ac67e16560a9855944191f3db5b 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove Attribute::hasAttributes() and make Attribute::hasAttribute() private.

The Attribute::hasAttributes() is kind of meaningless since an Attribute can
have only one attribute. And we would rather people use the 'operator=='
instead of Attribute::hasAttribute().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174026 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
8ed701da9aa388c078cc6aecac2fe355974c90d2 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Make the AttrBuilder creation method of Attribute private so that people won't use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174023 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
b96129dd4856a5473c52daceaabdfd2262bd96f2 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Revert for now:

--- Reverse-merging r174010 into '.':
U include/llvm/IR/Attributes.h
U lib/IR/Verifier.cpp
U lib/IR/Attributes.cpp



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174012 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
c6077eff8b9963b59de21e5d1dfae7a6ea75da36 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove the AttrBuilder version of the Attribute::get function.

The AttrBuilder is there to build up multiple attributes. The Attribute class
represents only one attribute at a time. So remove this unnecessary builder
creator method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174010 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
73dee180c836270644dfa7d90f9c5ba877567999 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Make sure that the Attribute object represents one attribute only.

Several places were still treating the Attribute object as respresenting
multiple attributes. Those places now use the AttributeSet to represent
multiple attributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174003 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
ac72eb264c3a8a15cda81aaead6adc8419058666 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove addRetAttributes and addFnAttributes, which aren't useful abstractions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173992 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
e74365462a39529ae48ef4d34ec76b4543b8ea29 31-Jan-2013 Bill Wendling <isanbard@gmail.com> Convert typeIncompatible to return an AttributeSet.

There are still places which treat the Attribute object as a collection of
attributes. I'm systematically removing them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173990 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
bc977bab42fb3f45df054af63b4bd748300f005a 30-Jan-2013 Michael Gottesman <mgottesman@apple.com> Doxygenified some comments in IRBuilder.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173986 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
f84d4c16b3d5b0c687dd6f25c340b3b86c76fc34 30-Jan-2013 Michael Gottesman <mgottesman@apple.com> Removed CreateFPExtOrFPTrunc for now until I have the time to get in my vector convert patch.

What I thought was going to be a quick thing has extended out a little bit in
time *sigh*. So after some thought in order to not cruft up the tree I am
removing this for now since it is the right thing to do.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173985 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
aa57893e84ba7a35948fcaa99812ba88e58f4797 30-Jan-2013 Bill Wendling <isanbard@gmail.com> Use the number of 'slots' in the AttributeSetImpl being 0 to indicate that the AttributeSet is empty.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173962 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
f578c89dc6ca3e79667c2aa9d0ac4fe409da7773 30-Jan-2013 Eli Bendersky <eliben@google.com> Clean up whitespace and indentation a bit


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173960 91177308-0d34-0410-b5e6-96231b3b80d8
ataLayout.h
6dc3781d44e56f0addf28b06232a50f3f9e6b1af 29-Jan-2013 Bill Wendling <isanbard@gmail.com> Add a couple of accessor methods to get the kind and values of an attribute.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173828 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
606c8e36dfdd28fc589356addd3e2cbb89a32e4d 29-Jan-2013 Bill Wendling <isanbard@gmail.com> Convert getAttributes() to return an AttributeSetNode.

The AttributeSetNode contains all of the attributes. This removes one (hopefully
last) use of the Attribute class as a container of multiple attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173761 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
8232ece5c1e57efe54342fb35610497d50bf894f 29-Jan-2013 Bill Wendling <isanbard@gmail.com> Use an AttrBuilder to generate the correct AttributeSet.

We no longer accept an encoded integer as representing all of the
attributes. Convert this via the AttrBuilder class into an AttributeSet with the
correct representation (an AttributeSetImpl that holds a list of Attribute
objects).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173750 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
817abdd8b055059e5930a15704b9f52da4236456 29-Jan-2013 Bill Wendling <isanbard@gmail.com> S'more small non-functional changes in comments and #includes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173738 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
c22f4aa886443507f8406d30d118fdeeac6a8c6c 29-Jan-2013 Bill Wendling <isanbard@gmail.com> Reorder some functions and add comments. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173733 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
6bdbf061c353295669b6bfc271b948158602d1bc 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Try to appease some broken compilers by using 'unsigned' instead of 'uint64_t'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173725 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
87e10dfefa94f77937c37b0eb51095540d675cbc 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove the AttributeWithIndex class.

The AttributeWithIndex class exposed the interior structure of the AttributeSet
class. That was gross. Remove it and all of the code that relied upon it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173722 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
19d815c04fde6b7b53c2b542813157edfa213842 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Mid-air collision. reapply r173656.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173661 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
98b92f3bf5770e02498549e24b3db75d5862c173 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Rewrite the removeAttr() method.

This now uses the AttributeSet object instead of the Attribute /
AttributeWithIndex objects. It's fairly simple now. It goes through all of the
subsets before the one we're modifying, adds them to the new set. It then adds
the modified subset (with the requested attributes removed). And then adds the
rest of the subsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173660 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
49f6060f16aec4024d644a6ec4ddd3de9b3e8821 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Rewrite the addAttr() method.

This now uses the AttributeSet object instead of the Attribute /
AttributeWithIndex objects. It's fairly simple now. It goes through all of the
subsets before the one we're modifying, adds them to the new set. It then adds
the modified subset. And then adds the rest of the subsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173659 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
53ff78b2019e96e142986d19dd99f8dd563dc494 28-Jan-2013 NAKAMURA Takumi <geek4civic@gmail.com> Revert r173646, "Use proper type for the index."

Unfortunately, msvc miscompiles it. Investigating.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173656 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
a9b9f0ad802ef6973534a9a247716e4a8e079635 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Use proper type for the index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173646 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
3e3e789aede6ec38d39c95d88ad4e8634d5a259b 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Use proper return type for attribute index.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173639 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
d05204aea4977eaec25e96bc7605a7bb9d806fc0 28-Jan-2013 Bill Wendling <isanbard@gmail.com> Push the calculation of the 'Raw' attribute mask down into the implementation. It in turn uses the correct list for calculating the 'Raw' value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173637 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
2d5be6c313c0f9e23e56620fa8f8ae8d9b539bf0 27-Jan-2013 Bill Wendling <isanbard@gmail.com> Don't erase these methods. They're used during testing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173636 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
c08a5ef6581f2c7550e92d31f63cd65ec29c39e0 27-Jan-2013 Bill Wendling <isanbard@gmail.com> Add special 'get' methods to create an Attribute with an alignment. Also do some random cleanup. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173635 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
ec2589863b32da169240c4fa120ef1e3798615d4 27-Jan-2013 Bill Wendling <isanbard@gmail.com> s/AttrList/pImpl/g in AttributeSet. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173628 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
16f95669ec814d98ce28ad514df603c01d662ee8 27-Jan-2013 Bill Wendling <isanbard@gmail.com> Fix miscompile. Add back the use of the ArrayRef version of the ::get method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173613 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
08c11d302325b3715d77f4208d183c9b2a253b14 27-Jan-2013 Bill Wendling <isanbard@gmail.com> Rearrange some deckchairs. Moving the class before it's use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173612 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
09dda440ba6622b64713ef5f7d9531411e3589ea 27-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove dead methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173611 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
7d38c109aab8654e63e9071c7d948661f6b58433 27-Jan-2013 Bill Wendling <isanbard@gmail.com> Hide the method that creates an AttributeSet with AttributeWithIndexes.

This method will go away once AttributeWithIndex goes away. In the meantime,
hide it from general use.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173607 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
da6de52435d05e73e3691006e9f8d78e0102343e 26-Jan-2013 David Blaikie <dblaikie@gmail.com> IRBuilder: Remove redundant check around SetInstDebugLocation call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173591 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
32a57958226e369f964a034da2ce7083a1a34297 26-Jan-2013 Bill Wendling <isanbard@gmail.com> Convert BuildLibCalls.cpp to using the AttributeSet methods instead of AttributeWithIndex.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173536 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
483bbd36b8b3f87073feea2e1096f188d0e735b8 26-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove dead method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173524 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
8e47daf2858e980210f3e1f007036b24da342c29 26-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove some introspection functions.

The 'getSlot' function and its ilk allow introspection into the AttributeSet
class. However, that class should be opaque. Allow access through accessor
methods instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173522 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
e1f95db4803a48a30fc2a1d5868281a87a36fb85 25-Jan-2013 Bill Wendling <isanbard@gmail.com> Add an accessor method to get the slot's index. This will limit the use of AttributeWithIndex.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173495 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
bb08593980b16fbd9758da6ca4fa9c7964f2f926 24-Jan-2013 Bill Wendling <isanbard@gmail.com> Add a profile for uniquifying the AttributeSet with the AttributeSetNodes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173313 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
3467e30edf63b6d8a8d446186674ba9e4b7885a9 24-Jan-2013 Bill Wendling <isanbard@gmail.com> Create a new class: AttributeSetNode.

This is a helper class for the AttributeSetImpl class. It holds a set of
attributes that apply to a single element: function, return type, or
parameter.

These are uniqued.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173310 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
2915a691b9eecde508948d4300428860d1655175 23-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove dead methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173302 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
5ed3ac1185a52756a55ac043ede983a2ed4ea8f1 23-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove unused methods and ivars.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173284 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
114baee1fa017daefad2339c77b45b9ca3d79a41 23-Jan-2013 Bill Wendling <isanbard@gmail.com> Add the IR attribute 'sspstrong'.

SSPStrong applies a heuristic to insert stack protectors in these situations:

* A Protector is required for functions which contain an array, regardless of
type or length.

* A Protector is required for functions which contain a structure/union which
contains an array, regardless of type or length. Note, there is no limit to
the depth of nesting.

* A protector is required when the address of a local variable (i.e., stack
based variable) is exposed. (E.g., such as through a local whose address is
taken as part of the RHS of an assignment or a local whose address is taken as
part of a function argument.)

This patch implements the SSPString attribute to be equivalent to
SSPRequired. This will change in a subsequent patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173230 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
28d65722d6f283b327b5815914382077fe9c0ab4 23-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove the last of uses that use the Attribute object as a collection of attributes.

Collections of attributes are handled via the AttributeSet class now. This
finally frees us up to make significant changes to how attributes are structured.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173228 91177308-0d34-0410-b5e6-96231b3b80d8
rgument.h
ttributes.h
8246df61f6de716acf1f8c64fac3c19970a2c174 23-Jan-2013 Bill Wendling <isanbard@gmail.com> Use the AttributeSet when removing multiple attributes. Use Attribute::AttrKind
when removing one attribute. This further encapsulates the use of the attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173214 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
unction.h
70d2ca0725b05a2d372e4dc3336e8ea350093e98 23-Jan-2013 Bill Wendling <isanbard@gmail.com> Use the AttributeSet when adding multiple attributes and an Attribute::AttrKind
when adding a single attribute to the function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173210 91177308-0d34-0410-b5e6-96231b3b80d8
unction.h
defaca00b8087d452df2b783250a48a32658a910 22-Jan-2013 Bill Wendling <isanbard@gmail.com> More encapsulation work.

Use the AttributeSet when we're talking about more than one attribute. Add a
function that adds a single attribute. No functionality change intended.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173196 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
0a29cb045444c13160e90fe7942a9d7c720185ed 22-Jan-2013 Tim Northover <Tim.Northover@arm.com> Make APFloat constructor require explicit semantics.

Previously we tried to infer it from the bit width size, with an added
IsIEEE argument for the PPC/IEEE 128-bit case, which had a default
value. This default value allowed bugs to creep in, where it was
inappropriate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173138 91177308-0d34-0410-b5e6-96231b3b80d8
ype.h
e4e85f17564c28cd571dda30146c3f310521acf0 22-Jan-2013 Bill Wendling <isanbard@gmail.com> Add a new method that adds the AttributeSet at the given index. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173109 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
0d8c5fb91d9240f14246803200c0110e25e849d8 22-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove unused method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173106 91177308-0d34-0410-b5e6-96231b3b80d8
unction.h
3fc4b96b503fa202411317684a2ba02e41e43072 21-Jan-2013 Bill Wendling <isanbard@gmail.com> Have AttributeSet::getRetAttributes() return an AttributeSet instead of Attribute.

This further restricts the use of the Attribute class to the Attribute family of
classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173098 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
c5f1bc88a2eb7ad9ff924ca90cf88494e5f947b9 21-Jan-2013 Bill Wendling <isanbard@gmail.com> Make AttributeSet::getFnAttributes() return an AttributeSet instead of an Attribute.

This is more code to isolate the use of the Attribute class to that of just
holding one attribute instead of a collection of attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173094 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
ec98d2ce5ec51148e442c024b77a7483c81eee6c 20-Jan-2013 Michael Gottesman <mgottesman@apple.com> Changed IRBuilder::CreateZExtOrTrunc and IRBuilder::CreateSExtOrTrunc so they also work with vectors.

I also changed the name of a variable in IRBuilder::CreateFPExtOrFPTrunc to
match the names used in its two matching brethern as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172967 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
0e1a9f27bd6451897144f99ff2b2081986077896 20-Jan-2013 Michael Gottesman <mgottesman@apple.com> More copy editing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172962 91177308-0d34-0410-b5e6-96231b3b80d8
asicBlock.h
a1456e1cb8ade1befa7fc9cdac8fd542862cbcd8 20-Jan-2013 Michael Gottesman <mgottesman@apple.com> Doxygenified and copy edited BasicBlock.h.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172961 91177308-0d34-0410-b5e6-96231b3b80d8
asicBlock.h
b6b8ba62698ecb34a4ec6f20b4d10ff1b408cb30 20-Jan-2013 Michael Gottesman <mgottesman@apple.com> Doxygenified Argument.h and performed some copy editing of the documentation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172960 91177308-0d34-0410-b5e6-96231b3b80d8
rgument.h
864c2a261a551545b1929dbb4d498fd655f4239d 20-Jan-2013 Michael Gottesman <mgottesman@apple.com> Converted all method comments in IRBuilder.h to use doxygen style comments.

This implies changing method documentation from the following style:

/// MethodName - Method description...

to

/// \brief Method description...

ala the LLVM Style Guide.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172959 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
bd12e22d7af1609af2b9614dcab2a035d7388a79 20-Jan-2013 Michael Gottesman <mgottesman@apple.com> Corrected assert messages for CreateZExtOrTrunc/CreateSExtOrTrunc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172958 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
8b289987770bae81752f934fc089c93099864324 20-Jan-2013 Michael Gottesman <mgottesman@apple.com> Added IRBuilder::CreateFPExtOrFPTrunc.

This method serves an analogous purpose to CreateZExtOrTrunc/CreateSExtOrTrunc
but for floating point types.

In detail, it provides a manner when one is handling conversions of floating
point types of automatically selecting fpext, fptrunc, or identity depending on
the relative bitsize of the source and destination types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172957 91177308-0d34-0410-b5e6-96231b3b80d8
RBuilder.h
1b0c54f1c5dd61e56cb7cbc435fcb3319cff628f 18-Jan-2013 Bill Wendling <isanbard@gmail.com> Use AttributeSet accessor methods instead of Attribute accessor methods.

Further encapsulation of the Attribute object. Don't allow direct access to the
Attribute object as an aggregate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172853 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
956f13440a4aa0297606a4412f4aa091d931592a 18-Jan-2013 Bill Wendling <isanbard@gmail.com> Push some more methods down to hide the use of the Attribute class.

Because the Attribute class is going to stop representing a collection of
attributes, limit the use of it as an aggregate in favor of using AttributeSet.
This replaces some of the uses for querying the function attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172844 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
5db391c67d0922f4ab2ba57c07def19759c801a4 16-Jan-2013 Daniel Dunbar <daniel@zuster.org> [IR] Add 'Append' and 'AppendUnique' module flag behaviors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172659 91177308-0d34-0410-b5e6-96231b3b80d8
odule.h
e1c49906dcd26486ddac08207817d0e2ce4a2829 15-Jan-2013 Evgeniy Stepanov <eugeni.stepanov@gmail.com> Fix operand type conditions in one of ICmpInst constructors.

It was out of sync with the conditions in the other two constructors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172535 91177308-0d34-0410-b5e6-96231b3b80d8
nstructions.h
4d0b4a45dc724666d5de4f2f7c2d295487e4ca3e 11-Jan-2013 Michael Ilseman <milseman@apple.com> Support for half intrinsics. Pushes MMX into slower encoding path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172159 91177308-0d34-0410-b5e6-96231b3b80d8
ntrinsics.h
ntrinsics.td
893a2348785170501904dc64b2627a1cb41643a3 10-Jan-2013 Jakub Staszak <kubastaszak@gmail.com> Remove trailing spaces.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172125 91177308-0d34-0410-b5e6-96231b3b80d8
etadata.h
244b7a4ba66a8c23b6d0463eafc53b9a3970fc02 10-Jan-2013 Jakub Staszak <kubastaszak@gmail.com> Fix indent and remove unneeded #includes in MDBuilder.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172115 91177308-0d34-0410-b5e6-96231b3b80d8
DBuilder.h
674be02d525d4e24bc6943ed9274958c580bcfbc 10-Jan-2013 Jakub Staszak <kubastaszak@gmail.com> Fix include guards so they exactly match file names.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172025 91177308-0d34-0410-b5e6-96231b3b80d8
rgument.h
ttributes.h
asicBlock.h
allingConv.h
onstant.h
onstants.h
ataLayout.h
erivedTypes.h
unction.h
lobalAlias.h
lobalValue.h
lobalVariable.h
RBuilder.h
nlineAsm.h
nstrTypes.h
nstruction.h
nstructions.h
ntrinsicInst.h
ntrinsics.h
LVMContext.h
DBuilder.h
etadata.h
odule.h
perandTraits.h
perator.h
ymbolTableListTraits.h
ype.h
ypeBuilder.h
se.h
ser.h
alue.h
alueSymbolTable.h
1db9b6957c2565a2322206bd5907530895f1c7ac 10-Jan-2013 Bill Wendling <isanbard@gmail.com> Revert s/Raw/getBitMask/g name change. This is possibly causing LTO test hangings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172020 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
935e35d2b9f889566207b76a7026b63a1619742c 09-Jan-2013 Shuxin Yang <shuxin.llvm@gmail.com> Consider expression "0.0 - X" as the negation of X if
- this expression is explicitly marked no-signed-zero, or
- no-signed-zero of this expression can be derived from some context.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171922 91177308-0d34-0410-b5e6-96231b3b80d8
onstant.h
nstrTypes.h
4068e1af9ff68b6b5fdb3233f1304e53f1bf179a 07-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move TypeFinder.h into the IR tree, it clearly belongs with the IR library.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171749 91177308-0d34-0410-b5e6-96231b3b80d8
ypeFinder.h
a90a99a82b9c5c39fc6dbee9c266dcd7b107fe2f 07-Jan-2013 Bill Wendling <isanbard@gmail.com> Rough out a new c'tor for the AttrBuilder class.

This c'tor takes the AttributeSet class as the parameter. It will eventually
grab the attributes from the specified index and create a new attribute builder
with those attributes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171712 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
6f78fbbc630d2b86fb752574f5ad74473f57dfb1 05-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Switch the empty and tombstone key enumerators to not have explicit
values -- that's not required to fix the bug that was cropping up, and
the values selected made the enumeration's underlying type signed and
introduced some warnings. This fixes the -Werror build.

The underlying issue here was that the DenseMapInfo was casting values
completely outside the range of the underlying storage of the
enumeration to the enumeration's type. GCC went and "optimized" that
into infloops and other misbehavior. By providing designated special
values for these keys in the dense map, we ensure they are indeed
representable and that they won't be used for anything else.

It might be better to reuse None for the empty key and have the
tombstone share the value of the sentinel enumerator, but honestly
having 2 extra enumerators seemed not to matter and this seems a bit
simpler. I'll let Bill shuffle this around (or ask me to shuffle it
around) if he prefers it to look a different way.

I also made the switch a bit more clear (and produce a better assert)
that the enumerators are *never* going to show up and are errors if they
do.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171614 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
3a4779a9211281a1d0c27c97037342329035a185 05-Jan-2013 NAKAMURA Takumi <geek4civic@gmail.com> IR/Attributes: Provide EmptyKey and TombstoneKey in part of enum, as workaround for gcc-4.4 take #2.

I will investigate, later, what was wrong. I am too tired for now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171611 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
1bbd644301ed4d8a7efd4ceb15f71c56fa914f28 05-Jan-2013 Bill Wendling <isanbard@gmail.com> Add a method to create an AttributeSet from an AttrBuilder.

The Attribute class is eventually going to represent one attribute. So we need
this class to create the set of attributes. Add some iterator methods to the
builder to access its internal bits in a nice way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171586 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
0319888773b36dd61d7d2283cb9a26cac1e5abe8 05-Jan-2013 Bill Wendling <isanbard@gmail.com> Get rid of the 'Bits' mask in the attribute builder.

The bit mask thing will be a thing of the past. It's not extensible enough. Get
rid of its use here. Opt instead for using a vector to hold the attributes.

Note: Some of this code will become obsolete once the rewrite is further along.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171553 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
60507d53e7e8e6b0c537675f68204a93c3033de7 04-Jan-2013 Bill Wendling <isanbard@gmail.com> General cleanups.

* Remove dead methods.
* Use the 'operator==' method instead of 'contains', which isn't needed.
* Fix some comments.

No functionality change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171523 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
22bd64173981bf1251c4b3bfc684207340534ba3 03-Jan-2013 Bill Wendling <isanbard@gmail.com> Try again to revert the bad patch. The tree was reverted for some unknown reason
before the last time.

--- Reverse-merging r171442 into '.':
U include/llvm/IR/Attributes.h
U lib/IR/Attributes.cpp
U lib/IR/AttributeImpl.h



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171448 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
ded28aca6195d2d8d3bcbb9cd6b1c2c34c0d9702 03-Jan-2013 Bill Wendling <isanbard@gmail.com> Revert patch. Something snuck in there that shouldn't be.

--- Reverse-merging r171441 into '.':
U include/llvm/IR/Attributes.h
U lib/IR/Attributes.cpp




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171444 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
8351a60d6da4f5cdab80753ad2266085a6fbf62a 03-Jan-2013 Bill Wendling <isanbard@gmail.com> Remove the 'contains' methods in favor of the 'operator==' method.

The 'operator==' method is a bit clearer and much less verbose for somethings
that should have only one value. Remove from the AttrBuilder for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171442 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
3ac03815e195a598fce50abdda440c9d2fae815e 03-Jan-2013 NAKAMURA Takumi <geek4civic@gmail.com> Revert r171427, "An intermediate step in the Attributes rewrite."

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171441 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
278bac3fba5ae8ae620c961621493e6e2ad6f953 03-Jan-2013 Bill Wendling <isanbard@gmail.com> An intermediate step in the Attributes rewrite.

Modify the AttrBuilder class to store the attributes as a set instead of as a
bit mask. The Attribute class will represent only one attribute instead of a
collection of attributes.

This is the wave of the future!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171427 91177308-0d34-0410-b5e6-96231b3b80d8
ttributes.h
351ba145a7db32b457f118ecc4d873765ac2a16b 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Actually update the CMake and Makefile builds correctly, and update the
code that includes Intrinsics.gen directly.

This never showed up in my testing because the old Intrinsics.gen was
still kicking around in the make build system and was correct there. =[
Thankfully, some of the bots to clean rebuilds and that caught this.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171373 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
ntrinsics.h
0b8c9a80f20772c3793201ab5b251d3520b9cea3 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move all of the header files which are involved in modelling the LLVM IR
into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.

There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.

The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.

I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).

I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
rgument.h
ttributes.h
asicBlock.h
MakeLists.txt
allingConv.h
onstant.h
onstants.h
ataLayout.h
erivedTypes.h
unction.h
lobalAlias.h
lobalValue.h
lobalVariable.h
RBuilder.h
nlineAsm.h
nstrTypes.h
nstruction.def
nstruction.h
nstructions.h
ntrinsicInst.h
ntrinsics.h
ntrinsics.td
ntrinsicsARM.td
ntrinsicsHexagon.td
ntrinsicsMips.td
ntrinsicsNVVM.td
ntrinsicsPowerPC.td
ntrinsicsR600.td
ntrinsicsX86.td
ntrinsicsXCore.td
LVMContext.h
DBuilder.h
etadata.h
odule.h
perandTraits.h
perator.h
ymbolTableListTraits.h
ype.h
ypeBuilder.h
se.h
ser.h
alue.h
alueSymbolTable.h