- Aug 17, 2012
-
-
Akira Hatanaka authored
No new tests are added. All tests in ExecutionEngine/MCJIT that have been failing pass after this patch is applied (when "make check" is done on a mips board). Patch by Petar Jovanovic. llvm-svn: 162135
-
Akira Hatanaka authored
Patch by Vladimir Medic. llvm-svn: 162124
-
- Aug 16, 2012
-
-
Akira Hatanaka authored
floats. llvm-svn: 162008
-
- Aug 14, 2012
-
-
Jim Grosbach authored
Refactor the TableGen'erated fixed length disassemblmer to use a table-driven state machine rather than a massive set of nested switch() statements. As a result, the ARM Disassembler (ARMDisassembler.cpp) builds much more quickly and generates a smaller end result. For a Release+Asserts build on a 16GB 3.4GHz i7 iMac w/ SSD: Time to compile at -O2 (averaged w/ hot caches): Previous: 35.5s New: 8.9s TEXT size: Previous: 447,251 New: 297,661 Builds in 25% of the time previously required and generates code 66% of the size. Execution time of the disassembler is only slightly slower (7% disassembling 10 million ARM instructions, 19.6s vs 21.0s). The new implementation has not yet been tuned, however, so the performance should almost certainly be recoverable should it become a concern. llvm-svn: 161888
-
- Aug 10, 2012
-
-
Jakob Stoklund Olesen authored
llvm-svn: 161626
-
- Aug 09, 2012
-
-
Jack Carter authored
The fields in the td definition were switched. llvm-svn: 161607
-
- Aug 07, 2012
-
-
Jack Carter authored
initialize fields of the class that it used. The result was nonsense code. Before: 0000000000000000 <foo>: 0: 00441100 0x441100 4: 03e00008 jr ra 8: 00000000 nop After: 0000000000000000 <foo>: 0: 00041000 sll v0,a0,0x0 4: 03e00008 jr ra 8: 00000000 nop llvm-svn: 161377
-
Jack Carter authored
I hit this in a very large program (spirit.cpp), but have not figured out how to make a small make check test for it. llvm-svn: 161366
-
Jack Carter authored
were using a class defined for 32 bit instructions and thus the instruction was for addiu instead of daddiu. This was corrected by adding the instruction opcode as a field in the base class to be filled in by the defs. llvm-svn: 161359
-
- Aug 06, 2012
-
-
Jack Carter authored
These 2 relocations gain access to the highest and the second highest 16 bits of a 64 bit object. R_MIPS_HIGHER %higher(A+S) The %higher(x) function is [ (((long long) x + 0x80008000LL) >> 32) & 0xffff ]. R_MIPS_HIGHEST %highest(A+S) The %highest(x) function is [ (((long long) x + 0x800080008000LL) >> 48) & 0xffff ]. llvm-svn: 161348
-
- Aug 04, 2012
-
-
Akira Hatanaka authored
Change these to patterns. 2. Add another 16 instructions. Patch by Reed Kotler. llvm-svn: 161272
-
- Aug 02, 2012
-
-
Akira Hatanaka authored
of MipsTargetMachine.cpp. llvm-svn: 161191
-
Akira Hatanaka authored
test o32_cc_vararg.ll. llvm-svn: 161189
-
- Aug 01, 2012
-
-
Akira Hatanaka authored
No new test case is added. This patch makes test JITTest.FunctionIsRecompiledAndRelinked pass on mips platform. Patch by Petar Jovanovic. llvm-svn: 161098
-
Akira Hatanaka authored
llvm-svn: 161095
-
Akira Hatanaka authored
instructions that decrement and increment the stack pointer before and after a call when the function does not have a reserved call frame. llvm-svn: 161093
-
Akira Hatanaka authored
MipsSERegisterInfo. llvm-svn: 161092
-
Akira Hatanaka authored
MipsSEFrameLowering. Implement MipsSEFrameLowering::hasReservedCallFrame. Call frames will not be reserved if there is a call with a large call frame or there are variable sized objects on the stack. llvm-svn: 161090
-
Akira Hatanaka authored
llvm-svn: 161083
-
- Jul 31, 2012
-
-
Akira Hatanaka authored
and MipsSEInstrInfo (for mips32/64). llvm-svn: 161081
-
Akira Hatanaka authored
of them. llvm-svn: 161080
-
Akira Hatanaka authored
computing it in MipsFrameLowering::emitPrologue. llvm-svn: 161078
-
Akira Hatanaka authored
The frame object which points to the dynamically allocated area will not be needed after changes are made to cease reserving call frames. llvm-svn: 161076
-
Akira Hatanaka authored
or not it is in mips16 mode. Define MipsPseudo (mode-independant pseudo) and PseudoSE (mips32/64 pseudo) classes. llvm-svn: 161071
-
Akira Hatanaka authored
instruction class. SE stands for standard encoding. llvm-svn: 161069
-
Akira Hatanaka authored
arguments to the stack in MipsISelLowering::LowerCall, use stack pointer and integer offset operands rather than frame object operands. llvm-svn: 161068
-
Akira Hatanaka authored
single-precision load and store. Also avoid selecting LUXC1 and SUXC1 instructions during isel. It is incorrect to map unaligned floating point load/store nodes to these instructions. llvm-svn: 161063
-
- Jul 27, 2012
-
-
Akira Hatanaka authored
replace uses of function getMaxCallFrameSize defined in MipsFunctionInfo with the one MachineFrameInfo has. llvm-svn: 160841
-
- Jul 26, 2012
-
-
Akira Hatanaka authored
Patch by Reed Kotler. llvm-svn: 160774
-
- Jul 25, 2012
-
-
Akira Hatanaka authored
The long branch pass (fixed in r160601) no longer uses the global base register to compute addresses of branch destinations, so it is not necessary to reserve a slot on the stack. llvm-svn: 160703
-
- Jul 24, 2012
-
-
Akira Hatanaka authored
ExecutionEngine/test-fp.ll. Patch by Petar Jovanovic. llvm-svn: 160653
-
Akira Hatanaka authored
Hello world will compile and execute with this patch. Patch by Reed Kotler. llvm-svn: 160651
-
- Jul 23, 2012
-
-
Akira Hatanaka authored
llvm-svn: 160636
-
- Jul 21, 2012
-
-
Akira Hatanaka authored
This pass no longer requires that the global pointer value be saved to the stack or register since it uses bal instruction to compute branch distance. llvm-svn: 160601
-
Akira Hatanaka authored
llvm-svn: 160599
-
Akira Hatanaka authored
llvm-svn: 160598
-
Akira Hatanaka authored
Test case will be added later when long branch patch is checked in. llvm-svn: 160597
-
- Jul 18, 2012
-
-
Jack Carter authored
Print the high order register of a double word register operand. In 32 bit mode, a 64 bit double word integer will be represented by 2 32 bit registers. This modifier causes the high order register to be used in the asm expression. It is useful if you are using doubles in assembler and continue to control register to variable relationships. This patch also fixes a related bug in a previous patch: case 'D': // Second part of a double word register operand case 'L': // Low order register of a double word register operand case 'M': // High order register of a double word register operand I got 'D' and 'M' confused. The second part of a double word operand will only match 'M' for one of the endianesses. I had 'L' and 'D' be the opposite twins when 'L' and 'M' are. llvm-svn: 160429
-
Akira Hatanaka authored
Patch by Reed Kotler. llvm-svn: 160403
-
- Jul 16, 2012
-
-
Jack Carter authored
Mips shift instructions DSLL, DSRL and DSRA are transformed into DSLL32, DSRL32 and DSRA32 respectively if the shift amount is between 32 and 63 Here is a description of DSLL: Purpose: Doubleword Shift Left Logical Plus 32 To execute a left-shift of a doubleword by a fixed amount--32 to 63 bits Description: GPR[rd] <- GPR[rt] << (sa+32) The 64-bit doubleword contents of GPR rt are shifted left, inserting zeros into the emptied bits; the result is placed in GPR rd. The bit-shift amount in the range 0 to 31 is specified by sa. This patch implements the direct object output of these instructions. llvm-svn: 160277
-