author | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2023年04月18日 17:50:04 -0300 |
---|---|---|
committer | pcpa <paulo.cesar.pereira.de.andrade@gmail.com> | 2023年04月18日 17:50:04 -0300 |
commit | 9743bdf79d805ad36a3ed1aa2456d5dba8a64706 (patch) | |
tree | 335f54d320a7f3ca6e9548f1a32deb95a3e2c34a /lib | |
parent | 800954992fa08f7ce7ae2b968306b9f75188a04d (diff) | |
download | lightning-9743bdf79d805ad36a3ed1aa2456d5dba8a64706.tar.gz |
-rw-r--r-- | lib/jit_loongarch-fpu.c | 4 | ||||
-rw-r--r-- | lib/jit_loongarch.c | 20 |
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); |