Revision tags: llvmorg-3.9.0, llvmorg-3.9.0-rc3, llvmorg-3.9.0-rc2, llvmorg-3.9.0-rc1, llvmorg-3.8.1, llvmorg-3.8.1-rc1 |
|
#
52adb575 |
| 09-Mar-2016 |
Chris Dewhurst <chris.dewhurst@lero.ie> |
This change adds co-processor condition branching and conditional traps to the Sparc back-end.
This will allow inline assembler code to utilize these features, but no automatic lowering is provided,
This change adds co-processor condition branching and conditional traps to the Sparc back-end.
This will allow inline assembler code to utilize these features, but no automatic lowering is provided, except for the previously provided @llvm.trap, which lowers to "ta 5".
The change also separates out the different assembly language syntaxes for V8 and V9 Sparc. Previously, only V9 Sparc assembly syntax was provided.
The change also corrects the selection order of trap disassembly, allowing, e.g. "ta %g0 + 15" to be rendered, more readably, as "ta 15", ignoring the %g0 register. This is per the sparc v8 and v9 manuals.
Check-in includes many extra unit tests to check this works correctly on both V8 and V9 Sparc processors.
Code Reviewed at http://reviews.llvm.org/D17960.
llvm-svn: 263044
show more ...
|
Revision tags: llvmorg-3.8.0 |
|
#
053826af |
| 27-Feb-2016 |
Chris Dewhurst <chris.dewhurst@lero.ie> |
The patch adds missing registers and instructions to complete all the registers supported by the Sparc v8 manual. These are all co-processor registers, with the exception of the floating-point deferr
The patch adds missing registers and instructions to complete all the registers supported by the Sparc v8 manual. These are all co-processor registers, with the exception of the floating-point deferred-trap queue register. Although these will not be lowered automatically by any instructions, it allows the use of co-processor instructions implemented by inline-assembly.
Code Reviewed at http://reviews.llvm.org/D17133, with the exception of a very small change in brace placement in SparcInstrInfo.td, which was formerly causing a problem in the disassembly of the %fq register.
llvm-svn: 262133
show more ...
|
#
829b104d |
| 26-Feb-2016 |
Chris Dewhurst <chris.dewhurst@lero.ie> |
Reverting breaking change. Sorry.
llvm-svn: 262007
|
#
9c3bf91d |
| 26-Feb-2016 |
Chris Dewhurst <chris.dewhurst@lero.ie> |
Reviewed at reviews.llvm.org/D17133
llvm-svn: 262005
|
Revision tags: llvmorg-3.8.0-rc3, llvmorg-3.8.0-rc2 |
|
#
f57c1977 |
| 26-Jan-2016 |
Benjamin Kramer <benny.kra@googlemail.com> |
Reflect the MC/MCDisassembler split on the include/ level.
No functional change, just moving code around.
llvm-svn: 258818
|
Revision tags: llvmorg-3.8.0-rc1, llvmorg-3.7.1, llvmorg-3.7.1-rc2, llvmorg-3.7.1-rc1 |
|
#
726e624c |
| 04-Oct-2015 |
Joerg Sonnenberger <joerg@bec.de> |
[SPARCv9] Add support for the rdpr/wrpr instructions.
llvm-svn: 249262
|
Revision tags: llvmorg-3.7.0, llvmorg-3.7.0-rc4, llvmorg-3.7.0-rc3, studio-1.4 |
|
#
3994be87 |
| 10-Aug-2015 |
James Y Knight <jyknight@google.com> |
[Sparc] Implement i64 load/store support for 32-bit sparc.
The LDD/STD instructions can load/store a 64bit quantity from/to memory to/from a consecutive even/odd pair of (32-bit) registers. They are
[Sparc] Implement i64 load/store support for 32-bit sparc.
The LDD/STD instructions can load/store a 64bit quantity from/to memory to/from a consecutive even/odd pair of (32-bit) registers. They are part of SparcV8, and also present in SparcV9. (Although deprecated there, as you can store 64bits in one register).
As recommended on llvmdev in the thread "How to enable use of 64bit load/store for 32bit architecture" from Apr 2015, I've modeled the 64-bit load/store operations as working on a v2i32 type, rather than making i64 a legal type, but with few legal operations. The latter does not (currently) work, as there is much code in llvm which assumes that if i64 is legal, operations like "add" will actually work on it.
The same assumption does not hold for v2i32 -- for vector types, it is workable to support only load/store, and expand everything else.
This patch: - Adds a new register class, IntPair, for even/odd pairs of registers.
- Modifies the list of reserved registers, the stack spilling code, and register copying code to support the IntPair register class.
- Adds support in AsmParser. (note that in asm text, you write the name of the first register of the pair only. So the parser has to morph the single register into the equivalent paired register).
- Adds the new instructions themselves (LDD/STD/LDDA/STDA).
- Hooks up the instructions and registers as a vector type v2i32. Adds custom legalizer to transform i64 load/stores into v2i32 load/stores and bitcasts, so that the new instructions can actually be generated, and marks all operations other than load/store on v2i32 as needing to be expanded.
- Copies the unfortunate SelectInlineAsm hack from ARMISelDAGToDAG. This hack undoes the transformation of i64 operands into two arbitrarily-allocated separate i32 registers in SelectionDAGBuilder. and instead passes them in a single IntPair. (Arbitrarily allocated registers are not useful, asm code expects to be receiving a pair, which can be passed to ldd/std.)
Also adds a bunch of test cases covering all the bugs I've added along the way.
Differential Revision: http://reviews.llvm.org/D8713
llvm-svn: 244484
show more ...
|
Revision tags: llvmorg-3.7.0-rc2, llvmorg-3.7.0-rc1, llvmorg-3.6.2, llvmorg-3.6.2-rc1 |
|
#
f00654e3 |
| 23-Jun-2015 |
Alexander Kornienko <alexfh@google.com> |
Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC)
Apparently, the style needs to be agreed upon first.
llvm-svn: 240390
|
#
70bc5f13 |
| 19-Jun-2015 |
Alexander Kornienko <alexfh@google.com> |
Fixed/added namespace ending comments using clang-tidy. NFC
The patch is generated using this command:
tools/clang/tools/extra/clang-tidy/tool/run-clang-tidy.py -fix \ -checks=-*,llvm-namespace-c
Fixed/added namespace ending comments using clang-tidy. NFC
The patch is generated using this command:
tools/clang/tools/extra/clang-tidy/tool/run-clang-tidy.py -fix \ -checks=-*,llvm-namespace-comment -header-filter='llvm/.*|clang/.*' \ llvm/lib/
Thanks to Eugene Kosov for the original patch!
llvm-svn: 240137
show more ...
|
#
24060be7 |
| 18-May-2015 |
James Y Knight <jyknight@google.com> |
Sparc: Add the "alternate address space" load/store instructions.
- Adds support for the asm syntax, which has an immediate integer "ASI" (address space identifier) appearing after an address, bef
Sparc: Add the "alternate address space" load/store instructions.
- Adds support for the asm syntax, which has an immediate integer "ASI" (address space identifier) appearing after an address, before a comma.
- Adds the various-width load, store, and swap in alternate address space instructions. (ldsba, ldsha, lduba, lduha, lda, stba, stha, sta, swapa)
This does not attempt to hook these instructions up to pointer address spaces in LLVM, although that would probably be a reasonable thing to do in the future.
Differential Revision: http://reviews.llvm.org/D8904
llvm-svn: 237581
show more ...
|
#
807563df |
| 18-May-2015 |
James Y Knight <jyknight@google.com> |
Add support for the Sparc implementation-defined "ASR" registers.
(Note that register "Y" is essentially just ASR0).
Also added some test cases for divide and multiply, which had none before.
Diff
Add support for the Sparc implementation-defined "ASR" registers.
(Note that register "Y" is essentially just ASR0).
Also added some test cases for divide and multiply, which had none before.
Differential Revision: http://reviews.llvm.org/D8670
llvm-svn: 237580
show more ...
|
#
3de83e40 |
| 15-May-2015 |
Pete Cooper <peter_cooper@apple.com> |
Remove 3 includes from MCInstrDesc.h and explicitly include them where needed
llvm-svn: 237481
|
Revision tags: llvmorg-3.6.1 |
|
#
e9119e41 |
| 13-May-2015 |
Jim Grosbach <grosbach@apple.com> |
MC: Modernize MCOperand API naming. NFC.
MCOperand::Create*() methods renamed to MCOperand::create*().
llvm-svn: 237275
|
Revision tags: llvmorg-3.6.1-rc1 |
|
#
9160e78a |
| 29-Apr-2015 |
Douglas Katzman <dougk@google.com> |
[Sparc] Really add sparcel architecture support.
Mostly copy-and-paste from Sparc v8 architecture.
Differential Revision: http://reviews.llvm.org/D8741
llvm-svn: 236146
|
Revision tags: llvmorg-3.5.2, llvmorg-3.5.2-rc1, llvmorg-3.6.0, llvmorg-3.6.0-rc4, llvmorg-3.6.0-rc3, llvmorg-3.6.0-rc2, llvmorg-3.6.0-rc1, llvmorg-3.5.1, llvmorg-3.5.1-rc2, llvmorg-3.5.1-rc1 |
|
#
7fc5b874 |
| 12-Nov-2014 |
Rafael Espindola <rafael.espindola@gmail.com> |
Pass an ArrayRef to MCDisassembler::getInstruction.
With this patch MCDisassembler::getInstruction takes an ArrayRef<uint8_t> instead of a MemoryObject.
Even on X86 there is a maximum size an instr
Pass an ArrayRef to MCDisassembler::getInstruction.
With this patch MCDisassembler::getInstruction takes an ArrayRef<uint8_t> instead of a MemoryObject.
Even on X86 there is a maximum size an instruction can have. Given that, it seems way simpler and more efficient to just pass an ArrayRef to the disassembler instead of a MemoryObject and have it do a virtual call every time it wants some extra bytes.
llvm-svn: 221751
show more ...
|
#
4aa6bea7 |
| 10-Nov-2014 |
Rafael Espindola <rafael.espindola@gmail.com> |
Misc style fixes. NFC.
This fixes a few cases of:
* Wrong variable name style. * Lines longer than 80 columns. * Repeated names in comments. * clang-format of the above.
This make the next patch a
Misc style fixes. NFC.
This fixes a few cases of:
* Wrong variable name style. * Lines longer than 80 columns. * Repeated names in comments. * clang-format of the above.
This make the next patch a lot easier to read.
llvm-svn: 221615
show more ...
|
Revision tags: llvmorg-3.5.0, llvmorg-3.5.0-rc4, llvmorg-3.5.0-rc3, llvmorg-3.5.0-rc2, llvmorg-3.5.0-rc1, llvmorg-3.4.2, llvmorg-3.4.2-rc1 |
|
#
b0c941be |
| 29-Apr-2014 |
Craig Topper <craig.topper@gmail.com> |
[C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides th
[C++11] Add 'override' keywords and remove 'virtual'. Additionally add 'final' and leave 'virtual' on some methods that are marked virtual without overriding anything and have no obvious overrides themselves. Sparc edition
llvm-svn: 207502
show more ...
|
Revision tags: llvmorg-3.4.1, llvmorg-3.4.1-rc2 |
|
#
84e68b29 |
| 22-Apr-2014 |
Chandler Carruth <chandlerc@gmail.com> |
[Modules] Fix potential ODR violations by sinking the DEBUG_TYPE definition below all of the header #include lines, lib/Target/... edition.
llvm-svn: 206842
|
#
a1bc0f56 |
| 15-Apr-2014 |
Lang Hames <lhames@gmail.com> |
[MC] Require an MCContext when constructing an MCDisassembler.
This patch re-introduces the MCContext member that was removed from MCDisassembler in r206063, and requires that an MCContext be passed
[MC] Require an MCContext when constructing an MCDisassembler.
This patch re-introduces the MCContext member that was removed from MCDisassembler in r206063, and requires that an MCContext be passed in at MCDisassembler construction time. (Previously the MCContext member had been initialized in an ad-hoc fashion after construction). The MCCContext member can be used by MCDisassembler sub-classes to construct constant or target-specific MCExprs.
This patch updates disassemblers for in-tree targets, and provides the MCRegisterInfo instance that some disassemblers were using through the MCContext (previously those backends were constructing their own MCRegisterInfo instances).
llvm-svn: 206241
show more ...
|
Revision tags: llvmorg-3.4.1-rc1 |
|
#
f703132b |
| 09-Mar-2014 |
Venkatraman Govindaraju <venkatra@cs.wisc.edu> |
[Sparc] Add support for decoding 'swap' instruction.
llvm-svn: 203424
|
#
07d3af28 |
| 02-Mar-2014 |
Venkatraman Govindaraju <venkatra@cs.wisc.edu> |
[Sparc] Add return/rett instruction to Sparc backend.
llvm-svn: 202666
|
#
4fa2ab26 |
| 02-Mar-2014 |
Venkatraman Govindaraju <venkatra@cs.wisc.edu> |
[Sparc] Add support for decoding jmpl/retl/ret instruction.
llvm-svn: 202663
|
#
81aae572 |
| 02-Mar-2014 |
Venkatraman Govindaraju <venkatra@cs.wisc.edu> |
[Sparc] Add support for parsing fcmp with %fcc registers.
llvm-svn: 202610
|
#
484ca1a0 |
| 01-Mar-2014 |
Venkatraman Govindaraju <venkatra@cs.wisc.edu> |
[Sparc] Add support to decode negative simm13 operands in the sparc disassembler.
llvm-svn: 202578
|
#
78df2dec |
| 01-Mar-2014 |
Venkatraman Govindaraju <venkatra@cs.wisc.edu> |
[Sparc] Add support for decoding call instructions in the sparc disassembler.
llvm-svn: 202577
|