| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
In att style asm syntax memory operand size is derived from suffix attached with mnemonic. In intel style asm syntax it is part of memory operand hence predicate method check is required to select appropriate instruction.
llvm-svn: 148006
|
|
|
|
|
|
| |
predicates. Another commit will remove orAVX functions from X86SubTarget.
llvm-svn: 147841
|
|
|
|
|
|
| |
instructions that were added along with SSE instructions to check for AVX in addition to SSE level.
llvm-svn: 147762
|
|
|
|
| |
llvm-svn: 147411
|
|
|
|
|
|
| |
is enabled. Fix monitor and mwait to require SSE3 or AVX, previously they worked even if SSE3 was disabled. Make prefetch instructions not set the execution domain since they don't use XMM registers.
llvm-svn: 147409
|
|
|
|
| |
llvm-svn: 146407
|
|
|
|
| |
llvm-svn: 146246
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
led to the following code in X86Subtarget.cpp
if (HasAVX)
X86SSELevel = NoMMXSSE;
This is so patterns that are predicated on hasSSE3, etc. would not be selected when avx is available. Instead, the AVX variant is selected.
However, this breaks instructions which do not have AVX variants.
The right way to fix this is for the SSE but not-AVX patterns to predicate on something like hasSSE3() && !hasAVX().
Then we can take out the hack in X86Subtarget.cpp. Patterns which do not have AVX variants do not need to change.
However, we need to audit all the patterns before we make the change. This patch is workaround that fixes one specific case,
the prefetch instructions. rdar://10538297
llvm-svn: 146163
|
|
|
|
|
|
|
|
|
| |
Like V_SET0, these instructions are expanded by ExpandPostRA to xorps /
vxorps so they can participate in execution domain swizzling.
This also makes the AVX variants redundant.
llvm-svn: 145440
|
|
|
|
| |
llvm-svn: 145121
|
|
|
|
|
|
| |
add AVX2 feature flag.
llvm-svn: 143319
|
|
|
|
|
|
|
| |
not depend on In32BitMode. Use the sysexitq mnemonic for the version with the
REX.W prefix and only allow it only In64BitMode. rdar://9738584
llvm-svn: 143112
|
|
|
|
|
|
| |
custom isel lowering code.
llvm-svn: 142642
|
|
|
|
| |
llvm-svn: 142480
|
|
|
|
| |
llvm-svn: 142338
|
|
|
|
| |
llvm-svn: 142141
|
|
|
|
| |
llvm-svn: 142122
|
|
|
|
|
|
| |
3 instead of Operand 2 so needs special casing in the disassembler and code emitter. Ultimately, should pass this information from tablegen
llvm-svn: 142105
|
|
|
|
|
|
| |
because these are the first VEX encoded instructions to use the reg field as an opcode extension.
llvm-svn: 142082
|
|
|
|
| |
llvm-svn: 141947
|
|
|
|
|
|
| |
processor which is gcc's name for Haswell.
llvm-svn: 141939
|
|
|
|
|
|
|
|
|
|
| |
TableGen infers unmodeled side effects on instructions without a
pattern. Fix some instruction definitions where that was overlooked.
Also raise an error if a rematerializable instruction has unmodeled side
effects. That doen't make any sense.
llvm-svn: 141929
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
http://lab.llvm.org:8011/builders/llvm-x86_64-linux/builds/101
--- Reverse-merging r141854 into '.':
U test/MC/Disassembler/X86/x86-32.txt
U test/MC/Disassembler/X86/simple-tests.txt
D test/CodeGen/X86/bmi.ll
U lib/Target/X86/X86InstrInfo.td
U lib/Target/X86/X86ISelLowering.cpp
U lib/Target/X86/X86.td
U lib/Target/X86/X86Subtarget.h
llvm-svn: 141857
|
|
|
|
|
|
| |
processor which is gcc's name for Haswell.
llvm-svn: 141854
|
|
|
|
| |
llvm-svn: 141853
|
|
|
|
|
|
| |
modifying EFLAGS.
llvm-svn: 141656
|
|
|
|
| |
llvm-svn: 141651
|
|
|
|
|
|
| |
atom)
llvm-svn: 141563
|
|
|
|
|
|
| |
disassembler.
llvm-svn: 141505
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
disassembler. Includes feature flag checking, but no instrinsic support. Fixes PR10832, PR11026 and PR11027.
llvm-svn: 141007
|
|
|
|
|
|
| |
use AL/AX/EAX/RAX such as ADD/SUB/ADC/SUBB/XOR/OR/AND/CMP/MOV/TEST.
llvm-svn: 140974
|
|
|
|
|
|
| |
blank. Also fixed scas, and cmps to always print size suffix in Intel syntax since its abiguous without arguments. Fixes PR10875.
llvm-svn: 139353
|
|
|
|
|
|
|
| |
instructions are more aligned than the CPU requires, and adds some additional
directives, to follow in future patches. Patch by David Meyer!
llvm-svn: 139125
|
|
|
|
|
|
|
|
|
|
|
|
| |
from DYNAMIC_STACKALLOC.
Two new pseudo instructions (SEG_ALLOCA_32 and SEG_ALLOCA_64) which
will match X86SegAlloca (based on word size) are also added. They
will be custom emitted to inject the actual stack handling code.
Patch by Sanjoy Das.
llvm-svn: 138814
|
|
|
|
| |
llvm-svn: 138660
|
|
|
|
| |
llvm-svn: 138285
|
|
|
|
|
|
|
|
|
|
|
|
| |
llvm-mc gives an "invalid operand" error for instructions that take an unsigned
immediate which have the high bit set such as:
pblendw $0xc5, %xmm2, %xmm1
llvm-mc treats all x86 immediates as signed values and range checks them.
A small number of x86 instructions use the imm8 field as a set of bits.
This change only changes those instructions and where the high bit is not
ignored. The others remain unchanged.
llvm-svn: 136287
|
|
|
|
| |
llvm-svn: 135198
|
|
|
|
|
|
|
|
|
|
| |
- Each target asm parser now creates its own MCSubtatgetInfo (if needed).
- Changed AssemblerPredicate to take subtarget features which tablegen uses
to generate asm matcher subtarget feature queries. e.g.
"ModeThumb,FeatureThumb2" is translated to
"(Bits & ModeThumb) != 0 && (Bits & FeatureThumb2) != 0".
llvm-svn: 134678
|
|
|
|
|
|
| |
push with a small constant produces a 2-byte push.
llvm-svn: 134501
|
|
|
|
|
|
| |
rdar://problem/5993888
llvm-svn: 132606
|
|
|
|
| |
llvm-svn: 132479
|
|
|
|
| |
llvm-svn: 132424
|
|
|
|
| |
llvm-svn: 132419
|
|
|
|
|
|
|
|
| |
floating-point comparison, generate a mask of 0s or 1s, and generally
DTRT with NaNs. Only profitable when the user wants a materialized 0
or 1 at runtime. rdar://problem/5993888
llvm-svn: 132404
|
|
|
|
| |
llvm-svn: 131874
|
|
|
|
|
|
| |
rdar://problem/8614450
llvm-svn: 131746
|
|
|
|
|
|
|
|
| |
llvm is built with unsigned chars where an immediate such as 0xff would be zero
extended to 64-bits, turning "cmp $0xff,%eax" into
"cmp $0xffffffffffffffff,%eax".
llvm-svn: 129845
|