[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 26/37] target/i386: reimplement 0x0f 0x3a, add AVX
From: |
Richard Henderson |
Subject: |
Re: [PATCH 26/37] target/i386: reimplement 0x0f 0x3a, add AVX |
Date: |
Mon, 12 Sep 2022 16:33:31 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 |
On 9/12/22 00:04, Paolo Bonzini wrote:
@@ -839,6 +910,10 @@ static bool decode_insn(DisasContext *s, CPUX86State *env,
X86DecodeFunc decode_
}
}
if (e->op3 != X86_TYPE_None) {
+ /*
+ * A couple instructions actually use the extra immediate byte for an
Lx
+ * register operand; those are handled in the gen_* functions as one
off.
+ */
assert(e->op3 == X86_TYPE_I && e->s3 == X86_SIZE_b);
s->rip_offset += 1;
}
Comment should be squashed back with the code.
+static inline void gen_binary_imm_sse(DisasContext *s, CPUX86State *env,
X86DecodedInsn *decode,
+ SSEFunc_0_epppi xmm, SSEFunc_0_epppi ymm)
+{
+ TCGv_i32 imm = tcg_const_i32(decode->immediate);
tcg_constant_i32.
+static inline void gen_unary_imm_fp_sse(DisasContext *s, CPUX86State *env,
X86DecodedInsn *decode,
+ SSEFunc_0_eppi xmm, SSEFunc_0_eppi ymm)
+{
+ TCGv_i32 imm = tcg_const_i32(decode->immediate);
Likewise.
+static void gen_PALIGNR(DisasContext *s, CPUX86State *env, X86DecodedInsn
*decode)
+{
+ TCGv_i32 imm = tcg_const_i32(decode->immediate);
Likewise, but could simply be implemented with inline with extract2.
+static void gen_PCMPESTRI(DisasContext *s, CPUX86State *env, X86DecodedInsn
*decode)
+{
+ TCGv_i32 imm = tcg_const_i32(decode->immediate);
tcg_constant_i32.
+static void gen_PCMPESTRM(DisasContext *s, CPUX86State *env, X86DecodedInsn
*decode)
+{
+ TCGv_i32 imm = tcg_const_i32(decode->immediate);
Likewise.
static void gen_PCMPGTB(DisasContext *s, CPUX86State *env, X86DecodedInsn
*decode)
{
int vec_len = sse_vec_len(s, decode);
tcg_gen_ld8u_tl(s->T0, s->ptr1, offsetof(ZMMReg, ZMM_B(val)));
+ break;
+ case MO_16:
+ tcg_gen_ld16u_tl(s->T0, s->ptr1, offsetof(ZMMReg, ZMM_W(val)));
+ break;
Mailer breakage?
+ if (new_mask != 15) {
+ if ((val >> 0) & 1)
+ tcg_gen_st_i32(zero, s->ptr0, offsetof(ZMMReg, ZMM_L(0)));
+ if ((val >> 1) & 1)
+ tcg_gen_st_i32(zero, s->ptr0, offsetof(ZMMReg, ZMM_L(1)));
+ if ((val >> 2) & 1)
+ tcg_gen_st_i32(zero, s->ptr0, offsetof(ZMMReg, ZMM_L(2)));
+ if ((val >> 3) & 1)
+ tcg_gen_st_i32(zero, s->ptr0, offsetof(ZMMReg, ZMM_L(3)));
+ }
Missing braces.
r~
- Re: [PATCH 23/37] target/i386: reimplement 0x0f 0x78-0x7f, add AVX, (continued)
- [PATCH 25/37] target/i386: reimplement 0x0f 0xd0-0xd7, 0xe0-0xe7, 0xf0-0xf7, add AVX, Paolo Bonzini, 2022/09/11
- [PATCH 24/37] target/i386: reimplement 0x0f 0x70-0x77, add AVX, Paolo Bonzini, 2022/09/11
- [PATCH 27/37] target/i386: Use tcg gvec ops for pmovmskb, Paolo Bonzini, 2022/09/11
- [PATCH 26/37] target/i386: reimplement 0x0f 0x3a, add AVX, Paolo Bonzini, 2022/09/11
- Re: [PATCH 26/37] target/i386: reimplement 0x0f 0x3a, add AVX,
Richard Henderson <=
- [PATCH 28/37] target/i386: reimplement 0x0f 0x38, add AVX, Paolo Bonzini, 2022/09/11
[PATCH 29/37] target/i386: reimplement 0x0f 0xc2, 0xc4-0xc6, add AVX, Paolo Bonzini, 2022/09/11
[PATCH 31/37] target/i386: reimplement 0x0f 0x28-0x2f, add AVX, Paolo Bonzini, 2022/09/11
[PATCH 30/37] target/i386: reimplement 0x0f 0x10-0x17, add AVX, Paolo Bonzini, 2022/09/11