[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 5/6] tests: tcg: ppc64: Add tests for Vector Extract Mask Instruct
From: |
Daniel Henrique Barboza |
Subject: |
[PULL 5/6] tests: tcg: ppc64: Add tests for Vector Extract Mask Instructions |
Date: |
Fri, 5 May 2023 13:34:43 -0300 |
From: Shivaprasad G Bhat <sbhat@linux.ibm.com>
Add test for vextractbm, vextractwm, vextractdm and vextractqm
instructions. Test works for both qemu-ppc64 and qemu-ppc64le.
Based on the test case written by John Platts posted at [1]
References:
[1] - https://gitlab.com/qemu-project/qemu/-/issues/1536
Signed-off-by: John Platts <john_platts@hotmail.com>
Signed-off-by: Shivaprasad G Bhat <sbhat@linux.ibm.com>
Reviewed-by: Lucas Mateus Castro <lucas.araujo@eldorado.org.br>
Reviewed-by: Cédric Le Goater <clg@redhat.com>
Message-Id:
<168319294881.1159309.17060400720026083557.stgit@ltc-boston1.aus.stglabs.ibm.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
---
tests/tcg/ppc64/Makefile.target | 5 +++-
tests/tcg/ppc64/vector.c | 51 +++++++++++++++++++++++++++++++++
2 files changed, 55 insertions(+), 1 deletion(-)
create mode 100644 tests/tcg/ppc64/vector.c
diff --git a/tests/tcg/ppc64/Makefile.target b/tests/tcg/ppc64/Makefile.target
index 6d47d3cae6..b084963b9a 100644
--- a/tests/tcg/ppc64/Makefile.target
+++ b/tests/tcg/ppc64/Makefile.target
@@ -20,7 +20,7 @@ PPC64_TESTS += mtfsf
PPC64_TESTS += mffsce
ifneq ($(CROSS_CC_HAS_POWER10),)
-PPC64_TESTS += byte_reverse sha512-vector
+PPC64_TESTS += byte_reverse sha512-vector vector
endif
byte_reverse: CFLAGS += -mcpu=power10
run-byte_reverse: QEMU_OPTS+=-cpu POWER10
@@ -31,6 +31,9 @@ sha512-vector: sha512.c
run-sha512-vector: QEMU_OPTS+=-cpu POWER10
+vector: CFLAGS += -mcpu=power10 -I$(SRC_PATH)/include
+run-vector: QEMU_OPTS += -cpu POWER10
+
PPC64_TESTS += signal_save_restore_xer
PPC64_TESTS += xxspltw
diff --git a/tests/tcg/ppc64/vector.c b/tests/tcg/ppc64/vector.c
new file mode 100644
index 0000000000..cbf4ae9332
--- /dev/null
+++ b/tests/tcg/ppc64/vector.c
@@ -0,0 +1,51 @@
+#include <assert.h>
+#include <stdint.h>
+#include "qemu/compiler.h"
+
+int main(void)
+{
+ unsigned int result_wi;
+ vector unsigned char vbc_bi_src = { 0xFF, 0xFF, 0, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0, 0, 0,
+ 0, 0xFF, 0xFF};
+ vector unsigned short vbc_hi_src = { 0xFFFF, 0, 0, 0xFFFF,
+ 0, 0, 0xFFFF, 0xFFFF};
+ vector unsigned int vbc_wi_src = {0, 0, 0xFFFFFFFF, 0xFFFFFFFF};
+ vector unsigned long long vbc_di_src = {0xFFFFFFFFFFFFFFFF, 0};
+ vector __uint128_t vbc_qi_src;
+
+ asm("vextractbm %0, %1" : "=r" (result_wi) : "v" (vbc_bi_src));
+#if HOST_BIG_ENDIAN
+ assert(result_wi == 0b1101111111000011);
+#else
+ assert(result_wi == 0b1100001111111011);
+#endif
+
+ asm("vextracthm %0, %1" : "=r" (result_wi) : "v" (vbc_hi_src));
+#if HOST_BIG_ENDIAN
+ assert(result_wi == 0b10010011);
+#else
+ assert(result_wi == 0b11001001);
+#endif
+
+ asm("vextractwm %0, %1" : "=r" (result_wi) : "v" (vbc_wi_src));
+#if HOST_BIG_ENDIAN
+ assert(result_wi == 0b0011);
+#else
+ assert(result_wi == 0b1100);
+#endif
+
+ asm("vextractdm %0, %1" : "=r" (result_wi) : "v" (vbc_di_src));
+#if HOST_BIG_ENDIAN
+ assert(result_wi == 0b10);
+#else
+ assert(result_wi == 0b01);
+#endif
+
+ vbc_qi_src[0] = 0x1;
+ vbc_qi_src[0] = vbc_qi_src[0] << 127;
+ asm("vextractqm %0, %1" : "=r" (result_wi) : "v" (vbc_qi_src));
+ assert(result_wi == 0b1);
+
+ return 0;
+}
--
2.40.1
- [PULL 0/6] ppc queue, Daniel Henrique Barboza, 2023/05/05
- [PULL 1/6] hw/display/sm501: Remove unneeded increment from loop, Daniel Henrique Barboza, 2023/05/05
- [PULL 3/6] MAINTAINERS: Adding myself in the list for ppc/spapr, Daniel Henrique Barboza, 2023/05/05
- [PULL 2/6] ppc: spapr: cleanup cr get/set with helpers., Daniel Henrique Barboza, 2023/05/05
- [PULL 4/6] tcg: ppc64: Fix mask generation for vextractdm, Daniel Henrique Barboza, 2023/05/05
- [PULL 5/6] tests: tcg: ppc64: Add tests for Vector Extract Mask Instructions,
Daniel Henrique Barboza <=
- [PULL 6/6] hw/ppc/Kconfig: NVDIMM is a hard requirement for the pseries machine, Daniel Henrique Barboza, 2023/05/05
- Re: [PULL 0/6] ppc queue, Richard Henderson, 2023/05/06