* [PATCH-for-10.1 0/2] target/hexagon: Remove use of MO_TE definition
@ 2025-03-12 10:32 Philippe Mathieu-Daudé
2025-03-12 10:32 ` [PATCH-for-10.1 1/2] target/hexagon: Explode MO_TExx -> MO_TE | MO_xx Philippe Mathieu-Daudé
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-03-12 10:32 UTC (permalink / raw)
To: qemu-devel
Cc: Brian Cain, Anton Johansson, Alessandro Di Federico,
Philippe Mathieu-Daudé
In order to make QEMU core components endian agnostic,
we need to remove the use of the target-specific MO_TE
definition. For Hexagon it is easy as it is equivalent
of MO_LE, since the target is only little-endian.
Philippe Mathieu-Daudé (2):
target/hexagon: Explode MO_TExx -> MO_TE | MO_xx
target/hexagon: Replace MO_TE -> MO_LE
target/hexagon/macros.h | 10 +++++-----
target/hexagon/genptr.c | 8 ++++----
target/hexagon/idef-parser/parser-helpers.c | 2 +-
target/hexagon/translate.c | 6 +++---
4 files changed, 13 insertions(+), 13 deletions(-)
--
2.47.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH-for-10.1 1/2] target/hexagon: Explode MO_TExx -> MO_TE | MO_xx
2025-03-12 10:32 [PATCH-for-10.1 0/2] target/hexagon: Remove use of MO_TE definition Philippe Mathieu-Daudé
@ 2025-03-12 10:32 ` Philippe Mathieu-Daudé
2025-03-12 10:32 ` [PATCH-for-10.1 2/2] target/hexagon: Replace MO_TE -> MO_LE Philippe Mathieu-Daudé
2025-03-12 10:48 ` [PATCH-for-10.1 0/2] target/hexagon: Remove use of MO_TE definition Anton Johansson via
2 siblings, 0 replies; 4+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-03-12 10:32 UTC (permalink / raw)
To: qemu-devel
Cc: Brian Cain, Anton Johansson, Alessandro Di Federico,
Philippe Mathieu-Daudé
Extract the implicit MO_TE definition in order to replace
it in the next commit.
Mechanical change using:
$ for n in UW UL UQ UO SW SL SQ; do \
sed -i -e "s/MO_TE$n/MO_TE | MO_$n/" \
$(git grep -l MO_TE$n target/hexagon); \
done
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
target/hexagon/macros.h | 10 +++++-----
target/hexagon/genptr.c | 8 ++++----
target/hexagon/translate.c | 6 +++---
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/target/hexagon/macros.h b/target/hexagon/macros.h
index ee3d4c88e7b..57825efa55d 100644
--- a/target/hexagon/macros.h
+++ b/target/hexagon/macros.h
@@ -115,27 +115,27 @@
#define MEM_LOAD2s(DST, VA) \
do { \
CHECK_NOSHUF(VA, 2); \
- tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_TESW); \
+ tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_TE | MO_SW); \
} while (0)
#define MEM_LOAD2u(DST, VA) \
do { \
CHECK_NOSHUF(VA, 2); \
- tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_TEUW); \
+ tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_TE | MO_UW); \
} while (0)
#define MEM_LOAD4s(DST, VA) \
do { \
CHECK_NOSHUF(VA, 4); \
- tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_TESL); \
+ tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_TE | MO_SL); \
} while (0)
#define MEM_LOAD4u(DST, VA) \
do { \
CHECK_NOSHUF(VA, 4); \
- tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_TEUL); \
+ tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_TE | MO_UL); \
} while (0)
#define MEM_LOAD8u(DST, VA) \
do { \
CHECK_NOSHUF(VA, 8); \
- tcg_gen_qemu_ld_i64(DST, VA, ctx->mem_idx, MO_TEUQ); \
+ tcg_gen_qemu_ld_i64(DST, VA, ctx->mem_idx, MO_TE | MO_UQ); \
} while (0)
#define MEM_STORE1_FUNC(X) \
diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c
index 2c5e15cfcf6..561e93c9fd4 100644
--- a/target/hexagon/genptr.c
+++ b/target/hexagon/genptr.c
@@ -329,14 +329,14 @@ void gen_set_byte_i64(int N, TCGv_i64 result, TCGv src)
static inline void gen_load_locked4u(TCGv dest, TCGv vaddr, int mem_index)
{
- tcg_gen_qemu_ld_tl(dest, vaddr, mem_index, MO_TEUL);
+ tcg_gen_qemu_ld_tl(dest, vaddr, mem_index, MO_TE | MO_UL);
tcg_gen_mov_tl(hex_llsc_addr, vaddr);
tcg_gen_mov_tl(hex_llsc_val, dest);
}
static inline void gen_load_locked8u(TCGv_i64 dest, TCGv vaddr, int mem_index)
{
- tcg_gen_qemu_ld_i64(dest, vaddr, mem_index, MO_TEUQ);
+ tcg_gen_qemu_ld_i64(dest, vaddr, mem_index, MO_TE | MO_UQ);
tcg_gen_mov_tl(hex_llsc_addr, vaddr);
tcg_gen_mov_i64(hex_llsc_val_i64, dest);
}
@@ -756,7 +756,7 @@ static void gen_load_frame(DisasContext *ctx, TCGv_i64 frame, TCGv EA)
{
Insn *insn = ctx->insn; /* Needed for CHECK_NOSHUF */
CHECK_NOSHUF(EA, 8);
- tcg_gen_qemu_ld_i64(frame, EA, ctx->mem_idx, MO_TEUQ);
+ tcg_gen_qemu_ld_i64(frame, EA, ctx->mem_idx, MO_TE | MO_UQ);
}
#ifndef CONFIG_HEXAGON_IDEF_PARSER
@@ -1230,7 +1230,7 @@ static void gen_vreg_load(DisasContext *ctx, intptr_t dstoff, TCGv src,
tcg_gen_andi_tl(src, src, ~((int32_t)sizeof(MMVector) - 1));
}
for (int i = 0; i < sizeof(MMVector) / 8; i++) {
- tcg_gen_qemu_ld_i64(tmp, src, ctx->mem_idx, MO_TEUQ);
+ tcg_gen_qemu_ld_i64(tmp, src, ctx->mem_idx, MO_TE | MO_UQ);
tcg_gen_addi_tl(src, src, 8);
tcg_gen_st_i64(tmp, tcg_env, dstoff + i * 8);
}
diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c
index fe7858703c8..0e1183836ca 100644
--- a/target/hexagon/translate.c
+++ b/target/hexagon/translate.c
@@ -656,17 +656,17 @@ void process_store(DisasContext *ctx, int slot_num)
case 2:
tcg_gen_qemu_st_tl(hex_store_val32[slot_num],
hex_store_addr[slot_num],
- ctx->mem_idx, MO_TEUW);
+ ctx->mem_idx, MO_TE | MO_UW);
break;
case 4:
tcg_gen_qemu_st_tl(hex_store_val32[slot_num],
hex_store_addr[slot_num],
- ctx->mem_idx, MO_TEUL);
+ ctx->mem_idx, MO_TE | MO_UL);
break;
case 8:
tcg_gen_qemu_st_i64(hex_store_val64[slot_num],
hex_store_addr[slot_num],
- ctx->mem_idx, MO_TEUQ);
+ ctx->mem_idx, MO_TE | MO_UQ);
break;
default:
{
--
2.47.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH-for-10.1 2/2] target/hexagon: Replace MO_TE -> MO_LE
2025-03-12 10:32 [PATCH-for-10.1 0/2] target/hexagon: Remove use of MO_TE definition Philippe Mathieu-Daudé
2025-03-12 10:32 ` [PATCH-for-10.1 1/2] target/hexagon: Explode MO_TExx -> MO_TE | MO_xx Philippe Mathieu-Daudé
@ 2025-03-12 10:32 ` Philippe Mathieu-Daudé
2025-03-12 10:48 ` [PATCH-for-10.1 0/2] target/hexagon: Remove use of MO_TE definition Anton Johansson via
2 siblings, 0 replies; 4+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-03-12 10:32 UTC (permalink / raw)
To: qemu-devel
Cc: Brian Cain, Anton Johansson, Alessandro Di Federico,
Philippe Mathieu-Daudé
We only build the Hexagon target using little endianness order.
The MO_TE definition always expands to MO_LE. Use the latter to
simplify.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
target/hexagon/macros.h | 10 +++++-----
target/hexagon/genptr.c | 8 ++++----
target/hexagon/idef-parser/parser-helpers.c | 2 +-
target/hexagon/translate.c | 6 +++---
4 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/target/hexagon/macros.h b/target/hexagon/macros.h
index 57825efa55d..e5eb31e6711 100644
--- a/target/hexagon/macros.h
+++ b/target/hexagon/macros.h
@@ -115,27 +115,27 @@
#define MEM_LOAD2s(DST, VA) \
do { \
CHECK_NOSHUF(VA, 2); \
- tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_TE | MO_SW); \
+ tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_LE | MO_SW); \
} while (0)
#define MEM_LOAD2u(DST, VA) \
do { \
CHECK_NOSHUF(VA, 2); \
- tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_TE | MO_UW); \
+ tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_LE | MO_UW); \
} while (0)
#define MEM_LOAD4s(DST, VA) \
do { \
CHECK_NOSHUF(VA, 4); \
- tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_TE | MO_SL); \
+ tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_LE | MO_SL); \
} while (0)
#define MEM_LOAD4u(DST, VA) \
do { \
CHECK_NOSHUF(VA, 4); \
- tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_TE | MO_UL); \
+ tcg_gen_qemu_ld_tl(DST, VA, ctx->mem_idx, MO_LE | MO_UL); \
} while (0)
#define MEM_LOAD8u(DST, VA) \
do { \
CHECK_NOSHUF(VA, 8); \
- tcg_gen_qemu_ld_i64(DST, VA, ctx->mem_idx, MO_TE | MO_UQ); \
+ tcg_gen_qemu_ld_i64(DST, VA, ctx->mem_idx, MO_LE | MO_UQ); \
} while (0)
#define MEM_STORE1_FUNC(X) \
diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c
index 561e93c9fd4..08fc5413de7 100644
--- a/target/hexagon/genptr.c
+++ b/target/hexagon/genptr.c
@@ -329,14 +329,14 @@ void gen_set_byte_i64(int N, TCGv_i64 result, TCGv src)
static inline void gen_load_locked4u(TCGv dest, TCGv vaddr, int mem_index)
{
- tcg_gen_qemu_ld_tl(dest, vaddr, mem_index, MO_TE | MO_UL);
+ tcg_gen_qemu_ld_tl(dest, vaddr, mem_index, MO_LE | MO_UL);
tcg_gen_mov_tl(hex_llsc_addr, vaddr);
tcg_gen_mov_tl(hex_llsc_val, dest);
}
static inline void gen_load_locked8u(TCGv_i64 dest, TCGv vaddr, int mem_index)
{
- tcg_gen_qemu_ld_i64(dest, vaddr, mem_index, MO_TE | MO_UQ);
+ tcg_gen_qemu_ld_i64(dest, vaddr, mem_index, MO_LE | MO_UQ);
tcg_gen_mov_tl(hex_llsc_addr, vaddr);
tcg_gen_mov_i64(hex_llsc_val_i64, dest);
}
@@ -756,7 +756,7 @@ static void gen_load_frame(DisasContext *ctx, TCGv_i64 frame, TCGv EA)
{
Insn *insn = ctx->insn; /* Needed for CHECK_NOSHUF */
CHECK_NOSHUF(EA, 8);
- tcg_gen_qemu_ld_i64(frame, EA, ctx->mem_idx, MO_TE | MO_UQ);
+ tcg_gen_qemu_ld_i64(frame, EA, ctx->mem_idx, MO_LE | MO_UQ);
}
#ifndef CONFIG_HEXAGON_IDEF_PARSER
@@ -1230,7 +1230,7 @@ static void gen_vreg_load(DisasContext *ctx, intptr_t dstoff, TCGv src,
tcg_gen_andi_tl(src, src, ~((int32_t)sizeof(MMVector) - 1));
}
for (int i = 0; i < sizeof(MMVector) / 8; i++) {
- tcg_gen_qemu_ld_i64(tmp, src, ctx->mem_idx, MO_TE | MO_UQ);
+ tcg_gen_qemu_ld_i64(tmp, src, ctx->mem_idx, MO_LE | MO_UQ);
tcg_gen_addi_tl(src, src, 8);
tcg_gen_st_i64(tmp, tcg_env, dstoff + i * 8);
}
diff --git a/target/hexagon/idef-parser/parser-helpers.c b/target/hexagon/idef-parser/parser-helpers.c
index a7dcd85fe43..542af8d0a65 100644
--- a/target/hexagon/idef-parser/parser-helpers.c
+++ b/target/hexagon/idef-parser/parser-helpers.c
@@ -1761,7 +1761,7 @@ void gen_load(Context *c, YYLTYPE *locp, HexValue *width,
if (signedness == SIGNED) {
OUT(c, locp, " | MO_SIGN");
}
- OUT(c, locp, " | MO_TE);\n");
+ OUT(c, locp, " | MO_LE);\n");
}
void gen_store(Context *c, YYLTYPE *locp, HexValue *width, HexValue *ea,
diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c
index 0e1183836ca..38964791e70 100644
--- a/target/hexagon/translate.c
+++ b/target/hexagon/translate.c
@@ -656,17 +656,17 @@ void process_store(DisasContext *ctx, int slot_num)
case 2:
tcg_gen_qemu_st_tl(hex_store_val32[slot_num],
hex_store_addr[slot_num],
- ctx->mem_idx, MO_TE | MO_UW);
+ ctx->mem_idx, MO_LE | MO_UW);
break;
case 4:
tcg_gen_qemu_st_tl(hex_store_val32[slot_num],
hex_store_addr[slot_num],
- ctx->mem_idx, MO_TE | MO_UL);
+ ctx->mem_idx, MO_LE | MO_UL);
break;
case 8:
tcg_gen_qemu_st_i64(hex_store_val64[slot_num],
hex_store_addr[slot_num],
- ctx->mem_idx, MO_TE | MO_UQ);
+ ctx->mem_idx, MO_LE | MO_UQ);
break;
default:
{
--
2.47.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH-for-10.1 0/2] target/hexagon: Remove use of MO_TE definition
2025-03-12 10:32 [PATCH-for-10.1 0/2] target/hexagon: Remove use of MO_TE definition Philippe Mathieu-Daudé
2025-03-12 10:32 ` [PATCH-for-10.1 1/2] target/hexagon: Explode MO_TExx -> MO_TE | MO_xx Philippe Mathieu-Daudé
2025-03-12 10:32 ` [PATCH-for-10.1 2/2] target/hexagon: Replace MO_TE -> MO_LE Philippe Mathieu-Daudé
@ 2025-03-12 10:48 ` Anton Johansson via
2 siblings, 0 replies; 4+ messages in thread
From: Anton Johansson via @ 2025-03-12 10:48 UTC (permalink / raw)
To: Philippe Mathieu-Daudé
Cc: qemu-devel, Brian Cain, Alessandro Di Federico
On 12/03/25, Philippe Mathieu-Daudé wrote:
> In order to make QEMU core components endian agnostic,
> we need to remove the use of the target-specific MO_TE
> definition. For Hexagon it is easy as it is equivalent
> of MO_LE, since the target is only little-endian.
>
> Philippe Mathieu-Daudé (2):
> target/hexagon: Explode MO_TExx -> MO_TE | MO_xx
> target/hexagon: Replace MO_TE -> MO_LE
>
> target/hexagon/macros.h | 10 +++++-----
> target/hexagon/genptr.c | 8 ++++----
> target/hexagon/idef-parser/parser-helpers.c | 2 +-
> target/hexagon/translate.c | 6 +++---
> 4 files changed, 13 insertions(+), 13 deletions(-)
>
> --
> 2.47.1
>
Series:
Reviewed-by: Anton Johansson <anjo@rev.ng>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-03-12 10:48 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-12 10:32 [PATCH-for-10.1 0/2] target/hexagon: Remove use of MO_TE definition Philippe Mathieu-Daudé
2025-03-12 10:32 ` [PATCH-for-10.1 1/2] target/hexagon: Explode MO_TExx -> MO_TE | MO_xx Philippe Mathieu-Daudé
2025-03-12 10:32 ` [PATCH-for-10.1 2/2] target/hexagon: Replace MO_TE -> MO_LE Philippe Mathieu-Daudé
2025-03-12 10:48 ` [PATCH-for-10.1 0/2] target/hexagon: Remove use of MO_TE definition Anton Johansson via
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).