- May 16, 2013
-
-
Akira Hatanaka authored
llvm-svn: 182035
-
Reed Kotler authored
This creates stubs that help Mips32 functions call Mips16 functions which have floating point parameters that are normally passed in floating point registers. llvm-svn: 181972
-
- May 14, 2013
-
-
Reed Kotler authored
llvm-svn: 181759
-
Reed Kotler authored
"static". llvm-svn: 181754
-
Reed Kotler authored
Mips16/32 floating point interoperability. When Mips16 code calls external functions that would normally have some of its parameters or return values passed in floating point registers, it needs (Mips32) helper functions to do this because while in Mips16 mode there is no ability to access the floating point registers. In Pic mode, this is done with a set of predefined functions in libc. This case is already handled in llvm for Mips16. In static relocation mode, for efficiency reasons, the compiler generates stubs that the linker will use if it turns out that the external function is a Mips32 function. (If it's Mips16, then it does not need the helper stubs). These stubs are identically named and the linker knows about these tricks and will not create multiple copies and will delete them if they are not needed. llvm-svn: 181753
-
- May 13, 2013
-
-
Jack Carter authored
This patch adds alias for addiu instruction which enables following syntax: addiu $rs,imm The macro is translated as: addiu $rs,$rs,imm Contributer: Vladimir Medic llvm-svn: 181729
-
Akira Hatanaka authored
This option is used when the user wants to avoid emitting double precision FP loads and stores. Double precision FP loads and stores are expanded to single precision instructions after register allocation. llvm-svn: 181718
-
Akira Hatanaka authored
operands as the prototype instruction but with a different opcode. llvm-svn: 181714
-
Akira Hatanaka authored
llvm-svn: 181713
-
Rafael Espindola authored
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
-
- May 11, 2013
-
-
Rafael Espindola authored
To add a frame now there is a dedicated addFrameMove which also takes care of constructing the move itself. llvm-svn: 181657
-
Reed Kotler authored
mips16/mips32 floating point interoperability. This patch fixes returns from mips16 functions so that if the function was in fact called by a mips32 hard float routine, then values that would have been returned in floating point registers are so returned. Mips16 mode has no floating point instructions so there is no way to load values into floating point registers. This is needed when returning float, double, single complex, double complex in the Mips ABI. Helper functions in libc for mips16 are available to do this. For efficiency purposes, these helper functions have a different calling convention from normal Mips calls. Registers v0,v1,a0,a1 are used to pass parameters instead of a0,a1,a2,a3. This is because v0,v1,a0,a1 are the natural registers used to return floating point values in soft float. These values can then be moved to the appropriate floating point registers with no extra cost. The only register that is modified is ra in this call. The helper functions make sure that the return values are in the floating point registers that they would be in if soft float was not in effect (which it is for mips16, though the soft float is implemented using a mips32 library that uses hard float). llvm-svn: 181641
-
- May 10, 2013
-
-
Rafael Espindola authored
llvm-svn: 181618
-
- May 08, 2013
-
-
Akira Hatanaka authored
llvm-svn: 181459
-
- May 04, 2013
-
-
Reed Kotler authored
llvm-svn: 181072
-
- May 03, 2013
-
-
Akira Hatanaka authored
its fields. This removes false dependencies between DSP instructions which access different fields of the the control register. Implicit register operands are added to instructions RDDSP and WRDSP after instruction selection, depending on the value of the mask operand. llvm-svn: 181041
-
Akira Hatanaka authored
register. - Define pseudo instructions which store or load ccond field of the DSP control register. - Emit the pseudos in MipsSEInstrInfo::storeRegToStack and loadRegFromStack. - Expand the pseudos before callee-scan save. - Emit instructions RDDSP or WRDSP to copy between ccond field and GPRs. llvm-svn: 180969
-
- May 02, 2013
-
-
Richard Sandiford authored
...aka a test commit. llvm-svn: 180936
-
Akira Hatanaka authored
No functionality changes. llvm-svn: 180897
-
- May 01, 2013
-
-
Akira Hatanaka authored
Expand copy instructions between two accumulator registers before callee-saved scan is done. Handle copies between integer GPR and hi/lo registers in MipsSEInstrInfo::copyPhysReg. Delete pseudo-copy instructions that are not needed. llvm-svn: 180827
-
Akira Hatanaka authored
instructions. llvm-svn: 180820
-
- Apr 30, 2013
-
-
Akira Hatanaka authored
No intended functionality changes. llvm-svn: 180807
-
Akira Hatanaka authored
llvm-svn: 180801
-
- Apr 26, 2013
-
-
Jack Carter authored
Mips have delayslots for certain instructions like jumps and branches. These are instructions that follow the branch or jump and are executed before the jump or branch is completed. Early Mips compilers could not cope with delayslots and left them up to the assembler. The assembler would fill the delayslots with the appropriate instruction, usually just a nop to allow correct runtime behavior. The default behavior for this is set with .set reorder. To tell the assembler that you don't want it to mess with the delayslot one used .set noreorder. For backwards compatibility we need to support .set reorder and have it be the default behavior in the assembler. Our support for it is to insert a NOP directly after an instruction with a delayslot when in .set reorder mode. Contributer: Vladimir Medic llvm-svn: 180584
-
- Apr 25, 2013
-
-
Akira Hatanaka authored
Patch by Zoran Jovanovic. llvm-svn: 180241
-
Akira Hatanaka authored
Patch by Zoran Jovanovic. llvm-svn: 180238
-
- Apr 23, 2013
-
-
Akira Hatanaka authored
No intended changes in functionality. llvm-svn: 180130
-
- Apr 22, 2013
-
-
Akira Hatanaka authored
llvm-svn: 180040
-
Akira Hatanaka authored
shifted by the same amount and the shift amount is smaller than the element size. llvm-svn: 180039
-
- Apr 20, 2013
-
-
Tim Northover authored
llvm-svn: 179939
-
Akira Hatanaka authored
llvm-svn: 179906
-
Michael Liao authored
llvm-svn: 179901
-
- Apr 19, 2013
-
-
Akira Hatanaka authored
This patch adds support for recoded (meaning assembly-language compatible to standard mips32) arithmetic 32-bit instructions. Patch by Zoran Jovanovic. llvm-svn: 179873
-
Akira Hatanaka authored
operand type to uimm16. Patch by Vladimir Medic. llvm-svn: 179872
-
- Apr 18, 2013
-
-
Akira Hatanaka authored
llvm-svn: 179741
-
Akira Hatanaka authored
llvm-svn: 179739
-
Jack Carter authored
This patch should not have any functional changes. llvm-svn: 179737
-
- Apr 17, 2013
-
-
Evgeniy Stepanov authored
Broken in r179657. llvm-svn: 179669
-
Jack Carter authored
This patch allows the Mips assembler to parse and emit nested expressions as instruction operands. It also extends the expansion of memory instructions when an offset is given as an expression. Contributer: Vladimir Medic llvm-svn: 179657
-
- Apr 16, 2013
-
-
Jack Carter authored
This patch allows the assembler to recognize $fcc0 as a valid register for conditional move instructions. Corresponding test cases have been added. Contributer: Vladimir Medic llvm-svn: 179567
-