Home | History | Annotate | Download | only in priv

Lines Matching defs:dreg

646 /* Plain ("low level") read from a VFP Dreg. */
653 /* Architected read from a VFP Dreg. */
658 /* Plain ("low level") write to a VFP Dreg. */
666 /* Architected write to a VFP Dreg. Handles conditional writes to the
690 /* Plain ("low level") read from a Neon Integer Dreg. */
697 /* Architected read from a Neon Integer Dreg. */
702 /* Plain ("low level") write to a Neon Integer Dreg. */
710 /* Architected write to a Neon Integer Dreg. Handles conditional
2830 UInt dreg = get_neon_d_regno(theInstr);
2838 putQReg(dreg, triop(Iop_ExtractV128, getQReg(nreg),
2841 putDRegI64(dreg, triop(Iop_Extract64, getDRegI64(nreg),
2844 DIP("vext.8 %c%d, %c%d, %c%d, #%d\n", reg_t, dreg, reg_t, nreg,
2854 UInt dreg = get_neon_d_regno(theInstr & ~(1 << 6));
2866 if (dreg >= 0x100 || mreg >= 0x100 || nreg >= 0x100)
2912 getDRegI64(dreg),
2918 putDRegI64(dreg, mkexpr(old_res), condT);
2919 DIP("vtb%c.8 d%u, {", op ? 'x' : 'l', dreg);
2934 UInt dreg = ((theInstr >> 18) & 0x10) | ((theInstr >> 12) & 0xF);
2945 if ((Q == 1) && ((dreg & 1) == 1))
2948 dreg >>= 1;
2975 putQReg(dreg, mkexpr(res), condT);
2977 putDRegI64(dreg, mkexpr(res), condT);
2979 DIP("vdup.%d %c%d, d%d[%d]\n", size, Q ? 'q' : 'd', dreg, mreg, index);
2988 UInt dreg = get_neon_d_regno(theInstr);
3088 dreg, regType, nreg, regType, mreg);
3149 8 << size, reg_t, dreg, reg_t, nreg, reg_t, mreg);
3260 8 << size, reg_t, dreg, reg_t, nreg, reg_t, mreg);
3275 reg_t, dreg, reg_t, nreg, reg_t, mreg);
3289 reg_t, dreg, reg_t, nreg, reg_t, mreg);
3304 reg_t, dreg, reg_t, nreg, reg_t, mreg);
3309 DIP("vmov %c%d, %c%d\n", reg_t, dreg, reg_t, mreg);
3323 reg_t, dreg, reg_t, nreg, reg_t, mreg);
3338 DIP("veor %c%u, %c%u, %c%u\n", Q ? 'q' : 'd', dreg,
3345 assign(reg_d, getQReg(dreg));
3356 assign(reg_d, getDRegI64(dreg));
3366 Q ? 'q' : 'd', dreg,
3373 assign(reg_d, getQReg(dreg));
3383 assign(reg_d, getDRegI64(dreg));
3393 Q ? 'q' : 'd', dreg,
3400 assign(reg_d, getQReg(dreg));
3410 assign(reg_d, getDRegI64(dreg));
3420 Q ? 'q' : 'd', dreg,
3501 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
3561 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
3589 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
3602 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
3664 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, Q ? 'q' : 'd',
3790 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, Q ? 'q' : 'd',
3938 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, Q ? 'q' : 'd',
4105 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, Q ? 'q' : 'd',
4134 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
4159 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
4228 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
4286 assign(acc, getQReg(dreg));
4291 assign(acc, getDRegI64(dreg));
4307 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
4325 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4337 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4356 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4366 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4415 Q ? getQReg(dreg) : getDRegI64(dreg),
4419 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
4445 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
4475 8 << size, Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg,
4516 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4552 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4570 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4583 Q ? 'q' : 'd', dreg,
4589 Q ? 'q' : 'd', dreg,
4598 DIP("vpadd.f32 d%u, d%u, d%u\n", dreg, nreg, mreg);
4613 Q ? 'q' : 'd', dreg,
4644 Q ? getQReg(dreg) : getDRegI64(dreg),
4649 dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
4658 Q ? 'q' : 'd', dreg,
4674 Q ? 'q' : 'd', dreg,
4688 Q ? 'q' : 'd', dreg,
4698 Q ? 'q' : 'd', dreg,
4720 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg,
4734 DIP("vmin.f32 %c%u, %c%u, %c%u\n", Q ? 'q' : 'd', dreg,
4738 DIP("vmax.f32 %c%u, %c%u, %c%u\n", Q ? 'q' : 'd', dreg,
4751 DIP("vpmin.f32 d%u, d%u, d%u\n", dreg, nreg, mreg);
4754 DIP("vpmax.f32 d%u, d%u, d%u\n", dreg, nreg, mreg);
4767 DIP("vrecps.f32 %c%u, %c%u, %c%u\n", Q ? 'q' : 'd', dreg,
4776 DIP("vrsqrts.f32 %c%u, %c%u, %c%u\n", Q ? 'q' : 'd', dreg,
4785 putQReg(dreg, mkexpr(res), condT);
4787 putDRegI64(dreg, mkexpr(res), condT);
4803 UInt dreg = get_neon_d_regno(theInstr);
4811 if (dreg & 1)
4813 dreg >>= 1;
4844 putQReg(dreg, binop(op, mkexpr(arg_n), mkexpr(arg_m)),
4847 (A & 1) ? 'w' : 'l', U ? 'u' : 's', 8 << size, dreg,
4896 putDRegI64(dreg, unop(cvt, binop(sh, mkexpr(res), mkU8(8 << size))),
4898 DIP("v%saddhn.i%u d%u, q%u, q%u\n", U ? "r" : "", 16 << size, dreg,
4906 if (dreg & 1)
4908 dreg >>= 1;
4952 getQReg(dreg)));
4953 putQReg(dreg, mkexpr(res), condT);
4954 DIP("vabal.%c%u q%u, d%u, d%u\n", U ? 'u' : 's', 8 << size, dreg,
5006 putDRegI64(dreg, unop(cvt, binop(sh, mkexpr(res), mkU8(8 << size))),
5008 DIP("v%ssubhn.i%u d%u, q%u, q%u\n", U ? "r" : "", 16 << size, dreg,
5016 if (dreg & 1)
5018 dreg >>= 1;
5058 putQReg(dreg, mkexpr(res), condT);
5059 DIP("vabdl.%c%u q%u, d%u, d%u\n", U ? 'u' : 's', 8 << size, dreg,
5065 if (dreg & 1)
5067 dreg >>= 1;
5089 putQReg(dreg, binop(op2, getQReg(dreg), mkexpr(res)), condT);
5091 8 << size, dreg, nreg, mreg);
5098 if (dreg & 1)
5100 dreg >>= 1;
5129 assign(tmp, binop(op2, getQReg(dreg), mkexpr(res)));
5130 setFlag_QC(mkexpr(tmp), binop(add, getQReg(dreg), mkexpr(res)),
5138 putQReg(dreg, binop(add, getQReg(dreg), mkexpr(res)), condT);
5139 DIP("vqdml%cl.s%u q%u, d%u, d%u\n", P ? 's' : 'a', 8 << size, dreg,
5145 if (dreg & 1)
5147 dreg >>= 1;
5164 putQReg(dreg, binop(op, getDRegI64(nreg),
5167 8 << size, dreg, nreg, mreg);
5173 if (dreg & 1)
5175 dreg >>= 1;
5197 putQReg(dreg, binop(op, getDRegI64(nreg), getDRegI64(mreg)),
5206 DIP("vqdmull.s%u q%u, d%u, d%u\n", 8 << size, dreg, nreg, mreg);
5220 UInt dreg = get_neon_d_regno(theInstr & ~(1 << 6));
5236 if ((dreg & 1) || (nreg & 1))
5238 dreg >>= 1;
5326 putQReg(dreg, binop(op2, getQReg(dreg), mkexpr(res)),
5329 putDRegI64(dreg, binop(op2, getDRegI64(dreg), mkexpr(res)),
5333 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, mreg, index);
5341 if (dreg & 1)
5343 dreg >>= 1;
5387 putQReg(dreg, binop(op2, getQReg(dreg), mkexpr(res)), condT);
5390 8 << size, dreg, nreg, mreg, index);
5400 if (dreg & 1)
5402 dreg >>= 1;
5455 assign(tmp, binop(op2, getQReg(dreg), mkexpr(res)));
5461 setFlag_QC(mkexpr(tmp), binop(add, getQReg(dreg), mkexpr(res)),
5464 putQReg(dreg, binop(add, getQReg(dreg), mkexpr(res)), condT);
5466 dreg, nreg, mreg, index);
5475 if ((dreg & 1) || (nreg & 1))
5477 dreg >>= 1;
5544 putQReg(dreg, mkexpr(res), condT);
5546 putDRegI64(dreg, mkexpr(res), condT);
5547 DIP("vmul.i%u %c%u, %c%u, d%u[%u]\n", 8 << size, Q ? 'q' : 'd', dreg,
5556 if (dreg & 1)
5558 dreg >>= 1;
5590 putQReg(dreg, mkexpr(res), condT);
5591 DIP("vmull.%c%u q%u, d%u, d%u[%u]\n", U ? 'u' : 's', 8 << size, dreg,
5601 if (dreg & 1)
5603 dreg >>= 1;
5648 putQReg(dreg, binop(op, mkexpr(arg_n), mkexpr(arg_m)),
5657 DIP("vqdmull.s%u q%u, d%u, d%u[%u]\n", 8 << size, dreg, nreg, mreg,
5668 if ((dreg & 1) || (nreg & 1))
5670 dreg >>= 1;
5753 putQReg(dreg, mkexpr(res), condT);
5755 putDRegI64(dreg, mkexpr(res), condT);
5757 8 << size, Q ? 'q' : 'd', dreg,
5768 if ((dreg & 1) || (nreg & 1))
5770 dreg >>= 1;
5853 putQReg(dreg, mkexpr(res), condT);
5855 putDRegI64(dreg, mkexpr(res), condT);
5857 8 << size, Q ? 'q' : 'd', dreg,
5880 UInt dreg = get_neon_d_regno(theInstr);
6000 putQReg(dreg, binop(add, mkexpr(res), getQReg(dreg)),
6003 putDRegI64(dreg, binop(add, mkexpr(res), getDRegI64(dreg)),
6008 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6011 putQReg(dreg, mkexpr(res), condT);
6013 putDRegI64(dreg, mkexpr(res), condT);
6016 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6077 putQReg(dreg, binop(add, mkexpr(res), getQReg(dreg)),
6080 putDRegI64(dreg, binop(add, mkexpr(res), getDRegI64(dreg)),
6084 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6087 putQReg(dreg, mkexpr(res), condT);
6089 putDRegI64(dreg, mkexpr(res), condT);
6092 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6120 getQReg(dreg),
6126 putQReg(dreg, mkexpr(res), condT);
6132 getDRegI64(dreg),
6138 putDRegI64(dreg, mkexpr(res), condT);
6141 8 << size, Q ? 'q' : 'd', dreg,
6169 getQReg(dreg),
6175 putQReg(dreg, mkexpr(res), condT);
6181 getDRegI64(dreg),
6187 putDRegI64(dreg, mkexpr(res), condT);
6190 8 << size, Q ? 'q' : 'd', dreg,
6211 putQReg(dreg, mkexpr(res), condT);
6213 putDRegI64(dreg, mkexpr(res), condT);
6216 8 << size, Q ? 'q' : 'd', dreg,
6249 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6273 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6300 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, shift_imm);
6319 putQReg(dreg, mkexpr(res), condT);
6321 putDRegI64(dreg, mkexpr(res), condT);
6328 dreg = ((theInstr >> 18) & 0x10) | ((theInstr >> 12) & 0xF);
6359 putDRegI64(dreg, mkexpr(res), condT);
6360 DIP("vshrn.i%u d%u, q%u, #%u\n", 8 << size, dreg, mreg,
6408 putDRegI64(dreg, mkexpr(res), condT);
6410 DIP("vmov%u d%u, q%u, #%u\n", 8 << size, dreg, mreg,
6413 DIP("vrshrn.i%u d%u, q%u, #%u\n", 8 << size, dreg, mreg,
6422 dreg = ((theInstr >> 18) & 0x10) | ((theInstr >> 12) & 0xF);
6449 U ? 'u' : 's', 8 << size, dreg, mreg, shift_imm);
6472 8 << size, dreg, mreg, shift_imm);
6511 putDRegI64(dreg, unop(cvt, mkexpr(res)), condT);
6518 if (dreg & 1)
6520 dreg >>= 1;
6542 putQReg(dreg, mkexpr(res), condT);
6545 dreg, mreg);
6548 dreg, mreg, shift_imm);
6561 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg,
6570 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg,
6576 putQReg(dreg, binop(op, getQReg(mreg),
6579 putDRegI64(dreg, binop(op, getDRegI64(mreg),
6599 UInt dreg = get_neon_d_regno(theInstr);
6637 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
6658 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
6677 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
6706 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
6723 DIP("vcls.s%u %c%u, %c%u\n", 8 << size, Q ? 'q' : 'd', dreg,
6738 DIP("vclz.i%u %c%u, %c%u\n", 8 << size, Q ? 'q' : 'd', dreg,
6745 DIP("vcnt.8 %c%u, %c%u\n", Q ? 'q' : 'd', dreg, Q ? 'q' : 'd',
6754 DIP("vmvn %c%u, %c%u\n", Q ? 'q' : 'd', dreg, Q ? 'q' : 'd',
6803 assign(arg_d, getQReg(dreg));
6806 assign(arg_d, getDRegI64(dreg));
6811 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
6874 DIP("vqabs.s%u %c%u, %c%u\n", 8 << size, Q ? 'q' : 'd', dreg,
6910 DIP("vqneg.s%u %c%u, %c%u\n", 8 << size, Q ? 'q' : 'd', dreg,
6918 putQReg(dreg, mkexpr(res), condT);
6920 putDRegI64(dreg, mkexpr(res), condT);
6960 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
6991 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7022 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7053 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7083 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7105 F ? 'f' : 's', 8 << size, Q ? 'q' : 'd', dreg,
7136 F ? 'f' : 's', 8 << size, Q ? 'q' : 'd', dreg,
7144 putQReg(dreg, mkexpr(res), condT);
7146 putDRegI64(dreg, mkexpr(res), condT);
7155 putQReg(mreg, getQReg(dreg), condT);
7156 putQReg(dreg, mkexpr(arg_m), condT);
7160 putDRegI64(mreg, getDRegI64(dreg), condT);
7161 putDRegI64(dreg, mkexpr(arg_m), condT);
7164 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7176 assign(arg_d, getQReg(dreg));
7183 assign(arg_d, getDRegI64(dreg));
7227 putQReg(dreg, mkexpr(res1), condT);
7230 putDRegI64(dreg, mkexpr(res1), condT);
7234 8 << size, Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7248 assign(arg_d, getQReg(dreg));
7255 assign(arg_d, getDRegI64(dreg));
7278 putQReg(dreg, mkexpr(res1), condT);
7281 putDRegI64(dreg, mkexpr(res1), condT);
7285 8 << size, Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7299 assign(arg_d, getQReg(dreg));
7306 assign(arg_d, getDRegI64(dreg));
7329 putQReg(dreg, mkexpr(res1), condT);
7332 putDRegI64(dreg, mkexpr(res1), condT);
7336 8 << size, Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7349 putDRegI64(dreg, unop(op, getQReg(mreg)), condT);
7350 DIP("vmovn.i%u d%u, q%u\n", 16 << size, dreg, mreg);
7356 dreg = ((theInstr >> 18) & 0x10) | ((theInstr >> 12) & 0xF);
7379 DIP("vqmovun.s%u d%u, q%u\n", 16 << size, dreg, mreg);
7389 DIP("vqmovn.s%u d%u, q%u\n", 16 << size, dreg, mreg);
7399 DIP("vqmovn.u%u d%u, q%u\n", 16 << size, dreg, mreg);
7411 putDRegI64(dreg, mkexpr(res), condT);
7419 if (dreg & 1)
7421 dreg >>= 1;
7433 putQReg(dreg, mkexpr(res), condT);
7434 DIP("vshll.i%u q%u, d%u, #%u\n", 8 << size, dreg, mreg, 8 << size);
7443 if (dreg & 1)
7445 dreg >>= 1;
7446 putQReg(dreg, unop(Iop_F16toF32x4, getDRegI64(mreg)),
7448 DIP("vcvt.f32.f16 q%u, d%u\n", dreg, mreg);
7453 putDRegI64(dreg, unop(Iop_F32toF16x4, getQReg(mreg)),
7455 DIP("vcvt.f16.f32 d%u, q%u\n", dreg, mreg);
7472 putQReg(dreg, unop(op, getQReg(mreg)), condT);
7473 DIP("vrecpe.%c32 q%u, q%u\n", F ? 'f' : 'u', dreg, mreg);
7476 putDRegI64(dreg, unop(op, getDRegI64(mreg)), condT);
7477 DIP("vrecpe.%c32 d%u, d%u\n", F ? 'f' : 'u', dreg, mreg);
7494 putQReg(dreg, unop(op, getQReg(mreg)), condT);
7495 DIP("vrsqrte.%c32 q%u, q%u\n", F ? 'f' : 'u', dreg, mreg);
7497 putDRegI64(dreg, unop(op, getDRegI64(mreg)), condT);
7498 DIP("vrsqrte.%c32 d%u, d%u\n", F ? 'f' : 'u', dreg, mreg);
7510 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7515 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7520 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7525 Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg);
7531 putQReg(dreg, unop(op, getQReg(mreg)), condT);
7533 putDRegI64(dreg, unop(op, getDRegI64(mreg)), condT);
7612 const char *instr, UInt Q, UInt dreg)
7616 ppNeonImmType(cmode, op), Q ? 'q' : 'd', dreg);
7625 UInt dreg = get_neon_d_regno(theInstr);
7702 putQReg(dreg, imm_val, condT);
7704 putDRegI64(dreg, imm_val, condT);
7706 DIPimm(imm_raw_pp, cmode, op_bit, "vmov", Q, dreg);
7713 putQReg(dreg, unop(Iop_NotV128, imm_val), condT);
7715 putDRegI64(dreg, unop(Iop_Not64, imm_val), condT);
7717 DIPimm(imm_raw_pp, cmode, op_bit, "vmvn", Q, dreg);
7722 assign(tmp_var, getQReg(dreg));
7725 assign(tmp_var, getDRegI64(dreg));
7733 DIPimm(imm_raw_pp, cmode, op_bit, "vorr", Q, dreg);
7741 DIPimm(imm_raw_pp, cmode, op_bit, "vbic", Q, dreg);
7746 putQReg(dreg, expr, condT);
7748 putDRegI64(dreg, expr, condT);