- 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
-
-
Vincent Lejeune authored
llvm-svn: 194153
-
Amara Emerson authored
We can change this back when NEON support is complete and ready to become enabled by default. llvm-svn: 194152
-
Richard Sandiford authored
I don't have a standalone testcase for this, but it should allow r193676 to be reapplied. llvm-svn: 194148
-
Vladimir Medic authored
Implement gpword directive for mips, test case added. Stype changes using clang-format are also included. llvm-svn: 194145
-
Peter Zotov authored
llvm-svn: 194144
-
Peter Zotov authored
Original patch by Chris Wailes llvm-svn: 194143
-
Peter Zotov authored
Presence of using namespace llvm depended on several #ifdef's, and this broke the build on mswin32. llvm-svn: 194142
-
Peter Zotov authored
Original patch by Chris Wailes llvm-svn: 194139
-
Peter Zotov authored
Original patch by Chris Wailes llvm-svn: 194137
-
Peter Zotov authored
Original patch by Chris Wailes llvm-svn: 194135
-
Reed Kotler authored
llvm-svn: 194126
-
Jiangning Liu authored
llvm-svn: 194123
-
Jiangning Liu authored
llvm-svn: 194118
-
Andrew Trick authored
Patch by Michele Scandale! Rewrite of the functions used to compute the backedge taken count of a loop on LT and GT comparisons. I decided to split the handling of LT and GT cases becasue the trick "a > b == -a < -b" in some cases prevents the trip count computation due to the multiplication by -1 on the two operands of the comparison. This issue comes from the conservative computation of value range of SCEVs: taking the negative SCEV of an expression that have a small positive range (e.g. [0,31]), we would have a SCEV with a fullset as value range. Indeed, in the new rewritten function I tried to better handle the maximum backedge taken count computation when MAX/MIN expression are used to handle the cases where no entry guard is found. Some test have been modified in order to check the new value correctly (I manually check them and reasoning on possible overflow the new values seem correct). I finally added a new test case related to the multiplication by -1 issue on GT comparisons. llvm-svn: 194116
-
Reed Kotler authored
from MipsConstantIslands. llvm-svn: 194108
-
- Nov 05, 2013
-
-
Andrew Trick authored
MorphNodeTo is not safe to call during DAG building. It eagerly deletes dependent DAG nodes which invalidates the NodeMap. We could expose a safe interface for morphing nodes, but I don't think it's worth it. Just create a new MachineNode and replaceAllUsesWith. My understaning of the SD design has been that we want to support early target opcode selection. That isn't very well supported, but generally works. It seems reasonable to rely on this feature even if it isn't widely used. llvm-svn: 194102
-
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
-
Tim Northover authored
Cortex-M0 supports these 32-bit instructions despite being Thumb1 only (mostly). We knew about that but not that the aliases without the default "sy" operand were also permitted. llvm-svn: 194094
-
Rafael Espindola authored
They just propagate out the bitcode reader error, so we don't need a new enum. llvm-svn: 194091
-
Jiangning Liu authored
llvm-svn: 194085
-
Rafael Espindola authored
llvm-svn: 194084
-
Michael Gottesman authored
[objc-arc] Convert the one directional retain/release relation assert to a conditional check + fail. Due to the previously added overflow checks, we can have a retain/release relation that is one directional. This occurs specifically when we run into an additive overflow causing us to drop state in only one direction. If that occurs, we should bail and not optimize that retain/release instead of asserting. Apologies for the size of the testcase. It is necessary to cause the additive cfg overflow to trigger. rdar://15377890 llvm-svn: 194083
-
Benjamin Kramer authored
llvm-svn: 194077
-
Reed Kotler authored
command regarding the porting from the ARM version (was an old comment). llvm-svn: 194066
-
David Majnemer authored
llvm-svn: 194062
-
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
-
Craig Topper authored
llvm-svn: 194048
-
Hao Liu authored
Implement AArch64 post-index vector load/store multiple N-element structure class SIMD(lselem-post). Including following 14 instructions: 4 ld1 insts: post-index load multiple 1-element structure to sequential 1/2/3/4 registers. ld2/ld3/ld4: post-index load multiple N-element structure to sequential N registers (N=2,3,4). 4 st1 insts: post-index store multiple 1-element structure from sequential 1/2/3/4 registers. st2/st3/st4: post-index store multiple N-element structure from sequential N registers (N = 2,3,4). llvm-svn: 194043
-
Kevin Qin authored
llvm-svn: 194041
-
Yuchen Wu authored
This reverts commit d8acf0078cf363252727acff00f85ae8074f95b3. llvm-svn: 194040
-
Yuchen Wu authored
This will allow for much easier testing when the input files are in a different folder from the test script. llvm-svn: 194034
-
Yuchen Wu authored
This patch enables llvm-cov to correctly output the run count stored in the GCDA file. GCOVProfiling currently does not generate this information, so the GCDA run data had to be hacked on from a GCDA file generated by gcc. This is corrected by a subsequent patch. With the run and program data included, both llvm-cov and gcov produced the same output. llvm-svn: 194033
-
Hal Finkel authored
As with the other loop unrolling parameters (the unrolling threshold, partial unrolling, etc.) runtime unrolling can now also be controlled via the constructor. This will be necessary for moving non-trivial unrolling late in the pass manager (after loop vectorization). No functionality change intended. llvm-svn: 194027
-
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
-
Tim Northover authored
ResolveFrameIndex had what appeared to be a very nasty hack for when the frame-index referred to a callee-saved register. In this case it "adjusted" the offset so that the address was correct if (and only if) the MachineInstr immediately followed the respective push. This "worked" for all forms of GPR & DPR but was only ever used to set the frame pointer itself, and once this was put in a more sensible location the entire state-tracking machinery it relied on became redundant. So I stripped it. The only wrinkle is that "add r7, sp, #0" might theoretically be slower (need an actual ALU slot) compared to "mov r7, sp" so I added a micro-optimisation that also makes emitARMRegUpdate and emitT2RegUpdate also work when NumBytes == 0. No test changes since there shouldn't be any functionality change. llvm-svn: 194025
-
Tim Northover authored
If an inline assembly operand has multiple constraints (e.g. "Ir" for immediate or register) and an operand modifier (E.g. "w" for "print register as wN") then we need to decide behaviour when the modifier doesn't apply to the constraint. Previousely produced some combination of an assertion failure and a fatal error. GCC's behaviour appears to be to ignore the modifier and print the operand in the default way. This patch should implement that. llvm-svn: 194024
-
- 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
-