| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
operator.
llvm-svn: 166779
|
|
|
|
| |
llvm-svn: 166724
|
|
|
|
|
|
| |
AsmParser logic. To be used/tested in a subsequent commit.
llvm-svn: 166714
|
|
|
|
| |
llvm-svn: 166698
|
|
|
|
|
|
|
|
|
|
|
|
| |
[register].field
The operator returns the value at the location pointed to by register plus the
offset of field within its structure or union. This patch only handles
immediate fields (i.e., [eax].4). The original displacement has to be a
MCConstantExpr as well.
Part of rdar://12470415 and rdar://12470514
llvm-svn: 166632
|
|
|
|
| |
llvm-svn: 166630
|
|
|
|
|
|
|
|
|
|
| |
see the offsetof operator. Previously, we were matching something like MOVrm
in the front-end and later matching MOVrr in the back-end. This change makes
things more consistent. It also fixes cases where we can't match against a
memory operand as the source (test cases coming).
Part of rdar://12470317
llvm-svn: 166592
|
|
|
|
|
|
|
| |
pointer, not the size of the variable.
Part of rdar://12470317
llvm-svn: 166526
|
|
|
|
| |
llvm-svn: 166525
|
|
|
|
|
|
|
|
| |
non-zero value as we don't know the actual value at this point. This is
necessary to get the matching correct in some cases. However, the actual value
set as the base register doesn't matter, since we're just matching not emitting.
llvm-svn: 166523
|
|
|
|
|
|
|
| |
on patch to r166433.
rdar://12470317
llvm-svn: 166488
|
|
|
|
|
|
| |
Part of rdar://12470317
llvm-svn: 166436
|
|
|
|
|
|
|
| |
CodeGen in the front-end not implemented yet.
rdar://12470317
llvm-svn: 166433
|
|
|
|
| |
llvm-svn: 166349
|
|
|
|
|
|
|
| |
a memory operand. Retain this information and then add the sizing directives
to the IR. This allows the backend to do proper instruction selection.
llvm-svn: 166316
|
|
|
|
|
|
| |
an instruction.
llvm-svn: 165955
|
|
|
|
| |
llvm-svn: 165947
|
|
|
|
|
|
|
|
|
|
|
| |
the interface between the front-end and the MC layer when parsing inline
assembly. Unfortunately, this is too deep into the parsing stack. Specifically,
we're unable to handle target-independent assembly (i.e., assembly directives,
labels, etc.). Note the MatchAndEmitInstruction() isn't the correct
abstraction either. I'll be exposing target-independent hooks shortly, so this
is really just a cleanup.
llvm-svn: 165858
|
|
|
|
| |
llvm-svn: 165847
|
|
|
|
|
|
| |
MapAndConstraints vector. Also remove the unused Kind argument.
llvm-svn: 165833
|
|
|
|
| |
llvm-svn: 165324
|
|
|
|
|
|
| |
segmented registers. Test case to come.
llvm-svn: 165275
|
|
|
|
| |
llvm-svn: 165069
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of operand is specific to MS-style inline assembly and should not be generated
when parsing normal assembly.
The purpose of the wildcard operands are to allow the AsmParser to match
multiple instructions (i.e., MCInsts) to a given ms-style asm statement. For
the time being the matcher just returns the first match. This patch only
implements wildcard matches for memory operands. Support for register
wildcards will be added in the near future.
llvm-svn: 165057
|
|
|
|
|
|
|
|
|
|
|
| |
map constraints and MCInst operands to inline asm operands. This replaces the
getMCInstOperandNum() function.
The logic to determine the constraints are not in place, so we still default to
a register constraint (i.e., "r"). Also, we no longer build the MCInst but
rather return just the opcode to get the MCInstrDesc.
llvm-svn: 164979
|
|
|
|
| |
llvm-svn: 164611
|
|
|
|
|
|
| |
Also remove an unused argument.
llvm-svn: 164567
|
|
|
|
| |
llvm-svn: 164548
|
|
|
|
| |
llvm-svn: 164420
|
|
|
|
| |
llvm-svn: 164415
|
|
|
|
| |
llvm-svn: 163729
|
|
|
|
| |
llvm-svn: 163649
|
|
|
|
| |
llvm-svn: 163648
|
|
|
|
| |
llvm-svn: 163542
|
|
|
|
|
|
|
|
|
| |
registers.
gas accepts this and it seems to be common enough to be worth supporting. This
doesn't affect the parsing of reg operands outside of .cfi directives.
llvm-svn: 163390
|
|
|
|
| |
llvm-svn: 163187
|
|
|
|
|
|
|
| |
the NumMCOperands argument to the GetMCInstOperandNum() function that is set
to the number of MCOperands this asm operand mapped to.
llvm-svn: 163124
|
|
|
|
|
|
| |
MCTargetAsmParser class.
llvm-svn: 163122
|
|
|
|
| |
llvm-svn: 163104
|
|
|
|
|
|
|
|
|
|
| |
MatchInstructionImpl() function.
These values are used by the ConvertToMCInst() function to index into the
ConversionTable. The values are also needed to call the GetMCInstOperandNum()
function.
llvm-svn: 163101
|
|
|
|
|
|
| |
Match_ConversionFail enum.
llvm-svn: 163002
|
|
|
|
| |
llvm-svn: 162807
|
|
|
|
|
|
|
|
|
|
|
| |
Assertion failed: (Start.isValid() == End.isValid() && "Start and end should
either both be valid or both be invalid!")
when parsing inline asm. SMLoc assumes that the first char * in the source is
invalid. However, when parsing an inline asm the mnemonic is at this location.
I don't want to change SMLoc, so use a trivial workaround.
llvm-svn: 162381
|
|
|
|
| |
llvm-svn: 162306
|
|
|
|
|
|
|
|
|
| |
this is the index of the operand that failed to match.
Note: This may cause a buildbot failure due to an API mismatch in clang. Should
recover with my next commit to clang.
llvm-svn: 162295
|
|
|
|
|
|
|
|
|
|
| |
This new API will be used by clang to parse ms-style inline asms.
One goal of this project is to use this style of inline asm for targets other
then x86. Therefore, this API needs to be implemented for non-x86 targets at
some point in the future.
llvm-svn: 161624
|
|
|
|
| |
llvm-svn: 160425
|
|
|
|
| |
llvm-svn: 160423
|
|
|
|
|
|
| |
instructions. Also fix Intel syntax for gather instructions to use 'DWORD PTR' or 'QWORD PTR' to match gas.
llvm-svn: 160420
|
|
|
|
| |
llvm-svn: 159300
|