changes - anujajakhade/anuja GitHub Wiki

  • pcre2-10.30/src/sljit/sljitConfigInternal.h
diff --git a/root/pcre2-10.30/src/sljit/sljitConfigInternal.h b/pcre/pcre2-10.30/src/sljit/sljitConfigInternal.h
index cc0810f..3675c65 100644
--- a/root/pcre2-10.30/src/sljit/sljitConfigInternal.h
+++ b/pcre/pcre2-10.30/src/sljit/sljitConfigInternal.h
@@ -78,6 +78,7 @@
        || (defined SLJIT_CONFIG_ARM_V7 && SLJIT_CONFIG_ARM_V7) \
        || (defined SLJIT_CONFIG_ARM_THUMB2 && SLJIT_CONFIG_ARM_THUMB2) \
        || (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64) \
+        || (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) \
        || (defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32) \
        || (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) \
        || (defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32) \
@@ -95,6 +96,7 @@
        + (defined SLJIT_CONFIG_ARM_V7 && SLJIT_CONFIG_ARM_V7) \
        + (defined SLJIT_CONFIG_ARM_THUMB2 && SLJIT_CONFIG_ARM_THUMB2) \
        + (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64) \
+        + (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) \
        + (defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32) \
        + (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) \
        + (defined SLJIT_CONFIG_TILEGX && SLJIT_CONFIG_TILEGX) \
@@ -128,6 +130,8 @@
 #endif
 #elif defined (__aarch64__)
 #define SLJIT_CONFIG_ARM_64 1
+#elif defined (__s390x__)
+#define SLJIT_CONFIG_S390X 1
 #elif defined(__ppc64__) || defined(__powerpc64__) || defined(_ARCH_PPC64) || (defined(_POWER) && defined(__64BIT__))
 #define SLJIT_CONFIG_PPC_64 1
 #elif defined(__ppc__) || defined(__powerpc__) || defined(_ARCH_PPC) || defined(_ARCH_PWR) || defined(_ARCH_PWR2) || defined(_POWER)
@@ -175,6 +179,8 @@
 #define SLJIT_CONFIG_X86 1
 #elif (defined SLJIT_CONFIG_ARM_32 && SLJIT_CONFIG_ARM_32) || (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64)
 #define SLJIT_CONFIG_ARM 1
+#elif (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X)
+#define SLJIT_CONFIG_S390X 1
 #elif (defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32) || (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64)
 #define SLJIT_CONFIG_PPC 1
 #elif (defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32) || (defined SLJIT_CONFIG_MIPS_64 && SLJIT_CONFIG_MIPS_64)
@@ -358,6 +364,7 @@ typedef unsigned long int sljit_uw;
 typedef long int sljit_sw;
 #elif !(defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) \
        && !(defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64) \
+        && !(defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) \
        && !(defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) \
        && !(defined SLJIT_CONFIG_MIPS_64 && SLJIT_CONFIG_MIPS_64) \
        && !(defined SLJIT_CONFIG_TILEGX && SLJIT_CONFIG_TILEGX)
@@ -428,6 +435,10 @@ typedef double sljit_f64;
 #define SLJIT_BIG_ENDIAN 1
 #endif

+#elif (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X)
+
+#define SLJIT_BIG_ENDIAN 1
+
 #elif (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32)

 #define SLJIT_BIG_ENDIAN 1
@@ -454,6 +465,7 @@ typedef double sljit_f64;
        || (defined SLJIT_CONFIG_ARM_V7 && SLJIT_CONFIG_ARM_V7) \
        || (defined SLJIT_CONFIG_ARM_THUMB2 && SLJIT_CONFIG_ARM_THUMB2) \
        || (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64) \
+       || (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) \
        || (defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32) \
        || (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64)
 #define SLJIT_UNALIGNED 1
@@ -594,6 +606,12 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_sw sljit_exec_offset(void* ptr);
 #define SLJIT_NUMBER_OF_SAVED_REGISTERS 10
 #define SLJIT_LOCALS_OFFSET_BASE (2 * sizeof(sljit_sw))

+#elif (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X)
+
+#define SLJIT_NUMBER_OF_REGISTERS 16
+#define SLJIT_NUMBER_OF_SAVED_REGISTERS 8
+#define SLJIT_LOCALS_OFFSET_BASE (2 * sizeof(sljit_sw))
+
 #elif (defined SLJIT_CONFIG_PPC && SLJIT_CONFIG_PPC)

 #define SLJIT_NUMBER_OF_REGISTERS 22

  • sljitLir.h
--- a/root/pcre2-10.30/src/sljit/sljitLir.h
+++ b/pcre/pcre2-10.30/src/sljit/sljitLir.h
@@ -361,6 +361,11 @@ struct sljit_compiler {
        sljit_sw cache_argw;
 #endif

+#if (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X)
+        sljit_s32 cache_arg;
+        sljit_sw cache_argw;
+#endif
+
 #if (defined SLJIT_CONFIG_PPC && SLJIT_CONFIG_PPC)
        sljit_sw imm;
        sljit_s32 cache_arg;
  • sljitLir.c
diff --git a/root/pcre2-10.30/src/sljit/sljitLir.c b/pcre/pcre2-10.30/src/sljit/sljitLir.c
index c0bbb52..c7e4d3a 100644
--- a/root/pcre2-10.30/src/sljit/sljitLir.c
+++ b/pcre/pcre2-10.30/src/sljit/sljitLir.c
@@ -168,6 +168,16 @@
 #      define PATCH_ABS64      0x100
 #endif

+#if (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X)
+#       define IS_COND          0x004
+#       define IS_CBZ           0x008
+#       define IS_BL            0x010
+#       define PATCH_B          0x020
+#       define PATCH_COND       0x040
+#       define PATCH_ABS48      0x080
+#       define PATCH_ABS64      0x100
+#endif
+
 #if (defined SLJIT_CONFIG_PPC && SLJIT_CONFIG_PPC)
 #      define IS_COND          0x004
 #      define IS_CALL          0x008
@@ -351,6 +361,7 @@ static void init_compiler(void);

 SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler* sljit_create_compiler(void *allocator_data)
 {
+        printf("Inside sljit_create_compiler!!\n");
        struct sljit_compiler *compiler = (struct sljit_compiler*)SLJIT_MALLOC(sizeof(struct sljit_compiler), allocator_data);
        if (!compiler)
                return NULL;
@@ -371,7 +382,7 @@ SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler* sljit_create_compiler(void *allo
                rewritable_jump_and_single_op_must_not_be_the_same);
        SLJIT_COMPILE_ASSERT(!(SLJIT_EQUAL & 0x1) && !(SLJIT_LESS & 0x1) && !(SLJIT_EQUAL_F64 & 0x1) && !(SLJIT_JUMP & 0x1),
                conditional_flags_must_be_even_numbers);
-
        /* Only the non-zero members must be set. */
        compiler->error = SLJIT_SUCCESS;

@@ -1625,7 +1636,7 @@ static SLJIT_INLINE CHECK_RETURN_TYPE check_sljit_emit_const(struct sljit_compil
 #define SELECT_FOP1_OPERATION_WITH_CHECKS(compiler, op, dst, dstw, src, srcw) \
        SLJIT_COMPILE_ASSERT(!(SLJIT_CONV_SW_FROM_F64 & 0x1) && !(SLJIT_CONV_F64_FROM_SW & 0x1), \
                invalid_float_opcodes); \
       if (GET_OPCODE(op) >= SLJIT_CONV_SW_FROM_F64 && GET_OPCODE(op) <= SLJIT_CMP_F64) { \
                if (GET_OPCODE(op) == SLJIT_CMP_F64) { \
                        CHECK(check_sljit_emit_fop1_cmp(compiler, op, dst, dstw, src, srcw)); \
                        ADJUST_LOCAL_OFFSET(dst, dstw); \
@@ -1743,6 +1754,8 @@ static SLJIT_INLINE sljit_s32 sljit_emit_cmov_generic(struct sljit_compiler *com
 #      include "sljitNativeARM_T2_32.c"
 #elif (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64)
 #      include "sljitNativeARM_64.c"
+#elif (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X)
+#       include "sljitNativeS390X.c"
 #elif (defined SLJIT_CONFIG_PPC && SLJIT_CONFIG_PPC)
 #      include "sljitNativePPC_common.c"
 #elif (defined SLJIT_CONFIG_MIPS && SLJIT_CONFIG_MIPS)
@@ -1767,7 +1780,8 @@ SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_cmp(struct sljit_compiler
        CHECK_PTR(check_sljit_emit_cmp(compiler, type, src1, src1w, src2, src2w));

        condition = type & 0xff;
-#if (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64)
+#if (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64) \
+    || (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X)
        if ((condition == SLJIT_EQUAL || condition == SLJIT_NOT_EQUAL)) {
                if ((src1 & SLJIT_IMM) && !src1w) {
                        src1 = src2;

  • sljitNativeS390X
diff --git a/sljitNativeARM_64.c b/sljitNativeS390X.c
index fd67f50..f48c7da 100644
--- a/sljitNativeARM_64.c
+++ b/sljitNativeS390X.c
@@ -26,7 +26,7 @@

 SLJIT_API_FUNC_ATTRIBUTE const char* sljit_get_platform_name(void)
 {
-       return "ARM-64" SLJIT_CPUINFO;
+       return "s390x" SLJIT_CPUINFO;
 }

 /* Length of an instruction word */
sudo apt-get install build-essential wget pkg-config libreadline-dev libbz2-1.0 libbz2-dev libbz2-ocaml libbz2-ocaml-dev zlib1g-dev 
 ../configure --prefix=/usr --docdir=/usr/share/doc/pcre2-10.30 --enable-unicode --enable-pcre2-16  --enable-pcre2-32 --enable-jit --enable-pcre2grep-libz --enable-pcre2grep-libbz2  --enable-pcre2test-libreadline