summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86
Commit message (Collapse)AuthorAgeFilesLines
* add the missing aliases for fp stack cmovs, rdar://8456391Chris Lattner2010-09-221-0/+6
| | | | llvm-svn: 114531
* reimplement elf TLS support in terms of addressing modes, eliminating ↵Chris Lattner2010-09-224-58/+42
| | | | | | SegmentBaseAddress. llvm-svn: 114529
* Fix rdar://8456364 - llvm-mc rejects '%CS'Chris Lattner2010-09-221-8/+13
| | | | llvm-svn: 114528
* fix rdar://8456389 - llvm-mc mismatch with 'as' on 'fstp'Chris Lattner2010-09-221-0/+8
| | | | | | | | | -This line, and those below, will be ignored-- M test/MC/AsmParser/X86/x86_instructions.s M lib/Target/X86/AsmParser/X86AsmParser.cpp llvm-svn: 114527
* fix rdar://8456361 - llvm-mc rejects 'rep movsd'Chris Lattner2010-09-221-0/+6
| | | | llvm-svn: 114526
* convert the last 4 X86ISD nodes that should have memoperands to have them.Chris Lattner2010-09-224-41/+69
| | | | llvm-svn: 114523
* give X86ISD::FNSTCW16m a memoperand, since it touches memory. It onlyChris Lattner2010-09-223-16/+21
| | | | | | can access the stack due to how it is generated though. llvm-svn: 114522
* give FP_TO_INT16_IN_MEM and friends a memoperand. They are onlyChris Lattner2010-09-224-22/+29
| | | | | | used with stack slots, but hey, lets be safe. llvm-svn: 114521
* give VZEXT_LOAD a memory operand, it now works with segment registers.Chris Lattner2010-09-225-13/+14
| | | | llvm-svn: 114515
* revert r114386 now that address modes work correctly, we get a niceChris Lattner2010-09-221-4/+0
| | | | | | call through gs-relative memory now. llvm-svn: 114510
* give LCMPXCHG_DAG[8] a memory operand, allowing it to work with addrspace ↵Chris Lattner2010-09-213-10/+11
| | | | | | 256/257 llvm-svn: 114508
* reimplement support for GS and FS relative address space matchingChris Lattner2010-09-213-57/+44
| | | | | | | | | | | | | | | | | by having X86DAGToDAGISel::SelectAddr get passed in the parent node of the operand match (the load/store/atomic op) and having it get the address space from that, instead of having special FS/GS addr mode operations that require duplicating the entire instruction set to support. This makes FS and GS relative accesses *far* more predictable and work much better. It also simplifies the X86 backend a bit, more to come. There is still a pending issue with nodes like ISD::PREFETCH and X86ISD::FLD, which really should be MemSDNode's but aren't. llvm-svn: 114491
* Reimplement r114460 in target-independent DAGCombine rather than ↵Owen Anderson2010-09-212-23/+15
| | | | | | | | | target-dependent, by using the predicate to discover the number of sign bits. Enhance X86's target lowering to provide a useful response to this query. llvm-svn: 114473
* fix a long standing wart: all the ComplexPattern's were beingChris Lattner2010-09-212-14/+16
| | | | | | | | | | | passed the root of the match, even though only a few patterns actually needed this (one in X86, several in ARM [which should be refactored anyway], and some in CellSPU that I don't feel like detangling). Instead of requiring all ComplexPatterns to take the dead root, have targets opt into getting the root by putting SDNPWantRoot on the ComplexPattern. llvm-svn: 114471
* even though I'm about to rip it out, simplify the address mode stuffChris Lattner2010-09-212-28/+13
| | | | llvm-svn: 114468
* convert a couple more places to use the new getStore()Chris Lattner2010-09-211-4/+5
| | | | llvm-svn: 114463
* When adding the carry bit to another value on X86, exploit the fact that the ↵Owen Anderson2010-09-211-0/+23
| | | | | | | | | | | carry-materialization (sbbl x, x) sets the registers to 0 or ~0. Combined with two's complement arithmetic, we can fold the intermediate AND and the ADD into a single SUB. This fixes <rdar://problem/8449754>. llvm-svn: 114460
* eliminate some uses of the getStore overload.Chris Lattner2010-09-211-35/+48
| | | | llvm-svn: 114453
* propagate MachinePointerInfo through various uses of the oldChris Lattner2010-09-211-2/+3
| | | | | | SelectionDAG::getExtLoad overload, and eliminate it. llvm-svn: 114446
* convert the targets off the non-MachinePointerInfo of getLoad.Chris Lattner2010-09-211-4/+2
| | | | llvm-svn: 114410
* it's more elegant to put the "getConstantPool" andChris Lattner2010-09-212-25/+23
| | | | | | | | "getFixedStack" on the MachinePointerInfo class. While this isn't the problem I'm setting out to solve, it is the right way to eliminate PseudoSourceValue, so lets go with it. llvm-svn: 114406
* update the X86 backend to use the MachinePointerInfo version of oneChris Lattner2010-09-211-38/+44
| | | | | | | of the getLoad methods. This fixes at least one bug where an incorrect svoffset is passed in (a potential combiner-aa miscompile). llvm-svn: 114404
* Fix a bug where the x86 backend would lower memcpy/memset of segment ↵Chris Lattner2010-09-211-0/+9
| | | | | | | | relative operations into non-segment-relative copies. llvm-svn: 114402
* reimplement memcpy/memmove/memset lowering to use MachinePointerInfoChris Lattner2010-09-213-20/+16
| | | | | | | instead of srcvalue/offset pairs. This corrects SV info for mem operations whose size is > 32-bits. llvm-svn: 114401
* convert targets to the new MF.getMachineMemOperand interface.Chris Lattner2010-09-212-5/+6
| | | | llvm-svn: 114391
* fix rdar://8453210, a crash handling a call through a GS relative load.Chris Lattner2010-09-211-1/+7
| | | | | | For now, just disable folding the load into the call. llvm-svn: 114386
* X86Subtarget.h: Fix Cygwin's TD.NAKAMURA Takumi2010-09-181-1/+1
| | | | llvm-svn: 114297
* Avoid emitting a PIC base register if no PIC addresses are needed.Dan Gohman2010-09-171-2/+8
| | | | | | This fixes rdar://8396318. llvm-svn: 114201
* fix rdar://8444631 - encoder crash on 'enter'Chris Lattner2010-09-174-4/+18
| | | | | | What a weird instruction. llvm-svn: 114190
* fix rdar://8438816 - unrecognized 'fildq' instructionChris Lattner2010-09-161-1/+2
| | | | llvm-svn: 114116
* lcall and ljmp always default to lcalll and ljmpl. This finallyChris Lattner2010-09-151-10/+8
| | | | | | wraps up r8418316 llvm-svn: 113949
* apparently jmpl $1,$2 is an alias for ljmpl, similiarlyChris Lattner2010-09-151-0/+21
| | | | | | for call. Add this. llvm-svn: 113948
* Disambiguate lcall/ljmp to the 32-bit version. This happensChris Lattner2010-09-151-0/+10
| | | | | | even in 64-bit mode apparently. llvm-svn: 113945
* fix the encoding of sldt GR16 to have the 0x66 prefix, andChris Lattner2010-09-151-1/+3
| | | | | | | add sldt GR32, which isn't documented in the intel manual but which gas accepts. Part of rdar://8418316 llvm-svn: 113938
* implement aliases for shld/shrd, part of rdar://8418316Chris Lattner2010-09-151-0/+9
| | | | llvm-svn: 113937
* fix rdar://8431880 - rcl/rcr with no shift amount not recognizedChris Lattner2010-09-151-1/+9
| | | | llvm-svn: 113936
* add various broken forms of fnstsw. I didn't add the %raxChris Lattner2010-09-151-0/+19
| | | | | | | version because it adds a prefix and makes even less sense than the other broken forms. This wraps up rdar://8431422 llvm-svn: 113932
* add some aliases for f[u]comi, part of rdar://8431422Chris Lattner2010-09-151-7/+9
| | | | llvm-svn: 113930
* add a bunch of aliases for fp operations with no operand,Chris Lattner2010-09-151-5/+22
| | | | | | rdar://8431422 llvm-svn: 113929
* Diagnose invalid instructions like "incl" with "too few operands for ↵Chris Lattner2010-09-151-2/+4
| | | | | | | | | instruction" instead of crashing. This fixes: rdar://8431815 - crash when invalid operand is one that isn't present llvm-svn: 113921
* trailing whitespaceJim Grosbach2010-09-151-25/+25
| | | | llvm-svn: 113915
* add a terrible hack to allow out with dx is parens, a gas bug.Chris Lattner2010-09-141-0/+14
| | | | | | This fixes PR8114 llvm-svn: 113894
* Revert "CMake: Get rid of LLVMLibDeps.cmake and export the libraries normally."Michael J. Spencer2010-09-134-23/+2
| | | | | | | | | | This reverts commit r113632 Conflicts: cmake/modules/AddLLVM.cmake llvm-svn: 113819
* Fix typos. 128-bit PSHUFB takes 128-bit memory op.Dale Johannesen2010-09-132-2/+2
| | | | | | v8i16 is not an MMX type; put it where it belongs. llvm-svn: 113785
* Added skeleton for inline asm multiple alternative constraint support.John Thompson2010-09-132-0/+34
| | | | llvm-svn: 113766
* add a missed cmov alias, part of rdar://8416805Chris Lattner2010-09-111-0/+2
| | | | llvm-svn: 113693
* add support for all the setCC aliases. Part of rdar://8416805Chris Lattner2010-09-111-16/+14
| | | | llvm-svn: 113692
* add support for pushfd/popfd which are aliases for pushfl/popfl.Chris Lattner2010-09-111-0/+2
| | | | | | This fixes rdar://8408129 - pushfd and popfd get invalid instruction mnemonic errors llvm-svn: 113690
* implement rdar://8407928 - support for in/out with a missing "a" register.Chris Lattner2010-09-111-1/+33
| | | | llvm-svn: 113689
* fix the asmparser so that the target is responsible for skipping toChris Lattner2010-09-111-3/+9
| | | | | | | | | | | | | | the end of the line on a parser error, allowing skipping to happen for syntactic errors but not for semantic errors. Before we would miss emitting a diagnostic about the second line, because we skipped it due to the semantic error on the first line: foo %eax bar %al This fixes rdar://8414033 - llvm-mc ignores lines after an invalid instruction mnemonic errors llvm-svn: 113688
OpenPOWER on IntegriCloud