summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
...
* [mips][mips64r6] Replace m[tf]hi, m[tf]lo, mult, multu, dmult, dmultu, div, ↵Daniel Sanders2014-06-1216-102/+518
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ddiv, divu, ddivu for MIPS32r6/MIPS64. Summary: The accumulator-based (HI/LO) multiplies and divides from earlier ISA's have been removed and replaced with GPR-based equivalents. For example: div $1, $2 mflo $3 is now: div $3, $1, $2 This patch disables the accumulator-based multiplies and divides for MIPS32r6/MIPS64r6 and uses the GPR-based equivalents instead. Renamed expandPseudoDiv to insertDivByZeroTrap to better describe the behaviour of the function. MipsDelaySlotFiller now invalidates the liveness information when moving instructions to the delay slot. Without this, divrem.ll will abort since %GP ends up used before it is defined. Reviewers: vmedic, zoran.jovanovic, jkolek Reviewed By: jkolek Differential Revision: http://reviews.llvm.org/D3896 llvm-svn: 210760
* [mips] Move CHECK lines to the same line as the instruction it's testingMatheus Almeida2014-06-122-8/+4
| | | | | | | | for consistency with the other tests. No functional changes. llvm-svn: 210757
* R600/SI: Use a register set to -1 for data0 on ds_inc*/ds_dec*Matt Arsenault2014-06-124-47/+51
| | | | | | | There is not such thing as a 0-data ds instruction, and the data operand needs to be a vgpr set to something meaningful. llvm-svn: 210756
* Avoid in-class initializer from r210747Alp Toker2014-06-121-1/+2
| | | | | | Turns out MSVC doesn't like this. Sorry for the noise! llvm-svn: 210749
* Avoid anonymous namespace in header from r210747Alp Toker2014-06-121-13/+11
| | | | llvm-svn: 210748
* Avoid redundant allocations in the linker optimisation hintAlp Toker2014-06-121-2/+14
| | | | llvm-svn: 210747
* [FastISel][x86] Add testcase for r210719.Juergen Ributzka2014-06-121-0/+24
| | | | llvm-svn: 210746
* [x86] Improve frameaddress test from r210709.Juergen Ributzka2014-06-121-10/+27
| | | | llvm-svn: 210743
* [FastISel] Add support for the stackmap intrinsic.Juergen Ributzka2014-06-123-0/+271
| | | | | | This implements target-independent FastISel lowering for the stackmap intrinsic. llvm-svn: 210742
* Prefix generic_category with std::.Rafael Espindola2014-06-121-2/+2
| | | | | | Sorry I missed these before. llvm-svn: 210740
* Don't put generic_category in the llvm namespace.Rafael Espindola2014-06-126-31/+30
| | | | llvm-svn: 210737
* Fix verifier for GlobalAliases to avoid recursing into global initializers.Bob Wilson2014-06-122-0/+8
| | | | | | | | | | | The verifier follows GlobalAlias operands so that it can detect cycles of alias definitions. It was doing this in a way that caused it to also recurse through initializers for the GlobalValue aliasees, and it would fail when an initializer refers to a global that is a declaration and not a definition. This patch causes it to stop recursing when it hits a global definition. <rdar://problem/17277451> llvm-svn: 210734
* Don't import error_category into the llvm namespace.Rafael Espindola2014-06-1211-16/+15
| | | | llvm-svn: 210733
* Don't import error_condition into the llvm namespace.Rafael Espindola2014-06-125-12/+17
| | | | llvm-svn: 210731
* Used mapWindowsError. I missed these in the initial transition.Rafael Espindola2014-06-121-3/+4
| | | | llvm-svn: 210729
* Remove some low hanging fruit from system_error.hRafael Espindola2014-06-122-10/+9
| | | | llvm-svn: 210728
* Try to fix the mingw build.Rafael Espindola2014-06-122-32/+6
| | | | | | | * MingW needs mapWindowsError. * MingW is missing some entries in std::errc, but we don't use them. llvm-svn: 210725
* Do not register and de-register PassRegistrationListeners duringZachary Turner2014-06-123-23/+14
| | | | | | | | | | | | | | | | | construction and destruction. PassRegistrationListener is intended for use as a generic listener. In some cases, PassRegistrationListener-derived classes were being created, and automatically registered and de-registered in static constructors and destructors. Since ManagedStatics are destroyed prior to program shutdown, this leads to errors where an attempt is made to access a ManagedStatic that has already been destroyed. Reviewed by: rnk, dblaikie Differential Revision: http://reviews.llvm.org/D4106 llvm-svn: 210724
* Teach LoopUnrollPass to respect loop unrolling hints in metadata.Eli Bendersky2014-06-112-6/+394
| | | | | | | | | | See http://reviews.llvm.org/D4090 for more details. The Clang change that produces this metadata was committed in r210667 Patch by Mark Heffernan. llvm-svn: 210721
* [FastISel][X86] Add support for the sqrt intrinsic.Juergen Ributzka2014-06-112-0/+78
| | | | llvm-svn: 210720
* [FastIsel][X86] Add support for lowering the first 8 floating-point arguments.Juergen Ributzka2014-06-111-19/+36
| | | | llvm-svn: 210719
* Don't acquire the mutex during the destructor of PassRegistry.Zachary Turner2014-06-111-1/+4
| | | | | | | | | | | This destructor is run as part of static program termination, and so all ManagedStatics (including this lock) will have been destroyed by llvm_shutdown. Furthermore, if there is actually a race condition during static program termination, then we are just hiding a bug somewhere else, because other threads should not be running at this point. llvm-svn: 210717
* Implement get_magic with generic tools and inline it.Rafael Espindola2014-06-114-92/+10
| | | | llvm-svn: 210716
* Remove unused has_magic.Rafael Espindola2014-06-114-39/+2
| | | | | | | This will allow inlining get_magic, which should in turn fix one of the mingw build problems after the switch to std::error_code. llvm-svn: 210712
* [FastISel][X86] Add support for the frameaddress intrinsic.Juergen Ributzka2014-06-115-33/+79
| | | | llvm-svn: 210709
* [AArch64] Basic Sched Model for Cortex-A57.Chad Rosier2014-06-114-1/+930
| | | | | | | Patch by Dave Estes<cestes@codeaurora.org> Differential Revision: http://reviews.llvm.org/D4008 llvm-svn: 210705
* R600: Set correct InstrItinClass for instructions using *Helper classesTom Stellard2014-06-111-3/+3
| | | | | | | | | We weren't doing this before, so all instruction using the *Helper classes were considered for any ALU slot. This fixes a hang in the builtin-char-clz-1.0.generated.cl piglit test. llvm-svn: 210703
* R600: BCNT_INT is a vector only instructionTom Stellard2014-06-111-1/+1
| | | | llvm-svn: 210702
* ARM: honor hex immediate formatting for ldr/str i12 offsets.Jim Grosbach2014-06-112-2/+8
| | | | | | | | | | | | | | | | | Previously we would always print the offset as decimal, regardless of the formatting requested. Now we use the formatImm() helper so the value is printed as the client (LLDB in the motivating example) requested. Before: ldr.w r8, [sp, #180] @ always After: ldr.w r8, [sp, #0xb4] @ when printing hex immediates ldr.w r8, [sp, #0180] @ when printing decimal immediates rdar://17237103 llvm-svn: 210701
* llvm-mc: Add option for prefering hex format disassembly.Jim Grosbach2014-06-114-14/+14
| | | | | | | | | Previously there was a separate mode entirely (--hdis vs. --disassemble). It makes a bit more sense for the immediate printing style to be a flag for --disassmeble rather than an entirely different thing. llvm-svn: 210700
* R600/SI: Fix bitcast between v2i32 and f64Matt Arsenault2014-06-112-5/+27
| | | | | | | | | | This is the same problem fixed in r210664 for more types. The test passes without this fix. For some reason I'm only hitting this when creating selects lowered to v2i32 selects. llvm-svn: 210692
* Use std::error_code instead of llvm::error_code.Rafael Espindola2014-06-1137-1142/+217
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The idea of this patch is to turn llvm/Support/system_error.h into a transitional header that just brings in the erorr_code api to the llvm namespace. I will remove it shortly afterwards. The cases where the general idea needed some tweaking: * std::errc is a namespace in msvc, so we cannot use "using std::errc". I could add an #ifdef, but there were not that many uses, so I just added std:: to them in this patch. * Template specialization had to be moved to the std namespace in this patch set already. * The msvc implementation of default_error_condition doesn't seem to provide the same transformations as we need. Not too surprising since the standard doesn't actually say what "equivalent" means. I fixed the problem by keeping our old mapping and using it at error_code construction time. Despite these shortcomings I think this is still a good thing. Some reasons: * The different implementations of system_error might improve over time. * It removes 925 lines of code from llvm already. * It removes 6313 bytes from the text segment of the clang binary when it is built with gcc and 2816 bytes when building with clang and libstdc++. llvm-svn: 210687
* [Reassociate] FileCheckize and cleanup a few testcases. No functional changeChad Rosier2014-06-1116-230/+275
| | | | | | intended. llvm-svn: 210685
* Fix assert comments in Instruction.cpp.Chad Rosier2014-06-111-6/+6
| | | | llvm-svn: 210684
* R600/SI: Update place using old subtarget predicateMatt Arsenault2014-06-111-2/+2
| | | | llvm-svn: 210683
* R600/SI: Add common 64-bit LDS atomicsMatt Arsenault2014-06-115-17/+305
| | | | llvm-svn: 210680
* R600/SI: Add instruction definitions for 64-bit LDS atomicsMatt Arsenault2014-06-111-0/+47
| | | | llvm-svn: 210679
* R600/SI: Add 32-bit LDS atomic cmpxchgMatt Arsenault2014-06-113-0/+40
| | | | llvm-svn: 210678
* R600/SI: Use LDS atomic inc / decMatt Arsenault2014-06-112-0/+54
| | | | llvm-svn: 210677
* R600/SI: Add other LDS atomic operationsMatt Arsenault2014-06-112-3/+220
| | | | llvm-svn: 210676
* R600/SI: Add instruction definitions for more LDS opsMatt Arsenault2014-06-112-0/+104
| | | | llvm-svn: 210675
* R600/SI: Fix backwards names for local atomic instructions.Matt Arsenault2014-06-113-12/+12
| | | | | | | The manual lists them as *_RTN_U32, not *_U32_RTN, which is more consistent with how every other sized instruction is named. llvm-svn: 210674
* R600/SI: Refactor local atomics.Matt Arsenault2014-06-114-41/+90
| | | | | | | Use patterns that will also match the immediate offset to match the normal read / writes. llvm-svn: 210673
* R600/SI: Use v_cvt_f32_ubyte* instructionsMatt Arsenault2014-06-1110-5/+397
| | | | | | | This eliminates extra extract instructions when loading an i8 vector to a float vector. llvm-svn: 210666
* SmallVectorTest: Make the deleted member functions private to help MSVC users.David Blaikie2014-06-111-0/+1
| | | | llvm-svn: 210665
* R600/SI: Fix selection failure on scalar_to_vectorMatt Arsenault2014-06-114-11/+122
| | | | | | | | | | | There seem to be only 2 places that produce these, and it's kind of tricky to hit them. Also fixes failure to bitcast between i64 and v2f32, although this for some reason wasn't actually broken in the simple bitcast testcase, but did in the scalar_to_vector one. llvm-svn: 210664
* X86: add stringy name for X86ISD::LCMPXCHG16_DAGTim Northover2014-06-111-0/+1
| | | | | | | I don't know what "target specific node #383" is, and I don't want to have to. llvm-svn: 210663
* Revert r210613 to conform to coding standards.Eric Christopher2014-06-111-1/+1
| | | | | | Thanks Duncan for noticing. llvm-svn: 210662
* [mips][mips64r6] Improve tests affected by the changes to multiplies and dividesDaniel Sanders2014-06-115-83/+162
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: MIPS32r6/MIPS64r6 support has not been added yet. inlineasm-cnstrnt-reg.ll: Explicitly specify the CPU since it will not work on MIPS32r6/MIPS64r6 when -integrated-as is the default. We can't change the mnemonic since the LO register is an implicit def of mtlo and MIPS32r6/MIPS64r6 has no instructions that use LO. 2008-08-01-AsmInline.ll: Explicitly specify the CPU since MIPS32r6/MIPS64r6 will correctly emit different code and this is a regression test. mips64instrs.ll and mips64muldiv.ll Check registers and the way the multiply is used in m1 divrem.ll Check registers and use multiple filecheck prefixes to limit redundancy Reviewers: vmedic, jkolek, zoran.jovanovic, matheusalmeida Reviewed By: matheusalmeida Subscribers: matheusalmeida Differential Revision: http://reviews.llvm.org/D3894 llvm-svn: 210656
* [mips] Implement jr.hb and jalr.hb (Jump Register and Jump and Link Register ↵Matheus Almeida2014-06-1117-1/+189
| | | | | | | | | | | | | | with Hazard Barrier). Summary: These instructions are available in ISAs >= mips32/mips64. For mips32r6/mips64r6, jr.hb has a new encoding format. Reviewers: dsanders Reviewed By: dsanders Differential Revision: http://reviews.llvm.org/D4019 llvm-svn: 210654
OpenPOWER on IntegriCloud