- Oct 02, 2011
-
-
Craig Topper authored
Special case disassembler handling of REX.B prefix on NOP instruction to decode as XCHG R8D, EAX instead. Fixes PR10344. llvm-svn: 140971
-
- Oct 01, 2011
-
-
Craig Topper authored
llvm-svn: 140955
-
Craig Topper authored
Fix disassembler handling of CRC32 which is an odd instruction that uses 0xf2 as an opcode extension and allows the opsize prefix. This necessitated adding IC_XD_OPSIZE and IC_64BIT_XD_OPSIZE contexts. Unfortunately, this increases the size of the disassembler tables. Fixes PR10702. llvm-svn: 140954
-
Jakob Stoklund Olesen authored
This uses less memory and it reduces the complexity of sub-class operations: - hasSubClassEq() and friends become O(1) instead of O(N). - getCommonSubClass() becomes O(N) instead of O(N^2). In the future, TableGen will infer register classes. This makes it cheap to add them. llvm-svn: 140898
-
- Sep 29, 2011
-
-
Jakob Stoklund Olesen authored
This also makes it possible to reduce the number of pseudo instructions and get rid of the encoding information. llvm-svn: 140776
-
- Sep 28, 2011
-
-
Eli Friedman authored
llvm-svn: 140723
-
Jakob Stoklund Olesen authored
I'll clean up the source in the next commit. llvm-svn: 140663
-
Jakob Stoklund Olesen authored
This also enables domain swizzling for AVX code which required a few trivial test changes. The pass will be moved to lib/CodeGen shortly. llvm-svn: 140659
-
Jakob Stoklund Olesen authored
I am going to unify the SSEDomainFix and NEONMoveFix passes into a single target independent pass. They are essentially doing the same thing. llvm-svn: 140652
-
- Sep 26, 2011
-
-
Craig Topper authored
llvm-svn: 140515
-
- Sep 24, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 140441
-
- Sep 23, 2011
-
-
Duncan Sands authored
hadd/hsub intrinsics into the new fhadd/fhsub X86 node. llvm-svn: 140383
-
Eli Friedman authored
PR10991: make fast-isel correctly check whether accessing a global through an alias involves thread-local storage. (I'm not entirely sure how this is supposed to work, but this patch makes fast-isel consistent with the normal isel path.) llvm-svn: 140355
-
Jakob Stoklund Olesen authored
We already support GR64 <-> VR128 copies. All of these copies break partial register dependencies by zeroing the high part of the target register. llvm-svn: 140348
-
- Sep 22, 2011
-
-
Duncan Sands authored
floating point add/sub of appropriate shuffle vectors. Does not synthesize the 256 bit AVX versions because they work differently. llvm-svn: 140332
-
Craig Topper authored
Fix register printing in disassembling of push/pop of segment registers and in/out in Intel syntax mode. Fixes PR10960 llvm-svn: 140299
-
Benjamin Kramer authored
- x87: no min or max. - SSE1: min/max for single precision scalars and vectors. - SSE2: min/max for single and double precision scalars and vectors. - AVX: as SSE2, but also supports the wider ymm vectors. (this is covered by the isTypeLegal check) llvm-svn: 140296
-
Benjamin Kramer authored
llvm-svn: 140294
-
- Sep 21, 2011
-
-
Benjamin Kramer authored
Otherwise we'll spend a ridiculous amount of time pretty printing debug output and then discarding it. llvm-svn: 140276
-
Nadav Rotem authored
llvm-svn: 140258
-
Nadav Rotem authored
Insert a sanity check on the combining of x86 truncing-store nodes. This comes to replace the problematic check that was removed in r139995. llvm-svn: 140246
-
Richard Trieu authored
assert(!"error message"); To: assert(0 && "error message"); which is more consistant across the code base. llvm-svn: 140234
-
Owen Anderson authored
In the disassembler C API, be careful not to confuse the comment streamer that the disassembler outputs annotations on with the streamer that the InstPrinter will print them on. llvm-svn: 140217
-
Bruno Cardoso Lopes authored
llvm-svn: 140203
-
Bruno Cardoso Lopes authored
llvm-svn: 140199
-
- Sep 20, 2011
-
-
Bruno Cardoso Lopes authored
llvm-svn: 140186
-
Bruno Cardoso Lopes authored
This fixes PR10963. Thanks to Benjamin for finding the wrong tablegen declaration. llvm-svn: 140184
-
Bruno Cardoso Lopes authored
llvm-svn: 140183
-
Craig Topper authored
llvm-svn: 140140
-
Bruno Cardoso Lopes authored
llvm-svn: 140098
-
Bruno Cardoso Lopes authored
128-bit undef subvector insertion into a 256-bit vector llvm-svn: 140097
-
- Sep 19, 2011
-
-
Bruno Cardoso Lopes authored
PR10955 and PR10948. llvm-svn: 140069
-
- Sep 18, 2011
-
-
Nadav Rotem authored
llvm-svn: 140003
-
Nadav Rotem authored
llvm-svn: 140001
-
Nadav Rotem authored
dag-combine optimization to implement the ext-load efficiently (using shuffles). For example the type <4 x i8> is stored in memory as i32, but it needs to find its way into a <4 x i32> register. Previously we scalarized the memory access, now we use shuffles. llvm-svn: 139995
-
Craig Topper authored
llvm-svn: 139993
-
- Sep 17, 2011
-
-
Duncan Sands authored
maxps and maxpd). This broke the sse41-blend.ll testcase by causing maxpd to be produced rather than a cmp+blend pair, which is the reason I tweaked it. Gives a small speedup on doduc with dragonegg when the GCC vectorizer is used. llvm-svn: 139986
-
Bruno Cardoso Lopes authored
mayLoad = 1 llvm-svn: 139973
-
Bruno Cardoso Lopes authored
are declared with load patterns. This fix the crash in PR10941. No testcases, since a fold is triggered and then converted back to the register form afterwards. llvm-svn: 139953
-
- Sep 16, 2011
-
-
Bruno Cardoso Lopes authored
This PR basically reports a problem where a crash in generated code happened due to %rbp being clobbered: pushq %rbp movq %rsp, %rbp .... vmovmskps %ymm12, %ebp .... movq %rbp, %rsp popq %rbp ret Since Eric's r123367 commit, the default stack alignment for x86 32-bit has changed to be 16-bytes. Since then, the MaxStackAlignmentHeuristicPass hasn't been really used, but with AVX it becomes useful again, since per ABI compliance we don't always align the stack to 256-bit, but only when there are 256-bit incoming arguments. ReserveFP was only used by this pass, but there's no RA target hook that uses getReserveFP() to check for the presence of FP (since nothing was triggering the pass to run, the uses of getReserveFP() were removed through time without being noticed). Change this pass to use setForceFramePointer, which is properly called by MachineFunction hasFP method. The testcase is very big and dependent on RA, not sure if it's worth adding to test/CodeGen/X86. llvm-svn: 139939
-