Lines Matching refs:listp

65 static void __CFSimpleMerge(VALUE_TYPE listp[], INDEX_TYPE cnt1, INDEX_TYPE cnt2, VALUE_TYPE tmp[], COMPARATOR_BLOCK cmp) {
68 if (16 < cnt1 + cnt2 && cmp(listp[cnt1 - 1], listp[cnt1]) <= 0) return;
74 listp[idx] = tmp[idx];
80 listp[t] = listp[t - cnt2];
83 listp[idx] = tmp[idx];
87 VALUE_TYPE v1 = listp[idx1], v2 = listp[idx2];
99 static void __CFSimpleMergeSort(VALUE_TYPE listp[], INDEX_TYPE cnt, VALUE_TYPE tmp[], COMPARATOR_BLOCK cmp) {
103 VALUE_TYPE v0 = listp[0], v1 = listp[1];
105 listp[0] = v1;
106 listp[1] = v0;
109 VALUE_TYPE v0 = listp[0], v1 = listp[1], v2 = listp[2], vt;
125 listp[0] = v0;
126 listp[1] = v1;
127 listp[2] = v2;
130 __CFSimpleMergeSort(listp, half_cnt, tmp, cmp);
131 __CFSimpleMergeSort(listp + half_cnt, cnt - half_cnt, tmp, cmp);
132 __CFSimpleMerge(listp, half_cnt, cnt - half_cnt, tmp, cmp);
204 static void __CFSortIndexesN(VALUE_TYPE listp[], INDEX_TYPE count, int32_t ncores, CMP_RESULT_TYPE (^cmp)(INDEX_TYPE, INDEX_TYPE)) {
219 __CFSimpleMergeSort(listp + sect * sz, sect_len, tmps[sect], cmp); // naturally stable
227 VALUE_TYPE *left_base = listp + sect * sz - (right ? sz : 0);
228 VALUE_TYPE *right_base = listp + sect * sz + (right ? 0 : sz);
233 memmove(tmps[num_sect - 1], listp + (num_sect - 1) * sz, last_sect_len * sizeof(VALUE_TYPE));
240 __CFSortIndexesNMerge(left_base, sz, right_base, sect2_len, listp + sect * sz + sz, right, cmp);
242 memmove(listp + 0 * sz, tmps[0], sz * sizeof(VALUE_TYPE));
244 memmove(listp + (num_sect - 1) * sz, tmps[num_sect - 1], last_sect_len * sizeof(VALUE_TYPE));