Justin Holewinski
73e1075530
[NVPTX] Remove unused prototypes
...
llvm-svn: 186844
2013-07-22 17:04:40 +00:00
Justin Holewinski
0a7b783785
[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"
llvm-svn: 186820
2013-07-22 12:18:04 +00:00
Tim Northover
69d676cd12
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.
llvm-svn: 186392
2013-07-16 09:46:55 +00:00
Craig Topper
58fa7a9b4a
Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size.
...
llvm-svn: 186274
2013-07-14 04:42:23 +00:00
Craig Topper
783617eba7
Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size.
...
llvm-svn: 185606
2013-07-04 01:31:24 +00:00
Justin Holewinski
d88c5d6e19
[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.
llvm-svn: 185336
2013-07-01 13:00:14 +00:00
Justin Holewinski
f5ae252158
[NVPTX] We dont use NVBuiltin anymore
...
llvm-svn: 185335
2013-07-01 12:59:08 +00:00
Justin Holewinski
942960b94a
[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.
llvm-svn: 185334
2013-07-01 12:59:06 +00:00
Justin Holewinski
89a1f98197
[NVPTX] 64-bit ADDC/ADDE are not legal
...
llvm-svn: 185333
2013-07-01 12:59:04 +00:00
Justin Holewinski
6284a5cea6
[NVPTX] Fix vector loads from parameters that span multiple loads, and fix some typos
...
llvm-svn: 185332
2013-07-01 12:59:01 +00:00
Justin Holewinski
77ba2f5ed9
[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
llvm-svn: 185331
2013-07-01 12:58:58 +00:00
Justin Holewinski
46fe052e1f
[NVPTX] Add support for native SIGN_EXTEND_INREG where available
...
llvm-svn: 185330
2013-07-01 12:58:56 +00:00
Justin Holewinski
46d3cad4d8
[NVPTX] Add isel patterns for [reg+offset] form of ldg/ldu.
...
llvm-svn: 185329
2013-07-01 12:58:52 +00:00
Justin Holewinski
c254f0f839
[NVPTX] Make sure we zero out high-order 24 bits for 8-bit load into 32-bit value
...
llvm-svn: 185328
2013-07-01 12:58:48 +00:00
Benjamin Kramer
00fd94f632
NVPTX: Fold otherwise unused variable into assert.
...
Avoids unused variable warnings in release builds.
llvm-svn: 185271
2013-06-29 22:51:12 +00:00
Justin Holewinski
77a29128d5
[NVPTX] Select -1 instead of 1 when anyextend'ing i1 types
...
This makes it more consistent with the ZeroOrNegativeOneBooleanContent flag
llvm-svn: 185179
2013-06-28 17:58:15 +00:00
Justin Holewinski
434a514175
[NVPTX] Add (1.0 / sqrt(x)) => rsqrt(x) generation when allowable by FP flags
...
llvm-svn: 185178
2013-06-28 17:58:13 +00:00
Justin Holewinski
f17855a9dc
[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.
llvm-svn: 185177
2013-06-28 17:58:10 +00:00
Justin Holewinski
6feb5e8392
[NVPTX] Add support for cttz/ctlz/ctpop
...
llvm-svn: 185176
2013-06-28 17:58:07 +00:00
Justin Holewinski
d365a376eb
[NVPTX] Clean up comparison/select/convert patterns and factor out PTX instructions from their patterns
...
Test case is no breakage
llvm-svn: 185175
2013-06-28 17:58:04 +00:00
Justin Holewinski
0f70140107
[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.
...
llvm-svn: 185174
2013-06-28 17:57:59 +00:00
Justin Holewinski
9ae87e685a
[NVPTX] Add support for vectorized function return values
...
llvm-svn: 185173
2013-06-28 17:57:55 +00:00
Justin Holewinski
7332dc0027
[NVPTX] Clean up handling of formal arguments and enable generation of vector parameter loads
...
llvm-svn: 185172
2013-06-28 17:57:53 +00:00
Justin Holewinski
8b360917c2
[NVPTX] Add infrastructure for vector loads/stores of parameters
...
llvm-svn: 185171
2013-06-28 17:57:51 +00:00
Manman Ren
5bedd08922
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.
llvm-svn: 185135
2013-06-28 05:43:10 +00:00
Eric Christopher
2004fbdda9
Revert "Debug Info: clean up usage of Verify." as it's breaking bots.
...
This reverts commit r185020
llvm-svn: 185032
2013-06-26 22:44:57 +00:00
Manman Ren
868703ebb8
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.
llvm-svn: 185020
2013-06-26 21:26:10 +00:00
Justin Holewinski
f085b28335
[NVPTX] Default pointer type doesn't make sense for getParamSymbol()
...
llvm-svn: 184831
2013-06-25 12:22:21 +00:00
NAKAMURA Takumi
c94525d76e
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.
llvm-svn: 184728
2013-06-24 13:19:41 +00:00
Chad Rosier
d00211e479
The getRegForInlineAsmConstraint function should only accept MVT value types.
...
llvm-svn: 184642
2013-06-22 18:37:38 +00:00
Justin Holewinski
26b66eafe7
[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"
llvm-svn: 184579
2013-06-21 18:51:49 +00:00
Bill Wendling
49f45f9861
Don't pass in the TargetInstrInfo into the register info object. It doesn't use it.
...
llvm-svn: 184369
2013-06-19 21:59:00 +00:00
Justin Holewinski
fa2e2511f8
[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
...
llvm-svn: 183652
2013-06-10 13:29:47 +00:00
Benjamin Kramer
c60747c08c
NVPTX: Don't even create a regalloc if we're not going to use it.
...
Fixes a leak found by valgrind.
llvm-svn: 183031
2013-05-31 19:21:58 +00:00
Justin Holewinski
d925e36ab2
[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.
llvm-svn: 182998
2013-05-31 12:14:49 +00:00
Justin Holewinski
099d52887f
[NVPTX] Fix case where a sext load of an i1 type may produce an
...
ld.u1 instead of an ld.u8.
llvm-svn: 182924
2013-05-30 12:22:39 +00:00
Andrew Trick
aec414c298
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.
llvm-svn: 182885
2013-05-29 22:03:55 +00:00
Bill Wendling
e5fb3dbcbb
Don't reach into the middle of TargetMachine and cache one of its ivars.
...
Not only does this break encapsulation, it's gross.
llvm-svn: 182876
2013-05-29 20:37:19 +00:00
Andrew Trick
34c31df32a
Track IR ordering of SelectionDAG nodes 3/4.
...
Remove the old IR ordering mechanism and switch to new one. Fix unit
test failures.
llvm-svn: 182704
2013-05-25 03:08:10 +00:00
Andrew Trick
2790ee3a8e
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.
llvm-svn: 182703
2013-05-25 02:42:55 +00:00
Benjamin Kramer
620125412f
Move passes from namespace llvm into anonymous namespaces. Sort includes while there.
...
llvm-svn: 182594
2013-05-23 17:10:37 +00:00
Benjamin Kramer
1550151f79
More symbols that should be static.
...
llvm-svn: 182590
2013-05-23 16:09:15 +00:00
Justin Holewinski
2a53cbfbe1
[NVPTX] Add @llvm.nvvm.sqrt.f() intrinsic
...
llvm-svn: 182394
2013-05-21 16:51:30 +00:00
Justin Holewinski
2d2a08ee5e
[NVPTX] Fix mis-use of CurrentFnSym in NVPTXAsmPrinter. This was causing a symbol name error in the output PTX.
...
llvm-svn: 182298
2013-05-20 16:42:18 +00:00
Justin Holewinski
3c0938687d
[NVPTX] Add programmatic interface to NVVMReflect pass
...
llvm-svn: 182297
2013-05-20 16:42:16 +00:00
Justin Holewinski
d5636664a4
[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.
llvm-svn: 182254
2013-05-20 12:13:32 +00:00
Justin Holewinski
fda22b94b1
[NVPTX] Fix i1 kernel parameters and global variables. ABI rules say we need to use .u8 for i1 parameters for kernels.
...
llvm-svn: 182253
2013-05-20 12:13:28 +00:00
Matt Arsenault
118196f0ca
Add LLVMContext argument to getSetCCResultType
...
llvm-svn: 182180
2013-05-18 00:21:46 +00:00
Rafael Espindola
237980d752
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.
llvm-svn: 181680
2013-05-13 01:16:13 +00:00
Rafael Espindola
d05c5e1727
Remove unused argument.
...
llvm-svn: 181618
2013-05-10 18:16:59 +00:00