* [PATCH v2 0/8] tcg: Document *swap* helper implementations
@ 2023-08-23 14:55 Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 1/8] tcg/tcg-op: Document bswap16_i32() byte pattern Philippe Mathieu-Daudé
` (8 more replies)
0 siblings, 9 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-08-23 14:55 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Edgar E. Iglesias, Paolo Bonzini,
Philippe Mathieu-Daudé
Since v1 [*]:
- Split few patches
- Dropped 'document deposit_z()'
- Document TCG_BSWAP_IZ flag (rth)
- Added R-b tags
[*] https://lore.kernel.org/qemu-devel/20230822093712.38922-1-philmd@linaro.org/
Supersedes: <20230822093712.38922-1-philmd@linaro.org>
Philippe Mathieu-Daudé (8):
tcg/tcg-op: Document bswap16_i32() byte pattern
tcg/tcg-op: Document bswap16_i64() byte pattern
tcg/tcg-op: Document bswap32_i32() byte pattern
tcg/tcg-op: Document bswap32_i64() byte pattern
tcg/tcg-op: Document bswap64_i64() byte pattern
tcg/tcg-op: Document hswap_i32/64() byte pattern
tcg/tcg-op: Document wswap_i64() byte pattern
target/cris: Fix a typo in gen_swapr()
target/cris/translate.c | 20 ++++---
tcg/tcg-op.c | 124 +++++++++++++++++++++++++++++++---------
2 files changed, 107 insertions(+), 37 deletions(-)
--
2.41.0
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 1/8] tcg/tcg-op: Document bswap16_i32() byte pattern
2023-08-23 14:55 [PATCH v2 0/8] tcg: Document *swap* helper implementations Philippe Mathieu-Daudé
@ 2023-08-23 14:55 ` Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 2/8] tcg/tcg-op: Document bswap16_i64() " Philippe Mathieu-Daudé
` (7 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-08-23 14:55 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Edgar E. Iglesias, Paolo Bonzini,
Philippe Mathieu-Daudé
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
tcg/tcg-op.c | 32 ++++++++++++++++++++++++--------
1 file changed, 24 insertions(+), 8 deletions(-)
diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
index 7aadb37756..c1b9a3e34c 100644
--- a/tcg/tcg-op.c
+++ b/tcg/tcg-op.c
@@ -1021,6 +1021,15 @@ void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg)
}
}
+/*
+ * bswap16_i32: 16-bit byte swap on the low bits of a 32-bit value.
+ *
+ * flags
+ * Byte pattern: bswap16_i32(..ab) -> .aba (TCG_BSWAP_IZ)
+ * bswap16_i32(xxab) -> ..ba (TCG_BSWAP_OZ)
+ * bswap16_i32(xxab) -> ssba (TCG_BSWAP_OS)
+ * bswap16_i32(xxab) -> xaba
+ */
void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags)
{
/* Only one extension flag may be present. */
@@ -1032,22 +1041,29 @@ void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags)
TCGv_i32 t0 = tcg_temp_ebb_new_i32();
TCGv_i32 t1 = tcg_temp_ebb_new_i32();
- tcg_gen_shri_i32(t0, arg, 8);
+ /* arg = xxab (IZ=0) */
+ /* = ..ab (IZ=1) */
+ tcg_gen_shri_i32(t0, arg, 8); /* t0 = .xxa (IZ=0) */
+ /* = ...a (IZ=1) */
if (!(flags & TCG_BSWAP_IZ)) {
- tcg_gen_ext8u_i32(t0, t0);
+ tcg_gen_ext8u_i32(t0, t0); /* t0 = ...a (IZ=0) */
}
if (flags & TCG_BSWAP_OS) {
- tcg_gen_shli_i32(t1, arg, 24);
- tcg_gen_sari_i32(t1, t1, 16);
+ tcg_gen_shli_i32(t1, arg, 24); /* t1 = b... (OS=1) */
+ tcg_gen_sari_i32(t1, t1, 16); /* t1 = ssb. (OS=1) */
} else if (flags & TCG_BSWAP_OZ) {
- tcg_gen_ext8u_i32(t1, arg);
- tcg_gen_shli_i32(t1, t1, 8);
+ tcg_gen_ext8u_i32(t1, arg); /* t1 = ...b (OZ=1) */
+ tcg_gen_shli_i32(t1, t1, 8); /* t1 = ..b. (OZ=1) */
} else {
- tcg_gen_shli_i32(t1, arg, 8);
+ tcg_gen_shli_i32(t1, arg, 8); /* t1 = xab. (IZ=0) */
+ /* = .ab. (IZ=1) */
}
- tcg_gen_or_i32(ret, t0, t1);
+ tcg_gen_or_i32(ret, t0, t1); /* ret = ..ba (OZ=1) */
+ /* = ssba (OS=1) */
+ /* = .aba (IZ=1) */
+ /* = xaba (no flag) */
tcg_temp_free_i32(t0);
tcg_temp_free_i32(t1);
}
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 2/8] tcg/tcg-op: Document bswap16_i64() byte pattern
2023-08-23 14:55 [PATCH v2 0/8] tcg: Document *swap* helper implementations Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 1/8] tcg/tcg-op: Document bswap16_i32() byte pattern Philippe Mathieu-Daudé
@ 2023-08-23 14:55 ` Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 3/8] tcg/tcg-op: Document bswap32_i32() " Philippe Mathieu-Daudé
` (6 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-08-23 14:55 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Edgar E. Iglesias, Paolo Bonzini,
Philippe Mathieu-Daudé
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
tcg/tcg-op.c | 31 +++++++++++++++++++++++--------
1 file changed, 23 insertions(+), 8 deletions(-)
diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
index c1b9a3e34c..80ec6f01c4 100644
--- a/tcg/tcg-op.c
+++ b/tcg/tcg-op.c
@@ -1737,6 +1737,15 @@ void tcg_gen_ext32u_i64(TCGv_i64 ret, TCGv_i64 arg)
}
}
+/*
+ * bswap16_i64: 16-bit byte swap on the low bits of a 64-bit value.
+ *
+ * flags
+ * Byte pattern: bswap16_i32(......ab) -> ......ba (TCG_BSWAP_IZ)
+ * bswap16_i32(xxxxxxab) -> ......ba (TCG_BSWAP_OZ)
+ * bswap16_i32(xxxxxxab) -> ssssssba (TCG_BSWAP_OS)
+ * bswap16_i32(xxxxxxab) -> xxxxxxba
+ */
void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg, int flags)
{
/* Only one extension flag may be present. */
@@ -1755,22 +1764,28 @@ void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg, int flags)
TCGv_i64 t0 = tcg_temp_ebb_new_i64();
TCGv_i64 t1 = tcg_temp_ebb_new_i64();
- tcg_gen_shri_i64(t0, arg, 8);
+ /* arg = xxxxxxab (IZ=0) */
+ /* = ......ab (IZ=1) */
+ tcg_gen_shri_i64(t0, arg, 8); /* t0 = .xxxxxxa (IZ=0) */
+ /* = .......a (IZ=1) */
if (!(flags & TCG_BSWAP_IZ)) {
- tcg_gen_ext8u_i64(t0, t0);
+ tcg_gen_ext8u_i64(t0, t0); /* t0 = .......a (IZ=0) */
}
if (flags & TCG_BSWAP_OS) {
- tcg_gen_shli_i64(t1, arg, 56);
- tcg_gen_sari_i64(t1, t1, 48);
+ tcg_gen_shli_i64(t1, arg, 56); /* t1 = b....... (OS=1) */
+ tcg_gen_sari_i64(t1, t1, 48); /* t1 = ssssssb. (OS=1) */
} else if (flags & TCG_BSWAP_OZ) {
- tcg_gen_ext8u_i64(t1, arg);
- tcg_gen_shli_i64(t1, t1, 8);
+ tcg_gen_ext8u_i64(t1, arg); /* t1 = .......b (OZ=1) */
+ tcg_gen_shli_i64(t1, t1, 8); /* t1 = ......b. (OZ=1) */
} else {
- tcg_gen_shli_i64(t1, arg, 8);
+ tcg_gen_shli_i64(t1, arg, 8); /* t1 = xxxxxxb. (IZ=0) */
+ /* ......b. (IZ=1) */
}
- tcg_gen_or_i64(ret, t0, t1);
+ tcg_gen_or_i64(ret, t0, t1); /* ret = ......ba (IZ=1 or OZ=1) */
+ /* ssssssba (OS=1) */
+ /* xxxxxxba (no flag) */
tcg_temp_free_i64(t0);
tcg_temp_free_i64(t1);
}
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 3/8] tcg/tcg-op: Document bswap32_i32() byte pattern
2023-08-23 14:55 [PATCH v2 0/8] tcg: Document *swap* helper implementations Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 1/8] tcg/tcg-op: Document bswap16_i32() byte pattern Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 2/8] tcg/tcg-op: Document bswap16_i64() " Philippe Mathieu-Daudé
@ 2023-08-23 14:55 ` Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 4/8] tcg/tcg-op: Document bswap32_i64() " Philippe Mathieu-Daudé
` (5 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-08-23 14:55 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Edgar E. Iglesias, Paolo Bonzini,
Philippe Mathieu-Daudé
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
tcg/tcg-op.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
index 80ec6f01c4..fc9b21d30c 100644
--- a/tcg/tcg-op.c
+++ b/tcg/tcg-op.c
@@ -1069,6 +1069,11 @@ void tcg_gen_bswap16_i32(TCGv_i32 ret, TCGv_i32 arg, int flags)
}
}
+/*
+ * bswap32_i32: 32-bit byte swap on a 32-bit value.
+ *
+ * Byte pattern: bswap32_i32(abcd) -> dcba
+ */
void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg)
{
if (TCG_TARGET_HAS_bswap32_i32) {
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 4/8] tcg/tcg-op: Document bswap32_i64() byte pattern
2023-08-23 14:55 [PATCH v2 0/8] tcg: Document *swap* helper implementations Philippe Mathieu-Daudé
` (2 preceding siblings ...)
2023-08-23 14:55 ` [PATCH v2 3/8] tcg/tcg-op: Document bswap32_i32() " Philippe Mathieu-Daudé
@ 2023-08-23 14:55 ` Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 5/8] tcg/tcg-op: Document bswap64_i64() " Philippe Mathieu-Daudé
` (4 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-08-23 14:55 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Edgar E. Iglesias, Paolo Bonzini,
Philippe Mathieu-Daudé
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
tcg/tcg-op.c | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)
diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
index fc9b21d30c..e6e62c4278 100644
--- a/tcg/tcg-op.c
+++ b/tcg/tcg-op.c
@@ -1796,6 +1796,13 @@ void tcg_gen_bswap16_i64(TCGv_i64 ret, TCGv_i64 arg, int flags)
}
}
+/*
+ * bswap32_i64: 32-bit byte swap on the low bits of a 64-bit value.
+ *
+ * flags
+ * Byte pattern: bswap32_i64(xxxxabcd) -> ssssdcba (TCG_BSWAP_OS)
+ * bswap32_i64(xxxxabcd) -> ....dcba
+ */
void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags)
{
/* Only one extension flag may be present. */
@@ -1815,8 +1822,10 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags)
TCGv_i64 t1 = tcg_temp_ebb_new_i64();
TCGv_i64 t2 = tcg_constant_i64(0x00ff00ff);
- /* arg = xxxxabcd */
- tcg_gen_shri_i64(t0, arg, 8); /* t0 = .xxxxabc */
+ /* arg = xxxxabcd (IZ=0) */
+ /* ....abcd (IZ=1) */
+ tcg_gen_shri_i64(t0, arg, 8); /* t0 = .xxxxabc (IZ=0) */
+ /* .....abc (IZ=1) */
tcg_gen_and_i64(t1, arg, t2); /* t1 = .....b.d */
tcg_gen_and_i64(t0, t0, t2); /* t0 = .....a.c */
tcg_gen_shli_i64(t1, t1, 8); /* t1 = ....b.d. */
@@ -1825,11 +1834,12 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags)
tcg_gen_shli_i64(t1, ret, 48); /* t1 = dc...... */
tcg_gen_shri_i64(t0, ret, 16); /* t0 = ......ba */
if (flags & TCG_BSWAP_OS) {
- tcg_gen_sari_i64(t1, t1, 32); /* t1 = ssssdc.. */
+ tcg_gen_sari_i64(t1, t1, 32); /* t1 = ssssdc.. (OS=1) */
} else {
- tcg_gen_shri_i64(t1, t1, 32); /* t1 = ....dc.. */
+ tcg_gen_shri_i64(t1, t1, 32); /* t1 = ....dc.. (OS=0) */
}
- tcg_gen_or_i64(ret, t0, t1); /* ret = ssssdcba */
+ tcg_gen_or_i64(ret, t0, t1); /* ret = ssssdcba (OS=1) */
+ /* ....dcba (OS=0) */
tcg_temp_free_i64(t0);
tcg_temp_free_i64(t1);
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 5/8] tcg/tcg-op: Document bswap64_i64() byte pattern
2023-08-23 14:55 [PATCH v2 0/8] tcg: Document *swap* helper implementations Philippe Mathieu-Daudé
` (3 preceding siblings ...)
2023-08-23 14:55 ` [PATCH v2 4/8] tcg/tcg-op: Document bswap32_i64() " Philippe Mathieu-Daudé
@ 2023-08-23 14:55 ` Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 6/8] tcg/tcg-op: Document hswap_i32/64() " Philippe Mathieu-Daudé
` (3 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-08-23 14:55 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Edgar E. Iglesias, Paolo Bonzini,
Philippe Mathieu-Daudé
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
tcg/tcg-op.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
index e6e62c4278..45290cccad 100644
--- a/tcg/tcg-op.c
+++ b/tcg/tcg-op.c
@@ -1846,6 +1846,11 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags)
}
}
+/*
+ * bswap64_i64: 64-bit byte swap on a 64-bit value.
+ *
+ * Byte pattern: bswap64_i64(abcdefgh) -> hgfedcba
+ */
void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg)
{
if (TCG_TARGET_REG_BITS == 32) {
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 6/8] tcg/tcg-op: Document hswap_i32/64() byte pattern
2023-08-23 14:55 [PATCH v2 0/8] tcg: Document *swap* helper implementations Philippe Mathieu-Daudé
` (4 preceding siblings ...)
2023-08-23 14:55 ` [PATCH v2 5/8] tcg/tcg-op: Document bswap64_i64() " Philippe Mathieu-Daudé
@ 2023-08-23 14:55 ` Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 7/8] tcg/tcg-op: Document wswap_i64() " Philippe Mathieu-Daudé
` (2 subsequent siblings)
8 siblings, 0 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-08-23 14:55 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Edgar E. Iglesias, Paolo Bonzini,
Philippe Mathieu-Daudé
Document hswap_i32() and hswap_i64(), added in commit
46be8425ff ("tcg: Implement tcg_gen_{h,w}swap_{i32,i64}").
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
tcg/tcg-op.c | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
index 45290cccad..94134981a9 100644
--- a/tcg/tcg-op.c
+++ b/tcg/tcg-op.c
@@ -1099,6 +1099,11 @@ void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg)
}
}
+/*
+ * hswap_i32: Swap 16-bit halfwords within a 32-bit value.
+ *
+ * Byte pattern: hswap_i32(abcd) -> cdab
+ */
void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg)
{
/* Swapping 2 16-bit elements is a rotate. */
@@ -1896,19 +1901,26 @@ void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg)
}
}
+/*
+ * hswap_i64: Swap 16-bit halfwords within a 64-bit value.
+ *
+ * See hswap64() in include/qemu/bitops.h
+ *
+ * Byte pattern: hswap_i64(abcdefgh) -> ghefcdab
+ */
void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg)
{
uint64_t m = 0x0000ffff0000ffffull;
TCGv_i64 t0 = tcg_temp_ebb_new_i64();
TCGv_i64 t1 = tcg_temp_ebb_new_i64();
- /* See include/qemu/bitops.h, hswap64. */
- tcg_gen_rotli_i64(t1, arg, 32);
- tcg_gen_andi_i64(t0, t1, m);
- tcg_gen_shli_i64(t0, t0, 16);
- tcg_gen_shri_i64(t1, t1, 16);
- tcg_gen_andi_i64(t1, t1, m);
- tcg_gen_or_i64(ret, t0, t1);
+ /* arg = abcdefgh */
+ tcg_gen_rotli_i64(t1, arg, 32); /* t1 = efghabcd */
+ tcg_gen_andi_i64(t0, t1, m); /* t0 = ..gh..cd */
+ tcg_gen_shli_i64(t0, t0, 16); /* t0 = gh..cd.. */
+ tcg_gen_shri_i64(t1, t1, 16); /* t1 = ..efghab */
+ tcg_gen_andi_i64(t1, t1, m); /* t1 = ..ef..ab */
+ tcg_gen_or_i64(ret, t0, t1); /* ret = ghefcdab */
tcg_temp_free_i64(t0);
tcg_temp_free_i64(t1);
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 7/8] tcg/tcg-op: Document wswap_i64() byte pattern
2023-08-23 14:55 [PATCH v2 0/8] tcg: Document *swap* helper implementations Philippe Mathieu-Daudé
` (5 preceding siblings ...)
2023-08-23 14:55 ` [PATCH v2 6/8] tcg/tcg-op: Document hswap_i32/64() " Philippe Mathieu-Daudé
@ 2023-08-23 14:55 ` Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 8/8] target/cris: Fix a typo in gen_swapr() Philippe Mathieu-Daudé
2023-08-23 18:46 ` [PATCH v2 0/8] tcg: Document *swap* helper implementations Richard Henderson
8 siblings, 0 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-08-23 14:55 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Edgar E. Iglesias, Paolo Bonzini,
Philippe Mathieu-Daudé
Document wswap_i64(), added in commit 46be8425ff
("tcg: Implement tcg_gen_{h,w}swap_{i32,i64}").
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
tcg/tcg-op.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c
index 94134981a9..65a2e5462e 100644
--- a/tcg/tcg-op.c
+++ b/tcg/tcg-op.c
@@ -1926,6 +1926,11 @@ void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg)
tcg_temp_free_i64(t1);
}
+/*
+ * wswap_i64: Swap 32-bit words within a 64-bit value.
+ *
+ * Byte pattern: wswap_i64(abcdefgh) -> efghabcd
+ */
void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg)
{
/* Swapping 2 32-bit elements is a rotate. */
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 8/8] target/cris: Fix a typo in gen_swapr()
2023-08-23 14:55 [PATCH v2 0/8] tcg: Document *swap* helper implementations Philippe Mathieu-Daudé
` (6 preceding siblings ...)
2023-08-23 14:55 ` [PATCH v2 7/8] tcg/tcg-op: Document wswap_i64() " Philippe Mathieu-Daudé
@ 2023-08-23 14:55 ` Philippe Mathieu-Daudé
2023-09-01 15:59 ` Edgar E. Iglesias
2023-08-23 18:46 ` [PATCH v2 0/8] tcg: Document *swap* helper implementations Richard Henderson
8 siblings, 1 reply; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-08-23 14:55 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Edgar E. Iglesias, Paolo Bonzini,
Philippe Mathieu-Daudé
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
target/cris/translate.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/target/cris/translate.c b/target/cris/translate.c
index 0b3d724281..42103b5558 100644
--- a/target/cris/translate.c
+++ b/target/cris/translate.c
@@ -411,15 +411,17 @@ static inline void t_gen_swapw(TCGv d, TCGv s)
tcg_gen_or_tl(d, d, t);
}
-/* Reverse the within each byte.
- T0 = (((T0 << 7) & 0x80808080) |
- ((T0 << 5) & 0x40404040) |
- ((T0 << 3) & 0x20202020) |
- ((T0 << 1) & 0x10101010) |
- ((T0 >> 1) & 0x08080808) |
- ((T0 >> 3) & 0x04040404) |
- ((T0 >> 5) & 0x02020202) |
- ((T0 >> 7) & 0x01010101));
+/*
+ * Reverse the bits within each byte.
+ *
+ * T0 = ((T0 << 7) & 0x80808080)
+ * | ((T0 << 5) & 0x40404040)
+ * | ((T0 << 3) & 0x20202020)
+ * | ((T0 << 1) & 0x10101010)
+ * | ((T0 >> 1) & 0x08080808)
+ * | ((T0 >> 3) & 0x04040404)
+ * | ((T0 >> 5) & 0x02020202)
+ * | ((T0 >> 7) & 0x01010101);
*/
static void t_gen_swapr(TCGv d, TCGv s)
{
--
2.41.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 0/8] tcg: Document *swap* helper implementations
2023-08-23 14:55 [PATCH v2 0/8] tcg: Document *swap* helper implementations Philippe Mathieu-Daudé
` (7 preceding siblings ...)
2023-08-23 14:55 ` [PATCH v2 8/8] target/cris: Fix a typo in gen_swapr() Philippe Mathieu-Daudé
@ 2023-08-23 18:46 ` Richard Henderson
2023-08-23 21:54 ` Philippe Mathieu-Daudé
8 siblings, 1 reply; 12+ messages in thread
From: Richard Henderson @ 2023-08-23 18:46 UTC (permalink / raw)
To: Philippe Mathieu-Daudé, qemu-devel; +Cc: Edgar E. Iglesias, Paolo Bonzini
On 8/23/23 07:55, Philippe Mathieu-Daudé wrote:
> Philippe Mathieu-Daudé (8):
> tcg/tcg-op: Document bswap16_i32() byte pattern
> tcg/tcg-op: Document bswap16_i64() byte pattern
> tcg/tcg-op: Document bswap32_i32() byte pattern
> tcg/tcg-op: Document bswap32_i64() byte pattern
> tcg/tcg-op: Document bswap64_i64() byte pattern
> tcg/tcg-op: Document hswap_i32/64() byte pattern
> tcg/tcg-op: Document wswap_i64() byte pattern
> target/cris: Fix a typo in gen_swapr()
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
and queued to tcg-next with a few tweaks.
r~
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 0/8] tcg: Document *swap* helper implementations
2023-08-23 18:46 ` [PATCH v2 0/8] tcg: Document *swap* helper implementations Richard Henderson
@ 2023-08-23 21:54 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 12+ messages in thread
From: Philippe Mathieu-Daudé @ 2023-08-23 21:54 UTC (permalink / raw)
To: Richard Henderson, qemu-devel; +Cc: Edgar E. Iglesias, Paolo Bonzini
On 23/8/23 20:46, Richard Henderson wrote:
> On 8/23/23 07:55, Philippe Mathieu-Daudé wrote:
>> Philippe Mathieu-Daudé (8):
>> tcg/tcg-op: Document bswap16_i32() byte pattern
>> tcg/tcg-op: Document bswap16_i64() byte pattern
>> tcg/tcg-op: Document bswap32_i32() byte pattern
>> tcg/tcg-op: Document bswap32_i64() byte pattern
>> tcg/tcg-op: Document bswap64_i64() byte pattern
>> tcg/tcg-op: Document hswap_i32/64() byte pattern
>> tcg/tcg-op: Document wswap_i64() byte pattern
>> target/cris: Fix a typo in gen_swapr()
>
> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
>
> and queued to tcg-next with a few tweaks.
Thanks!
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 8/8] target/cris: Fix a typo in gen_swapr()
2023-08-23 14:55 ` [PATCH v2 8/8] target/cris: Fix a typo in gen_swapr() Philippe Mathieu-Daudé
@ 2023-09-01 15:59 ` Edgar E. Iglesias
0 siblings, 0 replies; 12+ messages in thread
From: Edgar E. Iglesias @ 2023-09-01 15:59 UTC (permalink / raw)
To: Philippe Mathieu-Daudé; +Cc: qemu-devel, Richard Henderson, Paolo Bonzini
[-- Attachment #1: Type: text/plain, Size: 1370 bytes --]
On Wed, Aug 23, 2023 at 4:56 PM Philippe Mathieu-Daudé <philmd@linaro.org>
wrote:
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>
Reviewed-by: Edgar E. Iglesias <edgar@zeroasic.com>
> ---
> target/cris/translate.c | 20 +++++++++++---------
> 1 file changed, 11 insertions(+), 9 deletions(-)
>
> diff --git a/target/cris/translate.c b/target/cris/translate.c
> index 0b3d724281..42103b5558 100644
> --- a/target/cris/translate.c
> +++ b/target/cris/translate.c
> @@ -411,15 +411,17 @@ static inline void t_gen_swapw(TCGv d, TCGv s)
> tcg_gen_or_tl(d, d, t);
> }
>
> -/* Reverse the within each byte.
> - T0 = (((T0 << 7) & 0x80808080) |
> - ((T0 << 5) & 0x40404040) |
> - ((T0 << 3) & 0x20202020) |
> - ((T0 << 1) & 0x10101010) |
> - ((T0 >> 1) & 0x08080808) |
> - ((T0 >> 3) & 0x04040404) |
> - ((T0 >> 5) & 0x02020202) |
> - ((T0 >> 7) & 0x01010101));
> +/*
> + * Reverse the bits within each byte.
> + *
> + * T0 = ((T0 << 7) & 0x80808080)
> + * | ((T0 << 5) & 0x40404040)
> + * | ((T0 << 3) & 0x20202020)
> + * | ((T0 << 1) & 0x10101010)
> + * | ((T0 >> 1) & 0x08080808)
> + * | ((T0 >> 3) & 0x04040404)
> + * | ((T0 >> 5) & 0x02020202)
> + * | ((T0 >> 7) & 0x01010101);
> */
> static void t_gen_swapr(TCGv d, TCGv s)
> {
> --
> 2.41.0
>
>
[-- Attachment #2: Type: text/html, Size: 2182 bytes --]
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2023-09-01 16:01 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-23 14:55 [PATCH v2 0/8] tcg: Document *swap* helper implementations Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 1/8] tcg/tcg-op: Document bswap16_i32() byte pattern Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 2/8] tcg/tcg-op: Document bswap16_i64() " Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 3/8] tcg/tcg-op: Document bswap32_i32() " Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 4/8] tcg/tcg-op: Document bswap32_i64() " Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 5/8] tcg/tcg-op: Document bswap64_i64() " Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 6/8] tcg/tcg-op: Document hswap_i32/64() " Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 7/8] tcg/tcg-op: Document wswap_i64() " Philippe Mathieu-Daudé
2023-08-23 14:55 ` [PATCH v2 8/8] target/cris: Fix a typo in gen_swapr() Philippe Mathieu-Daudé
2023-09-01 15:59 ` Edgar E. Iglesias
2023-08-23 18:46 ` [PATCH v2 0/8] tcg: Document *swap* helper implementations Richard Henderson
2023-08-23 21:54 ` Philippe Mathieu-Daudé
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.