- Nov 07, 2013
-
-
Reed Kotler authored
of being converted and this path is not relevant to anything at this time so I have just disabled it for a few days while I'm at the LLVM conference and don't have time to complete it or properly fix it. llvm-svn: 194201
-
- Nov 06, 2013
-
-
Vladimir Medic authored
Implement gpword directive for mips, test case added. Stype changes using clang-format are also included. llvm-svn: 194145
-
Reed Kotler authored
llvm-svn: 194126
-
Reed Kotler authored
from MipsConstantIslands. llvm-svn: 194108
-
- Nov 05, 2013
-
-
Reed Kotler authored
we don't have such an operand. Suprisingly enough, this is never actually accounted for in the ARM version when determining offset ranges. In both places there is the comment: - // FIXME: Make use full range of soimm values. (soimm = shift operand immediate). llvm-svn: 194101
-
Reed Kotler authored
alignment will be handled differently than in ARM constant islands. llvm-svn: 194096
-
Reed Kotler authored
command regarding the porting from the ARM version (was an old comment). llvm-svn: 194066
-
Reed Kotler authored
Submit the basic port of the rest of ARM constant islands code to Mips. Two test cases are added which reflect the next level of functionality: constants getting moved to water areas that are out of range from the initial placement at the end of the function and basic blocks being split to create water when none exists that can be used. There is a bunch of this code that is not complete and has been marked with IN_PROGRESS. I will finish cleaning this all up during the next week or two and submit the rest of the test cases. I have elminated some code for dealing with inline assembly because to me it unecessarily complicates things and some of the newer features of llvm like function attributies and builtin assembler give me better tools to solve the alignment issues created there. Also, for Mips16 I even have the option of not doing constant islands in the present of inline assembler if I chose. When everything has been completed I will summarize the port and notify people that are knowledgable regarding the ARM Constant Islands code so they can review it in it's entirety if they wish. llvm-svn: 194053
-
NAKAMURA Takumi authored
Revert r194019 to r194021, "Submit the basic port of the rest of ARM constant islands code to Mips." It broke -Asserts build. llvm-svn: 194026
-
- Nov 04, 2013
-
-
Reed Kotler authored
when compiling with DEBUG. llvm-svn: 194021
-
Reed Kotler authored
Two test cases are added which reflect the next level of functionality: constants getting moved to water areas that are out of range from the initial placement at the end of the function and basic blocks being split to create water when none exists that can be used. There is a bunch of this code that is not complete and has been marked with IN_PROGRESS. I will finish cleaning this all up during the next week or two and submit the rest of the test cases. I have elminated some code for dealing with inline assembly because to me it unecessarily complicates things and some of the newer features of llvm like function attributies and builtin assembler give me better tools to solve the alignment issues created there. Also, for Mips16 I even have the option of not doing constant islands in the present of inline assembler if I chose. llvm-svn: 194019
-
Zoran Jovanovic authored
llvm-svn: 193992
-
- Oct 30, 2013
-
-
Hans Wennborg authored
Fixing this Windows build error: ..\lib\Target\Mips\MipsSEISelLowering.cpp(997) : error C2027: use of undefined type 'llvm::raw_ostream' llvm-svn: 193696
-
Daniel Sanders authored
llvm-svn: 193695
-
Daniel Sanders authored
[mips][msa] Added support for matching bmnz, bmnzi, bmz, and bmzi from normal IR (i.e. not intrinsics) Also corrected the definition of the intrinsics for these instructions (the result register is also the first operand), and added intrinsics for bsel and bseli to clang (they already existed in the backend). These four operations are mostly equivalent to bsel, and bseli (the difference is which operand is tied to the result). As a result some of the tests changed as described below. bitwise.ll: - bsel.v test adapted so that the mask is unknown at compile-time. This stops it emitting bmnzi.b instead of the intended bsel.v. - The bseli.b test now tests the right thing. Namely the case when one of the values is an uimm8, rather than when the condition is a uimm8 (which is covered by bmnzi.b) compare.ll: - bsel.v tests now (correctly) emits bmnz.v instead of bsel.v because this is the same operation (see MSA.txt). i8.ll - CHECK-DAG-ized test. - bmzi.b test now (correctly) emits equivalent bmnzi.b with swapped operands because this is the same operation (see MSA.txt). - bseli.b still emits bseli.b though because the immediate makes it distinguishable from bmnzi.b. vec.ll: - CHECK-DAG-ized test. - bmz.v tests now (correctly) emits bmnz.v with swapped operands (see MSA.txt). - bsel.v tests now (correctly) emits bmnz.v with swapped operands (see MSA.txt). llvm-svn: 193693
-
Daniel Sanders authored
This required correcting the definition of the bins[lr]i intrinsics because the result is also the first operand. It also required removing the (arbitrary) check for 32-bit immediates in MipsSEDAGToDAGISel::selectVSplat(). Currently using binsli.d with 2 bits set in the mask doesn't select binsli.d because the constant is legalized into a ConstantPool. Similar things can happen with binsri.d with more than 10 bits set in the mask. The resulting code when this happens is correct but not optimal. llvm-svn: 193687
-
Daniel Sanders authored
(or (and $a, $mask), (and $b, $inverse_mask)) => (vselect $mask, $a, $b). where $mask is a constant splat. This allows bitwise operations to make use of bsel. It's also a stepping stone towards matching bins[lr], and bins[lr]i from normal IR. Two sets of similar tests have been added in this commit. The bsel_* functions test the case where binsri cannot be used. The binsr_*_i functions will start to use the binsri instruction in the next commit. llvm-svn: 193682
-
Daniel Sanders authored
No test since -debug output is intended for developers and not end-users. llvm-svn: 193681
-
Daniel Sanders authored
splat.d is implemented but this subtest is currently disabled. This is because it is difficult to match the appropriate IR on MIPS32. There is a patch under review that should help with this so I hope to enable the subtest soon. llvm-svn: 193680
-
Akira Hatanaka authored
llvm-svn: 193673
-
- Oct 29, 2013
-
-
Akira Hatanaka authored
llvm-svn: 193641
-
Rafael Espindola authored
llvm-svn: 193627
-
Zoran Jovanovic authored
llvm-svn: 193623
-
Rafael Espindola authored
llvm-svn: 193618
-
- Oct 28, 2013
-
-
Akira Hatanaka authored
No functionality change. llvm-svn: 193540
-
NAKAMURA Takumi authored
llvm-svn: 193512
-
NAKAMURA Takumi authored
llvm-svn: 193511
-
- Oct 27, 2013
-
-
Reed Kotler authored
Before I just ported the shell of the pass. I've tried to keep everything nearly identical to the ARM version. I think it will be very easy to eventually merge these two and create a new more general pass that other targets can use. I have some improvements I would like to make to allow pools to be shared across functions and some other things. When I'm all done we can think about making a more general pass. More to be ported but the basic mechanism works now almost as good as gcc mips16. llvm-svn: 193509
-
- Oct 23, 2013
-
-
Zoran Jovanovic authored
llvm-svn: 193247
-
Matheus Almeida authored
llvm-svn: 193240
-
Daniel Sanders authored
llvm-svn: 193239
-
- Oct 22, 2013
-
-
Matheus Almeida authored
These branches have a 16-bit offset (R_MIPS_PC16). List of conditional branch instructions: bnz.{b,h,w,d} bnz.v bz.{b,h,w,d} bz.v llvm-svn: 193157
-
- Oct 21, 2013
-
-
Matheus Almeida authored
llvm-svn: 193082
-
Matheus Almeida authored
llvm-svn: 193081
-
Matheus Almeida authored
llvm-svn: 193080
-
Matheus Almeida authored
These instructions are logically related as they allow read/write of MSA control registers. Currently MSA control registers are emitted by number but hopefully that will change as soon as GAS starts accepting them by name as that would make the assembly easier to read. llvm-svn: 193078
-
Matheus Almeida authored
llvm-svn: 193077
-
Matheus Almeida authored
The second parameter of the SLD intrinsic is the number of columns (GPR) to slide left the source array. llvm-svn: 193076
-
- Oct 17, 2013
-
-
Daniel Sanders authored
llvm-svn: 192895
-
Daniel Sanders authored
These were present in a previous version of the MSA spec but are not present in the published version. There is no hardware that uses these instructions. llvm-svn: 192888
-