summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* R600: Add support for native control flowVincent Lejeune2013-04-017-7/+397
| | | | llvm-svn: 178505
* R600/SI: Share code recording ShaderTypeAttribute between generationsVincent Lejeune2013-04-016-28/+60
| | | | llvm-svn: 178504
* R600: Emit CF_ALU and use true kcache register.Vincent Lejeune2013-04-017-11/+398
| | | | llvm-svn: 178503
* Fix top-comment header and some indentationEli Bendersky2013-04-012-3/+3
| | | | llvm-svn: 178492
* Fix a bad assert in PPCTargetLoweringHal Finkel2013-04-012-2/+3
| | | | llvm-svn: 178489
* Add triple to test/CodeGen/PowerPC/stfiwx-2Hal Finkel2013-04-011-1/+1
| | | | llvm-svn: 178486
* Correct assertion conditionShuxin Yang2013-04-012-1/+16
| | | | llvm-svn: 178484
* Merge load/store sequences with adresses: base + index + offsetArnold Schwaighofer2013-04-012-25/+184
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We would also like to merge sequences that involve a variable index like in the example below. int index = *idx++ int i0 = c[index+0]; int i1 = c[index+1]; b[0] = i0; b[1] = i1; By extending the parsing of the base pointer to handle dags that contain a base, index, and offset we can handle examples like the one above. The dag for the code above will look something like: (load (i64 add (i64 copyfromreg %c) (i64 signextend (i8 load %index)))) (load (i64 add (i64 copyfromreg %c) (i64 signextend (i32 add (i32 signextend (i8 load %index)) (i32 1))))) The code that parses the tree ignores the intermediate sign extensions. However, if there is a sign extension it needs to be on all indexes. (load (i64 add (i64 copyfromreg %c) (i64 signextend (add (i8 load %index) (i8 1)))) vs (load (i64 add (i64 copyfromreg %c) (i64 signextend (i32 add (i32 signextend (i8 load %index)) (i32 1))))) radar://13536387 llvm-svn: 178483
* Add more PPC floating-point conversion instructionsHal Finkel2013-04-0112-40/+325
| | | | | | | | | The P7 and A2 have additional floating-point conversion instructions which allow a direct two-instruction sequence (plus load/store) to convert from all combinations (signed/unsigned i32/i64) <--> (float/double) (on previous cores, only some combinations were directly available). llvm-svn: 178480
* Use ImmToIdxMap.count in PPCRegisterInfoHal Finkel2013-04-011-2/+1
| | | | | | | Code improvement suggested by Jakob (in review of r178450). No functionality change intended. llvm-svn: 178473
* Fix PowerPC/cttz.ll to specify a cpu (and use FileCheck)Hal Finkel2013-04-011-1/+3
| | | | llvm-svn: 178472
* Add the PPC popcntw instructionHal Finkel2013-04-013-7/+13
| | | | | | | | | The popcntw instruction is available whenever the popcntd instruction is available, and performs a separate popcnt on the lower and upper 32-bits. Ignoring the high-order count, this can be used for the 32-bit input case (saving on the explicit zero extension otherwise required to use popcntd). llvm-svn: 178470
* Add support for vector data types in the LLVM interpreter.Nadav Rotem2013-04-015-7/+275
| | | | | | | Patch by: Veselov, Yuri <Yuri.Veselov@intel.com> llvm-svn: 178469
* Treat PPCISD::STFIWX like the memory opcode that it isHal Finkel2013-04-012-6/+13
| | | | | | | | | | | PPCISD::STFIWX is really a memory opcode, and so it should come after FIRST_TARGET_MEMORY_OPCODE, and we should use DAG.getMemIntrinsicNode to create nodes using it. No functionality change intended (although there could be optimization benefits from preserving the MMO information). llvm-svn: 178468
* Remove unused typedef.Duncan Sands2013-04-011-1/+0
| | | | llvm-svn: 178462
* ARM Scheduler Model: Add resources instructions, map resources in subtargetsArnold Schwaighofer2013-04-014-41/+85
| | | | | | | | | | | | | Reapply r177968: After commit 178074 we can now have undefined scheduler variants. Move the CortexA9 resources into the CortexA9 SchedModel namespace. Define resource mappings under the CortexA9 SchedModel. Define resources and mappings for the SwiftModel. Incooperate Andrew's feedback. llvm-svn: 178460
* X86TTI: Add accurate costs for itofp operations, based on the actual ↵Benjamin Kramer2013-04-013-9/+106
| | | | | | instruction counts. llvm-svn: 178459
* Whitespace cleanupJoe Abbey2013-04-014-21/+21
| | | | llvm-svn: 178454
* R600: Emit native instructions for texVincent Lejeune2013-03-312-115/+197
| | | | llvm-svn: 178452
* There is no longer any need to silence this compiler warning as the warning hasDuncan Sands2013-03-311-1/+1
| | | | | | been turned off globally. llvm-svn: 178451
* Cleanup ImmToIdxMap and noImmForm in PPCRegisterInfoHal Finkel2013-03-312-20/+6
| | | | | | | | | | | ImmToIdxMap should be a DenseMap (not a std::map) because there is no ordering requirement. Also, we don't need a separate list of instructions for noImmForm in eliminateFrameIndex, because this list is essentially the complement of the keys in ImmToIdxMap. No functionality change intended. llvm-svn: 178450
* X86: Promote sitofp <8 x i16> to <8 x i32> when AVX is available.Benjamin Kramer2013-03-312-0/+7
| | | | | | A vector sext + sitofp is a lot cheaper than 8 scalar conversions. llvm-svn: 178448
* Add the PPC lfiwax instructionHal Finkel2013-03-318-22/+82
| | | | | | | | | This instruction is available on modern PPC64 CPUs, and is now used to improve the SINT_TO_FP lowering (by eliminating the need for the separate sign extension instruction and decreasing the amount of needed stack space). llvm-svn: 178446
* Cleanup PPC(64) i32 -> float/double conversionHal Finkel2013-03-316-42/+40
| | | | | | | | | | | | | | | The existing SINT_TO_FP code for i32 -> float/double conversion was disabled because it relied on broken EXTSW_32/STD_32 instruction definitions. The original intent had been to enable these 64-bit instructions to be used on CPUs that support them even in 32-bit mode. Unfortunately, this form of lying to the infrastructure was buggy (as explained in the FIXME comment) and had therefore been disabled. This re-enables this functionality, using regular DAG nodes, but only when compiling in 64-bit mode. The old STD_32/EXTSW_32 definitions (which were dead) are removed. llvm-svn: 178438
* DAGCombine: visitXOR can replace a node without returning it, bail out in ↵Benjamin Kramer2013-03-302-3/+36
| | | | | | | | that case. Fixes the crash reported in PR15608. llvm-svn: 178429
* Add start of user documentation for NVPTXJustin Holewinski2013-03-303-0/+287
| | | | | | | | Summary: This is the beginning of user documentation for the NVPTX back-end. I want to ensure I am integrating this properly into the rest of the LLVM documentation. Differential Revision: http://llvm-reviews.chandlerc.com/D600 llvm-svn: 178428
* Change '@SECREL' suffix to GAS-compatible '@SECREL32'.Benjamin Kramer2013-03-303-22/+22
| | | | | | | | | | '@SECREL' is what is used by the Microsoft assembler, but GNU as expects '@SECREL32'. With the patch, the MC-generated code works fine in combination with a recent GNU as (2.23.51.20120920 here). Patch by David Nadlinger! Differential Revision: http://llvm-reviews.chandlerc.com/D429 llvm-svn: 178427
* [docs] llvmbugs is not the place for patches.Sean Silva2013-03-301-5/+6
| | | | llvm-svn: 178426
* [docs] Annotate mailing lists with their "name".Sean Silva2013-03-301-5/+5
| | | | | | | | Nobody says "the developer's list" or "commits archive"; they always say "llvmdev" or "llvm-commits". It makes sense for our documentation to at least make that association explicitly. llvm-svn: 178425
* [docs] Reorganize mailing lists.Sean Silva2013-03-301-13/+13
| | | | | | Order them roughly by "which one should a newbie join first". llvm-svn: 178424
* [docs] Pull IRC and Mailing Lists under a new "Community" heading.Sean Silva2013-03-301-21/+29
| | | | llvm-svn: 178423
* [docs] The GEP FAQ is not "design and overview"Sean Silva2013-03-301-5/+5
| | | | llvm-svn: 178422
* [docs] Put DeveloperPolicy under "Development Process Documentation"Sean Silva2013-03-301-4/+4
| | | | llvm-svn: 178421
* Put private class into an anonmyous namespace.Benjamin Kramer2013-03-301-0/+2
| | | | llvm-svn: 178420
* [NVPTX] Remove support for SM < 2.0. This was never fully supported anyway.Justin Holewinski2013-03-3018-184/+3
| | | | llvm-svn: 178417
* [NVPTX] Add NVVMReflect pass to allow compile-time selection ofJustin Holewinski2013-03-304-0/+235
| | | | | | | | | | | | | | | | specific code paths. This allows us to write code like: if (__nvvm_reflect("FOO")) // Do something else // Do something else and compile into a library, then give "FOO" a value at kernel compile-time so the check becomes a no-op. llvm-svn: 178416
* [NVPTX] Run clang-format on all NVPTX sources.Justin Holewinski2013-03-3031-1956/+2298
| | | | | | | Hopefully this resolves any outstanding style issues and gives us an automated way of ensuring we conform to the style guidelines. llvm-svn: 178415
* Object: Turn a couple of degenerate for loops into while loops.Benjamin Kramer2013-03-301-15/+12
| | | | | | No functionality change. llvm-svn: 178413
* Implement XOR reassociation. It is based on following rules:Shuxin Yang2013-03-302-1/+476
| | | | | | | | | | | | | | | rule 1: (x | c1) ^ c2 => (x & ~c1) ^ (c1^c2), only useful when c1=c2 rule 2: (x & c1) ^ (x & c2) = (x & (c1^c2)) rule 3: (x | c1) ^ (x | c2) = (x & c3) ^ c3 where c3 = c1 ^ c2 rule 4: (x | c1) ^ (x & c2) => (x & c3) ^ c1, where c3 = ~c1 ^ c2 It reduces an application's size (in terms of # of instructions) by 8.9%. Reviwed by Pete Cooper. Thanks a lot! rdar://13212115 llvm-svn: 178409
* [mips] Add patterns for DSP indexed load instructions.Akira Hatanaka2013-03-303-13/+73
| | | | llvm-svn: 178408
* [mips] Define reg+imm load/store pattern templates.Akira Hatanaka2013-03-302-16/+18
| | | | llvm-svn: 178407
* [mips] Fix DSP instructions to have explicit accumulator register operands.Akira Hatanaka2013-03-304-243/+206
| | | | | | | Check that instruction selection can select multiply-add/sub DSP instructions from a pattern that doesn't have intrinsics. llvm-svn: 178406
* Remove unused variables.Akira Hatanaka2013-03-301-2/+0
| | | | llvm-svn: 178405
* [mips] Move the code which does dag-combine for multiply-add/sub nodes toAkira Hatanaka2013-03-304-186/+200
| | | | | | | | | derived class MipsSETargetLowering. We shouldn't be generating madd/msub nodes if target is Mips16, since Mips16 doesn't have support for multipy-add/sub instructions. llvm-svn: 178404
* [mips] Fix definitions of multiply, multiply-add/sub and divide instructions.Akira Hatanaka2013-03-307-70/+199
| | | | | | | | | The new instructions have explicit register output operands and use table-gen patterns instead of C++ code to do instruction selection. Mips16's instructions are unaffected by this change. llvm-svn: 178403
* [mips] Remove function getFPBranchCodeFromCond. Rename invertFPCondCodeAdd.Akira Hatanaka2013-03-301-18/+7
| | | | llvm-svn: 178396
* Fix indentation.Akira Hatanaka2013-03-301-26/+26
| | | | llvm-svn: 178395
* [mips] Add mips-specific nodes which will be used to select multiply and divideAkira Hatanaka2013-03-302-0/+18
| | | | | | instructions. llvm-svn: 178394
* [mips] Implement getRepRegClassFor in MipsSETargetLowering. This function isAkira Hatanaka2013-03-301-0/+9
| | | | | | called in several places in ScheduleDAGRRList.cpp. llvm-svn: 178393
* [mips] Fix MipsSEInstrInfo::copyPhysReg, loadRegFromStack and storeRegToStackAkira Hatanaka2013-03-301-0/+18
| | | | | | to handle accumulator registers. llvm-svn: 178392
OpenPOWER on IntegriCloud