Support is4 bytes without meaningful information in the bottom bits.
This is equivalent to /is4=0 for the assembler, but makes the bottom
bits don't care for the disassembler.
* operand 0..3.
* \171 - placement of DREX suffix in the absence of an EA
* \172\ab - the register number from operand a in bits 7..4, with
- * the 4-bit immediate from operand b in bits 0..3.
+ * the 4-bit immediate from operand b in bits 3..0.
* \173\xab - the register number from operand a in bits 7..4, with
- * the value b in bits 0..3.
+ * the value b in bits 3..0.
+ * \174\a - the register number from operand a in bits 7..4, and
+ * an arbitrary value in bits 3..0 (assembled as zero.)
* \2ab - a ModRM, calculated on EA in operand a, with the spare
* field equal to digit b.
* \250..\253 - same as \150..\153, except warn if the 64-bit operand
break;
case 0172:
case 0173:
+ case 0174:
codes++;
length++;
break;
offset++;
break;
+ case 0174:
+ c = *codes++;
+ opx = &ins->oprs[c];
+ bytes[0] = nasm_regvals[opx->basereg] << 4;
+ out(offset, segment, bytes, OUT_RAWDATA, 1, NO_SEG, NO_SEG);
+ offset++;
+ break;
+
case 0250:
case 0251:
case 0252:
}
break;
+ case 0174:
+ {
+ uint8_t ximm = *data++;
+ c = *r++;
+
+ ins->oprs[c].basereg = ximm >> 4;
+ ins->oprs[c].segment |= SEG_RMREG;
+ }
+ break;
+
case4(0200):
case4(0204):
case4(0210):
}
$prefix_ok = 0;
} elsif ($op eq '/is4') {
- if (!defined($oppos{'i'} || !defined($oppos{'s'}))) {
- die "$0: $line: $op without 'i' and 's' operands\n";
+ if (!defined($oppos{'s'})) {
+ die "$0: $line: $op without 's' operand\n";
+ }
+ if (defined($oppos{'i'})) {
+ push(@codes, 0172, ($oppos{'s'} << 3)+$oppos{'i'});
+ } else {
+ push(@codes, 0174, $oppos{'s'});
}
- push(@codes, 0172, ($oppos{'s'} << 3)+$oppos{'i'});
$prefix_ok = 0;
} elsif ($op =~ /^\/is4\=([0-9]+)$/) {
my $imm = $1;
bits 64
+ vblendvpd xmm2,xmm1,xmm0,xmm0
+ vblendvpd xmm2,xmm1,xmm0
+ vblendvpd ymm2,ymm1,ymm0,ymm0
+ vblendvpd ymm2,ymm1,ymm0
+
+ vcvtsi2sd xmm9,xmm10,ecx
+ vcvtsi2sd xmm9,xmm10,rcx
+ vcvtsi2sd xmm9,xmm10,dword [rdi]
+ vcvtsi2sd xmm9,xmm10,qword [rdi]
+
vpermil2ps xmm0,xmm1,[rdi],xmm3,0
vpermil2ps xmm0,xmm1,xmm2,[rdi],1
vpermil2ps ymm0,ymm1,ymm2,ymm3,2