/* Don't optimize displacement for movabs since it only takes 64bit
      displacement.  */
   if (i.disp_operands
-      && i.disp_encoding != disp_encoding_32bit
+      && i.disp_encoding <= disp_encoding_8bit
       && (flag_code != CODE_64BIT
          || strcmp (mnemonic, "movabs") != 0))
     optimize_disp ();
 
   /* Check vector Disp8 operand.  */
   if (t->opcode_modifier.disp8memshift
-      && i.disp_encoding != disp_encoding_32bit)
+      && i.disp_encoding <= disp_encoding_8bit)
     {
       if (i.broadcast.type)
        i.memshift = t->opcode_modifier.broadcast - 1;
     }
 
   code16 = flag_code == CODE_16BIT ? CODE16 : 0;
-  size = i.disp_encoding == disp_encoding_32bit ? BIG : SMALL;
+  size = i.disp_encoding > disp_encoding_8bit ? BIG : SMALL;
 
   prefix = 0;
   if (i.prefix[DATA_PREFIX] != 0)
 
 .*:3: Error: .*
 .*:5: Error: .*
 .*:6: Error: .*
+.*:7: Error: .*
+.*:9: Error: .*
 GAS LISTING .*
 
 
 [      ]*4[    ]+\?\?\?\? 90                   nop
 [      ]*5[    ]+\{disp32\} movb \(%bp\),%al
 [      ]*6[    ]+\{disp16\} movb \(%ebp\),%al
-[      ]*7[    ]+\?\?\?\? 00000000             \.p2align 4,0
+[      ]*7[    ]+\{disp16\} jmp \.
+[      ]*8[    ]+\.code16
+[      ]*9[    ]+\{disp32\} jmp \.
 #...
 
        nop
        {disp32} movb (%bp),%al
        {disp16} movb (%ebp),%al
+       {disp16} jmp .
+       .code16
+       {disp32} jmp .
        .p2align 4,0
 
  +[a-f0-9]+:   c5 f8 28 90 80 00 00 00         vmovaps 0x80\(%eax\),%xmm2
  +[a-f0-9]+:   c5 f8 28 90 80 00 00 00         vmovaps 0x80\(%eax\),%xmm2
  +[a-f0-9]+:   62 f1 7c 08 28 50 08    vmovaps 0x80\(%eax\),%xmm2
+ +[a-f0-9]+:   67 62 f1 7c 08 28 97 80 00      vmovaps 0x80\(%bx\),%xmm2
  +[a-f0-9]+:   62 f1 7c 08 28 90 80 00 00 00   vmovaps 0x80\(%eax\),%xmm2
  +[a-f0-9]+:   89 c8                   mov    %ecx,%eax
  +[a-f0-9]+:   8b c1                   mov    %ecx,%eax
  +[a-f0-9]+:   c5 f8 28 90 80 00 00 00         vmovaps 0x80\(%eax\),%xmm2
  +[a-f0-9]+:   c5 f8 28 90 80 00 00 00         vmovaps 0x80\(%eax\),%xmm2
  +[a-f0-9]+:   62 f1 7c 08 28 50 08    vmovaps 0x80\(%eax\),%xmm2
+ +[a-f0-9]+:   67 62 f1 7c 08 28 97 80 00      vmovaps 0x80\(%bx\),%xmm2
  +[a-f0-9]+:   62 f1 7c 08 28 90 80 00 00 00   vmovaps 0x80\(%eax\),%xmm2
  +[a-f0-9]+:   89 c8                   mov    %ecx,%eax
  +[a-f0-9]+:   8b c1                   mov    %ecx,%eax
  +[a-f0-9]+:   67 8a 46 00             mov    0x0\(%bp\),%al
  +[a-f0-9]+:   67 8a 46 00             mov    0x0\(%bp\),%al
  +[a-f0-9]+:   67 8a 86 00 00          mov    0x0\(%bp\),%al
+ +[a-f0-9]+:   e9 fb ff ff ff          jmp    [0-9a-f]* <.*>
+ +[a-f0-9]+:   e9 fd ff ff ff          jmp    [0-9a-f]* <.*>
 #pass
 
        {vex} {disp8} vmovaps 128(%eax),%xmm2
        {vex} {disp32} vmovaps 128(%eax),%xmm2
        {evex} {disp8} vmovaps 128(%eax),%xmm2
+       {evex} {disp16} vmovaps 128(%bx),%xmm2
        {evex} {disp32} vmovaps 128(%eax),%xmm2
 
        mov %ecx, %eax
        {vex} {disp8} vmovaps xmm2,XMMWORD PTR [eax+128]
        {vex} {disp32} vmovaps xmm2,XMMWORD PTR [eax+128]
        {evex} {disp8} vmovaps xmm2,XMMWORD PTR [eax+128]
+       {evex} {disp16} vmovaps xmm2,XMMWORD PTR [bx+128]
        {evex} {disp32} vmovaps xmm2,XMMWORD PTR [eax+128]
 
        mov eax,ecx
        mov al, BYTE PTR [bp]
        {disp8} mov al, BYTE PTR [bp]
        {disp16} mov al, BYTE PTR [bp]
+
+       {disp32} jmp .
+       .code16
+       {disp16} jmp .
+       .byte -1, -1