diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 2 | ||||
-rw-r--r-- | gcc/doc/extend.texi | 94 |
3 files changed, 102 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3c53fde..a7c8ade 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2020-05-13 Hongtao Liu <hongtao.liu@intel.com> + + PR target/94118 + * doc/extend.texi (x86Operandmodifiers): Document more x86 + operand modifier. + * gcc/config/i386/i386.c: Add comment for operand modifier N + and I. + 2020-05-12 Giuliano Belinassi <giuliano.belinassi@usp.br> * tree-vrp.c (class vrp_insert): New. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 17883ff..f7a4bae 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -12506,6 +12506,8 @@ print_reg (rtx x, int code, FILE *file) ^ -- print addr32 prefix if TARGET_64BIT and Pmode != word_mode M -- print addr32 prefix for TARGET_X32 with VSIB address. ! -- print NOTRACK prefix for jxx/call/ret instructions if required. + N -- print maskz if it's constant 0 operand. + I -- print comparision predicate operand for sse cmp condition. */ void diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 4c5ed3f..1c275ff 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -10431,6 +10431,15 @@ for the @samp{att} and @samp{intel} dialects of assembler: @item @code{%3} @tab @code{$.L3} @tab @code{OFFSET FLAT:.L3} +@item @code{%4} +@tab @code{$8} +@tab @code{8} +@item @code{%5} +@tab @code{%xmm0} +@tab @code{xmm0} +@item @code{%7} +@tab @code{$0} +@tab @code{0} @end multitable The table below shows the list of supported modifiers and their effects. @@ -10447,17 +10456,32 @@ The table below shows the list of supported modifiers and their effects. @tab @code{%b0} @tab @code{%al} @tab @code{al} +@item @code{B} +@tab print the opcode suffix of b. +@tab @code{%B0} +@tab @code{b} +@tab @item @code{c} @tab Require a constant operand and print the constant expression with no punctuation. @tab @code{%c1} @tab @code{2} @tab @code{2} +@item @code{d} +@tab print duplicated register operand for AVX instruction. +@tab @code{%d5} +@tab @code{%xmm0, %xmm0} +@tab @code{xmm0, xmm0} @item @code{E} @tab Print the address in Double Integer (DImode) mode (8 bytes) when the target is 64-bit. Otherwise mode is unspecified (VOIDmode). @tab @code{%E1} @tab @code{%(rax)} @tab @code{[rax]} +@item @code{g} +@tab Print the V16SFmode name of the register. +@tab @code{%g0} +@tab @code{%zmm0} +@tab @code{zmm0} @item @code{h} @tab Print the QImode name for a ``high'' register. @tab @code{%h0} @@ -10479,6 +10503,16 @@ high 8 bytes of SSE values. For a memref in (%rax), it generates @tab @code{%l3} @tab @code{.L3} @tab @code{.L3} +@item @code{L} +@tab print the opcode suffix of l. +@tab @code{%L0} +@tab @code{l} +@tab +@item @code{N} +@tab print maskz. +@tab @code{%N7} +@tab @code{@{z@}} +@tab @code{@{z@}} @item @code{p} @tab Print raw symbol name (without syntax-specific prefixes). @tab @code{%p2} @@ -10494,20 +10528,76 @@ issue the bare constant. See @code{p} above. @tab @code{%q0} @tab @code{%rax} @tab @code{rax} +@item @code{Q} +@tab print the opcode suffix of q. +@tab @code{%Q0} +@tab @code{q} +@tab +@item @code{R} +@tab print embedded rounding and sae. +@tab @code{%R4} +@tab @code{@{rn-sae@}, } +@tab @code{, @{rn-sae@}} +@item @code{r} +@tab print only sae. +@tab @code{%r4} +@tab @code{@{sae@}, } +@tab @code{, @{sae@}} +@item @code{s} +@tab print a shift double count, followed by the assemblers argument +delimiterprint the opcode suffix of s. +@tab @code{%s1} +@tab @code{$2, } +@tab @code{2, } +@item @code{S} +@tab print the opcode suffix of s. +@tab @code{%S0} +@tab @code{s} +@tab +@item @code{t} +@tab print the V8SFmode name of the register. +@tab @code{%t5} +@tab @code{%ymm0} +@tab @code{ymm0} +@item @code{T} +@tab print the opcode suffix of t. +@tab @code{%T0} +@tab @code{t} +@tab +@item @code{V} +@tab print naked full integer register name without %. +@tab @code{%V0} +@tab @code{eax} +@tab @code{eax} @item @code{w} @tab Print the HImode name of the register. @tab @code{%w0} @tab @code{%ax} @tab @code{ax} +@item @code{W} +@tab print the opcode suffix of w. +@tab @code{%W0} +@tab @code{w} +@tab +@item @code{x} +@tab print the V4SFmode name of the register. +@tab @code{%x5} +@tab @code{%xmm0} +@tab @code{xmm0} +@item @code{y} +@tab print "st(0)" instead of "st" as a register. +@tab @code{%y6} +@tab @code{%st(0)} +@tab @code{st(0)} @item @code{z} @tab Print the opcode suffix for the size of the current integer operand (one of @code{b}/@code{w}/@code{l}/@code{q}). @tab @code{%z0} @tab @code{l} @tab +@item @code{Z} +@tab Like @code{z}, with special suffixes for x87 instructions. @end multitable -@code{V} is a special modifier which prints the name of the full integer -register without @code{%}. @anchor{x86floatingpointasmoperands} @subsubsection x86 Floating-Point @code{asm} Operands |