From: Matheus Ferst <matheus.fe...@eldorado.org.br> This test checks that we can correctly load a 33-bit constant and its two's complement. At least until version 1.1-0, POWER10 Functional Simulation fails this test, processing the immediate as if it were 32-bits instead of 34, so it's probably something to keep an eye on.
Signed-off-by: Matheus Ferst <matheus.fe...@eldorado.org.br> --- tests/tcg/ppc64/Makefile.target | 5 +++++ tests/tcg/ppc64le/Makefile.target | 5 +++++ tests/tcg/ppc64le/pli_33bits.c | 22 ++++++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 tests/tcg/ppc64le/pli_33bits.c diff --git a/tests/tcg/ppc64/Makefile.target b/tests/tcg/ppc64/Makefile.target index 0c6a4585fc..6eccd2c06f 100644 --- a/tests/tcg/ppc64/Makefile.target +++ b/tests/tcg/ppc64/Makefile.target @@ -10,4 +10,9 @@ PPC64_TESTS=bcdsub endif bcdsub: CFLAGS += -mpower8-vector +ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_POWER10),) +PPC64LE_TESTS += pli_33bits +endif +pli_33bits: CFLAGS += -mpower10 + TESTS += $(PPC64_TESTS) diff --git a/tests/tcg/ppc64le/Makefile.target b/tests/tcg/ppc64le/Makefile.target index 1acfcff94a..2003eab2df 100644 --- a/tests/tcg/ppc64le/Makefile.target +++ b/tests/tcg/ppc64le/Makefile.target @@ -9,4 +9,9 @@ PPC64LE_TESTS=bcdsub endif bcdsub: CFLAGS += -mpower8-vector +ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_POWER10),) +PPC64LE_TESTS += pli_33bits +endif +pli_33bits: CFLAGS += -mpower10 + TESTS += $(PPC64LE_TESTS) diff --git a/tests/tcg/ppc64le/pli_33bits.c b/tests/tcg/ppc64le/pli_33bits.c new file mode 100644 index 0000000000..848cbce165 --- /dev/null +++ b/tests/tcg/ppc64le/pli_33bits.c @@ -0,0 +1,22 @@ +#include <assert.h> +#include <unistd.h> +#include <signal.h> + +int main(void) +{ + long int var; + struct sigaction action; + + action.sa_handler = _exit; + sigaction(SIGABRT, &action, NULL); + + asm(" pli %0,0x1FFFFFFFF\n" + : "=r"(var)); + assert(var == 0x1FFFFFFFF); + + asm(" pli %0,-0x1FFFFFFFF\n" + : "=r"(var)); + assert(var == -0x1FFFFFFFF); + + return 0; +} -- 2.25.1