The decoding tables do not use "L,x", because the only instructions
that take a register from the upper 4 bits of an immediate (VBLENDVPS,
VBLENDVPD and VPBLENDVB) use it for a fourth operand that, as far
as the decoder is concerned, is always an 8-bit immediate.  Therefore,
X86_TYPE_L is dead code - remove it.

Signed-off-by: Paolo Bonzini <[email protected]>
---
 target/i386/tcg/decode-new.h     | 1 -
 target/i386/tcg/decode-new.c.inc | 4 ----
 2 files changed, 5 deletions(-)

diff --git a/target/i386/tcg/decode-new.h b/target/i386/tcg/decode-new.h
index d8cab8d92d0..f18c7afca87 100644
--- a/target/i386/tcg/decode-new.h
+++ b/target/i386/tcg/decode-new.h
@@ -32,7 +32,6 @@ typedef enum X86OpType {
     X86_TYPE_H, /* For AVX, VEX.vvvv selects an XMM/YMM register */
     X86_TYPE_I, /* Immediate */
     X86_TYPE_J, /* Relative offset for a jump */
-    X86_TYPE_L, /* The upper 4 bits of the immediate select a 128-bit register 
*/
     X86_TYPE_M, /* modrm byte selects a memory operand */
     X86_TYPE_N, /* R/M in the modrm byte selects an MMX register */
     X86_TYPE_O, /* Absolute address encoded in the instruction */
diff --git a/target/i386/tcg/decode-new.c.inc b/target/i386/tcg/decode-new.c.inc
index d3352b17fdf..fa0a5b1f4c3 100644
--- a/target/i386/tcg/decode-new.c.inc
+++ b/target/i386/tcg/decode-new.c.inc
@@ -2717,10 +2717,6 @@ static bool decode_op(DisasContext *s, CPUX86State *env, 
X86DecodedInsn *decode,
         decode->immediate = op->imm = insn_get(env, s, op->ot);
         break;
 
-    case X86_TYPE_L:  /* The upper 4 bits of the immediate select a 128-bit 
register */
-        op->n = insn_get(env, s, op->ot) >> 4;
-        break;
-
     case X86_TYPE_2op:
         *op = decode->op[0];
         break;
-- 
2.56.0


Reply via email to