loongarch: Implement fma* and fms* - 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
diff options
context:
space:
mode:
authorpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2023年04月18日 17:50:04 -0300
committerpcpa <paulo.cesar.pereira.de.andrade@gmail.com>2023年04月18日 17:50:04 -0300
commit9743bdf79d805ad36a3ed1aa2456d5dba8a64706 (patch)
tree335f54d320a7f3ca6e9548f1a32deb95a3e2c34a /lib
parent800954992fa08f7ce7ae2b968306b9f75188a04d (diff)
downloadlightning-9743bdf79d805ad36a3ed1aa2456d5dba8a64706.tar.gz
loongarch: Implement fma* and fms*
Diffstat (limited to 'lib')
-rw-r--r--lib/jit_loongarch-fpu.c 4
-rw-r--r--lib/jit_loongarch.c 20
2 files changed, 24 insertions, 0 deletions
diff --git a/lib/jit_loongarch-fpu.c b/lib/jit_loongarch-fpu.c
index 789c00a..8559791 100644
--- a/lib/jit_loongarch-fpu.c
+++ b/lib/jit_loongarch-fpu.c
@@ -215,6 +215,8 @@ static void _divi_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_float32_t);
# define absr_f(r0, r1) FABS_S(r0, r1)
# define negr_f(r0, r1) FNEG_S(r0, r1)
# define sqrtr_f(r0, r1) FSQRT_S(r0, r1)
+# define fmar_f(r0, r1, r2, r3) FMADD_S(r0, r1, r2, r3)
+# define fmsr_f(r0, r1, r2, r3) FMSUB_S(r0, r1, r2, r3)
# define extr_f(r0, r1) _extr_f(_jit, r0, r1)
static void _extr_f(jit_state_t*, jit_int32_t, jit_int32_t);
# define ldr_f(r0, r1) FLD_S(r0, r1, 0)
@@ -375,6 +377,8 @@ static void _divi_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_float64_t);
# define absr_d(r0, r1) FABS_D(r0, r1)
# define negr_d(r0, r1) FNEG_D(r0, r1)
# define sqrtr_d(r0, r1) FSQRT_D(r0, r1)
+# define fmar_d(r0, r1, r2, r3) FMADD_D(r0, r1, r2, r3)
+# define fmsr_d(r0, r1, r2, r3) FMSUB_D(r0, r1, r2, r3)
# define extr_d(r0, r1) _extr_d(_jit, r0, r1)
static void _extr_d(jit_state_t*, jit_int32_t, jit_int32_t);
# define ldr_d(r0, r1) FLD_D(r0, r1, 0)
diff --git a/lib/jit_loongarch.c b/lib/jit_loongarch.c
index dd40e77..bdf98e5 100644
--- a/lib/jit_loongarch.c
+++ b/lib/jit_loongarch.c
@@ -1339,6 +1339,16 @@ _emit_code(jit_state_t *_jit)
case_rr(abs, _f);
case_rr(neg, _f);
case_rr(sqrt, _f);
+ case jit_code_fmar_f:
+ fmar_f(rn(node->u.w), rn(node->v.q.l),
+ rn(node->v.q.h), rn(node->w.w));
+ case jit_code_fmai_f:
+ break;
+ case jit_code_fmsr_f:
+ fmsr_f(rn(node->u.w), rn(node->v.q.l),
+ rn(node->v.q.h), rn(node->w.w));
+ case jit_code_fmsi_f:
+ break;
case_rr(ext, _f);
case_rr(ld, _f);
case_rw(ld, _f);
@@ -1434,6 +1444,16 @@ _emit_code(jit_state_t *_jit)
case_rr(abs, _d);
case_rr(neg, _d);
case_rr(sqrt, _d);
+ case jit_code_fmar_d:
+ fmar_d(rn(node->u.w), rn(node->v.q.l),
+ rn(node->v.q.h), rn(node->w.w));
+ case jit_code_fmai_d:
+ break;
+ case jit_code_fmsr_d:
+ fmsr_d(rn(node->u.w), rn(node->v.q.l),
+ rn(node->v.q.h), rn(node->w.w));
+ case jit_code_fmsi_d:
+ break;
case_rr(ext, _d);
case_rr(ld, _d);
case_rw(ld, _d);
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月14日 20:21:05 +0000

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