From: Matheus Ferst <matheus.fe...@eldorado.org.br> This test exercise the R=1 path of paddi implementation using the extended mnemonic "pla".
Signed-off-by: Matheus Ferst <matheus.fe...@eldorado.org.br> --- tests/tcg/ppc64/Makefile.target | 3 ++- tests/tcg/ppc64le/Makefile.target | 3 ++- tests/tcg/ppc64le/pla.c | 26 ++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 tests/tcg/ppc64le/pla.c diff --git a/tests/tcg/ppc64/Makefile.target b/tests/tcg/ppc64/Makefile.target index 6eccd2c06f..a6cd7a21b2 100644 --- a/tests/tcg/ppc64/Makefile.target +++ b/tests/tcg/ppc64/Makefile.target @@ -11,8 +11,9 @@ endif bcdsub: CFLAGS += -mpower8-vector ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_POWER10),) -PPC64LE_TESTS += pli_33bits +PPC64LE_TESTS += pli_33bits pla endif pli_33bits: CFLAGS += -mpower10 +pla: CFLAGS += -mpower10 TESTS += $(PPC64_TESTS) diff --git a/tests/tcg/ppc64le/Makefile.target b/tests/tcg/ppc64le/Makefile.target index 2003eab2df..db92b2ec99 100644 --- a/tests/tcg/ppc64le/Makefile.target +++ b/tests/tcg/ppc64le/Makefile.target @@ -10,8 +10,9 @@ endif bcdsub: CFLAGS += -mpower8-vector ifneq ($(DOCKER_IMAGE)$(CROSS_CC_HAS_POWER10),) -PPC64LE_TESTS += pli_33bits +PPC64LE_TESTS += pli_33bits pla endif pli_33bits: CFLAGS += -mpower10 +pla: CFLAGS += -mpower10 TESTS += $(PPC64LE_TESTS) diff --git a/tests/tcg/ppc64le/pla.c b/tests/tcg/ppc64le/pla.c new file mode 100644 index 0000000000..4826579216 --- /dev/null +++ b/tests/tcg/ppc64le/pla.c @@ -0,0 +1,26 @@ +#include <assert.h> +#include <unistd.h> +#include <signal.h> + +int main(void) +{ + long unsigned int label, addr; + struct sigaction action; + + action.sa_handler = _exit; + sigaction(SIGABRT, &action, NULL); + + asm("insn:\n" + " lis %0, insn@highest\n" + " addi %0, %0, insn@higher\n" + " rldicr %0, %0, 32, 31\n" + " oris %0, %0, insn@h\n" + " ori %0, %0, insn@l\n" + " pla %1, %2\n" + : "=r" (label), "=r" (addr) + : "i" (-5 * 4)); /* number of instruction between label and pla */ + assert(addr == label); + + return 0; +} + -- 2.25.1