lightning.git - Portable just-in-time compiler library

index : lightning.git
Portable just-in-time compiler library
summary refs log tree commit diff
path: root/lib/jit_s390-cpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/jit_s390-cpu.c')
-rw-r--r--lib/jit_s390-cpu.c 23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/jit_s390-cpu.c b/lib/jit_s390-cpu.c
index 0718938..b49940b 100644
--- a/lib/jit_s390-cpu.c
+++ b/lib/jit_s390-cpu.c
@@ -1078,9 +1078,16 @@ static void _rshi_u(jit_state_t*,jit_int32_t,jit_int32_t,jit_word_t);
# endif
# if __WORDSIZE == 32
# define negr(r0,r1) LCR(r0,r1)
+# define lrotr(r0,r1,r2) RLL(r0,r1,0,r2)
+# define lroti(r0,r1,i0) RLL(r0,r1,i0,0)
# else
# define negr(r0,r1) LCGR(r0,r1)
+# define lrotr(r0,r1,r2) RLLG(r0,r1,0,r2)
+# define lroti(r0,r1,i0) RLLG(r0,r1,i0,0)
# endif
+# define rrotr(r0,r1,r2) _rrotr(_jit,r0,r1,r2)
+static void _rrotr(jit_state_t*,jit_int32_t,jit_int32_t,jit_int32_t);
+# define rroti(r0,r1,i0) lroti(r0,r1,__WORDSIZE-i0)
# define clor(r0, r1) _clor(_jit, r0, r1)
static void _clor(jit_state_t*, jit_int32_t, jit_int32_t);
# define clzr(r0, r1) _clzr(_jit, r0, r1)
@@ -2992,6 +2999,22 @@ _rshi_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
#endif
static void
+_rrotr(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
+{
+ jit_int32_t reg;
+ if (r0 != r1 && r0 != r2) {
+ rsbi(r0, r2, __WORDSIZE);
+ lrotr(r0, r1, r0);
+ }
+ else {
+ reg = jit_get_reg(jit_class_gpr);
+ rsbi(rn(reg), r2, __WORDSIZE);
+ lrotr(r0, r1, rn(reg));
+ jit_unget_reg(reg);
+ }
+}
+
+static void
_clor(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
{
#if CHECK_FLOGR
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月16日 02:59:44 +0000

AltStyle によって変換されたページ (->オリジナル) /