tg74
15cc00164a
bugfix avx512 - process operand-extention e.g. {SAE} correctly
...
git-svn-id: branches/tg74/avx512@39653 -
2018-08-20 13:30:17 +00:00
tg74
2b1da37d66
new avx512 instructions and bugfixes avx512
...
git-svn-id: branches/tg74/avx512@39636 -
2018-08-19 10:18:32 +00:00
tg74
867d145e50
support vector operand bcst,{sae},{er} + k-register
...
git-svn-id: branches/tg74/avx512@39457 -
2018-07-16 17:06:57 +00:00
tg74
4dc5442fa5
support vector operand writemask,zeroflag
...
git-svn-id: branches/tg74/avx512@39359 -
2018-07-02 20:20:03 +00:00
tg74
31e4d4ef5e
AVX512 support for MMRegister xmm16..31 and ymm16..31, zmm0..31, vpaddsb support AVX512
...
git-svn-id: branches/tg74/avx512@39196 -
2018-06-08 06:53:35 +00:00
nickysn
8a32d7c663
+ also support constants like 'dd [5]' in the intel syntax inline asm (for BP7
...
compatibility)
git-svn-id: trunk@38855 -
2018-04-27 11:21:51 +00:00
nickysn
a8a627f334
- removed the _count_asmdirectives and _count_asmoperators constants from the
...
rax86int unit. Instead, the _asmoperators and _asmdirectives arrays now use
tasmtoken directly as index.
git-svn-id: trunk@38854 -
2018-04-27 11:02:54 +00:00
nickysn
16e0172021
+ partial support for BP7 reference-like inline asm constants
...
git-svn-id: trunk@38850 -
2018-04-26 14:31:13 +00:00
nickysn
74f5436563
* also replaced the 3 boolean output parameters of tx86intreader.BuildConstSymbolExpression with a set
...
git-svn-id: trunk@38833 -
2018-04-24 15:40:37 +00:00
nickysn
e05c0d0168
* replaced the 3 boolean input parameters of tx86intreader.BuildConstSymbolExpression with a set
...
git-svn-id: trunk@38832 -
2018-04-24 14:59:39 +00:00
nickysn
602dd31a45
+ added a warning for using cs/ds/es/ss segment overrides in inline assembly on
...
the x86_64 target
git-svn-id: trunk@38517 -
2018-03-13 14:41:21 +00:00
nickysn
daf13d8750
* print a "Cannot use local variable or parameters here" error (instead of
...
internal error) in case of expressions that add two local variables using the
[expr1[expr2]] syntax
git-svn-id: trunk@38514 -
2018-03-13 12:25:54 +00:00
nickysn
77c782c89b
* when adding OPR_LOCAL with OPR_REFERENCE in tx86intreader.AddReferences, add
...
the offsets correctly:
1) localconstoffset is added with constoffset
2) localsymofs is added with ref.offset
git-svn-id: trunk@38470 -
2018-03-09 14:17:19 +00:00
nickysn
68be282507
+ support adding an OPR_REFERENCE to a OPR_LOCAL in the x86 intel syntax asm
...
reader; this fixes stuff like 'mov ax,cs:localvar[5]'
git-svn-id: trunk@38457 -
2018-03-08 14:32:31 +00:00
nickysn
6e79c8ba86
+ support adding an OPR_LOCAL to a OPR_REFERENCE in
...
tx86intreader.AddReferences(); this allows things like mov ax,[cs:[local]] to
work
git-svn-id: trunk@38444 -
2018-03-07 17:31:25 +00:00
nickysn
d3cb61b651
* refactored tx86intreader.AddReferences to use a pair of case statements,
...
depending on the combination of operand types; this is done, so that adding
OPR_LOCAL with OPR_REFERENCE operands can be supported later.
git-svn-id: trunk@38443 -
2018-03-07 16:43:39 +00:00
nickysn
df6a870873
* print an "invalid segment override expression" error message in case a segment
...
override uses an invalid (non-segment) register in the x86 inline asm reader
(both for intel and att syntax)
git-svn-id: trunk@38391 -
2018-03-01 15:34:16 +00:00
nickysn
c93c15429d
+ introduce tx86intreader.SetSegmentOverride(); using it everywhere adds more
...
checks for duplicated segment overrides (which cause a warning in TP mode and
an error in all the other compiler modes)
git-svn-id: trunk@38384 -
2018-02-28 17:16:50 +00:00
nickysn
6f8abde786
+ support [const+[ref]] in the x86 intel syntax asm reader
...
git-svn-id: trunk@38383 -
2018-02-28 16:24:45 +00:00
nickysn
8ffde52974
+ also support [expr1]+[expr2] for adding references in the x86 intel syntax asm reader
...
git-svn-id: trunk@38381 -
2018-02-28 15:48:48 +00:00
nickysn
9c814e42c9
+ support segment overrides inside references (e.g. [es:bx]) in the x86 intel
...
syntax inline asm reader
git-svn-id: trunk@38365 -
2018-02-27 17:29:46 +00:00
nickysn
1cf1ab8ab9
* consume the register in the reference before the check for invalid reference
...
syntax in the x86 intel syntax asm reader; this is preparation for support of
segment overrides inside the reference expression (i.e. [es:bx] instead of
es:[bx])
git-svn-id: trunk@38363 -
2018-02-27 16:35:55 +00:00
nickysn
f623038da6
+ fixed a bug in the previous commit, when adding two references, the first
...
containing a base register, the second - an index register with a scalefactor.
The scalefactor was ignored in this case.
git-svn-id: trunk@38354 -
2018-02-26 17:30:08 +00:00
nickysn
45fdd7655d
+ support concatenation of references in x86 intel syntax inline asm:
...
[expr1][expr2] = [expr1+expr2]
[expr1[expr2]] = [expr1+expr2]
This is compatible with TP7's inline asm, and perhaps also with tasm/masm/delphi.
git-svn-id: trunk@38352 -
2018-02-26 17:17:47 +00:00
florian
3b779278e2
+ (slightly) patch by Emelyanov Roman to add support of SEH directive in FPC internal assembler with INTEL syntax, resolves #29894
...
git-svn-id: trunk@38331 -
2018-02-24 16:14:08 +00:00
nickysn
506d5fe30e
+ support bracketless references in the x86 intel syntax; ugly, but TP7 (and
...
perhaps also Delphi, TASM and MASM)-compatible
git-svn-id: trunk@38296 -
2018-02-20 17:18:09 +00:00
nickysn
ae6a4030c3
+ support evaluation of recordtype*constant in the intel syntax inline asm.
...
The recordtype itself is evaluated to 0. This makes e.g.
'test [di+recordtype*5], 1' work. This is TP7 compatible.
git-svn-id: trunk@38200 -
2018-02-11 03:42:45 +00:00
nickysn
f0765421eb
+ also set the operand size in constants like recordtype (without addressing a
...
record field). This makes e.g.
test [di + recordtype], 1
work and use the size of recordtype to determine the operand size; recordtype
itself is evaluated to 0, so if recordtype's size is 2 bytes, the above
instruction assembles as:
test word ptr [di], 1
Ugly, but TP7 compatible.
git-svn-id: trunk@38176 -
2018-02-09 17:43:31 +00:00
nickysn
7338437dcd
* allow recordtype.recordfield constants to set the operand size; this makes things like
...
test [di + recordtype.recordfield], 1
work, as long as the size of recordfield is a valid operand size for the target
git-svn-id: trunk@38175 -
2018-02-09 17:36:54 +00:00
nickysn
f829f70186
* use the 'size' return value of BuildConstSymbolExpression to set the operand size
...
git-svn-id: trunk@38174 -
2018-02-09 17:22:39 +00:00
nickysn
384715be8d
+ add an extra output parameter 'size' to tx86intreader.BuildConstSymbolExpression,
...
which allows const symbol expressions to also have a size sometimes. Why?
Because TP7 (and perhaps Delphi) allows not specifying the size in e.g.
test [di+recordtype.recordfield], 1
in this case, the operand size (byte ptr, word ptr, dword ptr, qword ptr) is
determined by the size of recordtype.recordfield; this already happens with
variables, but in this case, this is a type.field, which is resolved to a
constant.
This commit only adds a dummy 'size' parameter, which is always initialized to
0 and not used. The actual implementation of the above will follow in separate
commits.
git-svn-id: trunk@38173 -
2018-02-09 16:52:12 +00:00
nickysn
4b339fd133
* convert the 'var' parameters of tx86intreader.BuildConstSymbolExpression to 'out'
...
git-svn-id: trunk@38172 -
2018-02-09 16:20:34 +00:00
nickysn
84611d716b
* convert the 'var' parameters of tx86intreader.BuildRecordOffsetSize to 'out'
...
git-svn-id: trunk@38171 -
2018-02-09 16:15:40 +00:00
nickysn
391f85f828
+ for TP7 compatibility, allow the '&', '$' and '?' characters in the x86 intel
...
syntax inline asm reader
git-svn-id: trunk@38167 -
2018-02-08 16:54:33 +00:00
nickysn
5f56f6ec11
* always pass a valid constsize to ConcatConstSymbol; this prevents a compiler
...
internal error on i8086, generated by 'DB xx' or 'DB OFFSET xx'
git-svn-id: trunk@38153 -
2018-02-07 16:17:05 +00:00
nickysn
a792a92cfb
* prevent the spurious warning, generated by 'DD xx' and 'DD OFFSET xx' on i8086
...
git-svn-id: trunk@38152 -
2018-02-07 16:14:05 +00:00
nickysn
3ad3807b6f
+ accept the 'DB/DW/DD OFFSET xx' syntax
...
git-svn-id: trunk@38150 -
2018-02-07 16:07:59 +00:00
nickysn
3b1bd8de3f
+ actually set hasofs to true if 'offset' is encountered in BuildConstSymbolExpression
...
git-svn-id: trunk@38149 -
2018-02-07 16:03:40 +00:00
nickysn
d591e698ac
+ added parameter 'hasofs' to ConcatConstSymbol. Will be used to support 'dd xx'
...
vs 'dd offset xx' being different on i8086.
git-svn-id: trunk@38148 -
2018-02-07 15:23:48 +00:00
nickysn
70038f1c0b
+ added extra boolean out parameter 'hasofs' to
...
tx86intreader.BuildConstSymbolExpression; it returns whether the 'OFFSET'
keyword has been used in the expression. This will be used for disambiguation
between 'dd xx' and 'dd offset xx', because they should produce different
results on i8086 (the first generates a far pointer, i.e. the same as
'dw xx, SEG xx', the second - a 32-bit offset)
git-svn-id: trunk@38147 -
2018-02-07 15:09:54 +00:00
nickysn
629be9cee1
+ add a 'constsize' parameter to ConcatConstSymbol, so it can be used to
...
distinguish between e.g. 16-bit and 32-bit offsets on i8086
git-svn-id: trunk@38141 -
2018-02-06 16:22:41 +00:00
nickysn
1f0e311fdd
+ allow segment override prefixes to be used as a standalone opcode in the intel
...
syntax inline assembler; this is TP7 compatible and allows compiling ugly
code, such as 'seges; db $67,$66; lodsw'
git-svn-id: trunk@38096 -
2018-02-01 17:31:59 +00:00
Jonas Maebe
1b66995754
* factored out check to determine whether a variable can be subscripted in
...
inline assembly, and fixed check after r35959 (mantis #32318 )
o can also subscript parameters passed by value on the stack
o can also subscript local variables, the parameters passed by reference
that are subsequently copied into a local
git-svn-id: trunk@37886 -
2018-01-01 14:29:21 +00:00
nickysn
e5dad9c98c
+ set oper.haslabelref in several other places, where a reference, containing a
...
label is created in the intel syntax x86 assembler. This fixes tfarcal3.pp and
tfarcal4.pp after r37538
git-svn-id: trunk@37541 -
2017-11-01 14:31:16 +00:00
nickysn
9649154368
* fixed the token2str const array for intel syntax x86 asm
...
git-svn-id: trunk@37540 -
2017-11-01 13:36:16 +00:00
nickysn
9450beb99c
* fixed bug in intel syntax i8086 inline asm, when certain 'jmp/call [v]'
...
instructions got erroneously converted to 'jmp/call v', if 'v' is an external
far variable that points to certain things (like a local label, exported via
public)
git-svn-id: trunk@37538 -
2017-10-31 16:49:38 +00:00
nickysn
29558a74cd
+ support exporting labels from asm blocks in intel syntax asm blocks via the
...
'public' directive
git-svn-id: trunk@37530 -
2017-10-30 16:44:13 +00:00
nickysn
9cebeeffa9
+ check for address size mismatch in intel syntax assembler as well
...
git-svn-id: trunk@37475 -
2017-10-16 16:19:15 +00:00
nickysn
1ee36b5b9b
+ added error message in the intel assembler reader, when an attempt is made to
...
override the ES segment in an x86 string instruction (because it cannot be
overriden)
git-svn-id: trunk@37454 -
2017-10-13 14:56:38 +00:00
florian
4cf2a2672a
changes to fix #32043
...
* changed most of the variables in the assembler readers used to store constants from aint to tcgint
as aint has only the size of the accumular while some CPUs (AVR) allow larger constants in instructions
+ allow access to absolute symbols with address type in inline assembler
* allow absolute addresses in avr inline assembler
+ tests
git-svn-id: trunk@37411 -
2017-10-06 21:07:19 +00:00