Lines Matching defs:func
112 struct x86_function *func;
185 sse_movaps(p->func, reg,
201 x86_movzx8(p->func, tmp, src);
202 sse2_movd(p->func, data, tmp);
205 x86_movzx16(p->func, tmp, src);
206 sse2_movd(p->func, data, tmp);
209 x86_movzx8(p->func, tmp, x86_make_disp(src, 2));
210 x86_shl_imm(p->func, tmp, 16);
211 x86_mov16(p->func, tmp, src);
212 sse2_movd(p->func, data, tmp);
215 sse2_movd(p->func, data, src);
218 sse2_movd(p->func, data, src);
219 x86_movzx16(p->func, tmp, x86_make_disp(src, 4));
220 sse2_movd(p->func, tmpXMM, tmp);
221 sse2_punpckldq(p->func, data, tmpXMM);
224 sse2_movq(p->func, data, src);
227 sse2_movq(p->func, data, src);
228 sse2_movd(p->func, tmpXMM, x86_make_disp(src, 8));
229 sse2_punpcklqdq(p->func, data, tmpXMM);
232 sse2_movdqu(p->func, data, src);
261 sse_movss(p->func, data, arg0);
263 sse_orps(p->func, data, get_const(p, CONST_IDENTITY));
270 sse_shufps(p->func, data, get_const(p, CONST_IDENTITY),
273 sse_movlhps(p->func, data, get_const(p, CONST_IDENTITY));
274 sse_movlps(p->func, data, arg0);
284 sse_movss(p->func, data, x86_make_disp(arg0, 8));
286 sse_shufps(p->func, data, get_const(p, CONST_IDENTITY),
288 sse_shufps(p->func, data, data, SHUF(Y, Z, X, W));
289 sse_movlps(p->func, data, arg0);
292 sse_movups(p->func, data, arg0);
307 sse2_movsd(p->func, data, arg0);
309 sse2_cvtpd2ps(p->func, data, data);
311 sse2_cvtsd2ss(p->func, data, data);
313 sse_shufps(p->func, data, get_const(p, CONST_IDENTITY),
317 sse2_movupd(p->func, data, arg0);
318 sse2_cvtpd2ps(p->func, data, data);
320 sse_shufps(p->func, data, get_const(p, CONST_IDENTITY),
323 sse_movlhps(p->func, data, get_const(p, CONST_IDENTITY));
326 sse2_movupd(p->func, data, arg0);
327 sse2_cvtpd2ps(p->func, data, data);
328 sse2_movsd(p->func, tmpXMM, x86_make_disp(arg0, 16));
330 sse2_cvtpd2ps(p->func, tmpXMM, tmpXMM);
332 sse2_cvtsd2ss(p->func, tmpXMM, tmpXMM);
333 sse_movlhps(p->func, data, tmpXMM);
335 sse_orps(p->func, data, get_const(p, CONST_IDENTITY));
338 sse2_movupd(p->func, data, arg0);
339 sse2_cvtpd2ps(p->func, data, data);
340 sse2_movupd(p->func, tmpXMM, x86_make_disp(arg0, 16));
341 sse2_cvtpd2ps(p->func, tmpXMM, tmpXMM);
342 sse_movlhps(p->func, data, tmpXMM);
353 if (x86_target(p->func) != X86_32)
354 x64_mov64(p->func, dst_gpr, src_gpr);
357 if (x86_target_caps(p->func) & X86_SSE2)
358 sse2_movq(p->func, dst_xmm, src_xmm);
360 sse_movlps(p->func, dst_xmm, src_xmm);
384 if (x86_target_caps(p->func) & X86_SSE2)
385 sse2_movdqu(p->func, dst, src);
387 sse_movups(p->func, dst, src);
407 x86_mov8(p->func, dataGPR, src);
408 x86_mov8(p->func, dst, dataGPR);
411 x86_mov16(p->func, dataGPR, src);
412 x86_mov16(p->func, dst, dataGPR);
415 x86_mov16(p->func, dataGPR, src);
416 x86_mov8(p->func, dataGPR2, x86_make_disp(src, 2));
417 x86_mov16(p->func, dst, dataGPR);
418 x86_mov8(p->func, x86_make_disp(dst, 2), dataGPR2);
421 x86_mov(p->func, dataGPR, src);
422 x86_mov(p->func, dst, dataGPR);
425 x86_mov(p->func, dataGPR, src);
426 x86_mov16(p->func, dataGPR2, x86_make_disp(src, 4));
427 x86_mov(p->func, dst, dataGPR);
428 x86_mov16(p->func, x86_make_disp(dst, 4), dataGPR2);
432 else if (!(x86_target_caps(p->func) & X86_SSE)) {
436 x86_mov(p->func, dataGPR, x86_make_disp(src, i));
437 x86_mov(p->func, x86_make_disp(dst, i), dataGPR);
448 x86_mov(p->func, dataGPR, x86_make_disp(src, 8));
450 x86_mov(p->func, x86_make_disp(dst, 8), dataGPR);
521 if ((x86_target_caps(p->func) & X86_SSE) &&
545 if (!(x86_target_caps(p->func) & X86_SSE2))
557 sse2_punpcklbw(p->func, dataXMM, get_const(p, CONST_IDENTITY));
558 sse2_punpcklbw(p->func, dataXMM, get_const(p, CONST_IDENTITY));
561 sse2_punpcklwd(p->func, dataXMM, get_const(p, CONST_IDENTITY));
569 sse_xorps(p->func, auxXMM, auxXMM);
571 sse2_pcmpgtd(p->func, auxXMM, dataXMM);
573 sse_andps(p->func, dataXMM, get_const(p, CONST_2147483647_INT));
575 sse_andps(p->func, auxXMM, get_const(p, CONST_2147483648));
580 sse2_cvtdq2ps(p->func, dataXMM, dataXMM);
583 sse_addps(p->func, dataXMM, auxXMM);
604 sse_mulps(p->func, dataXMM, factor);
608 if (!(x86_target_caps(p->func) & X86_SSE2))
617 sse2_punpcklbw(p->func, dataXMM, dataXMM);
618 sse2_punpcklbw(p->func, dataXMM, dataXMM);
619 sse2_psrad_imm(p->func, dataXMM, 24);
622 sse2_punpcklwd(p->func, dataXMM, dataXMM);
623 sse2_psrad_imm(p->func, dataXMM, 16);
630 sse2_cvtdq2ps(p->func, dataXMM, dataXMM);
651 sse_mulps(p->func, dataXMM, factor);
672 if (!(x86_target_caps(p->func) & X86_SSE2))
686 sse_shufps(p->func, dataXMM, dataXMM,
696 sse_movups(p->func, dst, dataXMM);
702 sse_movlps(p->func, dst, dataXMM);
706 sse_movss(p->func, dst, dataXMM);
709 x86_mov_imm(p->func, dst,
715 sse_shufps(p->func, dataXMM, dataXMM, SHUF(1, 1, 2, 3));
716 sse_movss(p->func, x86_make_disp(dst, 4), dataXMM);
719 x86_mov_imm(p->func, x86_make_disp(dst, 4),
729 sse_movhps(p->func, x86_make_disp(dst, 8), dataXMM);
733 sse_shufps(p->func, dataXMM, dataXMM, SHUF(2, 2, 2, 3));
734 sse_movss(p->func, x86_make_disp(dst, 8), dataXMM);
737 x86_mov_imm(p->func, x86_make_disp(dst, 8),
743 sse_shufps(p->func, dataXMM, dataXMM, SHUF(3, 3, 3, 3));
744 sse_movss(p->func, x86_make_disp(dst, 12), dataXMM);
747 x86_mov_imm(p->func, x86_make_disp(dst, 12),
756 else if ((x86_target_caps(p->func) & X86_SSE2)
794 sse2_punpcklbw(p->func, dataXMM, dataXMM);
796 sse2_psrlw_imm(p->func, dataXMM, 1);
799 sse2_punpcklbw(p->func, dataXMM, get_const(p, CONST_IDENTITY));
803 sse2_movq(p->func, tmpXMM, get_const(p, CONST_IDENTITY));
804 sse2_punpcklbw(p->func, tmpXMM, dataXMM);
805 sse2_psllw_imm(p->func, dataXMM, 9);
806 sse2_psrlw_imm(p->func, dataXMM, 8);
807 sse2_por(p->func, tmpXMM, dataXMM);
808 sse2_psrlw_imm(p->func, dataXMM, 7);
809 sse2_por(p->func, tmpXMM, dataXMM);
817 sse2_punpcklbw(p->func, dataXMM, dataXMM);
818 sse2_psraw_imm(p->func, dataXMM, 8);
831 sse2_pshuflw(p->func, dataXMM, dataXMM,
841 sse2_movq(p->func, dst, dataXMM);
847 sse2_movd(p->func, dst, dataXMM);
850 sse2_movd(p->func, tmp, dataXMM);
851 x86_mov16(p->func, dst, tmp);
853 x86_mov16_imm(p->func, x86_make_disp(dst, 2),
860 x86_mov_imm(p->func, dst,
865 x86_mov16_imm(p->func, dst,
868 sse2_movd(p->func, tmp, dataXMM);
869 x86_shr_imm(p->func, tmp, 16);
870 x86_mov16(p->func, x86_make_disp(dst, 2), tmp);
879 sse2_psrlq_imm(p->func, dataXMM, 32);
880 sse2_movd(p->func, x86_make_disp(dst, 4), dataXMM);
883 sse2_psrlq_imm(p->func, dataXMM, 32);
884 sse2_movd(p->func, tmp, dataXMM);
885 x86_mov16(p->func, x86_make_disp(dst, 4), tmp);
887 x86_mov16_imm(p->func, x86_make_disp(dst, 6),
895 x86_mov_imm(p->func, x86_make_disp(dst, 4),
900 x86_mov16_imm(p->func, x86_make_disp(dst, 4),
904 sse2_psrlq_imm(p->func, dataXMM, 48);
905 sse2_movd(p->func, tmp, dataXMM);
906 x86_mov16(p->func, x86_make_disp(dst, 6), tmp);
926 x86_mov(p->func, tmp, src);
927 x86_bswap(p->func, tmp);
928 x86_mov(p->func, dst, tmp);
949 x86_mov8_imm(p->func, x86_make_disp(dst, i * 1), v);
952 x86_mov8(p->func, tmp, x86_make_disp(src, swizzle[i] * 1));
953 x86_mov8(p->func, x86_make_disp(dst, i * 1), tmp);
974 x86_mov16_imm(p->func, x86_make_disp(dst, i * 2), v);
977 x86_mov16_imm(p->func, x86_make_disp(dst, i * 2), 0);
980 x86_mov16(p->func, tmp, x86_make_disp(src, swizzle[i] * 2));
981 x86_mov16(p->func, x86_make_disp(dst, i * 2), tmp);
1002 x86_mov_imm(p->func, x86_make_disp(dst, i * 4), v);
1005 x86_mov(p->func, tmp, x86_make_disp(src, swizzle[i] * 4));
1006 x86_mov(p->func, x86_make_disp(dst, i * 4), tmp);
1031 x86_mov_imm(p->func, x86_make_disp(dst, i * 8), l);
1032 x86_mov_imm(p->func, x86_make_disp(dst, i * 8 + 4), h);
1035 if (x86_target_caps(p->func) & X86_SSE) {
1042 x86_mov(p->func, tmp, x86_make_disp(src, swizzle[i] * 8));
1043 x86_mov(p->func, x86_make_disp(dst, i * 8), tmp);
1044 x86_mov(p->func, tmp,
1046 x86_mov(p->func, x86_make_disp(dst, i * 8 + 4), tmp);
1057 else if ((x86_target_caps(p->func) & X86_SSE2) &&
1064 sse_movups(p->func, dataXMM, src);
1067 sse_shufps(p->func, dataXMM, dataXMM, SHUF(2, 1, 0, 3));
1071 sse_mulps(p->func, dataXMM, get_const(p, CONST_255));
1074 sse2_cvtps2dq(p->func, dataXMM, dataXMM);
1075 sse2_packssdw(p->func, dataXMM, dataXMM);
1076 sse2_packuswb(p->func, dataXMM, dataXMM);
1077 sse2_movd(p->func, dst, dataXMM);
1134 x86_mov(p->func, tmp_EAX, instance_id);
1142 x86_xor(p->func, tmp_EDX, tmp_EDX);
1143 x86_mov_reg_imm(p->func, tmp_ECX, variant->instance_divisor);
1144 x86_div(p->func, tmp_ECX); /* EAX = EDX:EAX / ECX */
1149 x86_mov(p->func, tmp_EDX, start_instance);
1150 x86_add(p->func, tmp_EAX, tmp_EDX);
1158 x86_mov(p->func, tmp_EAX, elt);
1162 x86_cmp(p->func, tmp_EAX, buf_max_index);
1163 x86_cmovcc(p->func, tmp_EAX, buf_max_index, cc_AE);
1166 x86_mov(p->func, p->tmp2_EDX, buf_stride);
1167 x64_rexw(p->func);
1168 x86_imul(p->func, tmp_EAX, p->tmp2_EDX);
1169 x64_rexw(p->func);
1170 x86_add(p->func, tmp_EAX, buf_base_ptr);
1172 x86_cmp(p->func, p->count_EBP, p->tmp_EAX);
1178 x64_rexw(p->func);
1179 x86_mov(p->func, elt, tmp_EAX);
1182 x64_rexw(p->func);
1183 x86_mov(p->func, buf_ptr, tmp_EAX);
1208 x64_rexw(p->func);
1209 x86_mov(p->func, ptr, buf_ptr);
1230 x86_movzx8(p->func, ptr, elt);
1233 x86_movzx16(p->func, ptr, elt);
1236 x86_mov(p->func, ptr, elt);
1242 x86_cmp(p->func, ptr, buf_max_index);
1243 x86_cmovcc(p->func, ptr, buf_max_index, cc_AE);
1245 x86_mov(p->func, p->tmp2_EDX, buf_stride);
1246 x64_rexw(p->func);
1247 x86_imul(p->func, ptr, p->tmp2_EDX);
1248 x64_rexw(p->func);
1249 x86_add(p->func, ptr, buf_base_ptr);
1265 x64_rexw(p->func);
1266 x86_add(p->func, p->idx_ESI, stride);
1267 sse_prefetchnta(p->func, x86_make_disp(p->idx_ESI, 192));
1284 x86_mov(p->func, p->tmp_EAX, buf_stride);
1285 x64_rexw(p->func);
1286 x86_add(p->func, p->tmp_EAX, buf_ptr);
1288 sse_prefetchnta(p->func, x86_make_disp(p->tmp_EAX, 192));
1289 x64_rexw(p->func);
1290 x86_mov(p->func, buf_ptr, p->tmp_EAX);
1295 x64_rexw(p->func);
1296 x86_lea(p->func, p->idx_ESI, x86_make_disp(p->idx_ESI, index_size));
1321 struct x86_function *func, unsigned index_size)
1337 p->func = func;
1339 x86_init_func(p->func);
1341 if (x86_target(p->func) == X86_64_WIN64_ABI) {
1345 sse2_movdqa(p->func, x86_make_disp(x86_make_reg(file_REG32, reg_SP), 8),
1347 sse2_movdqa(p->func,
1352 x86_push(p->func, p->outbuf_EBX);
1353 x86_push(p->func, p->count_EBP);
1356 if (x86_target(p->func) != X86_64_STD_ABI) {
1357 x86_push(p->func, p->machine_EDI);
1358 x86_push(p->func, p->idx_ESI);
1360 if (x86_target(p->func) != X86_32) {
1361 x64_mov64(p->func, p->machine_EDI, x86_fn_arg(p->func, 1));
1362 x64_mov64(p->func, p->idx_ESI, x86_fn_arg(p->func, 2));
1365 x86_mov(p->func, p->machine_EDI, x86_fn_arg(p->func, 1));
1366 x86_mov(p->func, p->idx_ESI, x86_fn_arg(p->func, 2));
1370 x86_mov(p->func, p->count_EBP, x86_fn_arg(p->func, 3));
1372 if (x86_target(p->func) != X86_32)
1373 x64_mov64(p->func, p->outbuf_EBX, x86_fn_arg(p->func, 6));
1375 x86_mov(p->func, p->outbuf_EBX, x86_fn_arg(p->func, 6));
1380 x86_mov(p->func, p->tmp2_EDX, x86_fn_arg(p->func, 4));
1381 x86_mov(p->func,
1385 x86_mov(p->func, p->tmp_EAX, x86_fn_arg(p->func, 5));
1386 x86_mov(p->func,
1393 x86_xor(p->func, p->tmp_EAX, p->tmp_EAX);
1394 x86_cmp(p->func, p->count_EBP, p->tmp_EAX);
1395 fixup = x86_jcc_forward(p->func, cc_E);
1403 label = x86_get_label(p->func);
1428 x64_rexw(p->func);
1429 x86_lea(p->func, p->outbuf_EBX,
1439 x86_dec(p->func, p->count_EBP);
1440 x86_jcc(p->func, cc_NZ, label);
1444 if (p->func->need_emms)
1445 mmx_emms(p->func);
1449 x86_fixup_fwd_jump(p->func, fixup);
1453 if (x86_target(p->func) != X86_64_STD_ABI) {
1454 x86_pop(p->func, p->idx_ESI);
1455 x86_pop(p->func, p->machine_EDI);
1458 x86_pop(p->func, p->count_EBP);
1459 x86_pop(p->func, p->outbuf_EBX);
1461 if (x86_target(p->func) == X86_64_WIN64_ABI) {
1462 sse2_movdqa(p->func, x86_make_reg(file_XMM, 6),
1464 sse2_movdqa(p->func, x86_make_reg(file_XMM, 7),
1467 x86_ret(p->func);