- Apr 25, 2013
-
-
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
-
- Apr 13, 2013
-
-
Akira Hatanaka authored
lowerINTRINSIC_WO_CHAIN into MipsSETargetLowering. No functionality changes. llvm-svn: 179444
-
Akira Hatanaka authored
llvm-svn: 179434
-
Akira Hatanaka authored
llvm-svn: 179433
-
Akira Hatanaka authored
llvm-svn: 179422
-
Akira Hatanaka authored
instructions. llvm-svn: 179421
-
Akira Hatanaka authored
llvm-svn: 179420
-
- Apr 11, 2013
-
-
Akira Hatanaka authored
multiply instructions in MipsSEDAGToDAGISel. This patch was supposed to be part of r178403. llvm-svn: 179314
-
Akira Hatanaka authored
- Rename function. - Pass iterator by value. - Remove header include. No functionality changes. llvm-svn: 179312
-
- Apr 10, 2013
-
-
Reed Kotler authored
Mips32 code as Mips16 unless it can't be compiled as Mips 16. For now this would happen as long as floating point instructions are not needed. Probably it would also make sense to compile as mips32 if atomic operations are needed too. There may be other cases too. A module pass prescans the IR and adds the mips16 or nomips16 attribute to functions depending on the functions needs. Mips 16 mode can result in a 40% code compression by utililizing 16 bit encoding of many instructions. The hope is for this to replace the traditional gcc way of dealing with Mips16 code using floating point which involves essentially using soft float but with a library implemented using mips32 floating point. This gcc method also requires creating stubs so that Mips32 code can interact with these Mips 16 functions that have floating point needs. My conjecture is that in reality this traditional gcc method would never win over this new method. I will be implementing the traditional gcc method also. Some of it is already done but I needed to do the stubs to finish the work and those required this mips16/32 mixed mode capability. I have more ideas for to make this new method much better and I think the old method will just live in llvm for anyone that needs the backward compatibility but I don't for what reason that would be needed. llvm-svn: 179185
-
Jack Carter authored
Modifier 'D' is to use the second word of a double integer. We had previously implemented the pure register varient of the modifier and this patch implements the memory reference. #include "stdio.h" int b[8] = {0,1,2,3,4,5,6,7}; void main() { int i; // The first word. Notice, no 'D' {asm ( "lw %0,%1;" : "=r" (i) : "m" (*(b+4)) );} printf("%d\n",i); // The second word {asm ( "lw %0,%D1;" : "=r" (i) : "m" (*(b+4)) );} printf("%d\n",i); } llvm-svn: 179135
-
- Apr 09, 2013
-
-
Reed Kotler authored
and mips16 on a per function basis. Because this patch is somewhat involved I have provide an overview of the key pieces of it. The patch is written so as to not change the behavior of the non mixed mode. We have tested this a lot but it is something new to switch subtargets so we don't want any chance of regression in the mainline compiler until we have more confidence in this. Mips32/64 are very different from Mip16 as is the case of ARM vs Thumb1. For that reason there are derived versions of the register info, frame info, instruction info and instruction selection classes. Now we register three separate passes for instruction selection. One which is used to switch subtargets (MipsModuleISelDAGToDAG.cpp) and then one for each of the current subtargets (Mips16ISelDAGToDAG.cpp and MipsSEISelDAGToDAG.cpp). When the ModuleISel pass runs, it determines if there is a need to switch subtargets and if so, the owning pointers in MipsTargetMachine are appropriately changed. When 16Isel or SEIsel is run, they will return immediately without doing any work if the current subtarget mode does not apply to them. In addition, MipsAsmPrinter needs to be reset on a function basis. The pass BasicTargetTransformInfo is substituted with a null pass since the pass is immutable and really needs to be a function pass for it to be used with changing subtargets. This will be fixed in a follow on patch. llvm-svn: 179118
-
- Apr 03, 2013
-
-
Akira Hatanaka authored
This patch initializes t9 to the handler address, but only if the relocation model is pic. This handles the case where handler to which eh.return jumps points to the start of the function. Patch by Sasa Stankovic. llvm-svn: 178588
-
Akira Hatanaka authored
This patch fixes the following two tests which have been failing on llvm-mips-linux builder since r178403: LLVM :: Analysis/Profiling/load-branch-weights-ifs.ll LLVM :: Analysis/Profiling/load-branch-weights-loops.ll llvm-svn: 178584
-
- Mar 30, 2013
-
-
Akira Hatanaka authored
llvm-svn: 178408
-
Akira Hatanaka authored
llvm-svn: 178407
-
Akira Hatanaka authored
Check that instruction selection can select multiply-add/sub DSP instructions from a pattern that doesn't have intrinsics. llvm-svn: 178406
-
Akira Hatanaka authored
llvm-svn: 178405
-
Akira Hatanaka authored
derived class MipsSETargetLowering. We shouldn't be generating madd/msub nodes if target is Mips16, since Mips16 doesn't have support for multipy-add/sub instructions. llvm-svn: 178404
-
Akira Hatanaka authored
The new instructions have explicit register output operands and use table-gen patterns instead of C++ code to do instruction selection. Mips16's instructions are unaffected by this change. llvm-svn: 178403
-
Akira Hatanaka authored
llvm-svn: 178396
-
Akira Hatanaka authored
llvm-svn: 178395
-
Akira Hatanaka authored
instructions. llvm-svn: 178394
-
Akira Hatanaka authored
called in several places in ScheduleDAGRRList.cpp. llvm-svn: 178393
-
Akira Hatanaka authored
to handle accumulator registers. llvm-svn: 178392
-
Akira Hatanaka authored
callee-saved scan. The code makes use of register's scavenger's capability to spill multiple registers. llvm-svn: 178391
-