void dsolve_8x4_rn_msa(FLOAT *a, FLOAT *b, FLOAT *c, BLASLONG ldc, BLASLONG bk) { v2f64 src_c0, src_c1, src_c2, src_c3, src_c4, src_c5, src_c6, src_c7; v2f64 src_c8, src_c9, src_c10, src_c11, src_c12, src_c13, src_c14, src_c15; v2f64 src_b0, src_b1, src_b2, src_b3, src_b5, src_b6, src_b7; v2f64 src_b10, src_b11, src_b15; FLOAT *c_nxt1line = c + ldc; FLOAT *c_nxt2line = c + 2 * ldc; FLOAT *c_nxt3line = c + 3 * ldc; LD_DP4(c, 2, src_c0, src_c1, src_c2, src_c3); LD_DP4(c_nxt1line, 2, src_c4, src_c5, src_c6, src_c7); LD_DP4(c_nxt2line, 2, src_c8, src_c9, src_c10, src_c11); LD_DP4(c_nxt3line, 2, src_c12, src_c13, src_c14, src_c15); if (bk) { BLASLONG i, pref_offset; FLOAT *pa0_pref; v2f64 src_a0, src_a1, src_a2, src_a3, src_b; pref_offset = (uintptr_t)a & (L1_DATA_LINESIZE - 1); if (pref_offset) { pref_offset = L1_DATA_LINESIZE - pref_offset; pref_offset = pref_offset / sizeof(FLOAT); } pa0_pref = a + pref_offset; for (i = (bk >> 1); i--;) { PREF_OFFSET(pa0_pref, 128); PREF_OFFSET(pa0_pref, 160); PREF_OFFSET(pa0_pref, 192); PREF_OFFSET(pa0_pref, 224); LD_DP4_INC(a, 2, src_a0, src_a1, src_a2, src_a3); LD_DP2_INC(b, 2, src_b0, src_b1); src_b = (v2f64) __msa_ilvr_d((v2i64) src_b0, (v2i64) src_b0); src_c0 -= src_a0 * src_b; src_c1 -= src_a1 * src_b; src_c2 -= src_a2 * src_b; src_c3 -= src_a3 * src_b; src_b = (v2f64) __msa_ilvl_d((v2i64) src_b0, (v2i64) src_b0); src_c4 -= src_a0 * src_b; src_c5 -= src_a1 * src_b; src_c6 -= src_a2 * src_b; src_c7 -= src_a3 * src_b; src_b = (v2f64) __msa_ilvr_d((v2i64) src_b1, (v2i64) src_b1); src_c8 -= src_a0 * src_b; src_c9 -= src_a1 * src_b; src_c10 -= src_a2 * src_b; src_c11 -= src_a3 * src_b; src_b = (v2f64) __msa_ilvl_d((v2i64) src_b1, (v2i64) src_b1); src_c12 -= src_a0 * src_b; src_c13 -= src_a1 * src_b; src_c14 -= src_a2 * src_b; src_c15 -= src_a3 * src_b; LD_DP4_INC(a, 2, src_a0, src_a1, src_a2, src_a3); LD_DP2_INC(b, 2, src_b0, src_b1); src_b = (v2f64) __msa_ilvr_d((v2i64) src_b0, (v2i64) src_b0); src_c0 -= src_a0 * src_b; src_c1 -= src_a1 * src_b; src_c2 -= src_a2 * src_b; src_c3 -= src_a3 * src_b; src_b = (v2f64) __msa_ilvl_d((v2i64) src_b0, (v2i64) src_b0); src_c4 -= src_a0 * src_b; src_c5 -= src_a1 * src_b; src_c6 -= src_a2 * src_b; src_c7 -= src_a3 * src_b; src_b = (v2f64) __msa_ilvr_d((v2i64) src_b1, (v2i64) src_b1); src_c8 -= src_a0 * src_b; src_c9 -= src_a1 * src_b; src_c10 -= src_a2 * src_b; src_c11 -= src_a3 * src_b; src_b = (v2f64) __msa_ilvl_d((v2i64) src_b1, (v2i64) src_b1); src_c12 -= src_a0 * src_b; src_c13 -= src_a1 * src_b; src_c14 -= src_a2 * src_b; src_c15 -= src_a3 * src_b; pa0_pref += 16; } if (bk & 1) { LD_DP4_INC(a, 2, src_a0, src_a1, src_a2, src_a3); LD_DP2_INC(b, 2, src_b0, src_b1); src_b = (v2f64) __msa_ilvr_d((v2i64) src_b0, (v2i64) src_b0); src_c0 -= src_a0 * src_b; src_c1 -= src_a1 * src_b; src_c2 -= src_a2 * src_b; src_c3 -= src_a3 * src_b; src_b = (v2f64) __msa_ilvl_d((v2i64) src_b0, (v2i64) src_b0); src_c4 -= src_a0 * src_b; src_c5 -= src_a1 * src_b; src_c6 -= src_a2 * src_b; src_c7 -= src_a3 * src_b; src_b = (v2f64) __msa_ilvr_d((v2i64) src_b1, (v2i64) src_b1); src_c8 -= src_a0 * src_b; src_c9 -= src_a1 * src_b; src_c10 -= src_a2 * src_b; src_c11 -= src_a3 * src_b; src_b = (v2f64) __msa_ilvl_d((v2i64) src_b1, (v2i64) src_b1); src_c12 -= src_a0 * src_b; src_c13 -= src_a1 * src_b; src_c14 -= src_a2 * src_b; src_c15 -= src_a3 * src_b; } }
set_favored_exporter (DiaPrefData *pref, gpointer ptr) { char *val = *((gchar **)ptr); filter_set_favored_export(pref->key, val); } /* retrive a structure offset */ #ifdef offsetof #define PREF_OFFSET(field) ((int) offsetof (struct DiaPreferences, field)) #else /* !offsetof */ #define PREF_OFFSET(field) ((int) ((char*) &((struct DiaPreferences *) 0)->field)) #endif /* !offsetof */ DiaPrefData prefs_data[] = { { "reset_tools_after_create", PREF_BOOLEAN, PREF_OFFSET(reset_tools_after_create), &default_true, UI_TAB, N_("Reset tools after create") }, { "undo_depth", PREF_UINT, PREF_OFFSET(undo_depth), &default_undo_depth, UI_TAB, N_("Number of undo levels:") }, { "reverse_rubberbanding_intersects", PREF_BOOLEAN, PREF_OFFSET(reverse_rubberbanding_intersects), &default_true, UI_TAB, N_("Reverse dragging selects\nintersecting objects") }, { "recent_documents_list_size", PREF_UINT, PREF_OFFSET(recent_documents_list_size), &default_recent_documents, 0, N_("Recent documents list size:") }, { "use_menu_bar", PREF_BOOLEAN, PREF_OFFSET(new_view.use_menu_bar), &default_true, UI_TAB, N_("Use menu bar") }, { "toolbox_on_top", PREF_BOOLEAN, PREF_OFFSET(toolbox_on_top),