aboutsummaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2023-02-26 17:12:05 -1000
committerRichard Henderson <richard.henderson@linaro.org>2023-03-05 13:45:16 -0800
commit3b10fd8f09185b389ecbe56d2b246bb10248d76d (patch)
treeae05e7e95266d110b3aa32dfcbd50f171ab0205c /target
parente0df97777c11c5f62313f8b1395a358b6fa02cb7 (diff)
downloadqemu-3b10fd8f09185b389ecbe56d2b246bb10248d76d.zip
qemu-3b10fd8f09185b389ecbe56d2b246bb10248d76d.tar.gz
qemu-3b10fd8f09185b389ecbe56d2b246bb10248d76d.tar.bz2
target/hexagon/idef-parser: Use gen_constant for gen_extend_tcg_width_op
We already have a temporary, res, which we can use for the intermediate shift result. Simplify the constant to -1 instead of 0xf*f. This was the last use of gen_tmp_value, so remove it. Reviewed-by: Taylor Simpson <tsimpson@quicinc.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'target')
-rw-r--r--target/hexagon/idef-parser/parser-helpers.c30
1 files changed, 3 insertions, 27 deletions
diff --git a/target/hexagon/idef-parser/parser-helpers.c b/target/hexagon/idef-parser/parser-helpers.c
index c0e6f21..e1a5541 100644
--- a/target/hexagon/idef-parser/parser-helpers.c
+++ b/target/hexagon/idef-parser/parser-helpers.c
@@ -305,26 +305,6 @@ HexValue gen_tmp(Context *c,
return rvalue;
}
-static HexValue gen_tmp_value(Context *c,
- YYLTYPE *locp,
- const char *value,
- unsigned bit_width,
- HexSignedness signedness)
-{
- HexValue rvalue;
- assert(bit_width == 32 || bit_width == 64);
- memset(&rvalue, 0, sizeof(HexValue));
- rvalue.type = TEMP;
- rvalue.bit_width = bit_width;
- rvalue.signedness = signedness;
- rvalue.is_dotnew = false;
- rvalue.tmp.index = c->inst.tmp_count;
- OUT(c, locp, "TCGv_i", &bit_width, " tmp_", &c->inst.tmp_count,
- " = tcg_const_i", &bit_width, "(", value, ");\n");
- c->inst.tmp_count++;
- return rvalue;
-}
-
static HexValue gen_constant_from_imm(Context *c,
YYLTYPE *locp,
HexValue *value)
@@ -1120,15 +1100,11 @@ static HexValue gen_extend_tcg_width_op(Context *c,
OUT(c, locp, "tcg_gen_subfi_i", &dst_width);
OUT(c, locp, "(", &shift, ", ", &dst_width, ", ", &src_width_m, ");\n");
if (signedness == UNSIGNED) {
- const char *mask_str = (dst_width == 32)
- ? "0xffffffff"
- : "0xffffffffffffffff";
- HexValue mask = gen_tmp_value(c, locp, mask_str,
- dst_width, UNSIGNED);
+ HexValue mask = gen_constant(c, locp, "-1", dst_width, UNSIGNED);
OUT(c, locp, "tcg_gen_shr_i", &dst_width, "(",
- &mask, ", ", &mask, ", ", &shift, ");\n");
+ &res, ", ", &mask, ", ", &shift, ");\n");
OUT(c, locp, "tcg_gen_and_i", &dst_width, "(",
- &res, ", ", value, ", ", &mask, ");\n");
+ &res, ", ", &res, ", ", value, ");\n");
} else {
OUT(c, locp, "tcg_gen_shl_i", &dst_width, "(",
&res, ", ", value, ", ", &shift, ");\n");