[Mlir-commits] [mlir] [MLIR] Add SystemZ arg extensions for some tests (PR #116314)

Jonas Paulsson llvmlistbot at llvm.org
Mon Nov 18 11:08:51 PST 2024


https://github.com/JonPsson1 updated https://github.com/llvm/llvm-project/pull/116314

>From 3addf3c48af8513798c39c6a10f348a0cfaa81c2 Mon Sep 17 00:00:00 2001
From: Jonas Paulsson <paulson1 at linux.ibm.com>
Date: Fri, 15 Nov 2024 01:44:36 +0100
Subject: [PATCH 1/2] Fix arg exts for tests

---
 mlir/test/CAPI/execution_engine.c         |  4 ++++
 mlir/test/mlir-cpu-runner/simple.mlir     | 14 +++++++-------
 mlir/unittests/ExecutionEngine/Invoke.cpp | 21 +++++++++++++++++++++
 3 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/mlir/test/CAPI/execution_engine.c b/mlir/test/CAPI/execution_engine.c
index 18120c6ec80280..4751288c3ee4bd 100644
--- a/mlir/test/CAPI/execution_engine.c
+++ b/mlir/test/CAPI/execution_engine.c
@@ -55,7 +55,11 @@ void testSimpleExecution(void) {
       ctx, mlirStringRefCreateFromCString(
                // clang-format off
 "module {                                                                    \n"
+#ifdef __s390__
+"  func.func @add(%arg0 : i32) -> (i32 {llvm.signext}) attributes { llvm.emit_c_interface } {     \n"
+#else
 "  func.func @add(%arg0 : i32) -> i32 attributes { llvm.emit_c_interface } {     \n"
+#endif
 "    %res = arith.addi %arg0, %arg0 : i32                                        \n"
 "    return %res : i32                                                           \n"
 "  }                                                                             \n"
diff --git a/mlir/test/mlir-cpu-runner/simple.mlir b/mlir/test/mlir-cpu-runner/simple.mlir
index 38d9dcaf553714..dc283e76219f09 100644
--- a/mlir/test/mlir-cpu-runner/simple.mlir
+++ b/mlir/test/mlir-cpu-runner/simple.mlir
@@ -1,15 +1,15 @@
-// RUN: mlir-cpu-runner %s | FileCheck %s
-// RUN: mlir-cpu-runner %s -e foo | FileCheck -check-prefix=NOMAIN %s
-// RUN: mlir-cpu-runner %s --entry-point-result=i32 -e int32_main | FileCheck -check-prefix=INT32MAIN %s
-// RUN: mlir-cpu-runner %s --entry-point-result=i64 -e int64_main | FileCheck -check-prefix=INT64MAIN %s
-// RUN: mlir-cpu-runner %s -O3 | FileCheck %s
+// RUN: mlir-cpu-runner %s -argext-abi-check=false | FileCheck %s
+// RUN: mlir-cpu-runner %s -e foo  -argext-abi-check=false | FileCheck -check-prefix=NOMAIN %s
+// RUN: mlir-cpu-runner %s --entry-point-result=i32 -e int32_main -argext-abi-check=false | FileCheck -check-prefix=INT32MAIN %s
+// RUN: mlir-cpu-runner %s --entry-point-result=i64 -e int64_main -argext-abi-check=false | FileCheck -check-prefix=INT64MAIN %s
+// RUN: mlir-cpu-runner %s -O3  -argext-abi-check=false | FileCheck %s
 
 // RUN: cp %s %t
-// RUN: mlir-cpu-runner %t -dump-object-file | FileCheck %t
+// RUN: mlir-cpu-runner %t -dump-object-file -argext-abi-check=false | FileCheck %t
 // RUN: ls %t.o
 // RUN: rm %t.o
 
-// RUN: mlir-cpu-runner %s -dump-object-file -object-filename=%T/test.o | FileCheck %s
+// RUN: mlir-cpu-runner %s -dump-object-file -object-filename=%T/test.o -argext-abi-check=false | FileCheck %s
 // RUN: ls %T/test.o
 // RUN: rm %T/test.o
 
diff --git a/mlir/unittests/ExecutionEngine/Invoke.cpp b/mlir/unittests/ExecutionEngine/Invoke.cpp
index ff87fc9fad805a..887db227cfc4b2 100644
--- a/mlir/unittests/ExecutionEngine/Invoke.cpp
+++ b/mlir/unittests/ExecutionEngine/Invoke.cpp
@@ -61,12 +61,21 @@ static LogicalResult lowerToLLVMDialect(ModuleOp module) {
 }
 
 TEST(MLIRExecutionEngine, SKIP_WITHOUT_JIT(AddInteger)) {
+#ifdef __s390__
+  std::string moduleStr = R"mlir(
+  func.func @foo(%arg0 : i32 {llvm.signext}) -> (i32 {llvm.signext}) attributes { llvm.emit_c_interface } {
+    %res = arith.addi %arg0, %arg0 : i32
+    return %res : i32
+  }
+  )mlir";
+#else
   std::string moduleStr = R"mlir(
   func.func @foo(%arg0 : i32) -> i32 attributes { llvm.emit_c_interface } {
     %res = arith.addi %arg0, %arg0 : i32
     return %res : i32
   }
   )mlir";
+#endif
   DialectRegistry registry;
   registerAllDialects(registry);
   registerBuiltinDialectTranslation(registry);
@@ -259,6 +268,16 @@ TEST(NativeMemRefJit, MAYBE_JITCallback) {
   for (float &elt : *a)
     elt = count++;
 
+#ifdef __s390__
+  std::string moduleStr = R"mlir(
+  func.func private @callback(%arg0: memref<?x?xf32>, %coefficient: i32 {llvm.signext})  attributes { llvm.emit_c_interface }
+  func.func @caller_for_callback(%arg0: memref<?x?xf32>, %coefficient: i32 {llvm.signext}) attributes { llvm.emit_c_interface } {
+    %unranked = memref.cast %arg0: memref<?x?xf32> to memref<*xf32>
+    call @callback(%arg0, %coefficient) : (memref<?x?xf32>, i32) -> ()
+    return
+  }
+  )mlir";
+#else
   std::string moduleStr = R"mlir(
   func.func private @callback(%arg0: memref<?x?xf32>, %coefficient: i32)  attributes { llvm.emit_c_interface }
   func.func @caller_for_callback(%arg0: memref<?x?xf32>, %coefficient: i32) attributes { llvm.emit_c_interface } {
@@ -267,6 +286,8 @@ TEST(NativeMemRefJit, MAYBE_JITCallback) {
     return
   }
   )mlir";
+#endif
+
   DialectRegistry registry;
   registerAllDialects(registry);
   registerBuiltinDialectTranslation(registry);

>From 7f3aeb059703db35757f0763288bb5b5022e7e82 Mon Sep 17 00:00:00 2001
From: Jonas Paulsson <paulson1 at linux.ibm.com>
Date: Mon, 18 Nov 2024 13:08:32 -0600
Subject: [PATCH 2/2] Use %if in simple.mlir

---
 mlir/test/mlir-cpu-runner/simple.mlir | 48 ++++++++++++++++++++++-----
 1 file changed, 40 insertions(+), 8 deletions(-)

diff --git a/mlir/test/mlir-cpu-runner/simple.mlir b/mlir/test/mlir-cpu-runner/simple.mlir
index dc283e76219f09..d1cb1cfe5d6517 100644
--- a/mlir/test/mlir-cpu-runner/simple.mlir
+++ b/mlir/test/mlir-cpu-runner/simple.mlir
@@ -1,15 +1,47 @@
-// RUN: mlir-cpu-runner %s -argext-abi-check=false | FileCheck %s
-// RUN: mlir-cpu-runner %s -e foo  -argext-abi-check=false | FileCheck -check-prefix=NOMAIN %s
-// RUN: mlir-cpu-runner %s --entry-point-result=i32 -e int32_main -argext-abi-check=false | FileCheck -check-prefix=INT32MAIN %s
-// RUN: mlir-cpu-runner %s --entry-point-result=i64 -e int64_main -argext-abi-check=false | FileCheck -check-prefix=INT64MAIN %s
-// RUN: mlir-cpu-runner %s -O3  -argext-abi-check=false | FileCheck %s
+// RUN: %if target={{s390x-.*}} %{                                  \
+// RUN:   mlir-cpu-runner %s -argext-abi-check=false | FileCheck %s \
+// RUN: %} %else %{                                                 \
+// RUN:   mlir-cpu-runner %s  | FileCheck %s                        \
+// RUN: %}
+
+// RUN: %if target={{s390x-.*}} %{                                                              \
+// RUN:   mlir-cpu-runner %s -e foo -argext-abi-check=false | FileCheck -check-prefix=NOMAIN %s \
+// RUN: %} %else %{                                                                             \
+// RUN:   mlir-cpu-runner %s -e foo | FileCheck -check-prefix=NOMAIN %s                         \
+// RUN: %}
+
+// RUN: %if target={{s390x-.*}} %{                                                                                                  \
+// RUN:   mlir-cpu-runner %s --entry-point-result=i32 -e int32_main  -argext-abi-check=false | FileCheck -check-prefix=INT32MAIN %s \
+// RUN: %} %else %{                                                                                                                 \
+// RUN:   mlir-cpu-runner %s --entry-point-result=i32 -e int32_main | FileCheck -check-prefix=INT32MAIN %s                          \
+// RUN: %}
+
+// RUN: %if target={{s390x-.*}} %{                                                                                                 \
+// RUN:   mlir-cpu-runner %s --entry-point-result=i64 -e int64_main -argext-abi-check=false | FileCheck -check-prefix=INT64MAIN %s \
+// RUN: %} %else %{                                                                                                                \
+// RUN:   mlir-cpu-runner %s --entry-point-result=i64 -e int64_main | FileCheck -check-prefix=INT64MAIN %s                         \
+// RUN: %}
+
+// RUN: %if target={{s390x-.*}} %{                                      \
+// RUN:   mlir-cpu-runner %s -O3 -argext-abi-check=false | FileCheck %s \
+// RUN: %} %else %{                                                     \
+// RUN:   mlir-cpu-runner %s -O3 | FileCheck %s                         \
+// RUN: %}
 
 // RUN: cp %s %t
-// RUN: mlir-cpu-runner %t -dump-object-file -argext-abi-check=false | FileCheck %t
+// RUN: %if target={{s390x-.*}} %{                                                    \
+// RUN:   mlir-cpu-runner %t -dump-object-file -argext-abi-check=false | FileCheck %t \
+// RUN: %} %else %{                                                                   \
+// RUN:   mlir-cpu-runner %t -dump-object-file | FileCheck %t                         \
+// RUN: %}
+
 // RUN: ls %t.o
 // RUN: rm %t.o
-
-// RUN: mlir-cpu-runner %s -dump-object-file -object-filename=%T/test.o -argext-abi-check=false | FileCheck %s
+// RUN: %if target={{s390x-.*}} %{                                                                               \
+// RUN:   mlir-cpu-runner %s -dump-object-file -object-filename=%T/test.o -argext-abi-check=false | FileCheck %s \
+// RUN: %} %else %{                                                                                              \
+// RUN:   mlir-cpu-runner %s -dump-object-file -object-filename=%T/test.o | FileCheck %s                         \
+// RUN: %}
 // RUN: ls %T/test.o
 // RUN: rm %T/test.o
 



More information about the Mlir-commits mailing list