| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 113167
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
failed because a subtarget feature was not enabled. Use this to
remove a bunch of hacks from the X86AsmParser for rejecting things
like popfl in 64-bit mode. Previously these hacks weren't needed,
but were important to get a message better than "invalid instruction"
when used in the wrong mode.
This also fixes bugs where pushal would not be rejected correctly in
32-bit mode (just pusha).
llvm-svn: 113166
|
|
|
|
| |
llvm-svn: 113165
|
|
|
|
|
|
|
| |
into the middle of the class, and rework how the different sections of
the generated file are conditionally included for simplicity.
llvm-svn: 113163
|
|
|
|
| |
llvm-svn: 113157
|
|
|
|
|
|
| |
taking immediates.
llvm-svn: 111950
|
|
|
|
| |
llvm-svn: 111947
|
|
|
|
|
|
| |
for 'as' compatibility.
llvm-svn: 111945
|
|
|
|
| |
llvm-svn: 111343
|
|
|
|
|
|
| |
because it could have an ambiguous suffix.
llvm-svn: 110890
|
|
|
|
|
|
| |
instructions onto the target specific parser, which can do a better job.
llvm-svn: 110889
|
|
|
|
| |
llvm-svn: 110790
|
|
|
|
| |
llvm-svn: 109295
|
|
|
|
| |
llvm-svn: 109276
|
|
|
|
| |
llvm-svn: 109248
|
|
|
|
|
|
| |
assembling; remove crufty custom cleanup code.
llvm-svn: 108681
|
|
|
|
|
|
|
|
| |
attributes as part of the matcher.
- Currently includes a hack to limit ourselves to "In32BitMode" and "In64BitMode", because we don't have the other infrastructure to properly deal with setting SSE, etc. features on X86.
llvm-svn: 108677
|
|
|
|
|
|
| |
- Unfortunate, but necessary for now to handle subtarget instruction matching. Eventually we should factor out the lower level target machine information so we don't need to do this.
llvm-svn: 108664
|
|
|
|
| |
llvm-svn: 108366
|
|
|
|
| |
llvm-svn: 108265
|
|
|
|
| |
llvm-svn: 107823
|
|
|
|
|
|
| |
rdar://8013734
llvm-svn: 106725
|
|
|
|
|
|
| |
understand the vcmp instruction
llvm-svn: 106678
|
|
|
|
|
|
|
|
|
|
|
|
| |
instruction. Added the 64-bit version "jrcxz" so it is recognized and also
added the checks for incorrect uses of "jcxz" in 64-bit mode and "jrcxz" in
32-bit mode. Still to do is to correctly handle the encoding of the
instruction adding the Address-size override prefix byte, 0x67, when the width
of the count register is not the same as the mode the machine is running in.
Which for example means the encoding of "jecxz" depends if you are assembling
as a 32-bit target or a 64-bit target.
llvm-svn: 105661
|
|
|
|
| |
llvm-svn: 105005
|
|
|
|
| |
llvm-svn: 105001
|
|
|
|
| |
llvm-svn: 104890
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
are st(0). These can be encoded using an opcode for storing in st(0) or using
an opcode for storing in st(i), where i can also be 0. To allow testing with
the darwin assembler and get a matching binary the opcode for storing in st(0)
is now used. To do this the same logical trick is use from the darwin assembler
in converting things like this:
fmul %st(0), %st
into this:
fmul %st(0)
by looking for the second operand being X86::ST0 for specific floating point
mnemonics then removing the second X86::ST0 operand. This also has the add
benefit to allow things like:
fmul %st(1), %st
that llvm-mc did not assemble.
llvm-svn: 104634
|
|
|
|
| |
llvm-svn: 104626
|
|
|
|
| |
llvm-svn: 104549
|
|
|
|
|
|
|
|
|
|
|
| |
immediates based on the width of the target instruction. For example:
addw $0xFFFF, %ax
should match the same as
addw $-1, %ax
but we used to match it to the longer encoding.
llvm-svn: 104453
|
|
|
|
| |
llvm-svn: 104435
|
|
|
|
| |
llvm-svn: 104394
|
|
|
|
| |
llvm-svn: 104272
|
|
|
|
|
|
| |
instructions.
llvm-svn: 104231
|
|
|
|
|
|
| |
after testing before committing.
llvm-svn: 103681
|
|
|
|
| |
llvm-svn: 103677
|
|
|
|
|
|
|
|
| |
lower them to the correct x86-64 instructions since we
don't have a clean way to handle this in td files yet.
rdar://7947184
llvm-svn: 103668
|
|
|
|
| |
llvm-svn: 103535
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instructions which have no direct register usage.
Darwin 'as' accepts:
add $0, (%rax)
but rejects
mov $0, (%rax)
for example.
Given that, only accept suffix matches which match exactly one form. We still
need to emit nice diagnostics for failures...
llvm-svn: 103015
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- The idea is that when a match fails, we just try to match each of +'b', +'w',
+'l'. If exactly one matches, we assume this is a mnemonic prefix and accept
it. If all match, we assume it is width generic, and take the 'l' form.
- This would be a horrible hack, if it weren't so simple. Therefore it is an
elegant solution! Chris gets the credit for this particular elegant
solution. :)
- Next step to making this more robust is to have the X86 matcher generate the
mnemonic prefix information. Ideally we would also compute up-front exactly
which mnemonic to attempt to match, but this may require more custom code in
the matcher than is really worth it.
llvm-svn: 103012
|
|
|
|
|
|
| |
in memory operands. rdar://7874844
llvm-svn: 101661
|
|
|
|
|
|
| |
believe this fixes the last memory leaks under test/MC.
llvm-svn: 99102
|
|
|
|
|
|
|
|
| |
temporary workaround for matching inc/dec on x86_64 to the correct instruction.
- This hack will eventually be replaced with a robust mechanism for handling
matching instructions based on the available target features.
llvm-svn: 98858
|
|
|
|
|
|
| |
other functionality on 403.gcc compiled at -O0.
llvm-svn: 98405
|
|
|
|
| |
llvm-svn: 96055
|
|
|
|
|
|
| |
x86_32-encoding.s in on expectation of it passing.
llvm-svn: 95806
|
|
|
|
| |
llvm-svn: 95634
|
|
|
|
| |
llvm-svn: 95627
|
|
|
|
|
|
|
|
|
|
| |
Lock prefix, Repeat string operation prefixes and the Segment override prefixes.
Also added versions of the move string and store string instructions without the
repeat prefixes to X86InstrInfo.td. And finally marked the rep versions of
move/store string records in X86InstrInfo.td as isCodeGenOnly = 1 so tblgen is
happy building the disassembler files.
llvm-svn: 95252
|