Lines Matching refs:dst
289 const u8 dst = regmap[insn->dst_reg];
303 /* dst = src */
306 move_reg(ctx, dst, src);
307 emit_zext_32(ctx, dst, is32);
309 /* dst = imm */
312 move_imm32(ctx, dst, imm, is32);
315 /* dst = dst + src */
318 emit_insn(ctx, addd, dst, dst, src);
319 emit_zext_32(ctx, dst, is32);
321 /* dst = dst + imm */
325 emit_insn(ctx, addid, dst, dst, imm);
328 emit_insn(ctx, addd, dst, dst, tmp);
330 emit_zext_32(ctx, dst, is32);
333 /* dst = dst - src */
336 emit_insn(ctx, subd, dst, dst, src);
337 emit_zext_32(ctx, dst, is32);
339 /* dst = dst - imm */
343 emit_insn(ctx, addid, dst, dst, -imm);
346 emit_insn(ctx, subd, dst, dst, tmp);
348 emit_zext_32(ctx, dst, is32);
351 /* dst = dst * src */
354 emit_insn(ctx, muld, dst, dst, src);
355 emit_zext_32(ctx, dst, is32);
357 /* dst = dst * imm */
361 emit_insn(ctx, muld, dst, dst, tmp);
362 emit_zext_32(ctx, dst, is32);
365 /* dst = dst / src */
368 emit_insn(ctx, divdu, dst, dst, src);
369 emit_zext_32(ctx, dst, is32);
371 /* dst = dst / imm */
375 emit_insn(ctx, divdu, dst, dst, tmp);
376 emit_zext_32(ctx, dst, is32);
379 /* dst = dst % src */
382 emit_insn(ctx, moddu, dst, dst, src);
383 emit_zext_32(ctx, dst, is32);
385 /* dst = dst % imm */
389 emit_insn(ctx, moddu, dst, dst, tmp);
390 emit_zext_32(ctx, dst, is32);
393 /* dst = -dst */
397 emit_insn(ctx, subd, dst, LOONGARCH_GPR_ZERO, dst);
398 emit_zext_32(ctx, dst, is32);
401 /* dst = dst & src */
404 emit_insn(ctx, and, dst, dst, src);
405 emit_zext_32(ctx, dst, is32);
407 /* dst = dst & imm */
411 emit_insn(ctx, andi, dst, dst, imm);
414 emit_insn(ctx, and, dst, dst, tmp);
416 emit_zext_32(ctx, dst, is32);
419 /* dst = dst | src */
422 emit_insn(ctx, or, dst, dst, src);
423 emit_zext_32(ctx, dst, is32);
425 /* dst = dst | imm */
429 emit_insn(ctx, ori, dst, dst, imm);
432 emit_insn(ctx, or, dst, dst, tmp);
434 emit_zext_32(ctx, dst, is32);
437 /* dst = dst ^ src */
440 emit_insn(ctx, xor, dst, dst, src);
441 emit_zext_32(ctx, dst, is32);
443 /* dst = dst ^ imm */
447 emit_insn(ctx, xori, dst, dst, imm);
450 emit_insn(ctx, xor, dst, dst, tmp);
452 emit_zext_32(ctx, dst, is32);
455 /* dst = dst << src (logical) */
457 emit_insn(ctx, sllw, dst, dst, src);
458 emit_zext_32(ctx, dst, is32);
461 emit_insn(ctx, slld, dst, dst, src);
463 /* dst = dst << imm (logical) */
465 emit_insn(ctx, slliw, dst, dst, imm);
466 emit_zext_32(ctx, dst, is32);
469 emit_insn(ctx, sllid, dst, dst, imm);
472 /* dst = dst >> src (logical) */
474 emit_insn(ctx, srlw, dst, dst, src);
475 emit_zext_32(ctx, dst, is32);
478 emit_insn(ctx, srld, dst, dst, src);
480 /* dst = dst >> imm (logical) */
482 emit_insn(ctx, srliw, dst, dst, imm);
483 emit_zext_32(ctx, dst, is32);
486 emit_insn(ctx, srlid, dst, dst, imm);
489 /* dst = dst >> src (arithmetic) */
491 emit_insn(ctx, sraw, dst, dst, src);
492 emit_zext_32(ctx, dst, is32);
495 emit_insn(ctx, srad, dst, dst, src);
497 /* dst = dst >> imm (arithmetic) */
499 emit_insn(ctx, sraiw, dst, dst, imm);
500 emit_zext_32(ctx, dst, is32);
503 emit_insn(ctx, sraid, dst, dst, imm);
506 /* dst = BSWAP##imm(dst) */
511 emit_insn(ctx, sllid, dst, dst, 48);
512 emit_insn(ctx, srlid, dst, dst, 48);
516 emit_zext_32(ctx, dst, is32);
526 emit_insn(ctx, revb2h, dst, dst);
528 emit_insn(ctx, sllid, dst, dst, 48);
529 emit_insn(ctx, srlid, dst, dst, 48);
532 emit_insn(ctx, revb2w, dst, dst);
534 emit_zext_32(ctx, dst, is32);
537 emit_insn(ctx, revbd, dst, dst);
542 /* PC += off if dst cond src */
554 emit_cond_jump(ctx, cond, dst, src, jmp_offset);
557 /* PC += off if dst cond imm */
570 emit_cond_jump(ctx, cond, dst, tmp, jmp_offset);
573 /* PC += off if dst & src */
576 emit_insn(ctx, and, tmp, dst, src);
579 /* PC += off if dst & imm */
583 emit_insn(ctx, and, tmp, dst, tmp);
627 /* dst = imm64 */
630 move_imm64(ctx, dst, imm64, is32);
633 /* dst = *(size *)(src + off) */
641 emit_insn(ctx, ldbu, dst, src, off);
644 emit_insn(ctx, ldhu, dst, src, off);
647 emit_insn(ctx, ldwu, dst, src, off);
650 emit_insn(ctx, ldd, dst, src, off);
657 emit_insn(ctx, ldxbu, dst, src, tmp);
660 emit_insn(ctx, ldxhu, dst, src, tmp);
663 emit_insn(ctx, ldxwu, dst, src, tmp);
666 emit_insn(ctx, ldxd, dst, src, tmp);
672 /* *(size *)(dst + off) = imm */
681 emit_insn(ctx, stb, tmp, dst, off);
684 emit_insn(ctx, sth, tmp, dst, off);
687 emit_insn(ctx, stw, tmp, dst, off);
690 emit_insn(ctx, std, tmp, dst, off);
697 emit_insn(ctx, stxb, tmp, dst, tmp2);
700 emit_insn(ctx, stxh, tmp, dst, tmp2);
703 emit_insn(ctx, stxw, tmp, dst, tmp2);
706 emit_insn(ctx, stxd, tmp, dst, tmp2);
712 /* *(size *)(dst + off) = src */
720 emit_insn(ctx, stb, src, dst, off);
723 emit_insn(ctx, sth, src, dst, off);
726 emit_insn(ctx, stw, src, dst, off);
729 emit_insn(ctx, std, src, dst, off);
736 emit_insn(ctx, stxb, src, dst, tmp);
739 emit_insn(ctx, stxh, src, dst, tmp);
742 emit_insn(ctx, stxw, src, dst, tmp);
745 emit_insn(ctx, stxd, src, dst, tmp);
751 /* atomic_add: lock *(size *)(dst + off) += src */
760 emit_insn(ctx, addd, tmp, dst, tmp);