[v2,4/4] x86/APX: honor -mevexwig= for byte-size insns

Message ID 79228e84-31d2-4801-a014-daf451949637@suse.com
State New
Headers
Series x86/APX: misc adjustments |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm success Testing passed
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_binutils_check--master-arm success Testing passed

Commit Message

Jan Beulich Feb. 23, 2024, 11:13 a.m. UTC
  These uniformly ignore EVEX.W, and hence what we emit ought to be
controllable by the command line option.
---
While doing the adjustment right after install_template() seems
desirable, there's still the question whether this might better be done
in process_operands(). This is in particular because when non-NDD EVEX
insns / forms of various insns are added (so far only ADCX and ADOX are
there, which have neither memory destinations nor byte variants), the
destination operand isn't the only one that will need considering here:
An unsized memory destination would require inspecting an earlier
operand (if any) or the suffix (which, just to mention it, must not be
taken into consideration for CRC32, but that allows for memory source
only anyway). Otoh process_operands() is also used by .insn handling,
and we may not do such an adjustment there.
---
v2: New.
  

Comments

Cui, Lili Feb. 26, 2024, 10:42 a.m. UTC | #1
> These uniformly ignore EVEX.W, and hence what we emit ought to be
> controllable by the command line option.
> ---
> While doing the adjustment right after install_template() seems desirable,
> there's still the question whether this might better be done in
> process_operands(). This is in particular because when non-NDD EVEX insns /
> forms of various insns are added (so far only ADCX and ADOX are there, which
> have neither memory destinations nor byte variants), the destination operand
> isn't the only one that will need considering here:
> An unsized memory destination would require inspecting an earlier operand (if
> any) or the suffix (which, just to mention it, must not be taken into
> consideration for CRC32, but that allows for memory source only anyway).
> Otoh process_operands() is also used by .insn handling, and we may not do
> such an adjustment there.
> ---
> v2: New.

I was just thinking about how to handle the IGNORE for the APX byte-size and then see your patch, thanks.

Lili.
> 
> --- a/gas/config/tc-i386.c
> +++ b/gas/config/tc-i386.c
> @@ -9103,6 +9103,15 @@ match_template (char mnem_suffix)
>      i.tm.operand_types[addr_prefix_disp]
>        = operand_types[addr_prefix_disp];
> 
> +  /* APX insns acting on byte operands are WIG, yet that can't be expressed
> +     in the templates (they're also covering word/dword/qword
> + operands).  */  if (t->opcode_space == SPACE_EVEXMAP4 && !t-
> >opcode_modifier.vexw &&
> +      i.types[i.operands - 1].bitfield.byte)
> +    {
> +      gas_assert (t->opcode_modifier.w);
> +      i.tm.opcode_modifier.vexw = VEXWIG;
> +    }
> +
>    switch (found_reverse_match)
>      {
>      case 0:
> --- /dev/null
> +++ b/gas/testsuite/gas/i386/x86-64-apx-ndd-wig.d
> @@ -0,0 +1,161 @@
> +#as: -mevexwig=1
> +#objdump: -dw
> +#name: x86-64 APX NDD instructions w/ EVEX prefix and -mevexwig=1
> +#source: x86-64-apx-ndd.s
> +
> +.*: +file format .*
> +
> +
> +Disassembly of section .text:
> +
> +0+ <_start>:
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 d0 34 12 	adc
> \$0x1234,%ax,%r30w
> +[ 	]*[a-f0-9]+:[ 	]*62 7c ec 10 10 f9    	adc    %r15b,%r17b,%r18b
> +[ 	]*[a-f0-9]+:[ 	]*62 54 6c 10 11 38    	adc    %r15d,\(%r8\),%r18d
> +[ 	]*[a-f0-9]+:[ 	]*62 c4 bc 18 12 04 07 	adc
> \(%r15,%rax,1\),%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 c4 3d 18 13 04 07 	adc
> \(%r15,%rax,1\),%r16w,%r8w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 14 83 11 	adc
> \$0x11,\(%r19,%rax,4\),%r20d
> +[ 	]*[a-f0-9]+:[ 	]*62 54 6d 10 66 c7    	adcx   %r15d,%r8d,%r18d
> +[ 	]*[a-f0-9]+:[ 	]*62 14 f9 08 66 04 3f 	adcx   \(%r15,%r31,1\),%r8
> +[ 	]*[a-f0-9]+:[ 	]*62 14 69 10 66 04 3f 	adcx
> \(%r15,%r31,1\),%r8d,%r18d
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 c0 34 12 	add
> \$0x1234,%ax,%r30w
> +[ 	]*[a-f0-9]+:[ 	]*62 d4 fc 10 81 c7 33 44 34 12 	add
> \$0x12344433,%r15,%r16
> +[ 	]*[a-f0-9]+:[ 	]*62 d4 f4 10 80 c5 34 	add    \$0x34,%r13b,%r17b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 bc 18 81 c0 11 22 33 f4 	add
> \$0xfffffffff4332211,%rax,%r8
> +[ 	]*[a-f0-9]+:[ 	]*62 44 fc 10 01 f8    	add    %r31,%r8,%r16
> +[ 	]*[a-f0-9]+:[ 	]*62 44 fc 10 01 38    	add    %r31,\(%r8\),%r16
> +[ 	]*[a-f0-9]+:[ 	]*62 44 f8 10 01 3c c0
> 	add    %r31,\(%r8,%r16,8\),%r16
> +[ 	]*[a-f0-9]+:[ 	]*62 44 fc 10 00 f8    	add    %r31b,%r8b,%r16b
> +[ 	]*[a-f0-9]+:[ 	]*62 44 7c 10 01 f8    	add    %r31d,%r8d,%r16d
> +[ 	]*[a-f0-9]+:[ 	]*62 44 7d 10 01 f8    	add    %r31w,%r8w,%r16w
> +[ 	]*[a-f0-9]+:[ 	]*62 5c fc 10 03 07    	add    \(%r31\),%r8,%r16
> +[ 	]*[a-f0-9]+:[ 	]*62 5c f8 10 03 84 07 90 90 00 00 	add
> 0x9090\(%r31,%r16,1\),%r8,%r16
> +[ 	]*[a-f0-9]+:[ 	]*62 44 fc 10 00 f8    	add    %r31b,%r8b,%r16b
> +[ 	]*[a-f0-9]+:[ 	]*62 44 7c 10 01 f8    	add    %r31d,%r8d,%r16d
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 04 83 11 	add
> \$0x11,\(%r19,%rax,4\),%r20d
> +[ 	]*[a-f0-9]+:[ 	]*62 44 fc 10 01 f8    	add    %r31,%r8,%r16
> +[ 	]*[a-f0-9]+:[ 	]*62 d4 fc 10 81 04 8f 33 44 34 12 	add
> \$0x12344433,\(%r15,%rcx,4\),%r16
> +[ 	]*[a-f0-9]+:[ 	]*62 44 7d 10 01 f8    	add    %r31w,%r8w,%r16w
> +[ 	]*[a-f0-9]+:[ 	]*62 54 6e 10 66 c7    	adox   %r15d,%r8d,%r18d
> +[ 	]*[a-f0-9]+:[ 	]*62 5c fc 10 03 c7    	add    %r31,%r8,%r16
> +[ 	]*[a-f0-9]+:[ 	]*62 44 fc 10 01 f8    	add    %r31,%r8,%r16
> +[ 	]*[a-f0-9]+:[ 	]*62 14 fa 08 66 04 3f 	adox   \(%r15,%r31,1\),%r8
> +[ 	]*[a-f0-9]+:[ 	]*62 14 6a 10 66 04 3f 	adox
> \(%r15,%r31,1\),%r8d,%r18d
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 e0 34 12 	and
> \$0x1234,%ax,%r30w
> +[ 	]*[a-f0-9]+:[ 	]*62 7c ec 10 20 f9    	and    %r15b,%r17b,%r18b
> +[ 	]*[a-f0-9]+:[ 	]*62 54 6c 10 21 38    	and    %r15d,\(%r8\),%r18d
> +[ 	]*[a-f0-9]+:[ 	]*62 c4 bc 18 22 04 07 	and
> \(%r15,%rax,1\),%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 c4 3d 18 23 04 07 	and
> \(%r15,%rax,1\),%r16w,%r8w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 24 83 11 	and
> \$0x11,\(%r19,%rax,4\),%r20d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 47 90 90 90 90 90 	cmova  -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 43 90 90 90 90 90 	cmovae -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 42 90 90 90 90 90 	cmovb  -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 46 90 90 90 90 90 	cmovbe -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 44 90 90 90 90 90 	cmove  -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 4f 90 90 90 90 90 	cmovg  -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 4d 90 90 90 90 90 	cmovge -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 4c 90 90 90 90 90 	cmovl  -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 4e 90 90 90 90 90 	cmovle -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 45 90 90 90 90 90 	cmovne -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 41 90 90 90 90 90 	cmovno -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 4b 90 90 90 90 90 	cmovnp -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 49 90 90 90 90 90 	cmovns -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 40 90 90 90 90 90 	cmovo  -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 4a 90 90 90 90 90 	cmovp  -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 48 90 90 90 90 90 	cmovs  -
> 0x6f6f6f70\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 f4 10 ff c8    	dec    %rax,%r17
> +[ 	]*[a-f0-9]+:[ 	]*62 9c bc 18 fe 0c 27 	dec    \(%r31,%r12,1\),%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 b4 b0 10 af 94 f8 09 09 00 00 	imul
> 0x909\(%rax,%r31,8\),%rdx,%r25
> +[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 af 90 09 09 09 00 	imul
> 0x90909\(%eax\),%edx,%r8d
> +[ 	]*[a-f0-9]+:[ 	]*62 dc fc 10 ff c7    	inc    %r31,%r16
> +[ 	]*[a-f0-9]+:[ 	]*62 dc bc 18 ff c7    	inc    %r31,%r8
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 e4 18 ff c0    	inc    %rax,%rbx
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 f4 10 f7 d8    	neg    %rax,%r17
> +[ 	]*[a-f0-9]+:[ 	]*62 9c bc 18 f6 1c 27 	neg    \(%r31,%r12,1\),%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 f4 10 f7 d0    	not    %rax,%r17
> +[ 	]*[a-f0-9]+:[ 	]*62 9c bc 18 f6 14 27 	not    \(%r31,%r12,1\),%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 c8 34 12 	or
> \$0x1234,%ax,%r30w
> +[ 	]*[a-f0-9]+:[ 	]*62 7c ec 10 08 f9    	or     %r15b,%r17b,%r18b
> +[ 	]*[a-f0-9]+:[ 	]*62 54 6c 10 09 38    	or     %r15d,\(%r8\),%r18d
> +[ 	]*[a-f0-9]+:[ 	]*62 c4 bc 18 0a 04 07 	or
> \(%r15,%rax,1\),%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 c4 3d 18 0b 04 07 	or
> \(%r15,%rax,1\),%r16w,%r8w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 0c 83 11 	or
> \$0x11,\(%r19,%rax,4\),%r20d
> +[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 d4 02 	rcl
> \$0x2,%r12b,%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 d0    	rcl    %cl,%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 10    	rcl    \$1,\(%rax\),%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 10 02 	rcl    \$0x2,\(%rax\),%r31d
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 10    	rcl    \$1,\(%rax\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 14 83
> 	rcl    %cl,\(%r19,%rax,4\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 dc 02 	rcr    \$0x2,%r12b,%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 d8    	rcr    %cl,%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 18    	rcr    \$1,\(%rax\),%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 18 02 	rcr    \$0x2,\(%rax\),%r31d
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 18    	rcr    \$1,\(%rax\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 1c 83
> 	rcr    %cl,\(%r19,%rax,4\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 c4 02 	rol    \$0x2,%r12b,%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 c0    	rol    %cl,%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 00    	rol    \$1,\(%rax\),%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 00 02 	rol    \$0x2,\(%rax\),%r31d
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 00    	rol    \$1,\(%rax\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 04 83
> 	rol    %cl,\(%r19,%rax,4\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 cc 02 	ror    \$0x2,%r12b,%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 c8    	ror    %cl,%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 08    	ror    \$1,\(%rax\),%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 08 02 	ror    \$0x2,\(%rax\),%r31d
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 08    	ror    \$1,\(%rax\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 0c 83
> 	ror    %cl,\(%r19,%rax,4\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 fc 02 	sar    \$0x2,%r12b,%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 f8    	sar    %cl,%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 38    	sar    \$1,\(%rax\),%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 38 02 	sar    \$0x2,\(%rax\),%r31d
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 38    	sar    \$1,\(%rax\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 3c 83
> 	sar    %cl,\(%r19,%rax,4\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 d8 34 12 	sbb
> \$0x1234,%ax,%r30w
> +[ 	]*[a-f0-9]+:[ 	]*62 7c ec 10 18 f9    	sbb    %r15b,%r17b,%r18b
> +[ 	]*[a-f0-9]+:[ 	]*62 54 6c 10 19 38    	sbb    %r15d,\(%r8\),%r18d
> +[ 	]*[a-f0-9]+:[ 	]*62 c4 bc 18 1a 04 07 	sbb
> \(%r15,%rax,1\),%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 c4 3d 18 1b 04 07 	sbb
> \(%r15,%rax,1\),%r16w,%r8w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 1c 83 11 	sbb
> \$0x11,\(%r19,%rax,4\),%r20d
> +[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 e4 02 	shl    \$0x2,%r12b,%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 e4 02 	shl    \$0x2,%r12b,%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 e0    	shl    %cl,%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 e0    	shl    %cl,%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 20    	shl    \$1,\(%rax\),%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 20    	shl    \$1,\(%rax\),%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 74 84 10 24 20 01 	shld
> \$0x1,%r12,\(%rax\),%r31
> +[ 	]*[a-f0-9]+:[ 	]*62 74 04 10 24 38 02 	shld
> \$0x2,%r15d,\(%rax\),%r31d
> +[ 	]*[a-f0-9]+:[ 	]*62 54 05 10 24 c4 02 	shld
> \$0x2,%r8w,%r12w,%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 7c bc 18 a5 e0    	shld   %cl,%r12,%r16,%r8
> +[ 	]*[a-f0-9]+:[ 	]*62 7c 05 10 a5 2c 83
> 	shld   %cl,%r13w,\(%r19,%rax,4\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 74 05 10 a5 08
> 	shld   %cl,%r9w,\(%rax\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 20 02 	shl    \$0x2,\(%rax\),%r31d
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 20 02 	shl    \$0x2,\(%rax\),%r31d
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 20    	shl    \$1,\(%rax\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 20    	shl    \$1,\(%rax\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 24 83
> 	shl    %cl,\(%r19,%rax,4\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 24 83
> 	shl    %cl,\(%r19,%rax,4\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 ec 02 	shr    \$0x2,%r12b,%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 e8    	shr    %cl,%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 28    	shr    \$1,\(%rax\),%r31b
> +[ 	]*[a-f0-9]+:[ 	]*62 74 84 10 2c 20 01 	shrd
> \$0x1,%r12,\(%rax\),%r31
> +[ 	]*[a-f0-9]+:[ 	]*62 74 04 10 2c 38 02 	shrd
> \$0x2,%r15d,\(%rax\),%r31d
> +[ 	]*[a-f0-9]+:[ 	]*62 54 05 10 2c c4 02 	shrd
> \$0x2,%r8w,%r12w,%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 7c bc 18 ad e0    	shrd   %cl,%r12,%r16,%r8
> +[ 	]*[a-f0-9]+:[ 	]*62 7c 05 10 ad 2c 83
> 	shrd   %cl,%r13w,\(%r19,%rax,4\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 74 05 10 ad 08
> 	shrd   %cl,%r9w,\(%rax\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 28 02 	shr    \$0x2,\(%rax\),%r31d
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 28    	shr    \$1,\(%rax\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 2c 83
> 	shr    %cl,\(%r19,%rax,4\),%r31w
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 e8 34 12 	sub
> \$0x1234,%ax,%r30w
> +[ 	]*[a-f0-9]+:[ 	]*62 7c ec 10 28 f9    	sub    %r15b,%r17b,%r18b
> +[ 	]*[a-f0-9]+:[ 	]*62 54 6c 10 29 38    	sub    %r15d,\(%r8\),%r18d
> +[ 	]*[a-f0-9]+:[ 	]*62 c4 bc 18 2a 04 07 	sub
> \(%r15,%rax,1\),%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 c4 3d 18 2b 04 07 	sub
> \(%r15,%rax,1\),%r16w,%r8w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 2c 83 11 	sub
> \$0x11,\(%r19,%rax,4\),%r20d
> +[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 f0 34 12 	xor
> \$0x1234,%ax,%r30w
> +[ 	]*[a-f0-9]+:[ 	]*62 7c ec 10 30 f9    	xor    %r15b,%r17b,%r18b
> +[ 	]*[a-f0-9]+:[ 	]*62 54 6c 10 31 38    	xor    %r15d,\(%r8\),%r18d
> +[ 	]*[a-f0-9]+:[ 	]*62 c4 bc 18 32 04 07 	xor
> \(%r15,%rax,1\),%r16b,%r8b
> +[ 	]*[a-f0-9]+:[ 	]*62 c4 3d 18 33 04 07 	xor
> \(%r15,%rax,1\),%r16w,%r8w
> +[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 34 83 11 	xor
> \$0x11,\(%r19,%rax,4\),%r20d
> +#pass
> --- a/gas/testsuite/gas/i386/x86-64.exp
> +++ b/gas/testsuite/gas/i386/x86-64.exp
> @@ -381,6 +381,7 @@ run_dump_test "x86-64-apx-evex-promoted-
> run_dump_test "x86-64-apx-evex-promoted-wig"
>  run_dump_test "x86-64-apx-evex-egpr"
>  run_dump_test "x86-64-apx-ndd"
> +run_dump_test "x86-64-apx-ndd-wig"
>  run_dump_test "x86-64-apx-jmpabs"
>  run_dump_test "x86-64-apx-jmpabs-intel"
>  run_dump_test "x86-64-apx-jmpabs-inval"
  

Patch

--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -9103,6 +9103,15 @@  match_template (char mnem_suffix)
     i.tm.operand_types[addr_prefix_disp]
       = operand_types[addr_prefix_disp];
 
+  /* APX insns acting on byte operands are WIG, yet that can't be expressed
+     in the templates (they're also covering word/dword/qword operands).  */
+  if (t->opcode_space == SPACE_EVEXMAP4 && !t->opcode_modifier.vexw &&
+      i.types[i.operands - 1].bitfield.byte)
+    {
+      gas_assert (t->opcode_modifier.w);
+      i.tm.opcode_modifier.vexw = VEXWIG;
+    }
+
   switch (found_reverse_match)
     {
     case 0:
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-apx-ndd-wig.d
@@ -0,0 +1,161 @@ 
+#as: -mevexwig=1
+#objdump: -dw
+#name: x86-64 APX NDD instructions w/ EVEX prefix and -mevexwig=1
+#source: x86-64-apx-ndd.s
+
+.*: +file format .*
+
+
+Disassembly of section .text:
+
+0+ <_start>:
+[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 d0 34 12 	adc    \$0x1234,%ax,%r30w
+[ 	]*[a-f0-9]+:[ 	]*62 7c ec 10 10 f9    	adc    %r15b,%r17b,%r18b
+[ 	]*[a-f0-9]+:[ 	]*62 54 6c 10 11 38    	adc    %r15d,\(%r8\),%r18d
+[ 	]*[a-f0-9]+:[ 	]*62 c4 bc 18 12 04 07 	adc    \(%r15,%rax,1\),%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 c4 3d 18 13 04 07 	adc    \(%r15,%rax,1\),%r16w,%r8w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 14 83 11 	adc    \$0x11,\(%r19,%rax,4\),%r20d
+[ 	]*[a-f0-9]+:[ 	]*62 54 6d 10 66 c7    	adcx   %r15d,%r8d,%r18d
+[ 	]*[a-f0-9]+:[ 	]*62 14 f9 08 66 04 3f 	adcx   \(%r15,%r31,1\),%r8
+[ 	]*[a-f0-9]+:[ 	]*62 14 69 10 66 04 3f 	adcx   \(%r15,%r31,1\),%r8d,%r18d
+[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 c0 34 12 	add    \$0x1234,%ax,%r30w
+[ 	]*[a-f0-9]+:[ 	]*62 d4 fc 10 81 c7 33 44 34 12 	add    \$0x12344433,%r15,%r16
+[ 	]*[a-f0-9]+:[ 	]*62 d4 f4 10 80 c5 34 	add    \$0x34,%r13b,%r17b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 bc 18 81 c0 11 22 33 f4 	add    \$0xfffffffff4332211,%rax,%r8
+[ 	]*[a-f0-9]+:[ 	]*62 44 fc 10 01 f8    	add    %r31,%r8,%r16
+[ 	]*[a-f0-9]+:[ 	]*62 44 fc 10 01 38    	add    %r31,\(%r8\),%r16
+[ 	]*[a-f0-9]+:[ 	]*62 44 f8 10 01 3c c0 	add    %r31,\(%r8,%r16,8\),%r16
+[ 	]*[a-f0-9]+:[ 	]*62 44 fc 10 00 f8    	add    %r31b,%r8b,%r16b
+[ 	]*[a-f0-9]+:[ 	]*62 44 7c 10 01 f8    	add    %r31d,%r8d,%r16d
+[ 	]*[a-f0-9]+:[ 	]*62 44 7d 10 01 f8    	add    %r31w,%r8w,%r16w
+[ 	]*[a-f0-9]+:[ 	]*62 5c fc 10 03 07    	add    \(%r31\),%r8,%r16
+[ 	]*[a-f0-9]+:[ 	]*62 5c f8 10 03 84 07 90 90 00 00 	add    0x9090\(%r31,%r16,1\),%r8,%r16
+[ 	]*[a-f0-9]+:[ 	]*62 44 fc 10 00 f8    	add    %r31b,%r8b,%r16b
+[ 	]*[a-f0-9]+:[ 	]*62 44 7c 10 01 f8    	add    %r31d,%r8d,%r16d
+[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 04 83 11 	add    \$0x11,\(%r19,%rax,4\),%r20d
+[ 	]*[a-f0-9]+:[ 	]*62 44 fc 10 01 f8    	add    %r31,%r8,%r16
+[ 	]*[a-f0-9]+:[ 	]*62 d4 fc 10 81 04 8f 33 44 34 12 	add    \$0x12344433,\(%r15,%rcx,4\),%r16
+[ 	]*[a-f0-9]+:[ 	]*62 44 7d 10 01 f8    	add    %r31w,%r8w,%r16w
+[ 	]*[a-f0-9]+:[ 	]*62 54 6e 10 66 c7    	adox   %r15d,%r8d,%r18d
+[ 	]*[a-f0-9]+:[ 	]*62 5c fc 10 03 c7    	add    %r31,%r8,%r16
+[ 	]*[a-f0-9]+:[ 	]*62 44 fc 10 01 f8    	add    %r31,%r8,%r16
+[ 	]*[a-f0-9]+:[ 	]*62 14 fa 08 66 04 3f 	adox   \(%r15,%r31,1\),%r8
+[ 	]*[a-f0-9]+:[ 	]*62 14 6a 10 66 04 3f 	adox   \(%r15,%r31,1\),%r8d,%r18d
+[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 e0 34 12 	and    \$0x1234,%ax,%r30w
+[ 	]*[a-f0-9]+:[ 	]*62 7c ec 10 20 f9    	and    %r15b,%r17b,%r18b
+[ 	]*[a-f0-9]+:[ 	]*62 54 6c 10 21 38    	and    %r15d,\(%r8\),%r18d
+[ 	]*[a-f0-9]+:[ 	]*62 c4 bc 18 22 04 07 	and    \(%r15,%rax,1\),%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 c4 3d 18 23 04 07 	and    \(%r15,%rax,1\),%r16w,%r8w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 24 83 11 	and    \$0x11,\(%r19,%rax,4\),%r20d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 47 90 90 90 90 90 	cmova  -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 43 90 90 90 90 90 	cmovae -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 42 90 90 90 90 90 	cmovb  -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 46 90 90 90 90 90 	cmovbe -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 44 90 90 90 90 90 	cmove  -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 4f 90 90 90 90 90 	cmovg  -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 4d 90 90 90 90 90 	cmovge -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 4c 90 90 90 90 90 	cmovl  -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 4e 90 90 90 90 90 	cmovle -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 45 90 90 90 90 90 	cmovne -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 41 90 90 90 90 90 	cmovno -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 4b 90 90 90 90 90 	cmovnp -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 49 90 90 90 90 90 	cmovns -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 40 90 90 90 90 90 	cmovo  -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 4a 90 90 90 90 90 	cmovp  -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 48 90 90 90 90 90 	cmovs  -0x6f6f6f70\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*62 f4 f4 10 ff c8    	dec    %rax,%r17
+[ 	]*[a-f0-9]+:[ 	]*62 9c bc 18 fe 0c 27 	dec    \(%r31,%r12,1\),%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 b4 b0 10 af 94 f8 09 09 00 00 	imul   0x909\(%rax,%r31,8\),%rdx,%r25
+[ 	]*[a-f0-9]+:[ 	]*67 62 f4 3c 18 af 90 09 09 09 00 	imul   0x90909\(%eax\),%edx,%r8d
+[ 	]*[a-f0-9]+:[ 	]*62 dc fc 10 ff c7    	inc    %r31,%r16
+[ 	]*[a-f0-9]+:[ 	]*62 dc bc 18 ff c7    	inc    %r31,%r8
+[ 	]*[a-f0-9]+:[ 	]*62 f4 e4 18 ff c0    	inc    %rax,%rbx
+[ 	]*[a-f0-9]+:[ 	]*62 f4 f4 10 f7 d8    	neg    %rax,%r17
+[ 	]*[a-f0-9]+:[ 	]*62 9c bc 18 f6 1c 27 	neg    \(%r31,%r12,1\),%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 f4 10 f7 d0    	not    %rax,%r17
+[ 	]*[a-f0-9]+:[ 	]*62 9c bc 18 f6 14 27 	not    \(%r31,%r12,1\),%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 c8 34 12 	or     \$0x1234,%ax,%r30w
+[ 	]*[a-f0-9]+:[ 	]*62 7c ec 10 08 f9    	or     %r15b,%r17b,%r18b
+[ 	]*[a-f0-9]+:[ 	]*62 54 6c 10 09 38    	or     %r15d,\(%r8\),%r18d
+[ 	]*[a-f0-9]+:[ 	]*62 c4 bc 18 0a 04 07 	or     \(%r15,%rax,1\),%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 c4 3d 18 0b 04 07 	or     \(%r15,%rax,1\),%r16w,%r8w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 0c 83 11 	or     \$0x11,\(%r19,%rax,4\),%r20d
+[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 d4 02 	rcl    \$0x2,%r12b,%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 d0    	rcl    %cl,%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 10    	rcl    \$1,\(%rax\),%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 10 02 	rcl    \$0x2,\(%rax\),%r31d
+[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 10    	rcl    \$1,\(%rax\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 14 83 	rcl    %cl,\(%r19,%rax,4\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 dc 02 	rcr    \$0x2,%r12b,%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 d8    	rcr    %cl,%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 18    	rcr    \$1,\(%rax\),%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 18 02 	rcr    \$0x2,\(%rax\),%r31d
+[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 18    	rcr    \$1,\(%rax\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 1c 83 	rcr    %cl,\(%r19,%rax,4\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 c4 02 	rol    \$0x2,%r12b,%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 c0    	rol    %cl,%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 00    	rol    \$1,\(%rax\),%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 00 02 	rol    \$0x2,\(%rax\),%r31d
+[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 00    	rol    \$1,\(%rax\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 04 83 	rol    %cl,\(%r19,%rax,4\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 cc 02 	ror    \$0x2,%r12b,%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 c8    	ror    %cl,%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 08    	ror    \$1,\(%rax\),%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 08 02 	ror    \$0x2,\(%rax\),%r31d
+[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 08    	ror    \$1,\(%rax\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 0c 83 	ror    %cl,\(%r19,%rax,4\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 fc 02 	sar    \$0x2,%r12b,%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 f8    	sar    %cl,%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 38    	sar    \$1,\(%rax\),%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 38 02 	sar    \$0x2,\(%rax\),%r31d
+[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 38    	sar    \$1,\(%rax\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 3c 83 	sar    %cl,\(%r19,%rax,4\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 d8 34 12 	sbb    \$0x1234,%ax,%r30w
+[ 	]*[a-f0-9]+:[ 	]*62 7c ec 10 18 f9    	sbb    %r15b,%r17b,%r18b
+[ 	]*[a-f0-9]+:[ 	]*62 54 6c 10 19 38    	sbb    %r15d,\(%r8\),%r18d
+[ 	]*[a-f0-9]+:[ 	]*62 c4 bc 18 1a 04 07 	sbb    \(%r15,%rax,1\),%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 c4 3d 18 1b 04 07 	sbb    \(%r15,%rax,1\),%r16w,%r8w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 1c 83 11 	sbb    \$0x11,\(%r19,%rax,4\),%r20d
+[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 e4 02 	shl    \$0x2,%r12b,%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 e4 02 	shl    \$0x2,%r12b,%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 e0    	shl    %cl,%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 e0    	shl    %cl,%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 20    	shl    \$1,\(%rax\),%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 20    	shl    \$1,\(%rax\),%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 74 84 10 24 20 01 	shld   \$0x1,%r12,\(%rax\),%r31
+[ 	]*[a-f0-9]+:[ 	]*62 74 04 10 24 38 02 	shld   \$0x2,%r15d,\(%rax\),%r31d
+[ 	]*[a-f0-9]+:[ 	]*62 54 05 10 24 c4 02 	shld   \$0x2,%r8w,%r12w,%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 7c bc 18 a5 e0    	shld   %cl,%r12,%r16,%r8
+[ 	]*[a-f0-9]+:[ 	]*62 7c 05 10 a5 2c 83 	shld   %cl,%r13w,\(%r19,%rax,4\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 74 05 10 a5 08    	shld   %cl,%r9w,\(%rax\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 20 02 	shl    \$0x2,\(%rax\),%r31d
+[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 20 02 	shl    \$0x2,\(%rax\),%r31d
+[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 20    	shl    \$1,\(%rax\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 20    	shl    \$1,\(%rax\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 24 83 	shl    %cl,\(%r19,%rax,4\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 24 83 	shl    %cl,\(%r19,%rax,4\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 d4 84 10 c0 ec 02 	shr    \$0x2,%r12b,%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 fc bc 18 d2 e8    	shr    %cl,%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 f4 84 10 d0 28    	shr    \$1,\(%rax\),%r31b
+[ 	]*[a-f0-9]+:[ 	]*62 74 84 10 2c 20 01 	shrd   \$0x1,%r12,\(%rax\),%r31
+[ 	]*[a-f0-9]+:[ 	]*62 74 04 10 2c 38 02 	shrd   \$0x2,%r15d,\(%rax\),%r31d
+[ 	]*[a-f0-9]+:[ 	]*62 54 05 10 2c c4 02 	shrd   \$0x2,%r8w,%r12w,%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 7c bc 18 ad e0    	shrd   %cl,%r12,%r16,%r8
+[ 	]*[a-f0-9]+:[ 	]*62 7c 05 10 ad 2c 83 	shrd   %cl,%r13w,\(%r19,%rax,4\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 74 05 10 ad 08    	shrd   %cl,%r9w,\(%rax\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 f4 04 10 c1 28 02 	shr    \$0x2,\(%rax\),%r31d
+[ 	]*[a-f0-9]+:[ 	]*62 f4 05 10 d1 28    	shr    \$1,\(%rax\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 05 10 d3 2c 83 	shr    %cl,\(%r19,%rax,4\),%r31w
+[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 e8 34 12 	sub    \$0x1234,%ax,%r30w
+[ 	]*[a-f0-9]+:[ 	]*62 7c ec 10 28 f9    	sub    %r15b,%r17b,%r18b
+[ 	]*[a-f0-9]+:[ 	]*62 54 6c 10 29 38    	sub    %r15d,\(%r8\),%r18d
+[ 	]*[a-f0-9]+:[ 	]*62 c4 bc 18 2a 04 07 	sub    \(%r15,%rax,1\),%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 c4 3d 18 2b 04 07 	sub    \(%r15,%rax,1\),%r16w,%r8w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 2c 83 11 	sub    \$0x11,\(%r19,%rax,4\),%r20d
+[ 	]*[a-f0-9]+:[ 	]*62 f4 0d 10 81 f0 34 12 	xor    \$0x1234,%ax,%r30w
+[ 	]*[a-f0-9]+:[ 	]*62 7c ec 10 30 f9    	xor    %r15b,%r17b,%r18b
+[ 	]*[a-f0-9]+:[ 	]*62 54 6c 10 31 38    	xor    %r15d,\(%r8\),%r18d
+[ 	]*[a-f0-9]+:[ 	]*62 c4 bc 18 32 04 07 	xor    \(%r15,%rax,1\),%r16b,%r8b
+[ 	]*[a-f0-9]+:[ 	]*62 c4 3d 18 33 04 07 	xor    \(%r15,%rax,1\),%r16w,%r8w
+[ 	]*[a-f0-9]+:[ 	]*62 fc 5c 10 83 34 83 11 	xor    \$0x11,\(%r19,%rax,4\),%r20d
+#pass
--- a/gas/testsuite/gas/i386/x86-64.exp
+++ b/gas/testsuite/gas/i386/x86-64.exp
@@ -381,6 +381,7 @@  run_dump_test "x86-64-apx-evex-promoted-
 run_dump_test "x86-64-apx-evex-promoted-wig"
 run_dump_test "x86-64-apx-evex-egpr"
 run_dump_test "x86-64-apx-ndd"
+run_dump_test "x86-64-apx-ndd-wig"
 run_dump_test "x86-64-apx-jmpabs"
 run_dump_test "x86-64-apx-jmpabs-intel"
 run_dump_test "x86-64-apx-jmpabs-inval"