#
16a74499 |
| 13-Feb-2015 |
Toma Tabacu <toma.tabacu@imgtec.com> |
[mips] Improve support for the .set at/noat assembler directives.
Summary: Made the following changes: Added calls to emitDirectiveSetNoAt() and emitDirectiveSetAt(). Added special emit function
[mips] Improve support for the .set at/noat assembler directives.
Summary: Made the following changes: Added calls to emitDirectiveSetNoAt() and emitDirectiveSetAt(). Added special emit function for .set at=$reg, emitDirectiveSetAtWithArg(unsigned RegNo). Improved parsing error checks for .set at. Refactored parser code for .set at. Improved testing of both directives. Improved code readability and comments.
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D7176
llvm-svn: 229097
show more ...
|
Revision tags: llvmorg-3.6.0-rc3, llvmorg-3.6.0-rc2 |
|
#
a5762816 |
| 26-Jan-2015 |
Eric Christopher <echristo@gmail.com> |
Move the Mips target to storing the ABI in the TargetMachine rather than on MipsSubtargetInfo.
This required a bit of massaging in the MC level to handle this since MC is a) largely a collection of
Move the Mips target to storing the ABI in the TargetMachine rather than on MipsSubtargetInfo.
This required a bit of massaging in the MC level to handle this since MC is a) largely a collection of disparate classes with no hierarchy, and b) there's no overarching equivalent to the TargetMachine, instead only the subtarget via MCSubtargetInfo (which is the base class of TargetSubtargetInfo).
We're now storing the ABI in both the TargetMachine level and in the MC level because the AsmParser and the TargetStreamer both need to know what ABI we have to parse assembly and emit objects. The target streamer has a pointer to the one in the asm parser and is updated when the asm parser is created. This is fragile as the FIXME comment notes, but shouldn't be a problem in practice since we always create an asm parser before attempting to emit object code via the assembler. The TargetMachine now contains the ABI so that the DataLayout can be constructed dependent upon ABI.
All testcases have been updated to use the -target-abi command line flag so that we can set the ABI without using a subtarget feature.
Should be no change visible externally here.
llvm-svn: 227102
show more ...
|
Revision tags: llvmorg-3.6.0-rc1 |
|
#
d9903888 |
| 14-Jan-2015 |
Chandler Carruth <chandlerc@gmail.com> |
[cleanup] Re-sort all the #include lines in LLVM using utils/sort_includes.py.
I clearly haven't done this in a while, so more changed than usual. This even uncovered a missing include from the Inst
[cleanup] Re-sort all the #include lines in LLVM using utils/sort_includes.py.
I clearly haven't done this in a while, so more changed than usual. This even uncovered a missing include from the InstrProf library that I've added. No functionality changed here, just mechanical cleanup of the include order.
llvm-svn: 225974
show more ...
|
Revision tags: llvmorg-3.5.1, llvmorg-3.5.1-rc2, llvmorg-3.5.1-rc1 |
|
#
c4c202a9 |
| 01-Oct-2014 |
Toma Tabacu <toma.tabacu@imgtec.com> |
[mips] Rename emit and parse functions for the .cpload assembler directive. NFC.
Summary: It's better if we have a consistent name for .cpload-related functions.
Reviewers: dsanders
Reviewed By: d
[mips] Rename emit and parse functions for the .cpload assembler directive. NFC.
Summary: It's better if we have a consistent name for .cpload-related functions.
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D5437
llvm-svn: 218768
show more ...
|
#
351b2fee |
| 17-Sep-2014 |
Toma Tabacu <toma.tabacu@imgtec.com> |
[mips] Add assembler support for the .set nodsp directive.
Summary: This directive is used to tell the assembler to reject DSP-specific instructions.
Reviewers: dsanders
Reviewed By: dsanders
Dif
[mips] Add assembler support for the .set nodsp directive.
Summary: This directive is used to tell the assembler to reject DSP-specific instructions.
Reviewers: dsanders
Reviewed By: dsanders
Differential Revision: http://reviews.llvm.org/D5142
llvm-svn: 217946
show more ...
|
#
2664779b |
| 09-Sep-2014 |
Toma Tabacu <toma.tabacu@imgtec.com> |
[mips] Add assembler support for .set mips0 directive.
Summary: This directive is used to reset the assembler options to their initial values. Assembly programmers use it in conjunction with the ".s
[mips] Add assembler support for .set mips0 directive.
Summary: This directive is used to reset the assembler options to their initial values. Assembly programmers use it in conjunction with the ".set mipsX" directives.
This patch depends on the .set push/pop directive (http://reviews.llvm.org/D4821).
Contains work done by Matheus Almeida.
Reviewers: dsanders
Reviewed By: dsanders
Differential Revision: http://reviews.llvm.org/D4957
llvm-svn: 217438
show more ...
|
#
9db22db9 |
| 09-Sep-2014 |
Toma Tabacu <toma.tabacu@imgtec.com> |
[mips] Add assembler support for .set push/pop directive.
Summary: These directives are used to save the current assembler options (in the case of ".set push") and restore the previously saved optio
[mips] Add assembler support for .set push/pop directive.
Summary: These directives are used to save the current assembler options (in the case of ".set push") and restore the previously saved options (in the case of ".set pop").
Contains work done by Matheus Almeida.
Reviewers: dsanders
Reviewed By: dsanders
Differential Revision: http://reviews.llvm.org/D4821
llvm-svn: 217432
show more ...
|
#
8c90fd71 |
| 03-Sep-2014 |
Benjamin Kramer <benny.kra@googlemail.com> |
Add override to overriden virtual methods, remove virtual keywords.
No functionality change. Changes made by clang-tidy + some manual cleanup.
llvm-svn: 217028
|
Revision tags: llvmorg-3.5.0, llvmorg-3.5.0-rc4, llvmorg-3.5.0-rc3 |
|
#
85618b31 |
| 19-Aug-2014 |
Toma Tabacu <toma.tabacu@imgtec.com> |
[mips] Add assembler support for .set arch=x directive.
Summary: This directive is similar to ".set mipsX". It is used to change the CPU target of the assembler, enabling it to accept instructions f
[mips] Add assembler support for .set arch=x directive.
Summary: This directive is similar to ".set mipsX". It is used to change the CPU target of the assembler, enabling it to accept instructions for a specific CPU.
This patch only implements the r4000 CPU (which is treated internally as generic mips3) and the generic ISAs.
Contains work done by Matheus Almeida.
Reviewers: dsanders
Reviewed By: dsanders
Differential Revision: http://reviews.llvm.org/D4884
llvm-svn: 215978
show more ...
|
#
cdb45fa3 |
| 14-Aug-2014 |
Daniel Sanders <daniel.sanders@imgtec.com> |
[mips] Rename [gs]etCanHaveModuleDir to more natural names
Summary: getCanHaveModuleDir() is renamed to isModuleDirectiveAllowed(), and setCanHaveModuleDir() is renamed to forbidModuleDirective() si
[mips] Rename [gs]etCanHaveModuleDir to more natural names
Summary: getCanHaveModuleDir() is renamed to isModuleDirectiveAllowed(), and setCanHaveModuleDir() is renamed to forbidModuleDirective() since it is only ever given a false argument.
Reviewers: vmedic
Reviewed By: vmedic
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D4885
llvm-svn: 215628
show more ...
|
#
a7c40ef0 |
| 13-Aug-2014 |
Benjamin Kramer <benny.kra@googlemail.com> |
Canonicalize header guards into a common format.
Add header guards to files that were missing guards. Remove #endif comments as they don't seem common in LLVM (we can easily add them back if we deci
Canonicalize header guards into a common format.
Add header guards to files that were missing guards. Remove #endif comments as they don't seem common in LLVM (we can easily add them back if we decide they're useful)
Changes made by clang-tidy with minor tweaks.
llvm-svn: 215558
show more ...
|
#
88f05ce3 |
| 13-Aug-2014 |
Toma Tabacu <toma.tabacu@imgtec.com> |
[mips] Refactor calls to setCanHaveModuleDir.
Summary: Moved some calls to setCanHaveModuleDir to the MipsTargetStreamer base class and removed the resulting empty functions from the MipsTargetELFSt
[mips] Refactor calls to setCanHaveModuleDir.
Summary: Moved some calls to setCanHaveModuleDir to the MipsTargetStreamer base class and removed the resulting empty functions from the MipsTargetELFStreamer class.
Also fixed a missing call to setCanHaveModuleDir in MipsTargetELFStreamer::emitDirectiveSetMicroMips.
Reviewers: dsanders
Reviewed By: dsanders
Subscribers: tomatabacu
Differential Revision: http://reviews.llvm.org/D4781
llvm-svn: 215542
show more ...
|
#
d97a634f |
| 13-Aug-2014 |
Daniel Sanders <daniel.sanders@imgtec.com> |
Re-commit: [mips] Implement .ent, .end, .frame, .mask and .fmask.
Patch by Matheus Almeida and Toma Tabacu
The lld test failure on the previous attempt to commit was caused by the addition of the .
Re-commit: [mips] Implement .ent, .end, .frame, .mask and .fmask.
Patch by Matheus Almeida and Toma Tabacu
The lld test failure on the previous attempt to commit was caused by the addition of the .pdr section causing the offsets it was checking to change. This has been fixed by removing the .ent/.end directives from that test since they weren't really needed.
llvm-svn: 215535
show more ...
|
#
b9bc75b6 |
| 11-Aug-2014 |
Daniel Sanders <daniel.sanders@imgtec.com> |
Revert r215359 - [mips] Implement .ent, .end, .frame, .mask and .fmask assembler directives
It seems to cause an lld test (elf/Mips/hilo16-3.test) to fail. Reverted while we investigate.
llvm-svn:
Revert r215359 - [mips] Implement .ent, .end, .frame, .mask and .fmask assembler directives
It seems to cause an lld test (elf/Mips/hilo16-3.test) to fail. Reverted while we investigate.
llvm-svn: 215361
show more ...
|
#
21cf0268 |
| 11-Aug-2014 |
Daniel Sanders <daniel.sanders@imgtec.com> |
[mips] Implement .ent, .end, .frame, .mask and .fmask assembler directives
Patch by Matheus Almeida and Toma Tabacu
Differential Revision: http://reviews.llvm.org/D4179
llvm-svn: 215359
|
#
44934431 |
| 07-Aug-2014 |
Daniel Sanders <daniel.sanders@imgtec.com> |
[mips] Add assembler support for .set msa/nomsa directive.
Summary: These directives are used to toggle whether the assembler accepts MSA-specific instructions or not.
Patch by Matheus Almeida and
[mips] Add assembler support for .set msa/nomsa directive.
Summary: These directives are used to toggle whether the assembler accepts MSA-specific instructions or not.
Patch by Matheus Almeida and Toma Tabacu.
Reviewers: dsanders
Reviewed By: dsanders
Differential Revision: http://reviews.llvm.org/D4783
llvm-svn: 215099
show more ...
|
Revision tags: llvmorg-3.5.0-rc2 |
|
#
f0df221d |
| 04-Aug-2014 |
Daniel Sanders <daniel.sanders@imgtec.com> |
[mips] Add assembler support for '.set mipsX'.
Summary: This patch also fixes an issue with the way the Mips assembler enables/disables architecture features. Before this patch, the assembler never
[mips] Add assembler support for '.set mipsX'.
Summary: This patch also fixes an issue with the way the Mips assembler enables/disables architecture features. Before this patch, the assembler never disabled feature bits. For example, .set mips64 .set mips32r2
would result in the 'OR' of mips64 with mips32r2 feature bits which isn't right. Unfortunately this isn't trivial to fix because there's not an easy way to clear feature bits as the algorithm in MCSubtargetInfo (ToggleFeature) only clears the bits that imply the feature being cleared and not the implied bits by the feature (there's a better explanation to the code I added).
Patch by Matheus Almeida and updated by Toma Tabacu
Reviewers: vmedic, matheusalmeida, dsanders
Reviewed By: dsanders
Subscribers: tomatabacu, llvm-commits
Differential Revision: http://reviews.llvm.org/D4123
llvm-svn: 214709
show more ...
|
Revision tags: llvmorg-3.5.0-rc1 |
|
#
7e527423 |
| 10-Jul-2014 |
Daniel Sanders <daniel.sanders@imgtec.com> |
[mips] Add support for -modd-spreg/-mno-odd-spreg
Summary: When -mno-odd-spreg is in effect, 32-bit floating point values are not permitted in odd FPU registers. The option also prohibits 32-bit and
[mips] Add support for -modd-spreg/-mno-odd-spreg
Summary: When -mno-odd-spreg is in effect, 32-bit floating point values are not permitted in odd FPU registers. The option also prohibits 32-bit and 64-bit floating point comparison results from being written to odd registers.
This option has three purposes: * It allows support for certain MIPS implementations such as loongson-3a that do not allow the use of odd registers for single precision arithmetic. * When using -mfpxx, -mno-odd-spreg is the default and this allows us to statically check that code is compliant with the O32 FPXX ABI since mtc1/mfc1 instructions to/from odd registers are guaranteed not to appear for any reason. Once this has been established, the user can then re-enable -modd-spreg to regain the use of all 32 single-precision registers. * When using -mfp64 and -mno-odd-spreg together, an O32 extension named O32 FP64A is used as the ABI. This is intended to provide almost all functionality of an FR=1 processor but can also be executed on a FR=0 core with the assistance of a hardware compatibility mode which emulates FR=0 behaviour on an FR=1 processor.
* Added '.module oddspreg' and '.module nooddspreg' each of which update the .MIPS.abiflags section appropriately * Moved setFpABI() call inside emitDirectiveModuleFP() so that the caller doesn't have to remember to do it. * MipsABIFlags now calculates the flags1 and flags2 member on demand rather than trying to maintain them in the same format they will be emitted in.
There is one portion of the -mfp64 and -mno-odd-spreg combination that is not implemented yet. Moves to/from odd-numbered double-precision registers must not use mtc1. I will fix this in a follow-up.
Differential Revision: http://reviews.llvm.org/D4383
llvm-svn: 212717
show more ...
|
#
843c4cb4 |
| 08-Jul-2014 |
NAKAMURA Takumi <geek4civic@gmail.com> |
MipsTargetStreamer.h: Avoid "using" to appease msc17.
llvm-svn: 212577
|
#
324ad956 |
| 08-Jul-2014 |
Daniel Sanders <daniel.sanders@imgtec.com> |
[mips] Fixed struct/class mismatch introduced in r212522.
Clang emits a warning about this.
llvm-svn: 212528
|
#
c7dbc630 |
| 08-Jul-2014 |
Daniel Sanders <daniel.sanders@imgtec.com> |
[mips] Improve encapsulation of the .MIPS.abiflags implementation and limit scope of related enums
Summary: Follow on to r212519 to improve the encapsulation and limit the scope of the enums.
Also
[mips] Improve encapsulation of the .MIPS.abiflags implementation and limit scope of related enums
Summary: Follow on to r212519 to improve the encapsulation and limit the scope of the enums.
Also merged two very similar parser functions, fixed a bug where ASE's were not being reported, and marked CPR1's as being 128-bit when MSA is enabled.
Differential Revision: http://reviews.llvm.org/D4384
llvm-svn: 212522
show more ...
|
#
fb8a2a95 |
| 08-Jul-2014 |
Vladimir Medic <Vladimir.Medic@imgtec.com> |
Mips.abiflags is a new implicitly generated section that will be present on all new modules. The section contains a versioned data structure which represents essentially information to allow a progr
Mips.abiflags is a new implicitly generated section that will be present on all new modules. The section contains a versioned data structure which represents essentially information to allow a program loader to determine the requirements of the application. This patch implements mips.abiflags section and provides test cases for it.
llvm-svn: 212519
show more ...
|
#
60890b89 |
| 23-Jun-2014 |
Rafael Espindola <rafael.espindola@gmail.com> |
[Mips] Add a target streamer when creating a null streamer.
Should fix DebugInfo/global.ll on the mips bot.
llvm-svn: 211527
|
Revision tags: llvmorg-3.4.2, llvmorg-3.4.2-rc1 |
|
#
d92a3fa2 |
| 01-May-2014 |
Matheus Almeida <matheus.almeida@imgtec.com> |
[mips] Move expansion of .cpsetup to target streamer.
Summary: There are two functional changes: 1) The directive is not expanded for the ASM->ASM code path. 2) If PIC is not set, there's no expansi
[mips] Move expansion of .cpsetup to target streamer.
Summary: There are two functional changes: 1) The directive is not expanded for the ASM->ASM code path. 2) If PIC is not set, there's no expansion for the ASM->OBJ code path (same behaviour as GAS).
Reviewers: dsanders
Reviewed By: dsanders
Differential Revision: http://reviews.llvm.org/D3482
llvm-svn: 207741
show more ...
|
#
525bc4f7 |
| 30-Apr-2014 |
Matheus Almeida <matheus.almeida@imgtec.com> |
[mips] Add support for .cpload.
Summary: This directive is used for setting up $gp in the beginning of a function. It expands to three instructions if PIC is enabled: lui $gp, %hi(_gp_disp) addui
[mips] Add support for .cpload.
Summary: This directive is used for setting up $gp in the beginning of a function. It expands to three instructions if PIC is enabled: lui $gp, %hi(_gp_disp) addui $gp, $gp, %lo(_gp_disp) addu $gp, $gp, $reg
_gp_disp is a special symbol that the linker sets to the distance between the lui instruction and the context pointer (_gp).
Reviewers: dsanders
Reviewed By: dsanders
Differential Revision: http://reviews.llvm.org/D3480
llvm-svn: 207637
show more ...
|