+static void
+_unstr_x(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+{
+ if (jit_unaligned_p())
+ fallback_unstr_x(r0, r1, i0);
+ else
+ generic_unstr_x(r0, r1, i0);
+}
+
+static void
+_unsti_x(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+{
+ if (jit_unaligned_p())
+ fallback_unsti_x(i0, r0, i1);
+ else
+ fallback_unsti_x(i0, r0, i1);
+}
+
+
+static void
+_fmar_f(jit_state_t *_jit,
+ jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+{
+ jit_int32_t t0;
+ if (jit_mips2_p()) {
+ if (jit_mips6_p()) {
+ if (r0 == r3)
+ MADDF_S(r0, r2, r1);
+ else {
+ t0 = jit_get_reg(jit_class_fpr);
+ movr_f(rn(t0), r3);
+ MADDF_S(rn(t0), r2, r1);
+ movr_f(r0, rn(t0));
+ jit_unget_reg(t0);
+ }
+ }
+ else
+ MADD_S(r0, r3, r2, r1);
+ }
+ else {
+ if (r0 != r3) {
+ mulr_f(r0, r1, r2);
+ addr_f(r0, r0, r3);
+ }
+ else {
+ t0 = jit_get_reg(jit_class_fpr);
+ mulr_f(rn(t0), r1, r2);
+ addr_f(r0, rn(t0), r3);
+ jit_unget_reg(t0);
+ }
+ }
+}
+
+static void
+_fmsr_f(jit_state_t *_jit,
+ jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+{
+ jit_int32_t t0;
+ if (jit_mips2_p()) {
+ if (jit_mips6_p()) {
+ if (r0 == r3)
+ MSUBF_S(r0, r2, r1);
+ else {
+ t0 = jit_get_reg(jit_class_fpr);
+ movr_f(rn(t0), r3);
+ MSUBF_S(rn(t0), r2, r1);
+ movr_f(r0, rn(t0));
+ jit_unget_reg(t0);
+ }
+ negr_f(r0, r0);
+ }
+ else
+ MSUB_S(r0, r3, r2, r1);
+ }
+ else {
+ if (r0 != r3) {
+ mulr_f(r0, r1, r2);
+ subr_f(r0, r0, r3);
+ }
+ else {
+ t0 = jit_get_reg(jit_class_fpr);
+ mulr_f(rn(t0), r1, r2);
+ subr_f(r0, rn(t0), r3);
+ jit_unget_reg(t0);
+ }
+ }
+}
+
+static void
+_fnmar_f(jit_state_t *_jit,
+ jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+{
+ jit_int32_t t0;
+ if (jit_mips2_p()) {
+ if (jit_mips6_p()) {
+ if (r0 == r3)
+ MADDF_S(r0, r2, r1);
+ else {
+ t0 = jit_get_reg(jit_class_fpr);
+ movr_f(rn(t0), r3);
+ MADDF_S(rn(t0), r2, r1);
+ movr_f(r0, rn(t0));
+ jit_unget_reg(t0);
+ }
+ negr_f(r0, r0);
+ }
+ else
+ NMADD_S(r0, r3, r2, r1);
+ }
+ else {
+ t0 = jit_get_reg(jit_class_fpr);
+ negr_f(rn(t0), r1);
+ mulr_f(rn(t0), rn(t0), r2);
+ subr_f(r0, rn(t0), r3);
+ jit_unget_reg(t0);
+ }
+}
+
+static void
+_fnmsr_f(jit_state_t *_jit,
+ jit_int32_t r0, jit_int32_t r1, jit_int32_t r2, jit_int32_t r3)
+{
+ jit_int32_t t0;
+ if (jit_mips2_p()) {
+ if (jit_mips6_p()) {
+ if (r0 == r3)
+ MSUBF_S(r0, r2, r1);
+ else {
+ t0 = jit_get_reg(jit_class_fpr);
+ movr_f(rn(t0), r3);
+ MSUBF_S(rn(t0), r2, r1);
+ movr_f(r0, rn(t0));
+ jit_unget_reg(t0);
+ }
+ }
+ else
+ NMSUB_S(r0, r3, r2, r1);
+ }
+ else {
+ t0 = jit_get_reg(jit_class_fpr);
+ negr_f(rn(t0), r1);
+ mulr_f(rn(t0), rn(t0), r2);
+ addr_f(r0, rn(t0), r3);
+ jit_unget_reg(t0);
+ }
+}
+