Venkatraman Govindaraju
dc3bcc19cf
[SparcV9] Add support for JIT in Sparc64.
...
With this change, all supported tests in test/ExecutionEngine pass in sparcv9.
llvm-svn: 199977
2014-01-24 07:10:19 +00:00
Jakob Stoklund Olesen
05ae2d6715
Implement atomicrmw operations in 32 and 64 bits for SPARCv9.
...
These all use the compare-and-swap CASA/CASXA instructions.
llvm-svn: 199975
2014-01-24 06:23:31 +00:00
Venkatraman Govindaraju
dd634cac74
[Sparc] Add support for inline assembly constraints which specify registers by their aliases.
...
llvm-svn: 199786
2014-01-22 03:18:42 +00:00
Venkatraman Govindaraju
407e442245
[Sparc] Add support for inline assembly constraint 'I'.
...
llvm-svn: 199781
2014-01-22 01:29:51 +00:00
Lang Hames
06234ec147
Add FPExt option to CCValAssign::LocInfo. When generating calling-convention
...
promotion code, Tablegen will now select FPExt for floating point promotions
(previously it had returned AExt, which is not valid for floating point types).
Any out-of-tree targets that were relying on AExt being returned for FP
promotions will need to update their code check for FPExt instead.
llvm-svn: 199252
2014-01-14 19:56:36 +00:00
Jakob Stoklund Olesen
e7084a1c5c
The SPARCv9 ABI returns a float in %f0.
...
This is different from the argument passing convention which puts the
first float argument in %f1.
With this patch, all returned floats are treated as if the 'inreg' flag
were set. This means multiple float return values get packed in %f0,
%f1, %f2, ...
Note that when returning a struct in registers, clang will set the
'inreg' flag on the return value, so that behavior is unchanged. This
also happens when returning a float _Complex.
llvm-svn: 199028
2014-01-12 04:13:17 +00:00
Chandler Carruth
8a8cd2bab9
Re-sort all of the includes with ./utils/sort_includes.py so that
...
subsequent changes are easier to review. About to fix some layering
issues, and wanted to separate out the necessary churn.
Also comment and sink the include of "Windows.h" in three .inc files to
match the usage in Memory.inc.
llvm-svn: 198685
2014-01-07 11:48:04 +00:00
Bill Wendling
13199b17f8
Remove unnecessary #includes.
...
llvm-svn: 198585
2014-01-06 06:00:00 +00:00
Bill Wendling
908bf814e7
Refactor function that checks that __builtin_returnaddress's argument is constant.
...
This moves the check up into the parent class so that all targets can use it
without having to copy (and keep in sync) the same error message.
llvm-svn: 198579
2014-01-06 00:43:20 +00:00
Bill Wendling
df7dd28dc8
Emit an error message if the value passed to __builtin_returnaddress isn't a constant
...
__builtin_returnaddress requires that the value passed into is be a constant.
However, at -O0 even a constant expression may not be converted to a constant.
Emit an error message intead of crashing.
llvm-svn: 198531
2014-01-05 01:47:20 +00:00
Venkatraman Govindaraju
96ab3bc5bd
[SparcV9]: Implement RETURNADDR and FRAMEADDR lowering in SPARC64.
...
Fixes PR18356.
llvm-svn: 198480
2014-01-04 07:17:21 +00:00
Venkatraman Govindaraju
9a3da52ea2
[Sparc] Handle atomic loads/stores in sparc backend.
...
llvm-svn: 198286
2014-01-01 22:11:54 +00:00
Venkatraman Govindaraju
77011e861b
[SparcV9]: Custom lower UMULO/SMULO so that the arguments are send to __multi3() in correct order.
...
llvm-svn: 198281
2014-01-01 20:22:45 +00:00
Venkatraman Govindaraju
5ac9c8faec
[SparcV9] For codegen generated library calls that return float, set inreg flag manually in LowerCall().
...
This makes the sparc backend to generate Sparc64 ABI compliant code.
llvm-svn: 198149
2013-12-29 04:27:21 +00:00
Venkatraman Govindaraju
0776cc0acd
[SparcV9]: Implement lowering of long double (fp128) arguments in Sparc64 ABI.
...
Also, pass fp128 arguments to varargs through integer registers if necessary.
llvm-svn: 198145
2013-12-29 01:20:36 +00:00
Venkatraman Govindaraju
61116e7084
[SPARCV9]: Adjust the resultant pointer of DYNAMIC_STACKALLOC with the stack BIAS on sparcV9.
...
llvm-svn: 196755
2013-12-09 05:13:25 +00:00
Venkatraman Govindaraju
f6c8fe983b
[Sparc]: Implement getSetCCResultType() in SparcTargetLowering so that umulo/smulo can be lowered on sparcv9 without an assertion error.
...
llvm-svn: 196751
2013-12-09 04:02:15 +00:00
Venkatraman Govindaraju
72cc248524
[SparcV9]: Expand MULHU/MULHS:i64 and UMUL_LOHI/SMUL_LOHI:i64 on sparcv9.
...
This fixes PR18150.
llvm-svn: 196735
2013-12-08 22:06:07 +00:00
Venkatraman Govindaraju
0510db0597
[SparcV9] Enable custom lowering of DYNAMIC_STACKALLOC in sparc64.
...
llvm-svn: 195573
2013-11-24 17:41:41 +00:00
Roman Divacky
b6517850fb
Expand rotate instructions on sparcv9 as well.
...
llvm-svn: 194500
2013-11-12 19:04:45 +00:00
Venkatraman Govindaraju
5ae77f7564
[SparcV9] Handle i64 <-> float conversions in sparcv9 mode.
...
llvm-svn: 193957
2013-11-03 12:28:40 +00:00
Venkatraman Govindaraju
f1d807ee13
[Sparc] Expand FP_TO_UINT, UINT_TO_FP for fp128.
...
llvm-svn: 193947
2013-11-03 08:00:19 +00:00
Venkatraman Govindaraju
5615aca219
[SparcV9] Add ctpop instruction for i64. Also, expand ctlz, cttz and bswap.
...
llvm-svn: 193941
2013-11-03 05:59:07 +00:00
Roman Divacky
2262cfaf19
SparcV9 doesnt have rem instruction either.
...
llvm-svn: 193789
2013-10-31 19:22:33 +00:00
Venkatraman Govindaraju
8812485d41
[Sparc] Disable tail call optimization for sparc64.
...
This patch fixes PR17506.
llvm-svn: 192294
2013-10-09 12:50:39 +00:00
Venkatraman Govindaraju
2ea4c2880c
[Sparc] Implement JIT for SPARC.
...
No new testcases. However, this patch makes all supported JIT testcases in
test/ExecutionEngine pass on Sparc.
llvm-svn: 192176
2013-10-08 07:15:22 +00:00
Venkatraman Govindaraju
572d5057e3
[Sparc] Custom lower addc/adde/subc/sube on i64 in sparc64.
...
This is required because i64 is a legal type but addxcc/subxcc reads icc carry bit, which are 32 bit conditional codes.
llvm-svn: 192054
2013-10-06 03:36:18 +00:00
Venkatraman Govindaraju
ece63dbd0d
[Sparc] Use correct alignment while loading/storing fp128 values.
...
llvm-svn: 192023
2013-10-05 02:29:47 +00:00
Venkatraman Govindaraju
30781deb1c
[Sparc] Respect hasHardQuad parameter correctly when lowering SINT_TO_FP with fp128 operand.
...
llvm-svn: 192015
2013-10-05 00:31:41 +00:00
Venkatraman Govindaraju
4c0cdd734c
[Sparc] Implements exception handling in SPARC with DwarfCFI.
...
llvm-svn: 191432
2013-09-26 15:11:00 +00:00
Venkatraman Govindaraju
cb1dca602c
[Sparc] Add support for TLS in sparc.
...
llvm-svn: 191164
2013-09-22 06:48:52 +00:00
Venkatraman Govindaraju
7e7eb8ce69
[SPARC] Make functions with GLOBAL_OFFSET_TABLE access as non-leaf functions.
...
llvm-svn: 191160
2013-09-22 01:40:24 +00:00
Venkatraman Govindaraju
829aec5900
[Sparc] Fix lowering FABS on fp128 (long double) on pre-v9 targets.
...
llvm-svn: 191154
2013-09-21 23:51:08 +00:00
Venkatraman Govindaraju
55ecb10e99
[Sparc] Correctly handle call to functions with ReturnsTwice attribute.
...
In sparc, setjmp stores only the registers %fp, %sp, %i7 and %o7. longjmp restores
the stack, and the callee-saved registers (all local/in registers: %i0-%i7, %l0-%l7)
using the stored %fp and register windows. However, this does not guarantee that the longjmp
will restore the registers, as they were when the setjmp was called. This is because these
registers may be clobbered after returning from setjmp, but before calling longjmp.
This patch prevents the registers %i0-%i5, %l0-l7 to live across the setjmp call using the register mask.
llvm-svn: 190033
2013-09-05 05:32:16 +00:00
Venkatraman Govindaraju
b803cec00e
[Sparc] Fix an assertion failure while lowering fcmp on long double.
...
This assertion is triggered because an integer constant is created with wrong
type.
llvm-svn: 189948
2013-09-04 15:15:20 +00:00
Venkatraman Govindaraju
59039dc1bf
[Sparc] Add support for soft long double (fp128).
...
llvm-svn: 189780
2013-09-03 04:11:59 +00:00
Venkatraman Govindaraju
35e0c382d5
[Sparc] Add long double (f128) instructions to sparc backend.
...
llvm-svn: 189198
2013-08-25 18:30:06 +00:00
Jakob Stoklund Olesen
0c00704f27
Use register masks on SPARC call instructions.
...
llvm-svn: 189085
2013-08-23 02:33:47 +00:00
Venkatraman Govindaraju
fee76fac2f
[Sparc] Rewrite MBB's live-in registers for leaf functions. Also, add
...
register i7 as a live-in if current function's return address is taken.
This revision fixes PR16269.
llvm-svn: 187433
2013-07-30 19:53:10 +00:00
Craig Topper
b94011fd28
Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size.
...
llvm-svn: 186274
2013-07-14 04:42:23 +00:00
Chad Rosier
295bd43adb
The getRegForInlineAsmConstraint function should only accept MVT value types.
...
llvm-svn: 184642
2013-06-22 18:37:38 +00:00
Venkatraman Govindaraju
7dae9ce021
[Sparc] Delete FPMover Pass and remove Fp* Pseudo-instructions from Sparc backend.
...
llvm-svn: 183613
2013-06-08 15:32:59 +00:00
Venkatraman Govindaraju
dc82ac0dcc
[Sparc]: Use cmp instruction instead of subcc to compare integers.
...
llvm-svn: 183463
2013-06-07 00:03:36 +00:00
Venkatraman Govindaraju
a54533ed78
Sparc: No functionality change. Cleanup whitespaces, comment formatting etc.,
...
llvm-svn: 183243
2013-06-04 18:33:25 +00:00
Venkatraman Govindaraju
f80d72f149
Sparc: Add support for indirect branch and blockaddress in Sparc backend.
...
llvm-svn: 183094
2013-06-03 05:58:33 +00:00
Venkatraman Govindaraju
28e2cd0e7e
Sparc: Mark functions calling llvm.vastart and llvm.returnaddress intrinsics as non-leaf functions.
...
llvm-svn: 183079
2013-06-01 20:42:48 +00:00
Andrew Trick
ad6d08ac6f
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
Andrew Trick
ef9de2a739
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
Jakob Stoklund Olesen
f927800325
Also expand 64-bit bitcasts.
...
llvm-svn: 182229
2013-05-20 01:01:43 +00:00
Jakob Stoklund Olesen
751e9b8407
Mark i64 SETCC as expand so it is turned into a SELECT_CC.
...
llvm-svn: 182227
2013-05-20 00:28:36 +00:00