Lines Matching defs:dreg

2859    UInt dreg = get_neon_d_regno(theInstr);
2867 putQReg(dreg, triop(Iop_ExtractV128, getQReg(nreg),
2870 putDRegI64(dreg, triop(Iop_Extract64, getDRegI64(nreg),
2873 DIP("vext.8 %c%d, %c%d, %c%d, #%d\n", reg_t, dreg, reg_t, nreg,
2908 UInt dreg = get_neon_d_regno(theInstr & ~(1 << 6));
2920 if (dreg >= 0x100 || mreg >= 0x100 || nreg >= 0x100)
2966 getDRegI64(dreg),
2972 putDRegI64(dreg, mkexpr(old_res), condT);
2973 DIP("vtb%c.8 d%u, {", op ? 'x' : 'l', dreg);
2988 UInt dreg = ((theInstr >> 18) & 0x10) | ((theInstr >> 12) & 0xF);
2999 if ((Q == 1) && ((dreg & 1) == 1))
3002 dreg >>= 1;
3029 putQReg(dreg, mkexpr(res), condT);
3031 putDRegI64(dreg, mkexpr(res), condT);
3033 DIP("vdup.%d %c%d, d%d[%d]\n", size, Q ? 'q' : 'd', dreg, mreg, index);
3042 UInt dreg = get_neon_d_regno(theInstr);
3142 dreg, regType, nreg, regType, mreg);
3201 8 << size, reg_t, dreg, reg_t, nreg, reg_t, mreg);
3312 8 << size, reg_t, dreg, reg_t, nreg, reg_t, mreg);
3327 reg_t, dreg, reg_t, nreg, reg_t, mreg);
3341 reg_t, dreg, reg_t, nreg, reg_t, mreg);
3356 reg_t, dreg, reg_t, nreg, reg_t, mreg);
3361 DIP("vmov %c%d, %c%d\n", reg_t, dreg, reg_t, mreg);
3375 reg_t, dreg, reg_t, nreg, reg_t, mreg);
3390 DIP("veor %c%u, %c%u, %c%u\n", Q ? 'q' : 'd', dreg,
3397 assign(reg_d, getQReg(dreg));
3408 assign(reg_d, getDRegI64(dreg));
3418 Q ? 'q' : 'd', dreg,
3425 assign(reg_d, getQReg(dreg));
3435 assign(reg_d, getDRegI64(dreg));
3445 Q ? 'q' : 'd', dreg,
3452 assign(reg_d, getQReg(dreg));
3462 assign(reg_d, getDRegI64(dreg));
3472 Q ? 'q' : 'd', dreg,
3553 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
3611 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
3639 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
3652 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
3714 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, Q ? 'q' : 'd',
3838 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, Q ? 'q' : 'd',
3978 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, Q ? 'q' : 'd',
4135 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, Q ? 'q' : 'd',
4164 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
4189 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
4258 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
4316 assign(acc, getQReg(dreg));
4321 assign(acc, getDRegI64(dreg));
4337 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
4355 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4367 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4386 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4396 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4445 Q ? getQReg(dreg) : getDRegI64(dreg),
4449 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
4475 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
4505 8 << size, Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg,
4544 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4578 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4596 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4609 Q ? 'q' : 'd', dreg,
4615 Q ? 'q' : 'd', dreg,
4624 DIP("vpadd.f32 d%u, d%u, d%u\n", dreg, nreg, mreg);
4640 Q ? 'q' : 'd', dreg,
4672 Q ? getQReg(dreg) : getDRegI64(dreg),
4678 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4687 Q ? 'q' : 'd', dreg,
4703 Q ? 'q' : 'd', dreg,
4717 Q ? 'q' : 'd', dreg,
4727 Q ? 'q' : 'd', dreg,
4749 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg,
4763 DIP("vmin.f32 %c%u, %c%u, %c%u\n", Q ? 'q' : 'd', dreg,
4767 DIP("vmax.f32 %c%u, %c%u, %c%u\n", Q ? 'q' : 'd', dreg,
4780 DIP("vpmin.f32 d%u, d%u, d%u\n", dreg, nreg, mreg);
4783 DIP("vpmax.f32 d%u, d%u, d%u\n", dreg, nreg, mreg);
4796 DIP("vrecps.f32 %c%u, %c%u, %c%u\n", Q ? 'q' : 'd', dreg,
4805 DIP("vrsqrts.f32 %c%u, %c%u, %c%u\n", Q ? 'q' : 'd', dreg,
4814 putQReg(dreg, mkexpr(res), condT);
4816 putDRegI64(dreg, mkexpr(res), condT);
4832 UInt dreg = get_neon_d_regno(theInstr);
4840 if (dreg & 1)
4842 dreg >>= 1;
4873 putQReg(dreg, binop(op, mkexpr(arg_n), mkexpr(arg_m)),
4876 (A & 1) ? 'w' : 'l', U ? 'u' : 's', 8 << size, dreg,
4925 putDRegI64(dreg, unop(cvt, binop(sh, mkexpr(res), mkU8(8 << size))),
4927 DIP("v%saddhn.i%u d%u, q%u, q%u\n", U ? "r" : "", 16 << size, dreg,
4935 if (dreg & 1)
4937 dreg >>= 1;
4981 getQReg(dreg)));
4982 putQReg(dreg, mkexpr(res), condT);
4983 DIP("vabal.%c%u q%u, d%u, d%u\n", U ? 'u' : 's', 8 << size, dreg,
5035 putDRegI64(dreg, unop(cvt, binop(sh, mkexpr(res), mkU8(8 << size))),
5037 DIP("v%ssubhn.i%u d%u, q%u, q%u\n", U ? "r" : "", 16 << size, dreg,
5045 if (dreg & 1)
5047 dreg >>= 1;
5087 putQReg(dreg, mkexpr(res), condT);
5088 DIP("vabdl.%c%u q%u, d%u, d%u\n", U ? 'u' : 's', 8 << size, dreg,
5094 if (dreg & 1)
5096 dreg >>= 1;
5118 putQReg(dreg, binop(op2, getQReg(dreg), mkexpr(res)), condT);
5120 8 << size, dreg, nreg, mreg);
5127 if (dreg & 1)
5129 dreg >>= 1;
5157 assign(tmp, binop(op2, getQReg(dreg), mkexpr(res)));
5158 setFlag_QC(mkexpr(tmp), binop(add, getQReg(dreg), mkexpr(res)),
5165 putQReg(dreg, binop(add, getQReg(dreg), mkexpr(res)), condT);
5166 DIP("vqdml%cl.s%u q%u, d%u, d%u\n", P ? 's' : 'a', 8 << size, dreg,
5172 if (dreg & 1)
5174 dreg >>= 1;
5191 putQReg(dreg, binop(op, getDRegI64(nreg),
5194 8 << size, dreg, nreg, mreg);
5200 if (dreg & 1)
5202 dreg >>= 1;
5224 putQReg(dreg, binop(op, getDRegI64(nreg), getDRegI64(mreg)),
5231 DIP("vqdmull.s%u q%u, d%u, d%u\n", 8 << size, dreg, nreg, mreg);
5245 UInt dreg = get_neon_d_regno(theInstr & ~(1 << 6));
5261 if ((dreg & 1) || (nreg & 1))
5263 dreg >>= 1;
5351 putQReg(dreg, binop_w_fake_RM(op2, getQReg(dreg), mkexpr(res)),
5354 putDRegI64(dreg, binop(op2, getDRegI64(dreg), mkexpr(res)),
5358 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, mreg, index);
5366 if (dreg & 1)
5368 dreg >>= 1;
5412 putQReg(dreg, binop(op2, getQReg(dreg), mkexpr(res)), condT);
5415 8 << size, dreg, nreg, mreg, index);
5425 if (dreg & 1)
5427 dreg >>= 1;
5479 assign(tmp, binop(op2, getQReg(dreg), mkexpr(res)));
5485 setFlag_QC(mkexpr(tmp), binop(add, getQReg(dreg), mkexpr(res)),
5487 putQReg(dreg, binop(add, getQReg(dreg), mkexpr(res)), condT);
5489 dreg, nreg, mreg, index);
5498 if ((dreg & 1) || (nreg & 1))
5500 dreg >>= 1;
5581 putQReg(dreg, mkexpr(res), condT);
5583 putDRegI64(dreg, mkexpr(res), condT);
5585 8 << size, Q ? 'q' : 'd', dreg,
5594 if (dreg & 1)
5596 dreg >>= 1;
5628 putQReg(dreg, mkexpr(res), condT);
5629 DIP("vmull.%c%u q%u, d%u, d%u[%u]\n", U ? 'u' : 's', 8 << size, dreg,
5639 if (dreg & 1)
5641 dreg >>= 1;
5685 putQReg(dreg, binop(op, mkexpr(arg_n), mkexpr(arg_m)),
5692 DIP("vqdmull.s%u q%u, d%u, d%u[%u]\n", 8 << size, dreg, nreg, mreg,
5703 if ((dreg & 1) || (nreg & 1))
5705 dreg >>= 1;
5786 putQReg(dreg, mkexpr(res), condT);
5788 putDRegI64(dreg, mkexpr(res), condT);
5790 8 << size, Q ? 'q' : 'd', dreg,
5801 if ((dreg & 1) || (nreg & 1))
5803 dreg >>= 1;
5884 putQReg(dreg, mkexpr(res), condT);
5886 putDRegI64(dreg, mkexpr(res), condT);
5888 8 << size, Q ? 'q' : 'd', dreg,
5911 UInt dreg = get_neon_d_regno(theInstr);
6031 putQReg(dreg, binop(add, mkexpr(res), getQReg(dreg)),
6034 putDRegI64(dreg, binop(add, mkexpr(res), getDRegI64(dreg)),
6039 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6042 putQReg(dreg, mkexpr(res), condT);
6044 putDRegI64(dreg, mkexpr(res), condT);
6047 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6108 putQReg(dreg, binop(add, mkexpr(res), getQReg(dreg)),
6111 putDRegI64(dreg, binop(add, mkexpr(res), getDRegI64(dreg)),
6115 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6118 putQReg(dreg, mkexpr(res), condT);
6120 putDRegI64(dreg, mkexpr(res), condT);
6123 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6151 getQReg(dreg),
6157 putQReg(dreg, mkexpr(res), condT);
6163 getDRegI64(dreg),
6169 putDRegI64(dreg, mkexpr(res), condT);
6172 8 << size, Q ? 'q' : 'd', dreg,
6200 getQReg(dreg),
6206 putQReg(dreg, mkexpr(res), condT);
6212 getDRegI64(dreg),
6218 putDRegI64(dreg, mkexpr(res), condT);
6221 8 << size, Q ? 'q' : 'd', dreg,
6242 putQReg(dreg, mkexpr(res), condT);
6244 putDRegI64(dreg, mkexpr(res), condT);
6247 8 << size, Q ? 'q' : 'd', dreg,
6280 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6304 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6331 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6348 putQReg(dreg, mkexpr(res), condT);
6350 putDRegI64(dreg, mkexpr(res), condT);
6357 dreg = ((theInstr >> 18) & 0x10) | ((theInstr >> 12) & 0xF);
6388 putDRegI64(dreg, mkexpr(res), condT);
6389 DIP("vshrn.i%u d%u, q%u, #%u\n", 8 << size, dreg, mreg,
6437 putDRegI64(dreg, mkexpr(res), condT);
6439 DIP("vmov%u d%u, q%u, #%u\n", 8 << size, dreg, mreg,
6442 DIP("vrshrn.i%u d%u, q%u, #%u\n", 8 << size, dreg, mreg,
6451 dreg = ((theInstr >> 18) & 0x10) | ((theInstr >> 12) & 0xF);
6478 U ? 'u' : 's', 8 << size, dreg, mreg, shift_imm);
6501 8 << size, dreg, mreg, shift_imm);
6538 putDRegI64(dreg, unop(cvt, mkexpr(res)), condT);
6545 if (dreg & 1)
6547 dreg >>= 1;
6569 putQReg(dreg, mkexpr(res), condT);
6572 dreg, mreg);
6575 dreg, mreg, shift_imm);
6588 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg,
6597 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg,
6603 putQReg(dreg, binop(op, getQReg(mreg),
6606 putDRegI64(dreg, binop(op, getDRegI64(mreg),
6626 UInt dreg = get_neon_d_regno(theInstr);
6664 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
6685 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
6704 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
6733 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
6750 DIP("vcls.s%u %c%u, %c%u\n", 8 << size, Q ? 'q' : 'd', dreg,
6765 DIP("vclz.i%u %c%u, %c%u\n", 8 << size, Q ? 'q' : 'd', dreg,
6772 DIP("vcnt.8 %c%u, %c%u\n", Q ? 'q' : 'd', dreg, Q ? 'q' : 'd',
6781 DIP("vmvn %c%u, %c%u\n", Q ? 'q' : 'd', dreg, Q ? 'q' : 'd',
6830 assign(arg_d, getQReg(dreg));
6833 assign(arg_d, getDRegI64(dreg));
6838 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
6899 DIP("vqabs.s%u %c%u, %c%u\n", 8 << size, Q ? 'q' : 'd', dreg,
6933 DIP("vqneg.s%u %c%u, %c%u\n", 8 << size, Q ? 'q' : 'd', dreg,
6941 putQReg(dreg, mkexpr(res), condT);
6943 putDRegI64(dreg, mkexpr(res), condT);
6983 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7014 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7045 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7076 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7106 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7128 F ? 'f' : 's', 8 << size, Q ? 'q' : 'd', dreg,
7159 F ? 'f' : 's', 8 << size, Q ? 'q' : 'd', dreg,
7167 putQReg(dreg, mkexpr(res), condT);
7169 putDRegI64(dreg, mkexpr(res), condT);
7178 putQReg(mreg, getQReg(dreg), condT);
7179 putQReg(dreg, mkexpr(arg_m), condT);
7183 putDRegI64(mreg, getDRegI64(dreg), condT);
7184 putDRegI64(dreg, mkexpr(arg_m), condT);
7187 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7199 assign(old_d, getQReg(dreg));
7206 assign(old_d, getDRegI64(dreg));
7250 putQReg(dreg, mkexpr(new_d), condT);
7253 putDRegI64(dreg, mkexpr(new_d), condT);
7257 8 << size, Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7271 assign(old_d, getQReg(dreg));
7278 assign(old_d, getDRegI64(dreg));
7301 putQReg(dreg, mkexpr(new_d), condT);
7304 putDRegI64(dreg, mkexpr(new_d), condT);
7308 8 << size, Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7322 assign(old_d, getQReg(dreg));
7329 assign(old_d, getDRegI64(dreg));
7352 putQReg(dreg, mkexpr(new_d), condT);
7355 putDRegI64(dreg, mkexpr(new_d), condT);
7359 8 << size, Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7372 putDRegI64(dreg, unop(op, getQReg(mreg)), condT);
7373 DIP("vmovn.i%u d%u, q%u\n", 16 << size, dreg, mreg);
7379 dreg = ((theInstr >> 18) & 0x10) | ((theInstr >> 12) & 0xF);
7402 DIP("vqmovun.s%u d%u, q%u\n", 16 << size, dreg, mreg);
7412 DIP("vqmovn.s%u d%u, q%u\n", 16 << size, dreg, mreg);
7422 DIP("vqmovn.u%u d%u, q%u\n", 16 << size, dreg, mreg);
7432 putDRegI64(dreg, mkexpr(res), condT);
7440 if (dreg & 1)
7442 dreg >>= 1;
7454 putQReg(dreg, mkexpr(res), condT);
7455 DIP("vshll.i%u q%u, d%u, #%u\n", 8 << size, dreg, mreg, 8 << size);
7464 if (dreg & 1)
7466 dreg >>= 1;
7467 putQReg(dreg, unop(Iop_F16toF32x4, getDRegI64(mreg)),
7469 DIP("vcvt.f32.f16 q%u, d%u\n", dreg, mreg);
7474 putDRegI64(dreg, unop(Iop_F32toF16x4, getQReg(mreg)),
7476 DIP("vcvt.f16.f32 d%u, q%u\n", dreg, mreg);
7493 putQReg(dreg, unop(op, getQReg(mreg)), condT);
7494 DIP("vrecpe.%c32 q%u, q%u\n", F ? 'f' : 'u', dreg, mreg);
7497 putDRegI64(dreg, unop(op, getDRegI64(mreg)), condT);
7498 DIP("vrecpe.%c32 d%u, d%u\n", F ? 'f' : 'u', dreg, mreg);
7515 putQReg(dreg, unop(op, getQReg(mreg)), condT);
7516 DIP("vrsqrte.%c32 q%u, q%u\n", F ? 'f' : 'u', dreg, mreg);
7518 putDRegI64(dreg, unop(op, getDRegI64(mreg)), condT);
7519 DIP("vrsqrte.%c32 d%u, d%u\n", F ? 'f' : 'u', dreg, mreg);
7531 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7536 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7541 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7546 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7552 putQReg(dreg, unop(op, getQReg(mreg)), condT);
7554 putDRegI64(dreg, unop(op, getDRegI64(mreg)), condT);
7633 const char *instr, UInt Q, UInt dreg)
7637 ppNeonImmType(cmode, op), Q ? 'q' : 'd', dreg);
7646 UInt dreg = get_neon_d_regno(theInstr);
7723 putQReg(dreg, imm_val, condT);
7725 putDRegI64(dreg, imm_val, condT);
7727 DIPimm(imm_raw_pp, cmode, op_bit, "vmov", Q, dreg);
7734 putQReg(dreg, unop(Iop_NotV128, imm_val), condT);
7736 putDRegI64(dreg, unop(Iop_Not64, imm_val), condT);
7738 DIPimm(imm_raw_pp, cmode, op_bit, "vmvn", Q, dreg);
7743 assign(tmp_var, getQReg(dreg));
7746 assign(tmp_var, getDRegI64(dreg));
7754 DIPimm(imm_raw_pp, cmode, op_bit, "vorr", Q, dreg);
7762 DIPimm(imm_raw_pp, cmode, op_bit, "vbic", Q, dreg);
7767 putQReg(dreg, expr, condT);
7769 putDRegI64(dreg, expr, condT);