[coverage-profiler] Collect coverage data at IL seq point locations. (#5667)
[mono.git] / mono / mini / support-s390x.h
index 3ae4c48572a4c47c1d001de7d4c09191c1167ac0..8856f7745af768d911a88c4fe08150c737c7b56e 100644 (file)
@@ -1,11 +1,19 @@
+/**
+ * \file
+ */
+
 #ifndef __MONO_SUPPORT_S390X_H__
 #define __MONO_SUPPORT_S390X_H__
 
 #define S390_SET(loc, dr, v)                                   \
        do {                                                    \
                guint64 val = (guint64) v;                      \
-               if (s390_is_uimm16(val)) {                      \
+               if (s390_is_imm16(val)) {                       \
+                       s390_lghi(loc, dr, val);                \
+               } else if (s390_is_uimm16(val)) {               \
                        s390_llill(loc, dr, val);               \
+               } else if (s390_is_imm32(val)) {                \
+                       s390_lgfi(loc, dr, val);                \
                } else if (s390_is_uimm32(val)) {               \
                        s390_llilf(loc, dr, val);               \
                } else {                                        \
                s390_##opy (loc, r, ix, br, off);                       \
        } else {                                                        \
                if (ix == 0) {                                          \
-fprintf(stderr,"\nS390_LONG - no index - r: %d br: %d off: %d\n",r,br,off); \
                        S390_SET(loc, s390_r13, off);                   \
                        s390_la (loc, s390_r13, s390_r13, br, 0);       \
                } else {                                                \
-fprintf(stderr,"\nS390_LONG - index - r: %d br: %d ix: %d off: %d\n",r,br,ix,off); \
                        s390_la   (loc, s390_r13, ix, br, 0);           \
                        S390_SET  (loc, s390_r0, off);                  \
                        s390_agr  (loc, s390_r13, s390_r0);             \