target/mips: Fix df_extract_val() and df_extract_df() dfe lookup
Actually look into dfe structure data so that df_extract_val() and
df_extract_df() can return immediate and datafield other than BYTE.
Fixes: 4701d23aef
("target/mips: Convert MSA BIT instruction format to decodetree")
Signed-off-by: Ni Hui <shuizhuyuanluo@126.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20220503130708.272850-2-shuizhuyuanluo@126.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
This commit is contained in:
parent
954d1658bd
commit
7fc235c67f
@ -68,8 +68,8 @@ struct dfe {
|
|||||||
static int df_extract_val(DisasContext *ctx, int x, const struct dfe *s)
|
static int df_extract_val(DisasContext *ctx, int x, const struct dfe *s)
|
||||||
{
|
{
|
||||||
for (unsigned i = 0; i < 4; i++) {
|
for (unsigned i = 0; i < 4; i++) {
|
||||||
if (extract32(x, s->start, s->length) == s->mask) {
|
if (extract32(x, s[i].start, s[i].length) == s[i].mask) {
|
||||||
return extract32(x, 0, s->start);
|
return extract32(x, 0, s[i].start);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
@ -82,7 +82,7 @@ static int df_extract_val(DisasContext *ctx, int x, const struct dfe *s)
|
|||||||
static int df_extract_df(DisasContext *ctx, int x, const struct dfe *s)
|
static int df_extract_df(DisasContext *ctx, int x, const struct dfe *s)
|
||||||
{
|
{
|
||||||
for (unsigned i = 0; i < 4; i++) {
|
for (unsigned i = 0; i < 4; i++) {
|
||||||
if (extract32(x, s->start, s->length) == s->mask) {
|
if (extract32(x, s[i].start, s[i].length) == s[i].mask) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user