@@ -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)
@@ -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)
new file mode 100644
@@ -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;
+}