- Oct 10, 2011
-
-
Benjamin Kramer authored
llvm-svn: 141563
-
Craig Topper authored
llvm-svn: 141527
-
- Oct 09, 2011
-
-
Craig Topper authored
llvm-svn: 141505
-
- Oct 08, 2011
-
-
Jakob Stoklund Olesen authored
A GR8_NOREX virtual register is created when extrating a sub_8bit_hi sub-register: %vreg2<def> = COPY %vreg1:sub_8bit_hi; GR8_NOREX:%vreg2 %GR64_ABCD:%vreg1 TEST8ri_NOREX %vreg2, 1, %EFLAGS<imp-def>; GR8_NOREX:%vreg2 If such a live range is ever split, its register class must not be inflated to GR8. The sub-register copy can only target GR8_NOREX. I dont have a test case for this theoretical bug. llvm-svn: 141500
-
Jakob Stoklund Olesen authored
In 64-bit mode, sub_8bit_hi sub-registers can only be used by NOREX instructions. The COPY created from the EXTRACT_SUBREG DAG node cannot target all GR8 registers, only those in GR8_NOREX. TO enforce this, we ensure that all instructions using the EXTRACT_SUBREG are GR8_NOREX constrained. This fixes PR11088. llvm-svn: 141499
-
- Oct 07, 2011
-
-
Jakob Stoklund Olesen authored
This instruction is explicitly encoded without an REX prefix, so both operands but be *_NOREX. Also add an assertion to copyPhysReg() that fires when the MOV8rr_NOREX constraints are not satisfied. This fixes a miscompilation in 20040709-2 in the gcc test suite. llvm-svn: 141410
-
-
Craig Topper authored
llvm-svn: 141358
-
Craig Topper authored
llvm-svn: 141354
-
Craig Topper authored
Revert part of r141274. Only need to change encoding for xchg %eax, %eax in 64-bit mode. This is because in 64-bit mode xchg %eax, %eax implies zeroing the upper 32-bits of RAX which makes it not a NOP. In 32-bit mode using NOP encoding is fine. llvm-svn: 141353
-
- Oct 06, 2011
-
-
Craig Topper authored
Fix assembling of xchg %eax, %eax to not use the NOP encoding of 0x90. This was done by creating a new register group that excludes AX registers. Fixes PR10345. Also added aliases for flipping the order of the operands of xchg <reg>, %eax. llvm-svn: 141274
-
Peter Collingbourne authored
llvm-svn: 141266
-
- Oct 05, 2011
-
-
Jakob Stoklund Olesen authored
There are fewer registers with sub_8bit sub-registers in 32-bit mode than in 64-bit mode. In 32-bit mode, sub_8bit behaves the same as sub_8bit_hi. llvm-svn: 141206
-
Craig Topper authored
llvm-svn: 141162
-
Owen Anderson authored
Teach the MC to output code/data region marker labels in MachO and ELF modes. These are used by disassemblers to provide better disassembly, particularly on targets like ARM Thumb that like to intermingle data in the TEXT segment. llvm-svn: 141135
-
- Oct 04, 2011
-
-
Craig Topper authored
Add support in the disassembler for ignoring the L-bit on certain VEX instructions. Mark instructions that have this behavior. Fixes PR10676. llvm-svn: 141065
-
- Oct 03, 2011
-
-
Craig Topper authored
Add support for MOVBE and RDRAND instructions for the assembler and disassembler. Includes feature flag checking, but no instrinsic support. Fixes PR10832, PR11026 and PR11027. llvm-svn: 141007
-
Craig Topper authored
Treat VEX.vvvv as a 3-bit field outside of 64-bit mode. Prevents access to registers xmm8-xmm15 outside 64-bit mode. llvm-svn: 140997
-
Craig Topper authored
llvm-svn: 140993
-
- Oct 02, 2011
-
-
Craig Topper authored
Fix some Intel syntax disassembly issues with instructions that implicitly use AL/AX/EAX/RAX such as ADD/SUB/ADC/SUBB/XOR/OR/AND/CMP/MOV/TEST. llvm-svn: 140974
-
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
-