- Aug 07, 2012
-
-
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
-
- Jul 13, 2012
-
-
Jakob Stoklund Olesen authored
Call instructions are no longer required to be variadic, and variable_ops should only be used for instructions that encode a variable number of arguments, like the ARM stm/ldm instructions. llvm-svn: 160189
-
Jack Carter authored
is used in cases where global symbols are directly represented in the GOT and we use an offset into the global offset table. This patch adds direct object support for R_MIPS_GOT_DISP. llvm-svn: 160183
-
- Jul 12, 2012
-
-
Jack Carter authored
When WriteFragmentData() case FT_align called Asm.getBackend().writeNopData() is called, nothing is done since Mips implementation of writeNopData just returned "true". For some reason this has not caused problems in 32 bit mode, but in 64 bit mode it caused an assert when processing multiple function units. The test case included will assert without this patch. It runs twice with different flags to prevent false positives due to changes in code generation over time. llvm-svn: 160084
-
- Jul 11, 2012
-
-
Jack Carter authored
Even though variable in question could not be initialized before use, the code was such that the compiler had no way of knowing that. llvm-svn: 160081
-
Akira Hatanaka authored
order of binary encoding. Patch by Vladimir Medic. llvm-svn: 160073
-
Akira Hatanaka authored
llvm-svn: 160064
-
Akira Hatanaka authored
Patch by Sasa Stankovic. llvm-svn: 160031
-
Jack Carter authored
Low order register of a double word register operand. Operands are defined by the name of the variable they are marked with in the inline assembler code. This is a way to specify that the operand just refers to the low order register for that variable. It is the opposite of modifier 'D' which specifies the high order register. Example: main() { long long ll_input = 0x1111222233334444LL; long long ll_val = 3; int i_result = 0; __asm__ __volatile__( "or %0, %L1, %2" : "=r" (i_result) : "r" (ll_input), "r" (ll_val)); } Which results in: lui $2, %hi(_gp_disp) addiu $2, $2, %lo(_gp_disp) addiu $sp, $sp, -8 addu $2, $2, $25 sw $2, 0($sp) lui $2, 13107 ori $3, $2, 17476 <-- Low 32 bits of ll_input lui $2, 4369 ori $4, $2, 8738 <-- High 32 bits of ll_input addiu $5, $zero, 3 <-- Low 32 bits of ll_val addiu $2, $zero, 0 <-- High 32 bits of ll_val #APP or $3, $4, $5 <-- or i_result, high 32 ll_input, low 32 of ll_val #NO_APP addiu $sp, $sp, 8 jr $ra If not direction is done for the long long for 32 bit variables results in using the low 32 bits as ll_val shows. There is an existing bug if 'L' or 'D' is used for the destination register for 32 bit long longs in that the target value will be updated incorrectly for the non-specified part unless explicitly set within the inline asm code. llvm-svn: 160028
-