summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86
Commit message (Collapse)AuthorAgeFilesLines
...
* Implement xgetbv and xsetbv.Rafael Espindola2011-02-224-0/+19
| | | | | | Patch by Jai Menon. llvm-svn: 126165
* Revert r124611 - "Keep track of incoming argument's location while emitting ↵Devang Patel2011-02-211-4/+4
| | | | | | | | | | | LiveIns." In other words, do not keep track of argument's location. The debugger (gdb) is not prepared to see line table entries for arguments. For the debugger, "second" line table entry marks beginning of function body. This requires some coordination with debugger to get this working. - The debugger needs to be aware of prolog_end attribute attached with line table entries. - The compiler needs to accurately mark prolog_end in line table entries (at -O0 and at -O1+) llvm-svn: 126155
* Fixed a bug in the X86 disassembler where a member of theSean Callanan2011-02-212-5/+5
| | | | | | | | X86 instruction decode structure was being interpreted as being in units of bits, although it is actually stored in units of bytes. llvm-svn: 126147
* The stack should be 16 byte aligned on 32 bit solaris. Patch by Yuri.Duncan Sands2011-02-212-3/+4
| | | | llvm-svn: 126130
* a serious "compare CSE" issue that is nontrivial to get right,Chris Lattner2011-02-211-0/+69
| | | | | | but which is responsible for us doing really bad things to 256.bzip2. llvm-svn: 126126
* Target/X86/X86FastISel: [PR6275] Fix Win32's dllimport function with fastisel.NAKAMURA Takumi2011-02-211-2/+6
| | | | | | | "dllimport" function must not be GlobalVariable, but Function. It is enough to check with GlobalValue. test/CodeGen/X86/dll-linkage.ll is updated to check llc -O0. llvm-svn: 126110
* A lo/hi mul has higher latency than an imul r,ri, e.g. 5 cycles compared to 3Cameron Zwarich2011-02-211-35/+0
| | | | | | on Core 2 and Nehalem, so the code we generate is better than GCC's here. llvm-svn: 126100
* The signed version of our "magic number" computation for the integer ↵Cameron Zwarich2011-02-211-6/+4
| | | | | | | | | | | | | approximation of a constant had a minor typo introduced when copying it from the book, which caused it to favor negative approximations over positive approximations in many cases. Positive approximations require fewer operations beyond the multiplication. In the case of division by 3, we still generate code that is a single instruction larger than GCC's code. llvm-svn: 126097
* If both operands are loads from stores in memory we can't use movlpd/movlpsEric Christopher2011-02-201-0/+4
| | | | | | | | | since one needs to be a register operand. Just use movss instead of forcing an operand into a register. Fixes PR9239 llvm-svn: 126072
* Use explicit add_subdirectory's for LLVM target sublibraries insteadOscar Fuentes2011-02-201-0/+5
| | | | | | | | | of testing for its presence at cmake time. This way the build automatically regenerates the makefiles when a svn update brings in a new sublibrary. llvm-svn: 126068
* Minor x86 README updates.Eli Friedman2011-02-191-20/+14
| | | | llvm-svn: 126054
* implement PR9264: disambiguating 'bt mem, imm' as a btl.Chris Lattner2011-02-191-0/+3
| | | | | | | This is reasonable to do since all bt-mem forms do the same thing. llvm-svn: 126047
* Fix typos.Eric Christopher2011-02-191-2/+2
| | | | llvm-svn: 126018
* add a poor division by constant case.Chris Lattner2011-02-181-0/+37
| | | | llvm-svn: 125832
* Recognize monitor/mwait with explicit register argumentsJoerg Sonnenberger2011-02-181-0/+8
| | | | llvm-svn: 125805
* Recognize leavel and leaveq aliases for leave.Joerg Sonnenberger2011-02-171-0/+3
| | | | | | Validate encoding of leave in 64bit mode. llvm-svn: 125795
* [AVX] Recorganize X86ShuffleDecode into its own libraryDavid Greene2011-02-177-33/+116
| | | | | | | | | | | | (LLVMX86Utils.a) to break cyclic library dependencies between LLVMX86CodeGen.a and LLVMX86AsmParser.a. Previously this code was in a header file and marked static but AVX requires some additional functionality here that won't be used by all clients. Since including unused static functions causes a gcc compiler warning, keeping it as a header would break builds that use -Werror. Putting this in its own library solves both problems at once. llvm-svn: 125765
* The labyrinthine X86 backend no longer appears to requireDan Gohman2011-02-171-37/+0
| | | | | | these patterns. llvm-svn: 125759
* Triple::MinGW64 is deprecated and removed. We can use Triple::MinGW32 generally.NAKAMURA Takumi2011-02-173-6/+2
| | | | | | No one uses *-mingw64. mingw-w64 is represented as {i686|x86_64}-w64-mingw32. In llvm side, i686 and x64 can be treated as similar way. llvm-svn: 125747
* Fix whitespace.NAKAMURA Takumi2011-02-172-9/+9
| | | | llvm-svn: 125746
* Swap VT and DebugLoc operands of getExtLoad() for consistency withStuart Hastings2011-02-162-2/+2
| | | | | | other getNode() methods. Radar 9002173. llvm-svn: 125665
* Enhance ComputeMaskedBits to know that aligned frameindexesChris Lattner2011-02-132-23/+3
| | | | | | | | | | | | | | | | | have their low bits set to zero. This allows us to optimize out explicit stack alignment code like in stack-align.ll:test4 when it is redundant. Doing this causes the code generator to start turning FI+cst into FI|cst all over the place, which is general goodness (that is the canonical form) except that various pieces of the code generator don't handle OR aggressively. Fix this by introducing a new SelectionDAG::isBaseWithConstantOffset predicate, and using it in places that are looking for ADD(X,CST). The ARM backend in particular was missing a lot of addressing mode folding opportunities around OR. llvm-svn: 125470
* Add encodings and mnemonics for FXSAVE64 and FXRSTOR64.Reid Kleckner2011-02-121-0/+4
| | | | | | | | These are just FXSAVE and FXRSTOR with REX.W prefixes. These versions use 64-bit pointer values instead of 32-bit pointer values in the memory map they dump and restore. llvm-svn: 125446
* Add a note about SSE4.1 roundss/roundsd.Benjamin Kramer2011-02-121-0/+11
| | | | llvm-svn: 125438
* [AVX] Implement 256-bit vector lowering for SCALAR_TO_VECTOR. ThisDavid Greene2011-02-101-0/+18
| | | | | | | largely completes support for 128-bit fallback lowering for code that is not 256-bit ready. llvm-svn: 125315
* [AVX] Implement 256-bit vector lowering for EXTRACT_VECTOR_ELT.David Greene2011-02-101-1/+35
| | | | llvm-svn: 125284
* [AVX] Implement 256-bit vector lowering for INSERT_VECTOR_ELT.David Greene2011-02-091-6/+36
| | | | llvm-svn: 125187
* [AVX] Implement BUILD_VECTOR lowering for 256-bit vectors. ForDavid Greene2011-02-081-3/+64
| | | | | | | anything but the simplest of cases, lower a 256-bit BUILD_VECTOR by splitting it into 128-bit parts and recombining. llvm-svn: 125105
* [AVX] Insert/extract subvector lowering support. This includes aDavid Greene2011-02-071-2/+101
| | | | | | | couple of utility functions that will be used in other places for more AVX lowering. llvm-svn: 125029
* Target/X86: Tweak allocating shadow area (aka home) on Win64. It must be ↵NAKAMURA Takumi2011-02-053-9/+20
| | | | | | enough for caller to allocate one. llvm-svn: 124949
* lib/Target/X86/X86ISelLowering.cpp: Introduce a new variable "IsWin64". No ↵NAKAMURA Takumi2011-02-051-3/+4
| | | | | | functional changes. llvm-svn: 124948
* lib/Target/X86/X86JITInfo.cpp: Add Win64 stuff.NAKAMURA Takumi2011-02-051-0/+8
| | | | llvm-svn: 124947
* Target/X86: Fix whitespace.NAKAMURA Takumi2011-02-053-7/+7
| | | | llvm-svn: 124946
* [AVX] Revert 124910 until clients are ready.David Greene2011-02-051-122/+0
| | | | llvm-svn: 124912
* [AVX] Add some utilities to insert and extract 128-bit subvectors.David Greene2011-02-041-0/+122
| | | | | | | | This allows us to easily support 256-bit operations that don't have native 256-bit support. This applies to integer operations, certain types of shuffles and various othher things. llvm-svn: 124910
* MC/AsmParser: Add support for allowing the conversion process to fail (viaDaniel Dunbar2011-02-041-0/+2
| | | | | | custom conversion functions). llvm-svn: 124872
* [AVX] Support VSINSERTF128 with more patterns and appropriateDavid Greene2011-02-044-0/+77
| | | | | | | infrastructure. This makes lowering 256-bit vectors to 128-bit vectors simple when 256-bit vector support is not available. llvm-svn: 124868
* [AVX] VEXTRACTF128 support. This commit includes patterns forDavid Greene2011-02-034-0/+76
| | | | | | | | | | matching EXTRACT_SUBVECTOR to VEXTRACTF128 along with support routines to examine and translate index values. VINSERTF128 comes next. With these two in place we can begin supporting more AVX operations as INSERT/EXTRACT can be used as a fallback when 256-bit support is not available. llvm-svn: 124797
* Fix PR9127 by reversing the operands even if they have more then one use.Rafael Espindola2011-02-031-2/+2
| | | | | | | | Reversing the operands allows us to fold, but doesn't force us to. Also, at this point the DAG is still being optimized, so the check for hasOneUse is not very precise. llvm-svn: 124773
* Fixed a bug in the disassembler where the mandatory 0x66Sean Callanan2011-02-021-0/+1
| | | | | | | | prefix would be misinterpreted in some cases on 32-bit x86 platforms. Thanks to Olivier Meurant for identifying the bug. llvm-svn: 124709
* Test commit - fix a double 'should' in a comment.Carl Norum2011-02-011-1/+1
| | | | llvm-svn: 124652
* Patches to build EFI with Clang/LLVM. By Carl Norum.Evan Cheng2011-02-016-16/+36
| | | | llvm-svn: 124639
* Keep track of incoming argument's location while emitting LiveIns.Devang Patel2011-01-311-4/+4
| | | | llvm-svn: 124611
* [AVX] Clean up the code to configure target lowering for AVX. SpecifyDavid Greene2011-01-271-73/+47
| | | | | | | how to lower more/new operations. This is a prerequisite for adding additional AVX lowering. llvm-svn: 124447
* Introduce virtual ParseRegister method in TargetAsmParser.Roman Divacky2011-01-271-2/+1
| | | | | | Create override of this method in X86/ARM/MBlaze. llvm-svn: 124378
* lib/Target/X86/X86ISelDAGToDAG.cpp: __main should be WINCALL64 on Win64.NAKAMURA Takumi2011-01-271-1/+1
| | | | | | CALL64 marks %xmm* as dead. llvm-svn: 124354
* [AVX] Add INSERT_SUBVECTOR and support it on x86. This provides aDavid Greene2011-01-262-1/+23
| | | | | | | | default implementation for x86, going through the stack in a similr fashion to how the codegen implements BUILD_VECTOR. Eventually this will get matched to VINSERTF128 if AVX is available. llvm-svn: 124307
* [AVX] Support EXTRACT_SUBVECTOR on x86. This provides a defaultDavid Greene2011-01-262-0/+13
| | | | | | | | implementation of EXTRACT_SUBVECTOR for x86, going through the stack in a similr fashion to how the codegen implements BUILD_VECTOR. Eventually this will get matched to VEXTRACTF128 if AVX is available. llvm-svn: 124292
* Target/X86: Tweak win64's tailcall.NAKAMURA Takumi2011-01-267-12/+49
| | | | llvm-svn: 124272
* Fix whitespace.NAKAMURA Takumi2011-01-266-132/+129
| | | | llvm-svn: 124270
OpenPOWER on IntegriCloud