- Oct 28, 2012
-
-
Rafael Espindola authored
All the credit goes to Jan Voung for noticing it was dead! llvm-svn: 166902
-
Reed Kotler authored
Previously mips16 was sharing the pattern addr which is used for mips32 and mips64. This had a number of problems: 1) Storing and loading byte and halfword quantities for mips16 has particular problems due to the primarily non mips16 nature of SP. When we must load/store byte/halfword stack objects in a function, we must create a mips16 alias register for SP. This functionality is tested in stchar.ll. 2) We need to have an FP register under certain conditions (such as dynamically sized alloca). We use mips16 register S0 for this purpose. In this case, we also use this register when accessing frame objects so this issue also affects the complex pattern addr16. This functionality is tested in alloca16.ll. The Mips16InstrInfo.td has been updated to use addr16 instead of addr. The complex pattern C++ function for addr has been copied to addr16 and updated to reflect the above issues. llvm-svn: 166897
-
- Oct 27, 2012
-
-
Quentin Colombet authored
llvm-svn: 166854
-
Reed Kotler authored
llvm-svn: 166852
-
Akira Hatanaka authored
arguments. This is rather conservative and should be fixed later to be more aggressive. llvm-svn: 166851
-
Akira Hatanaka authored
previous iteration. llvm-svn: 166850
-
Akira Hatanaka authored
LowerFormalArguments in MipsTargetLowering. No functionality change intended. llvm-svn: 166846
-
Akira Hatanaka authored
of vararg functions back to the stack. llvm-svn: 166844
-
Akira Hatanaka authored
This method emits nodes for passing byval arguments in registers and stack. This has the same functionality as existing functions PassByValArg64 and WriteByValArg which will be deleted later. llvm-svn: 166843
-
Akira Hatanaka authored
This method copies byval arguments passed in registers onto the stack and has the same functionality as existing functions CopyMips64ByValRegs and ReadByValArg which will be deleted later. llvm-svn: 166841
-
Akira Hatanaka authored
arguments and inquire about calling convention information. llvm-svn: 166840
-
Akira Hatanaka authored
llvm-svn: 166837
-
Nadav Rotem authored
Refactor the VectorTargetTransformInfo interface. Add getCostXXX calls for different families of opcodes, such as casts, arithmetic, cmp, etc. Port the LoopVectorizer to the new API. The LoopVectorizer now finds instructions which will remain uniform after vectorization. It uses this information when calculating the cost of these instructions. llvm-svn: 166836
-
Jakob Stoklund Olesen authored
Keep the integer_insertelement test case, the new coalescer can handle this kind of lane insertion without help from pseudo-instructions. llvm-svn: 166835
-
Kaelyn Uhrain authored
llvm-svn: 166834
-
Reed Kotler authored
llvm-svn: 166827
-
Chad Rosier authored
llvm-svn: 166819
-
- Oct 26, 2012
-
-
Jakob Stoklund Olesen authored
llvm-svn: 166818
-
Jakob Stoklund Olesen authored
It is just as easy to use MRI::isReserved() now. llvm-svn: 166817
-
Jakob Stoklund Olesen authored
Some instructions in ARM require 2 even-odd paired GPRs. This patch adds support for such register class. Patch by Weiming Zhao! llvm-svn: 166816
-
Jakob Stoklund Olesen authored
The new coalescer can already do all of this, so there is no need to duplicate the efforts. llvm-svn: 166813
-
Chad Rosier authored
Part of rdar://12576868 llvm-svn: 166792
-
Chad Rosier authored
Part of rdar://12576868 llvm-svn: 166790
-
Reed Kotler authored
llvm-svn: 166780
-
Chad Rosier authored
operator. llvm-svn: 166779
-
Renato Golin authored
Patch by Pasi Parviainen <pasi.parviainen@iki.fi> llvm-svn: 166773
-
Adhemerval Zanella authored
This patch fixes the rldcl/rldicl/rldicr instruction emission. The issue is the MDForm_1 instruction defines the PowerISA MB field from 'rldicl' with the name MBE, but RLDCL/RLDICL/RLDICR definition uses as 'MB'. It end up by generatint the 'rldicl' enconding at 'lib/Target/PowerPC/PPCGenMCCodeEmitter.inc' to use the fourth argument as the third. The patch changes it by adjusting to use the fourth argument as intended. Fixes PR14180. llvm-svn: 166770
-
Nicolas Geoffray authored
Fix CPP backend for method attributes by creating a block where a new AttrBuilder is defined for each attribute. llvm-svn: 166762
-
Reed Kotler authored
llvm-svn: 166755
-
Hal Finkel authored
As discussed on IRC, add VectorTargetTransform::getNumberOfParts to provide a stable interface to the vector legalization splitting factor. llvm-svn: 166751
-
Reed Kotler authored
llvm-svn: 166749
-
- Oct 25, 2012
-
-
Chad Rosier authored
llvm-svn: 166724
-
Reed Kotler authored
llvm-svn: 166721
-
Chad Rosier authored
AsmParser logic. To be used/tested in a subsequent commit. llvm-svn: 166714
-
Nadav Rotem authored
llvm-svn: 166706
-
Chad Rosier authored
llvm-svn: 166698
-
Adhemerval Zanella authored
and also fixes the R_PPC64_TOC16 and R_PPC64_TOC16_DS relocation offset. The 'nop' is needed so a restore TOC instruction (ld r2,40(r1)) can be placed by the linker to correct restore the TOC of previous function. Current code has two issues: it defines in PPCInstr64Bit.td file a LDinto_toc and LDtoc_restore as a DSForm_1 with DS_RA=0 where it should be DS=2 (the 8 bytes displacement of the TOC saving). It also wrongly emits a MC intruction using an uint32_t value while the PPC::BL8_NOP_ELF and PPC::BLA8_NOP_ELF are both uint64_t (because of the following 'nop'). This patch corrects the remaining ExecutionEngine using MCJIT: ExecutionEngine/2002-12-16-ArgTest.ll ExecutionEngine/2003-05-07-ArgumentTest.ll ExecutionEngine/2005-12-02-TailCallBug.ll ExecutionEngine/hello.ll ExecutionEngine/hello2.ll ExecutionEngine/test-call.ll llvm-svn: 166682
-
Bill Schmidt authored
structs having size 3, 5, 6, or 7. Such a struct must be passed and received as right-justified within its register or memory slot. The problem is only present for structs that are passed in registers. Previously, as part of a patch handling all structs of size less than 8, I added logic to rotate the incoming register so that the struct was left- justified prior to storing the whole register. This was incorrect because the address of the parameter had already been adjusted earlier to point to the right-adjusted value in the storage slot. Essentially I had accidentally accounted for the right-adjustment twice. In this patch, I removed the incorrect logic and reorganized the code to make the flow clearer. The removal of the rotates changes the expected code generation, so test case structsinregs.ll has been modified to reflect this. I also added a new test case, jaggedstructs.ll, to demonstrate that structs of these sizes can now be properly received and passed. I've built and tested the code on powerpc64-unknown-linux-gnu with no new regressions. I also ran the GCC compatibility test suite and verified that earlier problems with these structs are now resolved, with no new regressions. llvm-svn: 166680
-
Adhemerval Zanella authored
This patch adds initial PPC64 TOC MC object creation using the small mcmodel (a single 64K TOC) adding the some TOC relocations (R_PPC64_TOC, R_PPC64_TOC16, and R_PPC64_TOC16DS). The addition of 'undefinedExplicitRelSym' hook on 'MCELFObjectTargetWriter' is meant to avoid the creation of an unreferenced ".TOC." symbol (used in the .odp creation) as well to set the R_PPC64_TOC relocation target as the temporary ".TOC." symbol. On PPC64 ABI, the R_PPC64_TOC relocation should not point to any symbol. llvm-svn: 166677
-
Michael Liao authored
llvm-svn: 166665
-