@@ -224,6 +224,9 @@ bool emitter::IsDstDstSrcAVXInstruction(instruction ins)
224
224
case INS_vinsertf128:
225
225
case INS_vinserti128:
226
226
case INS_vperm2i128:
227
+ case INS_vperm2f128:
228
+ case INS_vpermilpsvar:
229
+ case INS_vpermilpdvar:
227
230
case INS_vpsrlvd:
228
231
case INS_vpsrlvq:
229
232
case INS_vpsravd:
@@ -324,6 +327,7 @@ bool emitter::TakesVexPrefix(instruction ins)
324
327
case INS_prefetcht2:
325
328
case INS_sfence:
326
329
case INS_vzeroupper:
330
+ case INS_vzeroall:
327
331
return false;
328
332
default:
329
333
break;
@@ -2556,7 +2560,8 @@ void emitter::emitIns(instruction ins)
2556
2560
ins == INS_sahf || ins == INS_stosb || ins == INS_stosd || ins == INS_stosp
2557
2561
#ifndef LEGACY_BACKEND
2558
2562
// These instructions take zero operands
2559
- || ins == INS_vzeroupper || ins == INS_lfence || ins == INS_mfence || ins == INS_sfence
2563
+ || ins == INS_vzeroupper || ins == INS_vzeroall || ins == INS_lfence || ins == INS_mfence ||
2564
+ ins == INS_sfence
2560
2565
#endif
2561
2566
);
2562
2567
@@ -2585,7 +2590,7 @@ void emitter::emitIns(instruction ins)
2585
2590
2586
2591
#ifndef LEGACY_BACKEND
2587
2592
// vzeroupper includes its 2-byte VEX prefix in its MR code.
2588
- assert((ins != INS_vzeroupper) || (sz == 3));
2593
+ assert((ins != INS_vzeroupper) || (ins != INS_vzeroall) || ( sz == 3));
2589
2594
#endif
2590
2595
2591
2596
insFormat fmt = IF_NONE;
@@ -4299,9 +4304,9 @@ void emitter::emitIns_R_R_C(
4299
4304
}
4300
4305
4301
4306
/*****************************************************************************
4302
- *
4303
- * Add an instruction with three register operands.
4304
- */
4307
+ *
4308
+ * Add an instruction with three register operands.
4309
+ */
4305
4310
4306
4311
void emitter::emitIns_R_R_R(instruction ins, emitAttr attr, regNumber targetReg, regNumber reg1, regNumber reg2)
4307
4312
{
@@ -4423,16 +4428,16 @@ void emitter::emitIns_R_R_C_I(
4423
4428
}
4424
4429
4425
4430
/**********************************************************************************
4426
- * emitIns_R_R_R_I: Add an instruction with three register operands and an immediate.
4427
- *
4428
- * Arguments:
4429
- * ins - the instruction to add
4430
- * attr - the emitter attribute for instruction
4431
- * targetReg - the target (destination) register
4432
- * reg1 - the first source register
4433
- * reg2 - the second source register
4434
- * ival - the immediate value
4435
- */
4431
+ * emitIns_R_R_R_I: Add an instruction with three register operands and an immediate.
4432
+ *
4433
+ * Arguments:
4434
+ * ins - the instruction to add
4435
+ * attr - the emitter attribute for instruction
4436
+ * targetReg - the target (destination) register
4437
+ * reg1 - the first source register
4438
+ * reg2 - the second source register
4439
+ * ival - the immediate value
4440
+ */
4436
4441
4437
4442
void emitter::emitIns_R_R_R_I(
4438
4443
instruction ins, emitAttr attr, regNumber targetReg, regNumber reg1, regNumber reg2, int ival)
0 commit comments