• Home
  • History
  • Annotate
  • only in /external/llvm/lib/Target/NVPTX/
History log of /external/llvm/lib/Target/NVPTX/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
2c3e0051c31c3f5b2328b447eadf1cf9c4427442 06-May-2015 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master LLVM for rebase to r235153

Change-Id: I9bf53792f9fc30570e81a8d80d296c681d005ea7
(cherry picked from commit 0c7f116bb6950ef819323d855415b2f2b0aad987)
nstPrinter/NVPTXInstPrinter.cpp
nstPrinter/NVPTXInstPrinter.h
CTargetDesc/NVPTXMCTargetDesc.cpp
VPTX.td
VPTXAsmPrinter.cpp
VPTXFavorNonGenericAddrSpaces.cpp
VPTXGenericToNVVM.cpp
VPTXISelLowering.cpp
VPTXLowerAggrCopies.cpp
VPTXTargetMachine.h
VPTXTargetTransformInfo.cpp
VPTXTargetTransformInfo.h
4c5e43da7792f75567b693105cc53e3f1992ad98 08-Apr-2015 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master llvm for rebase to r233350

Change-Id: I07d935f8793ee8ec6b7da003f6483046594bca49
MakeLists.txt
CTargetDesc/NVPTXMCAsmInfo.cpp
CTargetDesc/NVPTXMCTargetDesc.cpp
CTargetDesc/NVPTXMCTargetDesc.h
VPTXAllocaHoisting.cpp
VPTXAllocaHoisting.h
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
VPTXFavorNonGenericAddrSpaces.cpp
VPTXGenericToNVVM.cpp
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXISelLowering.cpp
VPTXISelLowering.h
VPTXLowerAggrCopies.cpp
VPTXLowerAggrCopies.h
VPTXLowerStructArgs.cpp
VPTXMCExpr.h
VPTXRegisterInfo.cpp
VPTXRegisterInfo.h
VPTXSection.h
VPTXTargetMachine.cpp
VPTXTargetMachine.h
VPTXTargetObjectFile.h
VPTXUtilities.cpp
VPTXutil.cpp
VPTXutil.h
VVMReflect.cpp
ebe69fe11e48d322045d5949c83283927a0d790b 23-Mar-2015 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r230699.

Change-Id: I2b5be30509658cb8266be782de0ab24f9099f9b9
LVMBuild.txt
CTargetDesc/NVPTXMCAsmInfo.cpp
VPTX.h
VPTXAllocaHoisting.h
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
VPTXAssignValidGlobalNames.cpp
VPTXFrameLowering.cpp
VPTXFrameLowering.h
VPTXGenericToNVVM.cpp
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXISelLowering.cpp
VPTXISelLowering.h
VPTXImageOptimizer.cpp
VPTXInstrInfo.cpp
VPTXInstrInfo.h
VPTXInstrInfo.td
VPTXLowerAggrCopies.h
VPTXPrologEpilogPass.cpp
VPTXRegisterInfo.cpp
VPTXRegisterInfo.h
VPTXReplaceImageHandles.cpp
VPTXSubtarget.cpp
VPTXSubtarget.h
VPTXTargetMachine.cpp
VPTXTargetMachine.h
VPTXTargetTransformInfo.cpp
VPTXTargetTransformInfo.h
VPTXUtilities.cpp
VPTXVector.td
37ed9c199ca639565f6ce88105f9e39e898d82d0 01-Dec-2014 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r222494.

Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d
MakeLists.txt
nstPrinter/NVPTXInstPrinter.cpp
nstPrinter/NVPTXInstPrinter.h
LVMBuild.txt
CTargetDesc/NVPTXBaseInfo.h
CTargetDesc/NVPTXMCAsmInfo.cpp
CTargetDesc/NVPTXMCAsmInfo.h
CTargetDesc/NVPTXMCTargetDesc.h
anagedStringPool.h
VPTX.h
VPTXAllocaHoisting.h
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
VPTXFrameLowering.cpp
VPTXFrameLowering.h
VPTXGenericToNVVM.cpp
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXISelLowering.cpp
VPTXISelLowering.h
VPTXInstrFormats.td
VPTXInstrInfo.h
VPTXInstrInfo.td
VPTXIntrinsics.td
VPTXLowerAggrCopies.h
VPTXLowerStructArgs.cpp
VPTXMCExpr.h
VPTXMachineFunctionInfo.h
VPTXPrologEpilogPass.cpp
VPTXRegisterInfo.cpp
VPTXRegisterInfo.h
VPTXRegisterInfo.td
VPTXReplaceImageHandles.cpp
VPTXSection.h
VPTXSubtarget.cpp
VPTXSubtarget.h
VPTXTargetMachine.cpp
VPTXTargetMachine.h
VPTXTargetObjectFile.h
VPTXTargetTransformInfo.cpp
VPTXUtilities.cpp
VPTXUtilities.h
VPTXutil.h
c6a4f5e819217e1e12c458aed8e7b122e23a3a58 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
VPTX.td
VPTXAsmPrinter.cpp
VPTXFrameLowering.cpp
VPTXFrameLowering.h
VPTXGenericToNVVM.cpp
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXISelLowering.cpp
VPTXISelLowering.h
VPTXImageOptimizer.cpp
VPTXInstrInfo.cpp
VPTXInstrInfo.h
VPTXInstrInfo.td
VPTXIntrinsics.td
VPTXMCExpr.h
VPTXRegisterInfo.td
VPTXSubtarget.cpp
VPTXSubtarget.h
VPTXTargetMachine.cpp
VPTXTargetMachine.h
VVMReflect.cpp
l_common_defines.h
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
MakeLists.txt
nstPrinter/NVPTXInstPrinter.cpp
nstPrinter/NVPTXInstPrinter.h
CTargetDesc/NVPTXBaseInfo.h
CTargetDesc/NVPTXMCTargetDesc.cpp
VPTX.h
VPTXAllocaHoisting.h
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
VPTXAssignValidGlobalNames.cpp
VPTXFavorNonGenericAddrSpaces.cpp
VPTXFrameLowering.h
VPTXGenericToNVVM.cpp
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXISelLowering.cpp
VPTXISelLowering.h
VPTXImageOptimizer.cpp
VPTXInstrInfo.cpp
VPTXInstrInfo.h
VPTXIntrinsics.td
VPTXLowerAggrCopies.h
VPTXMCExpr.cpp
VPTXMCExpr.h
VPTXMachineFunctionInfo.h
VPTXPrologEpilogPass.cpp
VPTXRegisterInfo.cpp
VPTXRegisterInfo.h
VPTXReplaceImageHandles.cpp
VPTXSection.h
VPTXSubtarget.cpp
VPTXSubtarget.h
VPTXTargetMachine.cpp
VPTXTargetMachine.h
VPTXTargetObjectFile.h
VPTXUtilities.cpp
VPTXUtilities.h
VVMReflect.cpp
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
MakeLists.txt
nstPrinter/CMakeLists.txt
nstPrinter/NVPTXInstPrinter.cpp
LVMBuild.txt
CTargetDesc/CMakeLists.txt
CTargetDesc/NVPTXMCAsmInfo.cpp
CTargetDesc/NVPTXMCTargetDesc.cpp
VPTX.h
VPTX.td
VPTXAllocaHoisting.h
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
VPTXAssignValidGlobalNames.cpp
VPTXGenericToNVVM.cpp
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXISelLowering.cpp
VPTXISelLowering.h
VPTXInstrInfo.td
VPTXLowerAggrCopies.cpp
VPTXLowerAggrCopies.h
VPTXPrologEpilogPass.cpp
VPTXSplitBBatBar.cpp
VPTXSplitBBatBar.h
VPTXSubtarget.h
VPTXTargetMachine.cpp
VPTXTargetObjectFile.h
VPTXUtilities.cpp
VVMReflect.cpp
argetInfo/CMakeLists.txt
argetInfo/LLVMBuild.txt
354362524a72b3fa43a6c09380b7ae3b2380cbba 19-Nov-2013 Juergen Ributzka <juergen@apple.com> [weak vtables] Remove a bunch of weak vtables

This patch removes most of the trivial cases of weak vtables by pinning them to
a single object file. The memory leaks in this version have been fixed. Thanks
Alexey for pointing them out.

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

Reviewed by Andy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195064 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
VPTXInstrInfo.cpp
VPTXInstrInfo.h
VPTXSection.h
VPTXSubtarget.cpp
VPTXSubtarget.h
VPTXTargetObjectFile.h
b21ab43cfc3fa0dacf5c95f04e58b6d804b59a16 18-Nov-2013 Alexey Samsonov <samsonov@google.com> Revert r194865 and r194874.

This change is incorrect. If you delete virtual destructor of both a base class
and a subclass, then the following code:
Base *foo = new Child();
delete foo;
will not cause the destructor for members of Child class. As a result, I observe
plently of memory leaks. Notable examples I investigated are:
ObjectBuffer and ObjectBufferStream, AttributeImpl and StringSAttributeImpl.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194997 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
VPTXInstrInfo.cpp
VPTXInstrInfo.h
VPTXSection.h
VPTXSubtarget.cpp
VPTXSubtarget.h
VPTXTargetObjectFile.h
5a364c5561ec04e33a6f5d52c14f1bac6f247ea0 15-Nov-2013 Juergen Ributzka <juergen@apple.com> [weak vtables] Remove a bunch of weak vtables

This patch removes most of the trivial cases of weak vtables by pinning them to
a single object file.

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

Reviewed by Andy

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194865 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
VPTXInstrInfo.cpp
VPTXInstrInfo.h
VPTXSection.h
VPTXSubtarget.cpp
VPTXSubtarget.h
VPTXTargetObjectFile.h
4d748eb0e4b55262619305c96a89c55c30bffe6c 15-Nov-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Fix handling of indirect calls

Using a special machine node is cleaner than an InlineAsm node, and fixes an assertion failure in InstrEmitter

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194810 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/NVPTXInstPrinter.cpp
nstPrinter/NVPTXInstPrinter.h
VPTXAsmPrinter.cpp
VPTXISelLowering.cpp
VPTXISelLowering.h
VPTXInstrInfo.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
VPTXGenericToNVVM.cpp
de9a1a2055851a0f0a88e459cd23a246a90efd45 13-Nov-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove AllowQuotesInName and friends from MCAsmInfo.

Accepting quotes is a property of an assembler, not of an object file. For
example, ELF can support any names for sections and symbols, but the gnu
assembler only accepts quotes in some contexts and llvm-mc in a few more.

LLVM should not produce different symbols based on a guess about which assembler
will be reading the code it is printing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194575 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/NVPTXMCAsmInfo.cpp
07a5d3dc3d99ad2bf5c1122787d37ec0e17adde6 11-Nov-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Properly handle bitcast ConstantExpr when checking for the alignment of function parameters

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194410 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
0df3ce333b90cb42ee190a80b310ba89ff4cbeb3 11-Nov-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Fix logic error in loading vector parameters of more than 4 components

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194409 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
40f689851f6737d59b6f6a771ab1e07ce84c9bc3 11-Nov-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Blacklist TailDuplicate pass

This causes issues with virtual registers. We will likely need
to fix TailDuplicate in the future, or introduce a new version
that plays nicely with vregs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194373 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.cpp
93cf0939f95b3d580d9c05375a7c84164e1ba72e 29-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Move getSymbol to TargetLoweringObjectFile.

This allows constructing a Mangler with just a TargetMachine.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193630 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXTargetObjectFile.h
ffc7dca885151ed42642c2d6733e8db75d276621 29-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Add a helper getSymbol to AsmPrinter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193627 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
703c75c8ae3ed5757781e7a6b6b78f1e91c31371 27-Oct-2013 Benjamin Kramer <benny.kra@googlemail.com> NVPTX: Remove unused globals.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193500 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
fe16848601bdde6e3a5e0860199169dd171222a4 19-Oct-2013 Nadav Rotem <nrotem@apple.com> Mark some command line flags as hidden

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193013 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXISelDAGToDAG.cpp
VVMReflect.cpp
670655471dfc35d90271393bd3e6e26a708f1a3c 16-Oct-2013 Rafael Espindola <rafael.espindola@gmail.com> Assert on duplicate registration. Don't depend on function pointer equality.

Before this patch we would assert when building llvm as multiple shared
libraries (cmake's BUILD_SHARED_LIBS). The problem was the line

if (T.AsmStreamerCtorFn == Target::createDefaultAsmStreamer)

which returns false because of -fvisibility-inlines-hidden. It is easy
to fix just this one case, but I decided to try to also make the
registration more strict. It looks like the old logic for ignoring
followup registration was just a temporary hack that outlived its
usefulness.

This patch converts the ifs to asserts, fixes the few cases that were
registering twice and makes sure all the asserts compare with null.

Thanks for Joerg for reporting the problem and reviewing the patch.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192803 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.cpp
81d9902bb11b05c19c2a82209c362bd4e772bfea 11-Oct-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Switch from StrongPHIElimination to PHIElimination in NVPTXTargetMachine, and add some missing optimization passes to addOptimizedRegAlloc

Fixes PR17529

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192445 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.cpp
43777c3150c1dd12c661f62d5d7c95bf9b04c16a 11-Oct-2013 Justin Holewinski <jholewinski@nvidia.com> Make AsmPrinter::emitImplicitDef a virtual method so targets can emit custom comments for implicit defs

For NVPTX, this fixes a crash where the emitImplicitDef implementation was expecting physical registers,
while NVPTX uses virtual registers (with a couple of exceptions). Now, the implicit def comment will be
emitted as a true PTX register name. Other targets can use this to customize the output of implicit def
comments.

Fixes PR17519

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192444 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
f80a63fa23862e578de919f4b44d4fcdee68fd0d 28-Sep-2013 Robert Wilhelm <robert.wilhelm@gmx.net> Fix spelling intruction -> instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191610 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXSplitBBatBar.cpp
3e84ad28d4d3ceee25771b1e30315c20b7608c39 22-Sep-2013 Tim Northover <tnorthover@apple.com> ISelDAG: spot chain cycles involving MachineNodes

Previously, the DAGISel function WalkChainUsers was spotting that it
had entered already-selected territory by whether a node was a
MachineNode (amongst other things). Since it's fairly common practice
to insert MachineNodes during ISelLowering, this was not the correct
check.

Looking around, it seems that other nodes get their NodeId set to -1
upon selection, so this makes sure the same thing happens to all
MachineNodes and uses that characteristic to determine whether we
should stop looking for a loop during selection.

This should fix PR15840.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191165 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelDAGToDAG.cpp
3917535b1af06f03dc0150fc956fb05218a78292 19-Sep-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Support constant vector globals

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190997 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
30632d2fbb3c46e552a68aa7961b12eb44cece01 24-Aug-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Re-enable assembly printing support for inline assembly

This support was removed by accident during the MC conversion

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189160 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
1edd1a336a79c4cb804d32cb492738549154c69c 18-Aug-2013 Dmitri Gribenko <gribozavr@gmail.com> Remove unused stdio.h includes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188626 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXInstrInfo.cpp
0ff1190888f5b24f64a196392c452800447186d8 15-Aug-2013 Craig Topper <craig.topper@gmail.com> Replace getValueType().getSimpleVT() with getSimpleValueType().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188442 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelDAGToDAG.cpp
06d63b31beb38a0c30dfa94543e53d8632531417 07-Aug-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] We dont have any target specific flags yet for generating symbol references, so get rid of the default-only switch statement. Fixes an MSVC warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187829 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
df66ff09bcbdddf4ed6e3d162110a3d2b7978628 06-Aug-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add missing patterns for i1 [s,u]int_to_fp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187800 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXInstrInfo.td
a3635eefc749389aed84d9791fab657297203e1b 06-Aug-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Fix bug in stack code generation causes by MC conversion

We do use a very small set of physical registers, so account for
them in the virtual register encoding between MachineInstr and MC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187799 91177308-0d34-0410-b5e6-96231b3b80d8
nstPrinter/NVPTXInstPrinter.cpp
VPTXAsmPrinter.cpp
VPTXFrameLowering.cpp
VPTXInstrInfo.td
82767327c59ede1f8663ec9b9a64a668993d501f 06-Aug-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Start conversion to MC infrastructure

This change converts the NVPTX target to use the MC infrastructure
instead of directly emitting MachineInstr instances. This brings
the target more up-to-date with LLVM TOT, and should fix PR15175
and PR15958 (libNVPTXInstPrinter is empty) as a side-effect.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187798 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
nstPrinter/NVPTXInstPrinter.cpp
nstPrinter/NVPTXInstPrinter.h
CTargetDesc/NVPTXMCTargetDesc.cpp
VPTX.td
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
VPTXISelLowering.cpp
VPTXMCExpr.cpp
VPTXMCExpr.h
8e1d64666f493e4994b26a390bec1290a5d94b96 06-Aug-2013 NAKAMURA Takumi <geek4civic@gmail.com> Target/*/CMakeLists.txt: Add the dependency to CommonTableGen explicitly for each corresponding CodeGen.

Without explicit dependencies, both per-file action and in-CommonTableGen action could run in parallel.
It races to emit *.inc files simultaneously.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187780 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
6303ef1fb7bba4e6c6823a6732019e0996efe575 22-Jul-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Remove unused prototypes

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186844 91177308-0d34-0410-b5e6-96231b3b80d8
VPTX.h
3a8ee4ffd783bd0cf2d83089edb43ec546b49d0d 22-Jul-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Use approximate FP ops when unsafe-fp-math is used, and append
.ftz to instructions if the nvptx-f32ftz attribute is set to "true"

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186820 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXInstrInfo.td
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
VPTXAllocaHoisting.cpp
a0ec3f9b7b826b9b40b80199923b664bad808cce 14-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186274 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
6227d5c690504c7ada5780c00a635b282c46e275 04-Jul-2013 Craig Topper <craig.topper@gmail.com> Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185606 91177308-0d34-0410-b5e6-96231b3b80d8
anagedStringPool.h
VPTXGenericToNVVM.cpp
728af3d574895dd9e4bb5c418c7398297c4f39fe 01-Jul-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add support for module-scope inline asm

Since we were explicitly not calling AsmPrinter::doInitialization,
any module-scope inline asm was not being printed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185336 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
1fd09172bba8539e198db0360ac66f4694b4a3e0 01-Jul-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] We dont use NVBuiltin anymore

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185335 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
VPTXISelLowering.h
c676590614a0547242620fc2eefb16945e66c68a 01-Jul-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Cut down on physical register defs

We are using virtual registers throughout now, but we still need
to keep a few physical registers per class around to keep the
infrastructure happy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185334 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXNumRegisters.h
VPTXRegisterInfo.td
fc32eb472ae74e96435ce70c67d6c1edeb6f3e9f 01-Jul-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] 64-bit ADDC/ADDE are not legal

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185333 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
be08c60533d27f2714a4a88ba91125bcede32a1e 01-Jul-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Fix vector loads from parameters that span multiple loads, and fix some typos

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185332 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelDAGToDAG.cpp
VPTXISelLowering.cpp
03e5bb2c87c05ca42f9940e14f22275b136a9883 01-Jul-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Handle signext/zeroext attributes properly

Fix a case where we were incorrectly sign-extending a value when we should have been zero-extending the value.

Also change some SIGN_EXTEND to ANY_EXTEND because we really dont care and may have more opportunity to fold subexpressions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185331 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
8834184a463514530728a8032df165558393cd9c 01-Jul-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add support for native SIGN_EXTEND_INREG where available

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185330 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
VPTXInstrInfo.td
9bc8feeb4fd15883949900194c93fd1704c404b4 01-Jul-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add isel patterns for [reg+offset] form of ldg/ldu.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185329 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelDAGToDAG.cpp
VPTXIntrinsics.td
30b13ebd0b3d29d5f2d3dcbccee31d3a55917277 01-Jul-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Make sure we zero out high-order 24 bits for 8-bit load into 32-bit value

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185328 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
bebf6222f6b7cc871cfbc51f78cdb33d17fedb6c 30-Jun-2013 Benjamin Kramer <benny.kra@googlemail.com> NVPTX: Fold otherwise unused variable into assert.

Avoids unused variable warnings in release builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185271 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
b206498b95e09358d62a19fbff4a98258b179c7a 28-Jun-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Select -1 instead of 1 when anyextend'ing i1 types

This makes it more consistent with the ZeroOrNegativeOneBooleanContent flag

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185179 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXInstrInfo.td
f51a22e815a7494cbe1aba25d275015a70b5c31d 28-Jun-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add (1.0 / sqrt(x)) => rsqrt(x) generation when allowable by FP flags

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185178 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXInstrInfo.td
ac78a0645ddd2046fb66237ba4cfadffa2d367d7 28-Jun-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Calling conventions fix

Fix ABI handling for function
returning bool -- use st.param.b32 to return the value
and use ld.param.b32 in caller to load the return value.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185177 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
331ba2739d484b670000bd59b170fe1e993786d2 28-Jun-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add support for cttz/ctlz/ctpop

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185176 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
VPTXInstrInfo.td
ef0ccc93203e99077632cec7a0a15b8e1b704aee 28-Jun-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Clean up comparison/select/convert patterns and factor out PTX instructions from their patterns

Test case is no breakage

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185175 91177308-0d34-0410-b5e6-96231b3b80d8
VPTX.h
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
VPTXISelDAGToDAG.cpp
VPTXISelLowering.cpp
VPTXISelLowering.h
VPTXInstrInfo.td
VPTXIntrinsics.td
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
VPTXAsmPrinter.cpp
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXISelLowering.cpp
VPTXISelLowering.h
VPTXInstrInfo.cpp
VPTXInstrInfo.td
VPTXIntrinsics.td
VPTXRegisterInfo.cpp
VPTXRegisterInfo.td
bc48ce87ef608730616c3250b18c013b1b4a39fc 28-Jun-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add support for vectorized function return values

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185173 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
b67366514316bbb3cc3cb57f72f2d1439ec474bc 28-Jun-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Clean up handling of formal arguments and enable generation of vector parameter loads

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185172 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
00df1252286eb71b093d8e45eb4c9cee4ca5761d 28-Jun-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add infrastructure for vector loads/stores of parameters

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185171 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
VPTXISelLowering.h
VPTXInstrInfo.td
cbafae6d33031a72ba8219c28cb0e852511f79a3 28-Jun-2013 Manman Ren <mren@apple.com> Debug Info: clean up usage of Verify.

No functionality change.
It should suffice to check the type of a debug info metadata, instead of
calling Verify. For cases where we know the type of a DI metadata, use
assert.

Also update testing cases to make them conform to the format of DI classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185135 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
8479989ebe30f8fb9e14fbd5622fe0fd51988ff6 27-Jun-2013 Eric Christopher <echristo@gmail.com> Revert "Debug Info: clean up usage of Verify." as it's breaking bots.

This reverts commit r185020

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185032 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
02e75021d80bb068d0178f1e4fdd0a4fb36b9811 26-Jun-2013 Manman Ren <mren@apple.com> Debug Info: clean up usage of Verify.

No functionality change.
It should suffice to check the type of a debug info metadata, instead of
calling Verify.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185020 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
5df8c1bbb66a6b7386c9d7866592ecbb646da66c 25-Jun-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Default pointer type doesn't make sense for getParamSymbol()

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184831 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
VPTXISelLowering.h
f1505ff35bf76cb044c261b4cc97773d47658805 24-Jun-2013 NAKAMURA Takumi <geek4civic@gmail.com> NVPTXTargetObjectFile.h: Initialize some pointers as NULL in the constructor of NVPTXTargetObjectFile. ~NVPTXTargetObjectFile() tries to delete them.

It caused crash on some hosts since r184595.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184728 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetObjectFile.h
5b3fca50a08865f0db55fc92ad1c037a04e12177 22-Jun-2013 Chad Rosier <mcrosier@apple.com> The getRegForInlineAsmConstraint function should only accept MVT value types.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184642 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
VPTXISelLowering.h
0ff4287fe2245f417ed78fa535fce360b8b8df23 21-Jun-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add support for selecting CUDA vs OCL mode based on triple

IR for CUDA should use "nvptx[64]-nvidia-cuda", and IR for NV OpenCL should use "nvptx[64]-nvidia-nvcl"

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184579 91177308-0d34-0410-b5e6-96231b3b80d8
VPTX.h
VPTXSubtarget.cpp
0c92f2a1c73aeccc9e0f4deadcad8dc563dec225 19-Jun-2013 Bill Wendling <isanbard@gmail.com> Don't pass in the TargetInstrInfo into the register info object. It doesn't use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184369 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXInstrInfo.cpp
VPTXRegisterInfo.cpp
VPTXRegisterInfo.h
7c32502a7f81dfaddb79c9c8e5b1acc759e19af9 10-Jun-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Remove old CONST_NOT_GEN address space that is not being used anymore and causes constants to be emitted in the global address space

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183652 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/NVPTXBaseInfo.h
VPTXAsmPrinter.cpp
VPTXISelDAGToDAG.cpp
488401e9c995b6bfcc54fa7c54a5ec09e75d01a1 31-May-2013 Benjamin Kramer <benny.kra@googlemail.com> NVPTX: Don't even create a regalloc if we're not going to use it.

Fixes a leak found by valgrind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183031 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.cpp
5443e7d79044f3198f2da044f1b389b40d9bea6f 31-May-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Re-enable support for virtual registers in the final output

Now that 3.3 is branched, we are re-enabling virtual registers to help
iron out bugs before the next release. Some of the post-RA passes do
not play well with virtual registers, so we disable them for now. The
needed functionality of the PrologEpilogInserter pass is copied to a
new backend-specific NVPTXPrologEpilog pass.

The test for this commit is not breaking the existing tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182998 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
VPTX.h
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
VPTXInstrInfo.cpp
VPTXPrologEpilogPass.cpp
VPTXRegisterInfo.cpp
VPTXTargetMachine.cpp
d5c52f1d760cd2f6f347733a02bf666fc1d50662 30-May-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Fix case where a sext load of an i1 type may produce an
ld.u1 instead of an ld.u8.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182924 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelDAGToDAG.cpp
6e0b2a0cb0d398f175a5294bf0ad5488c714e8c2 30-May-2013 Andrew Trick <atrick@apple.com> Order CALLSEQ_START and CALLSEQ_END nodes.

Fixes PR16146: gdb.base__call-ar-st.exp fails after
pre-RA-sched=source fixes.

Patch by Xiaoyi Guo!

This also fixes an unsupported dbg.value test case. Codegen was
previously incorrect but the test was passing by luck.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182885 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
cc5a882c96af6e36bc029b7ff69f62f94e2d041d 29-May-2013 Bill Wendling <isanbard@gmail.com> Don't reach into the middle of TargetMachine and cache one of its ivars.
Not only does this break encapsulation, it's gross.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182876 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
dd0fb018a7cd2214c7bc5c6c767f626f99b47ba9 25-May-2013 Andrew Trick <atrick@apple.com> Track IR ordering of SelectionDAG nodes 3/4.

Remove the old IR ordering mechanism and switch to new one. Fix unit
test failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182704 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
ac6d9bec671252dd1e596fa71180ff6b39d06b5d 25-May-2013 Andrew Trick <atrick@apple.com> Track IR ordering of SelectionDAG nodes 2/4.

Change SelectionDAG::getXXXNode() interfaces as well as call sites of
these functions to pass in SDLoc instead of DebugLoc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182703 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelDAGToDAG.cpp
VPTXISelLowering.cpp
VPTXISelLowering.h
5c35290fa35ae234fed02496404cb0fc37e1c8a5 23-May-2013 Benjamin Kramer <benny.kra@googlemail.com> Move passes from namespace llvm into anonymous namespaces. Sort includes while there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182594 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.cpp
603100d3de4ba34bf5a7274acf7942083a1e2641 23-May-2013 Benjamin Kramer <benny.kra@googlemail.com> More symbols that should be static.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182590 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/NVPTXMCAsmInfo.cpp
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
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXInstrInfo.td
VPTXIntrinsics.td
9b39c726a007d8a4101568e9afe72658a5ae1b7c 20-May-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Fix mis-use of CurrentFnSym in NVPTXAsmPrinter. This was causing a symbol name error in the output PTX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182298 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
d22367559300c77c73e0ad9e193a33451bf8bf6c 20-May-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add programmatic interface to NVVMReflect pass

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182297 91177308-0d34-0410-b5e6-96231b3b80d8
VPTX.h
VVMReflect.cpp
7536ecf2916a6a986f0d328069e3a210f34d5ea7 20-May-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add GenericToNVVM IR converter to better handle idiomatic LLVM IR inputs

This converter currently only handles global variables in address space 0. For
these variables, they are promoted to address space 1 (global memory), and all
uses are updated to point to the result of a cvta.global instruction on the new
variable.

The motivation for this is address space 0 global variables are illegal since we
cannot declare variables in the generic address space. Instead, we place the
variables in address space 1 and explicitly convert the pointer to address
space 0. This is primarily intended to help new users who expect to be able to
place global variables in the default address space.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182254 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
VPTX.h
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
VPTXGenericToNVVM.cpp
VPTXIntrinsics.td
VPTXTargetMachine.cpp
55fdf5362954a58b7e1bda34ff5c7e1246bfb991 20-May-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Fix i1 kernel parameters and global variables. ABI rules say we need to use .u8 for i1 parameters for kernels.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182253 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
225ed7069caae9ece32d8bd3d15c6e41e21cc04b 18-May-2013 Matt Arsenault <Matthew.Arsenault@amd.com> Add LLVMContext argument to getSetCCResultType

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182180 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.h
4a971705bc6030dc2e4338b3cd5cffa2e0f88b7b 13-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove the MachineMove class.

It was just a less powerful and more confusing version of
MCCFIInstruction. A side effect is that, since MCCFIInstruction uses
dwarf register numbers, calls to getDwarfRegNum are pushed out, which
should allow further simplifications.

I left the MachineModuleInfo::addFrameMove interface unchanged since
this patch was already fairly big.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181680 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.cpp
6e53180db120b30f600ac31611a9dd47ef7f4921 10-May-2013 Rafael Espindola <rafael.espindola@gmail.com> Remove unused argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181618 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/NVPTXMCAsmInfo.cpp
CTargetDesc/NVPTXMCAsmInfo.h
2a8bea7a8eba9bfa05dcc7a87e9152a0043841b2 20-Apr-2013 Michael Liao <michael.liao@intel.com> ArrayRefize getMachineNode(). No functionality change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179901 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelDAGToDAG.cpp
df39be6cb4eb44011db3d3e86f8fe463f81ce127 17-Apr-2013 Peter Collingbourne <peter@pcc.me.uk> Add support for subsections to the ELF assembler. Fixes PR8717.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179725 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXSection.h
d4ab1926af982e4334978fd9bf9156c7c087f6f5 02-Apr-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Fix a few style issues in NVVMReflect

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178536 91177308-0d34-0410-b5e6-96231b3b80d8
VVMReflect.cpp
b24fc1c7f7545362fe283730d5532fa7e7375c9e 30-Mar-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Remove support for SM < 2.0. This was never fully supported anyway.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178417 91177308-0d34-0410-b5e6-96231b3b80d8
VPTX.td
VPTXSubtarget.cpp
21fdcb02716f5eae097abfd2f44e40563e90180a 30-Mar-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add NVVMReflect pass to allow compile-time selection of
specific code paths.

This allows us to write code like:

if (__nvvm_reflect("FOO"))
// Do something
else
// Do something else

and compile into a library, then give "FOO" a value at kernel
compile-time so the check becomes a no-op.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178416 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
VPTXTargetMachine.cpp
VVMReflect.cpp
3639ce2575660a0e6938d2e84e8bd9a738fd7051 30-Mar-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Run clang-format on all NVPTX sources.

Hopefully this resolves any outstanding style issues and gives us
an automated way of ensuring we conform to the style guidelines.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178415 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/NVPTXBaseInfo.h
CTargetDesc/NVPTXMCAsmInfo.cpp
CTargetDesc/NVPTXMCTargetDesc.cpp
anagedStringPool.h
VPTX.h
VPTXAllocaHoisting.cpp
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
VPTXFrameLowering.cpp
VPTXFrameLowering.h
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXISelLowering.cpp
VPTXISelLowering.h
VPTXInstrInfo.cpp
VPTXInstrInfo.h
VPTXLowerAggrCopies.cpp
VPTXNumRegisters.h
VPTXRegisterInfo.cpp
VPTXRegisterInfo.h
VPTXSplitBBatBar.cpp
VPTXSubtarget.cpp
VPTXSubtarget.h
VPTXTargetMachine.cpp
VPTXTargetMachine.h
VPTXTargetObjectFile.h
VPTXUtilities.cpp
VPTXUtilities.h
VPTXutil.cpp
argetInfo/NVPTXTargetInfo.cpp
l_common_defines.h
1ce53cb526d23a3988fb12a5294ab1fcb2eb840f 24-Mar-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Fix handling of vector arguments

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177847 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXISelLowering.cpp
3ef5383b3537a420c5e2ab3e657c378e5185549d 08-Mar-2013 Tom Stellard <thomas.stellard@amd.com> DAGCombiner: Use correct value type for checking legality of BR_CC v3

LegalizeDAG.cpp uses the value of the comparison operands when checking
the legality of BR_CC, so DAGCombiner should do the same.

v2:
- Expand more BR_CC value types for NVPTX

v3:
- Expand correct BR_CC value types for Hexagon, Mips, and XCore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176694 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
3853f74aba301ef08b699bac2fa8e53230714a58 07-Mar-2013 Benjamin Kramer <benny.kra@googlemail.com> ArrayRefize some code. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176648 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
a6b20ced765b67a85d9219d0c8547fc9c133e14f 01-Mar-2013 Michael Liao <michael.liao@intel.com> Fix PR10475

- ISD::SHL/SRL/SRA must have either both scalar or both vector operands
but TLI.getShiftAmountTy() so far only return scalar type. As a
result, backend logic assuming that breaks.
- Rename the original TLI.getShiftAmountTy() to
TLI.getScalarShiftAmountTy() and re-define TLI.getShiftAmountTy() to
return target-specificed scalar type or the same vector type as the
1st operand.
- Fix most TICG logic assuming TLI.getShiftAmountTy() a simple scalar
type.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176364 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.h
700ed80d3da5e98e05ceb90e9bfb66058581a6db 21-Feb-2013 Eli Bendersky <eliben@google.com> Move the eliminateCallFramePseudoInstr method from TargetRegisterInfo
to TargetFrameLowering, where it belongs. Incidentally, this allows us
to delete some duplicated (and slightly different!) code in TRI.

There are potentially other layering problems that can be cleaned up
as a result, or in a similar manner.

The refactoring was OK'd by Anton Korobeynikov on llvmdev.

Note: this touches the target interfaces, so out-of-tree targets may
be affected.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175788 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXFrameLowering.cpp
VPTXFrameLowering.h
VPTXRegisterInfo.cpp
VPTXRegisterInfo.h
3450f800aa65c91f0496816ba6061a422a74c1fe 20-Feb-2013 Jim Grosbach <grosbach@apple.com> Update TargetLowering ivars for name policy.

http://llvm.org/docs/CodingStandards.html#name-types-functions-variables-and-enumerators-properly

ivars should be camel-case and start with an upper-case letter. A few in
TargetLowering were starting with a lower-case letter.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175667 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
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
MakeLists.txt
VPTX.h
VPTXAsmPrinter.cpp
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXISelLowering.cpp
VPTXISelLowering.h
VPTXInstrInfo.cpp
VPTXInstrInfo.td
VPTXIntrinsics.td
VPTXRegisterInfo.cpp
VPTXRegisterInfo.h
VPTXRegisterInfo.td
VPTXSubtarget.h
VPTXTargetMachine.cpp
ectorElementize.cpp
en-register-defs.py
00d9da1ac45429cb69c8b298b9f25e10a4b57813 09-Feb-2013 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Make address space errors more explicit (llvm_unreachable -> report_fatal_error)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174808 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
108fb3202af6f500073cdbb7be32c25d7a273a2e 31-Jan-2013 Chad Rosier <mcrosier@apple.com> [PEI] Pass the frame index operand number to the eliminateFrameIndex function.
Each target implementation was needlessly recomputing the index.
Part of rdar://13076458

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174083 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXRegisterInfo.cpp
VPTXRegisterInfo.h
e752feee5228bfa33acee35ef9c606ce12f0f173 23-Jan-2013 Eli Bendersky <eliben@google.com> Clean up assignment of CalleeSaveStackSlotSize: get rid of the default and explicitly set this in every target that needs to change it from the default.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173270 91177308-0d34-0410-b5e6-96231b3b80d8
CTargetDesc/NVPTXMCAsmInfo.cpp
e735945ad74a4af9772a7d9bb45418b2551fffe9 23-Jan-2013 Benjamin Kramer <benny.kra@googlemail.com> NVPTX: Stop leaking memory by using a managed constant instead of a new Argument.

This is still an egregious hack since we don't have a nice interface for this
kind of thing but should help the valgrind leak check buildbot to become green.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173267 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
aeef83c6afa1e18d1cf9d359cc678ca0ad556175 07-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Switch TargetTransformInfo from an immutable analysis pass that requires
a TargetMachine to construct (and thus isn't always available), to an
analysis group that supports layered implementations much like
AliasAnalysis does. This is a pretty massive change, with a few parts
that I was unable to easily separate (sorry), so I'll walk through it.

The first step of this conversion was to make TargetTransformInfo an
analysis group, and to sink the nonce implementations in
ScalarTargetTransformInfo and VectorTargetTranformInfo into
a NoTargetTransformInfo pass. This allows other passes to add a hard
requirement on TTI, and assume they will always get at least on
implementation.

The TargetTransformInfo analysis group leverages the delegation chaining
trick that AliasAnalysis uses, where the base class for the analysis
group delegates to the previous analysis *pass*, allowing all but tho
NoFoo analysis passes to only implement the parts of the interfaces they
support. It also introduces a new trick where each pass in the group
retains a pointer to the top-most pass that has been initialized. This
allows passes to implement one API in terms of another API and benefit
when some other pass above them in the stack has more precise results
for the second API.

The second step of this conversion is to create a pass that implements
the TargetTransformInfo analysis using the target-independent
abstractions in the code generator. This replaces the
ScalarTargetTransformImpl and VectorTargetTransformImpl classes in
lib/Target with a single pass in lib/CodeGen called
BasicTargetTransformInfo. This class actually provides most of the TTI
functionality, basing it upon the TargetLowering abstraction and other
information in the target independent code generator.

The third step of the conversion adds support to all TargetMachines to
register custom analysis passes. This allows building those passes with
access to TargetLowering or other target-specific classes, and it also
allows each target to customize the set of analysis passes desired in
the pass manager. The baseline LLVMTargetMachine implements this
interface to add the BasicTTI pass to the pass manager, and all of the
tools that want to support target-aware TTI passes call this routine on
whatever target machine they end up with to add the appropriate passes.

The fourth step of the conversion created target-specific TTI analysis
passes for the X86 and ARM backends. These passes contain the custom
logic that was previously in their extensions of the
ScalarTargetTransformInfo and VectorTargetTransformInfo interfaces.
I separated them into their own file, as now all of the interface bits
are private and they just expose a function to create the pass itself.
Then I extended these target machines to set up a custom set of analysis
passes, first adding BasicTTI as a fallback, and then adding their
customized TTI implementations.

The fourth step required logic that was shared between the target
independent layer and the specific targets to move to a different
interface, as they no longer derive from each other. As a consequence,
a helper functions were added to TargetLowering representing the common
logic needed both in the target implementation and the codegen
implementation of the TTI pass. While technically this is the only
change that could have been committed separately, it would have been
a nightmare to extract.

The final step of the conversion was just to delete all the old
boilerplate. This got rid of the ScalarTargetTransformInfo and
VectorTargetTransformInfo classes, all of the support in all of the
targets for producing instances of them, and all of the support in the
tools for manually constructing a pass based around them.

Now that TTI is a relatively normal analysis group, two things become
straightforward. First, we can sink it into lib/Analysis which is a more
natural layer for it to live. Second, clients of this interface can
depend on it *always* being available which will simplify their code and
behavior. These (and other) simplifications will follow in subsequent
commits, this one is clearly big enough.

Finally, I'm very aware that much of the comments and documentation
needs to be updated. As soon as I had this working, and plausibly well
commented, I wanted to get it committed and in front of the build bots.
I'll be doing a few passes over documentation later if it sticks.

Commits to update DragonEgg and Clang will be made presently.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171681 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.cpp
VPTXTargetMachine.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
VPTX.h
VPTXAllocaHoisting.cpp
VPTXAllocaHoisting.h
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXISelLowering.cpp
VPTXInstrInfo.cpp
VPTXLowerAggrCopies.cpp
VPTXLowerAggrCopies.h
VPTXSection.h
VPTXSplitBBatBar.cpp
VPTXTargetMachine.cpp
VPTXTargetMachine.h
VPTXUtilities.cpp
VPTXUtilities.h
argetInfo/NVPTXTargetInfo.cpp
ectorElementize.cpp
98281a20503896349bd152e2dfe87435d3a6aada 30-Dec-2012 Nuno Lopes <nunoplopes@sapo.pt> convert a bunch of callers from DataLayout::getIndexedOffset() to GEP::accumulateConstantOffset().
The later API is nicer than the former, and is correct regarding wrap-around offsets (if anyone cares).
There are a few more places left with duplicated code, which I'll remove soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171259 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
94e94b350652d3a71993bbc7d44afbe3b304605e 30-Dec-2012 Bill Wendling <isanbard@gmail.com> Use the predicate methods off of AttributeSet instead of Attribute.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171257 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXISelLowering.cpp
38b06020dbd804f01ee3802779a52c05cffdf87d 21-Dec-2012 Roman Divacky <rdivacky@freebsd.org> Remove duplicate includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170902 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.cpp
28d53a26cccd3620d2fdc50065e17b689455de47 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> MachineInstrBuilderize NVPTX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170794 91177308-0d34-0410-b5e6-96231b3b80d8
ectorElementize.cpp
034b94b17006f51722886b0f2283fb6fb19aca1f 19-Dec-2012 Bill Wendling <isanbard@gmail.com> Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170502 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXISelLowering.cpp
b1cc6f3dff96bfb26e0f5b62a187374b6a7629a1 13-Dec-2012 Eric Christopher <echristo@gmail.com> Add a way of printing out an arbitrary label name for a section
given the section.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170087 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXSection.h
99faa3b4ec6d03ac7808fe4ff3fbf3d04e375502 08-Dec-2012 Bill Wendling <isanbard@gmail.com> s/AttrListPtr/AttributeSet/g to better label what this class is going to be in the near future.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169651 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXISelLowering.cpp
2f1086137dbabad072c98bd4d8dab15525ca4991 05-Dec-2012 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Fix crash with unnamed struct arguments

Patch by Eric Holk

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169418 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
a1514e24cc24b050f53a12650e047799358833a1 04-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Sort includes for all of the .h files under the 'lib' tree. These were
missed in the first pass because the script didn't yet handle include
guards.

Note that the script is now able to handle all of these headers without
manual edits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169224 91177308-0d34-0410-b5e6-96231b3b80d8
VPTX.h
VPTXAllocaHoisting.h
VPTXAsmPrinter.h
VPTXLowerAggrCopies.h
VPTXSection.h
VPTXSplitBBatBar.h
VPTXSubtarget.h
VPTXTargetMachine.h
VPTXUtilities.h
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Use the new script to sort the includes of every file under lib.

Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.

Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAllocaHoisting.cpp
VPTXAsmPrinter.cpp
VPTXFrameLowering.cpp
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXISelLowering.cpp
VPTXLowerAggrCopies.cpp
VPTXRegisterInfo.cpp
VPTXSplitBBatBar.cpp
VPTXTargetMachine.cpp
VPTXUtilities.cpp
ectorElementize.cpp
3d200255d5b93344c1ab0a5ba4b47a52cfa5893e 29-Nov-2012 Justin Holewinski <jholewinski@nvidia.com> Allow targets to prefer TypeSplitVector over TypePromoteInteger when computing the legalization method for vectors

For some targets, it is desirable to prefer scalarizing <N x i1> instead of promoting to a larger legal type, such as <N x i32>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168882 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
VPTXISelLowering.h
2085d00d09f4f3678a6c67da46df3a04e31b499c 16-Nov-2012 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Order global variables in def-use order before emiting them in the final assembly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168198 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
e8b0ae1fb61aa8d4e698ed8fabffd16f2bf51605 15-Nov-2012 NAKAMURA Takumi <geek4civic@gmail.com> NVPTXISelLowering.cpp: Fix warnings. [-Wunused-variable]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168001 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
7454fc2e87ef5638f3644b86a4350a44513e5185 14-Nov-2012 Jakub Staszak <kubastaszak@gmail.com> Fix invalid asserts, use llvm_unreachable instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167976 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
a20067b5d4ea718a3f0e47adae8b231e4a2db9f6 14-Nov-2012 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Implement custom lowering of loads/stores for i1

Loads from i1 become loads from i8 followed by trunc
Stores to i1 become zext to i8 followed by store to i8

Fixes PR13291

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167948 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
VPTXISelLowering.h
4db8833c93107052686bf3f757f41349fb736809 12-Nov-2012 Eric Christopher <echristo@gmail.com> Remove unused field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167719 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXSubtarget.h
08e9cb46feb0c8e08e3d309a0f9fd75a04ca54fb 12-Nov-2012 Justin Holewinski <jholewinski@nvidia.com> [NVPTX] Add more precise PTX/SM target attributes

Each SM and PTX version is modeled as a subtarget feature/CPU. Additionally,
PTX 3.1 is added as the default PTX version to be out-of-the-box compatible
with CUDA 5.0.

Available CPUs for this target:

sm_10 - Select the sm_10 processor.
sm_11 - Select the sm_11 processor.
sm_12 - Select the sm_12 processor.
sm_13 - Select the sm_13 processor.
sm_20 - Select the sm_20 processor.
sm_21 - Select the sm_21 processor.
sm_30 - Select the sm_30 processor.
sm_35 - Select the sm_35 processor.

Available features for this target:

ptx30 - Use PTX version 3.0.
ptx31 - Use PTX version 3.1.
sm_10 - Target SM 1.0.
sm_11 - Target SM 1.1.
sm_12 - Target SM 1.2.
sm_13 - Target SM 1.3.
sm_20 - Target SM 2.0.
sm_21 - Target SM 2.1.
sm_30 - Target SM 3.0.
sm_35 - Target SM 3.5.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167699 91177308-0d34-0410-b5e6-96231b3b80d8
VPTX.td
VPTXAsmPrinter.cpp
VPTXSubtarget.cpp
VPTXSubtarget.h
89443ff7ae81e6a439b5b67e5dd587a450090599 10-Nov-2012 Justin Holewinski <justin.holewinski@gmail.com> [NVPTX] Use ABI alignment for parameters when alignment is not specified.

Affects SM 2.0+. Fixes bug 13324.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167646 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
426c2bf5cdd2173e4a33aea8cb92cf684a724f4b 01-Nov-2012 Chandler Carruth <chandlerc@gmail.com> Revert the majority of the next patch in the address space series:

r165941: Resubmit the changes to llvm core to update the functions to
support different pointer sizes on a per address space basis.

Despite this commit log, this change primarily changed stuff outside of
VMCore, and those changes do not carry any tests for correctness (or
even plausibility), and we have consistently found questionable or flat
out incorrect cases in these changes. Most of them are probably correct,
but we need to devise a system that makes it more clear when we have
handled the address space concerns correctly, and ideally each pass that
gets updated would receive an accompanying test case that exercises that
pass specificaly w.r.t. alternate address spaces.

However, from this commit, I have retained the new C API entry points.
Those were an orthogonal change that probably should have been split
apart, but they seem entirely good.

In several places the changes were very obvious cleanups with no actual
multiple address space code added; these I have not reverted when
I spotted them.

In a few other places there were merge conflicts due to a cleaner
solution being implemented later, often not using address spaces at all.
In those cases, I've preserved the new code which isn't address space
dependent.

This is part of my ongoing effort to clean out the partial address space
code which carries high risk and low test coverage, and not likely to be
finished before the 3.2 release looms closer. Duncan and I would both
like to see the above issues addressed before we return to these
changes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167222 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
ece6c6bb6329748b92403c06ac87f45c43485911 01-Nov-2012 Chandler Carruth <chandlerc@gmail.com> Revert the series of commits starting with r166578 which introduced the
getIntPtrType support for multiple address spaces via a pointer type,
and also introduced a crasher bug in the constant folder reported in
PR14233.

These commits also contained several problems that should really be
addressed before they are re-committed. I have avoided reverting various
cleanups to the DataLayout APIs that are reasonable to have moving
forward in order to reduce the amount of churn, and minimize the number
of commits that were reverted. I've also manually updated merge
conflicts and manually arranged for the getIntPtrType function to stay
in DataLayout and to be defined in a plausible way after this revert.

Thanks to Duncan for working through this exact strategy with me, and
Nick Lewycky for tracking down the really annoying crasher this
triggered. (Test case to follow in its own commit.)

After discussing with Duncan extensively, and based on a note from
Micah, I'm going to continue to back out some more of the more
problematic patches in this series in order to ensure we go into the
LLVM 3.2 branch with a reasonable story here. I'll send a note to
llvmdev explaining what's going on and why.

Summary of reverted revisions:

r166634: Fix a compiler warning with an unused variable.
r166607: Add some cleanup to the DataLayout changes requested by
Chandler.
r166596: Revert "Back out r166591, not sure why this made it through
since I cancelled the command. Bleh, sorry about this!
r166591: Delete a directory that wasn't supposed to be checked in yet.
r166578: Add in support for getIntPtrType to get the pointer type based
on the address space.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167221 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
b52fb876171e3670e7307fda4459ca005d49d9f5 24-Oct-2012 Micah Villmow <villmow@gmail.com> Add some cleanup to the DataLayout changes requested by Chandler.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166607 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
270483466124fe1e19d5439e958fef63cebd43cd 24-Oct-2012 Nadav Rotem <nrotem@apple.com> Implement a basic VectorTargetTransformInfo interface to be used by the loop and bb vectorizers for modeling the cost of instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166593 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.cpp
aa76e9e2cf50af190de90bc778b7f7e42ef9ceff 24-Oct-2012 Micah Villmow <villmow@gmail.com> Add in support for getIntPtrType to get the pointer type based on the address space.
This checkin also adds in some tests that utilize these paths and updates some of the
clients.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166578 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
cbd9a19b5d6ff93efa82c467508ede78b8af3bac 19-Oct-2012 Nadav Rotem <nrotem@apple.com> Reapply the TargerTransformInfo changes, minus the changes to LSR and Lowerinvoke.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166248 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.cpp
VPTXTargetMachine.h
3b9a911efcf280950f878a050728450423875639 18-Oct-2012 Bob Wilson <bob.wilson@apple.com> Temporarily revert the TargetTransform changes.

The TargetTransform changes are breaking LTO bootstraps of clang. I am
working with Nadav to figure out the problem, but I am reverting it for now
to get our buildbots working.

This reverts svn commits: 165665 165669 165670 165786 165787 165997
and I have also reverted clang svn 165741

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166168 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.cpp
VPTXTargetMachine.h
2c39b15073db81d93bb629303915b7d7e5d088dc 15-Oct-2012 Micah Villmow <villmow@gmail.com> Resubmit the changes to llvm core to update the functions to support different pointer sizes on a per address space basis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165941 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
fb384d61c78b60787ed65475d8403aee65023962 11-Oct-2012 Micah Villmow <villmow@gmail.com> Revert 165732 for further review.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165747 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
f3840d2c16a4ec4c879a8ded402835746de380f8 11-Oct-2012 Micah Villmow <villmow@gmail.com> Add in the first iteration of support for llvm/clang/lldb to allow variable per address space pointer sizes to be optimized correctly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165726 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
e3d0e86919730784faaddcb5d9b0257c39b0804b 11-Oct-2012 Nadav Rotem <nrotem@apple.com> Add a new interface to allow IR-level passes to access codegen-specific information.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165665 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.cpp
VPTXTargetMachine.h
6765834754cbb3cb0f15b4b15e98c5e73fa50066 09-Oct-2012 Bill Wendling <isanbard@gmail.com> Create enums for the different attributes.

We use the enums to query whether an Attributes object has that attribute. The
opaque layer is responsible for knowing where that specific attribute is stored.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165488 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXISelLowering.cpp
3574eca1b02600bac4e625297f4ecf745f4c4f32 08-Oct-2012 Micah Villmow <villmow@gmail.com> Move TargetData to DataLayout.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165402 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAllocaHoisting.h
VPTXAsmPrinter.cpp
VPTXISelLowering.cpp
VPTXLowerAggrCopies.cpp
VPTXLowerAggrCopies.h
VPTXTargetMachine.cpp
VPTXTargetMachine.h
8f00ae6a3f8d392ce0f42a81223e479f97876d7f 04-Oct-2012 Bill Wendling <isanbard@gmail.com> Use new accessor methods to query for attributes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165205 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXISelLowering.cpp
30a507a1f5d6a5646dd3481eba6958424415c886 02-Jul-2012 Bob Wilson <bob.wilson@apple.com> Extend TargetPassConfig to allow running only a subset of the normal passes.

This is still a work in progress but I believe it is currently good enough
to fix PR13122 "Need unit test driver for codegen IR passes". For example,
you can run llc with -stop-after=loop-reduce to have it dump out the IR after
running LSR. Serializing machine-level IR is not yet supported but we have
some patches in progress for that.

The plan is to serialize the IR to a YAML file, containing separate sections
for the LLVM IR, machine-level IR, and whatever other info is needed. Chad
suggested that we stash the stop-after pass in the YAML file and use that
instead of the start-after option to figure out where to restart the
compilation. I think that's a great idea, but since it's not implemented yet
I put the -start-after option into this patch for testing purposes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159570 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.h
564fbf6aff8fb95646a1290078a37c2d4dbe629f 02-Jul-2012 Bob Wilson <bob.wilson@apple.com> Add all codegen passes to the PassManager via TargetPassConfig.

This is a preliminary step toward having TargetPassConfig be able to
start and stop the compilation at specified passes for unit testing
and debugging. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159567 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetMachine.cpp
06cb8ed00696eb14d1b831921452e50ec0568ea2 29-Jun-2012 Chandler Carruth <chandlerc@gmail.com> Move llvm/Support/IRBuilder.h -> llvm/IRBuilder.h

This was always part of the VMCore library out of necessity -- it deals
entirely in the IR. The .cpp file in fact was already part of the VMCore
library. This is just a mechanical move.

I've tried to go through and re-apply the coding standard's preferred
header sort, but at 40-ish files, I may have gotten some wrong. Please
let me know if so.

I'll be committing the corresponding updates to Clang and Polly, and
Duncan has DragonEgg.

Thanks to Bill and Eric for giving the green light for this bit of cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159421 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXLowerAggrCopies.cpp
112f575e4bd2b5f72ce7d5a5544ecaa11418a50a 28-Jun-2012 Bill Wendling <isanbard@gmail.com> Remove layering violation #include.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159372 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
0bcbd1df7a204e1e512f1a27066d725309de1b13 28-Jun-2012 Bill Wendling <isanbard@gmail.com> Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and
include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h.

The reasoning is because the DebugInfo module is simply an interface to the
debug info MDNodes and has nothing to do with analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159312 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
0518fca843ff87d069ecb07fc00d306c1f587d58 26-Jun-2012 Jack Carter <jcarter@mips.com> There are a number of generic inline asm operand modifiers that
up to r158925 were handled as processor specific. Making them
generic and putting tests for these modifiers in the CodeGen/Generic
directory caused a number of targets to fail.

This commit addresses that problem by having the targets call
the generic routine for generic modifiers that they don't currently
have explicit code for.

For now only generic print operands 'c' and 'n' are supported.vi


Affected files:

test/CodeGen/Generic/asm-large-immediate.ll
lib/Target/PowerPC/PPCAsmPrinter.cpp
lib/Target/NVPTX/NVPTXAsmPrinter.cpp
lib/Target/ARM/ARMAsmPrinter.cpp
lib/Target/XCore/XCoreAsmPrinter.cpp
lib/Target/X86/X86AsmPrinter.cpp
lib/Target/Hexagon/HexagonAsmPrinter.cpp
lib/Target/CellSPU/SPUAsmPrinter.cpp
lib/Target/Sparc/SparcAsmPrinter.cpp
lib/Target/MBlaze/MBlazeAsmPrinter.cpp
lib/Target/Mips/MipsAsmPrinter.cpp

MSP430 isn't represented because it did not even run with
the long existing 'c' modifier and it was not apparent what
needs to be done to get it inline asm ready.

Contributer: Jack Carter



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159203 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
d5c407d2d01ff8797c29343e4da5f765fe52fb5f 24-Jun-2012 NAKAMURA Takumi <geek4civic@gmail.com> llvm/lib: [CMake] Add explicit dependency to intrinsics_gen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159112 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
95a9d937728ca9cf2bf44f86ff1184df318b3bd7 06-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Round 2 of dead private variable removal.

LLVM is now -Wunused-private-field clean except for
- lib/MC/MCDisassembler/Disassembler.h. Not sure why it keeps all those unaccessible fields.
- gtest.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158096 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXRegisterInfo.cpp
VPTXRegisterInfo.h
09b5df8996b37e61369026d50b44713984adbdc4 05-Jun-2012 Yuan Lin <yulin@nvidia.com> Fix header file include order in NVPTX backend NV_CONTRIB

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158013 91177308-0d34-0410-b5e6-96231b3b80d8
VPTX.h
d9b0b025612992a0b724eeca8bdf10b1d7a5c355 02-Jun-2012 Benjamin Kramer <benny.kra@googlemail.com> Fix typos found by http://github.com/lyda/misspell-check

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157885 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXInstrInfo.td
703360f93cf88aeab3d602a454c554622eba63e9 31-May-2012 Joel Jones <joel_k_jones@apple.com> Fix typos

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157752 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAllocaHoisting.cpp
d2ea0e10cbd158c93fb870cdd03001b9cd1156b8 25-May-2012 Justin Holewinski <jholewinski@nvidia.com> Change interface for TargetLowering::LowerCallTo and TargetLowering::LowerCall
to pass around a struct instead of a large set of individual values. This
cleans up the interface and allows more information to be added to the struct
for future targets without requiring changes to each and every target.

NV_CONTRIB

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157479 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
VPTXISelLowering.h
b1ebd6981fe2654a295200d18d479f092201d394 25-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Shrink.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157433 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXRegisterInfo.td
6366361998599a63a74ee7cc5f4ba900711c7e7a 24-May-2012 Craig Topper <craig.topper@gmail.com> Convert assert(0) to llvm_unreachable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157380 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
VPTXInstrInfo.cpp
VPTXRegisterInfo.cpp
ectorElementize.cpp
6fcf129cf5fcf4cd0ceb2afa8e2537a4333f896d 24-May-2012 Craig Topper <craig.topper@gmail.com> Mark a couple arrays as static and const. Use array_lengthof instead of sizeof/sizeof.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157369 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXAsmPrinter.cpp
VPTXISelLowering.cpp
ecb3f43d644962d904bac16e25af07aa9156e56e 15-May-2012 Bill Wendling <isanbard@gmail.com> Remove extraneous ';'.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156791 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXSection.h
22b291abd855ccf013381a9d6939d918181b0e0e 08-May-2012 Eric Christopher <echristo@apple.com> Remove excess semi-colons to quiet warnings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156416 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXTargetObjectFile.h
af878315192a9fa5b534364e327c24aeb8d73b5a 05-May-2012 Benjamin Kramer <benny.kra@googlemail.com> NVPTX: Initialize the UseF32FTZ flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156232 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelDAGToDAG.cpp
03ba93e194d979c95f29c9b602730e522f8facd4 05-May-2012 David Blaikie <dblaikie@gmail.com> Fix warnings in release build.

This fixes a couple of Clang warnings in release builds of LLVM:

* Missing return in ISelLowering
* Unused variable in NVPTXutil.cpp

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156216 91177308-0d34-0410-b5e6-96231b3b80d8
VPTXISelLowering.cpp
VPTXutil.cpp
917644d0c347950f8e77f52797cb89ceb771215d 04-May-2012 Chandler Carruth <chandlerc@gmail.com> Fix a Clang warning in the new NVPTX backend:

In file included from ../lib/Target/NVPTX/VectorElementize.cpp:53:
../lib/Target/NVPTX/NVPTX.h:44:3: warning: default label in switch which covers all enumeration values [-Wcovered-switch-default]
default: assert(0 && "Unknown condition code");
^
1 warning generated.

The prevailing pattern in LLVM is to not use a default label, and instead to
use llvm_unreachable to denote that the switch in fact covers all return paths
from the function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156209 91177308-0d34-0410-b5e6-96231b3b80d8
VPTX.h
49683f3c961379fbc088871a5d6304950f1f1cbc 04-May-2012 Justin Holewinski <jholewinski@nvidia.com> This patch adds a new NVPTX back-end to LLVM which supports code generation for NVIDIA PTX 3.0. This back-end will (eventually) replace the current PTX back-end, while maintaining compatibility with it.

The new target machines are:

nvptx (old ptx32) => 32-bit PTX
nvptx64 (old ptx64) => 64-bit PTX

The sources are based on the internal NVIDIA NVPTX back-end, and
contain more functionality than the current PTX back-end currently
provides.

NV_CONTRIB

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156196 91177308-0d34-0410-b5e6-96231b3b80d8
MakeLists.txt
nstPrinter/CMakeLists.txt
nstPrinter/LLVMBuild.txt
nstPrinter/Makefile
nstPrinter/NVPTXInstPrinter.cpp
LVMBuild.txt
CTargetDesc/CMakeLists.txt
CTargetDesc/LLVMBuild.txt
CTargetDesc/Makefile
CTargetDesc/NVPTXBaseInfo.h
CTargetDesc/NVPTXMCAsmInfo.cpp
CTargetDesc/NVPTXMCAsmInfo.h
CTargetDesc/NVPTXMCTargetDesc.cpp
CTargetDesc/NVPTXMCTargetDesc.h
akefile
anagedStringPool.h
VPTX.h
VPTX.td
VPTXAllocaHoisting.cpp
VPTXAllocaHoisting.h
VPTXAsmPrinter.cpp
VPTXAsmPrinter.h
VPTXFrameLowering.cpp
VPTXFrameLowering.h
VPTXISelDAGToDAG.cpp
VPTXISelDAGToDAG.h
VPTXISelLowering.cpp
VPTXISelLowering.h
VPTXInstrFormats.td
VPTXInstrInfo.cpp
VPTXInstrInfo.h
VPTXInstrInfo.td
VPTXIntrinsics.td
VPTXLowerAggrCopies.cpp
VPTXLowerAggrCopies.h
VPTXNumRegisters.h
VPTXRegisterInfo.cpp
VPTXRegisterInfo.h
VPTXRegisterInfo.td
VPTXSection.h
VPTXSplitBBatBar.cpp
VPTXSplitBBatBar.h
VPTXSubtarget.cpp
VPTXSubtarget.h
VPTXTargetMachine.cpp
VPTXTargetMachine.h
VPTXTargetObjectFile.h
VPTXUtilities.cpp
VPTXUtilities.h
VPTXVector.td
VPTXutil.cpp
VPTXutil.h
argetInfo/CMakeLists.txt
argetInfo/LLVMBuild.txt
argetInfo/Makefile
argetInfo/NVPTXTargetInfo.cpp
ectorElementize.cpp
l_common_defines.h
en-register-defs.py