summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* There are no __register_frame and __deregister_frame functions Yaron Keren2013-12-171-1/+1
| | | | | | | | | | when using structured exception handling (SEH) on Windows 64. http://llvm-reviews.chandlerc.com/D2378 Patch by Jonathan Liu! llvm-svn: 197483
* AVX-512: Added implementation of CONCAT_VECTORS for v8i1 vectors (by Alexey ↵Elena Demikhovsky2013-12-174-1/+26
| | | | | | | | Bader). Added implementation of "truncate" from integer type (i64/i32/i16/i8) to i1. llvm-svn: 197482
* Revert "Mark vastart_save_xmm_regs as changing EFLAGS"Duncan P. N. Exon Smith2013-12-171-1/+1
| | | | | | | | | This reverts commit r197469. The sanitizer and dragonegg buildbots are failing, I think because of this change. Reverting until I figure out why. llvm-svn: 197481
* Mark vastart_save_xmm_regs as changing EFLAGSDuncan P. N. Exon Smith2013-12-171-1/+1
| | | | | | | | | | | | | The vastart_save_xmm_regs pseudo-instruction expands to a test and a branch, so it modifies EFLAGS. Mark it so, or else the scheduler might place it in the middle of another test+branch. This fixes a bug exposed by r192750, which turned on the MI Scheduler for X86. <rdar://problem/15627766> llvm-svn: 197469
* Allow MachineCSE to coalesce trivial subregister copies the same way that it ↵Andrew Trick2013-12-174-12/+50
| | | | | | | | | | | | | | | | | | | | coalesces normal copies. Without this, MachineCSE is powerless to handle redundant operations with truncated source operands. This required fixing the 2-addr pass to handle tied subregisters. It isn't clear what combinations of subregisters can legally be tied, but the simple case of truncated source operands is now safely handled: %vreg11<def> = COPY %vreg1:sub_32bit; GR32:%vreg11 GR64:%vreg1 %vreg12<def> = COPY %vreg2:sub_32bit; GR32:%vreg12 GR64:%vreg2 %vreg13<def,tied1> = ADD32rr %vreg11<tied0>, %vreg12<kill>, %EFLAGS<imp-def> Test case: cse-add-with-overflow.ll. This exposed an existing bug in PPCInstrInfo::commuteInstruction. Thanks to Rafael for the test case: PowerPC/crash.ll. llvm-svn: 197465
* whitespaceAndrew Trick2013-12-171-3/+3
| | | | llvm-svn: 197464
* Make comment more explicit.Jim Grosbach2013-12-171-3/+3
| | | | | | | Re-reading the comment I updated in previous commit, it's better to make it more explicit and avoid ambiguity more effectively. llvm-svn: 197458
* Typo. s/reserved/preserved/Jim Grosbach2013-12-171-1/+1
| | | | llvm-svn: 197457
* Add a machine code print in DEBUG() following instruction selection.Jim Grosbach2013-12-171-0/+3
| | | | | | | Make debugging ISel a bit easier by printing out a dump of the generated code at the end. llvm-svn: 197456
* Revert r197438 and r197447 until we figure out how to avoid circular ↵Quentin Colombet2013-12-177-213/+7
| | | | | | dependency at link time llvm-svn: 197451
* LoopVectorizer: Don't if-convert constant expressions that can trapArnold Schwaighofer2013-12-171-1/+31
| | | | | | | | | | A phi node operand or an instruction operand could be a constant expression that can trap (division). Check that we don't vectorize such cases. PR16729 radar://15653590 llvm-svn: 197449
* [LLVM Diagnostic Capabilities] Remove useless includes fromQuentin Colombet2013-12-171-2/+0
| | | | | | | | | DiagnosticPrinter.cpp. These was creating a link time dependencies of IR on CodeGen and Analysis. Part of <rdar://problem/15515174> llvm-svn: 197447
* Add warning capabilities in LLVM.Quentin Colombet2013-12-167-7/+215
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The patch adds a new LLVMContext::diagnose that can be used to communicate to the front-end, if any, that something of interest happened. The diagnostics are supported by a new abstraction, the DiagnosticInfo class. The base class contains the following information: - The kind of the report: What this is about. - The severity of the report: How bad this is. This patch also adds 2 classes: - DiagnosticInfoInlineAsm: For inline asm reporting. Basically, this diagnostic will be used to switch to the new diagnostic API for LLVMContext::emitError. - DiagnosticStackSize: For stack size reporting. Comes as a replacement of the hard coded warning in PEI. This patch also features dynamic diagnostic identifiers. In other words plugins can use this infrastructure for their own diagnostics (for more details, see getNextAvailablePluginDiagnosticKind). This patch introduces a new DiagnosticHandlerTy and a new DiagnosticContext in the LLVMContext that should be set by the front-end to be able to map these diagnostics in its own system. http://llvm-reviews.chandlerc.com/D2376 <rdar://problem/15515174> llvm-svn: 197438
* Enable double to float shrinking optimizations for binary functions like ↵Yi Jiang2013-12-163-9/+96
| | | | | | 'fmin/fmax'. Fix radar:15283121 llvm-svn: 197434
* llvm-cov: Added -u option for unconditional branch info.Yuchen Wu2013-12-161-8/+18
| | | | | | | | | Outputs branch information for unconditional branches in addition to conditional branches. -b option must be enabled. Also updated tests. llvm-svn: 197432
* [Stackmap] Allow WebKit_JS calling convention to store 4 byte sized and ↵Juergen Ributzka2013-12-161-5/+8
| | | | | | | | | aligned arguments. This allows the WebKit_JS calling convention to perform partial writes on a 4 byte granularity to stack slots. llvm-svn: 197431
* Fix typo in instruction name.Matt Arsenault2013-12-161-1/+1
| | | | | | SI_KIL -> SI_KILL llvm-svn: 197425
* Revert "Allow MachineCSE to coalesce trivial subregister copies the same way ↵Rafael Espindola2013-12-162-35/+9
| | | | | | | | | | that it coalesces normal copies." This reverts commit r197414. It broke the ppc64 bootstrap. I will post a testcase in a sec. llvm-svn: 197424
* llvm-cov: Removed extra semicolon from ;;.Yuchen Wu2013-12-161-1/+1
| | | | llvm-svn: 197418
* [Stackmap] The first integer argument is passed in register for the ↵Juergen Ributzka2013-12-161-0/+4
| | | | | | | | WebKit_JS calling convention. Pass the first integer argument (callee) in register to optimize inline caches. llvm-svn: 197416
* Allow MachineCSE to coalesce trivial subregister copies the same wayAndrew Trick2013-12-162-9/+35
| | | | | | | | | | | | | | | | | that it coalesces normal copies. Without this, MachineCSE is powerless to handle redundant operations with truncated source operands. This required fixing the 2-addr pass to handle tied subregisters. It isn't clear what combinations of subregisters can legally be tied, but the simple case of truncated source operands is now safely handled: %vreg11<def> = COPY %vreg1:sub_32bit; GR32:%vreg11 GR64:%vreg1 %vreg12<def> = COPY %vreg2:sub_32bit; GR32:%vreg12 GR64:%vreg2 %vreg13<def,tied1> = ADD32rr %vreg11<tied0>, %vreg12<kill>, %EFLAGS<imp-def> llvm-svn: 197414
* whitespaceAndrew Trick2013-12-161-1/+1
| | | | llvm-svn: 197413
* One last cleanup of LLVM's DataLayout strings.Rafael Espindola2013-12-165-15/+16
| | | | | | | Produce them in the same order on every target. The order is that of getStringRepresentation: e|E-i*-f*-v*-a*-s*-n*-S*. llvm-svn: 197411
* Structure R600's computeDataLayout more like every other target.Rafael Espindola2013-12-161-8/+5
| | | | | | While there, simplify "p3:32:32:32" to "p3:32:32". llvm-svn: 197407
* Recognize EABIHF as environment and use it for RTAPI + VFP.Joerg Sonnenberger2013-12-163-1/+5
| | | | llvm-svn: 197405
* [AArch64] Fix v1fx patterns for Floating-point Multiply Extend and ↵Chad Rosier2013-12-161-8/+11
| | | | | | Floating-point Compare to Zero. llvm-svn: 197402
* MemoryBuffer: Increase the alignment of small file buffers to 16Reid Kleckner2013-12-161-2/+3
| | | | | | | This was manifesting as an LLVM_ASSUME_ALIGNED() failure in an ELF debug info test when building LLVM with clang in the Microsoft C++ ABI. llvm-svn: 197401
* The preferred alignment defaults to the abi alignment. Omit if it is the same.Rafael Espindola2013-12-1611-19/+19
| | | | llvm-svn: 197400
* Don't duplicate the DataLayout defaults for integer, floats and vectors.Rafael Espindola2013-12-162-9/+2
| | | | llvm-svn: 197398
* On DataLayout, omit the default of p:64:64:64.Rafael Espindola2013-12-168-23/+11
| | | | llvm-svn: 197397
* Set has_asmparser in PowerPC/LLVMBuild.txtHal Finkel2013-12-161-0/+1
| | | | | | | PowerPC now has an asm parser (and has for many months now); indicate this in PowerPC/LLVMBuild.txt. llvm-svn: 197393
* AVX-512: Added legal type MVT::i1 and VK1 register for it.Elena Demikhovsky2013-12-169-85/+184
| | | | | | | | | Added scalar compare VCMPSS, VCMPSD. Implemented LowerSELECT for scalar FP operations. I replaced FSETCCss, FSETCCsd with one node type FSETCCs. Node extract_vector_elt(v16i1/v8i1, idx) returns an element of type i1. llvm-svn: 197384
* Fix Android regression in r197332.Evgeniy Stepanov2013-12-161-0/+1
| | | | llvm-svn: 197366
* [AArch64]Fix the pattern match failure for v1i8/v1i16/v1i32 types.Hao Liu2013-12-162-1/+20
| | | | | | | | | | Currently we have such types as legal vector types. The DAG combiner may generate some DAG nodes having such types but we don't have patterns to match them. E.g. a load i32 and a bitcast i32 to v1i32 will be combined into a load v1i32: bitcast (load i32) to v1i32 -> load v1i32. So this patch fixes such problems for load/dup instructions. If v1i8/v1i16/v1i32 are not legal any more, the code in this patch can be deleted. So I also add some FIXME. llvm-svn: 197361
* remove an uneeded statement (condition is covered by the statementReed Kotler2013-12-151-2/+0
| | | | | | that follows). llvm-svn: 197358
* Fix some indentation.Reed Kotler2013-12-151-10/+10
| | | | llvm-svn: 197357
* Get rid of an superfluous tab in the .s file. This was originallyReed Kotler2013-12-151-1/+1
| | | | | | part of a multi-line pseudo which worked around a linker bug for mips16. llvm-svn: 197356
* Last change for mips16 prolog/epilog cleanup and optimization.Reed Kotler2013-12-154-58/+76
| | | | | | | | | Some tiny cosmetic code changes to follow. Because of the wide ranging nature of the patch a full 24 test cycle was needed to check against regression. This was the smallest patch I could make to progress from the earlier ones in the series. llvm-svn: 197350
* There is no exp10 on NetBSD.Joerg Sonnenberger2013-12-151-0/+6
| | | | llvm-svn: 197348
* Fix AsmWriter's handling of SPIR calling conventions. Patch by Boaz Ouriel.Michael Kuperstein2013-12-151-0/+2
| | | | llvm-svn: 197335
* Replace string matching with a switch on Triple::getEnvironment.Joerg Sonnenberger2013-12-151-4/+10
| | | | llvm-svn: 197332
* [Stackmap] Refactor operand parsing.Juergen Ributzka2013-12-141-91/+74
| | | | llvm-svn: 197329
* Don't manually calculate size in bytesMatt Arsenault2013-12-141-2/+3
| | | | llvm-svn: 197327
* [Powerpc darwin] AsmParser Base implementation.Iain Sandoe2013-12-141-13/+134
| | | | | | | | | | | | This is a base implementation of the powerpc-apple-darwin asm parser dialect. * Enables infrastructure (essentially isDarwin()) and fixes up the parsing of asm directives to separate out ELF and MachO/Darwin additions. * Enables parsing of {r,f,v}XX as register identifiers. * Enables parsing of lo16() hi16() and ha16() as modifiers. The changes to the test case are from David Fang (fangism). llvm-svn: 197324
* Remove weak vtables. No functional change.Juergen Ributzka2013-12-144-1/+9
| | | | llvm-svn: 197323
* [Stackmap] Liveness Analysis PassJuergen Ributzka2013-12-147-14/+255
| | | | | | | | | | | | | | | | | | | | This optional register liveness analysis pass can be enabled with either -enable-stackmap-liveness, -enable-patchpoint-liveness, or both. The pass traverses each basic block in a machine function. For each basic block the instructions are processed in reversed order and if a patchpoint or stackmap instruction is encountered the current live-out register set is encoded as a register mask and attached to the instruction. Later on during stackmap generation the live-out register mask is processed and also emitted as part of the stackmap. This information is optional and intended for optimization purposes only. This will enable a client of the stackmap to reason about the registers it can use and which registers need to be preserved. Reviewed by Andy llvm-svn: 197317
* [Stackmap] Only the AnyReg calling convention should preserve all registers.Juergen Ributzka2013-12-142-5/+8
| | | | llvm-svn: 197316
* Convert register liveness tracking to work on a sub-register level instead ↵Juergen Ributzka2013-12-145-146/+145
| | | | | | | | of just register units. Reviewed by Andy llvm-svn: 197315
* Refactor NVPTX's computeDataLayout.Rafael Espindola2013-12-141-4/+9
| | | | | | No functionality change. llvm-svn: 197312
* Turn NVPTXSubtarget::getDataLayout into a static function.Rafael Espindola2013-12-142-16/+11
| | | | | | No functionality change. llvm-svn: 197311
OpenPOWER on IntegriCloud