[fpc-devel] x86ins.dat
Torsten
fckama at freenet.de
Sat Jan 7 15:19:23 CET 2012
Hi,
Am 07.01.2012 15:01, schrieb Sergei Gorelkin:
> 07.01.2012 16:53, tgrundke пишет:
>> Hi,
>>
>> i am working on the AVX-support for the fp-compiler.
>>
>> Some AVX-assembler instructions have 4 operant e.g.
>>
>>
>> VBLENDVPD xmm1, xmm2, xmm3/m128, xmm4
>>
>>
>>
>> INTEL Def.
>>
>> 3.1.1.2 Opcode Column in the Instruction Summary Table (Instructions
>> with VEX prefix)
>>
>> /is4: An 8-bit immediate byte is present containing a source register
>> specifier in
>> imm[7:4] and instruction-specific payload in imm[3:0].
>>
>>
>>
>> I need a idea, how can i encode (in file x86ins.dat) the 4th operant.
>>
>> My idea:
>>
>> new flag \77 =>> 4th operand is coded in bit 4-7 and the follow byte
>> define the bits 0-3
>> e.g.
>>
>> [VBLENDVPD]
>> (Ch_All, Ch_None, Ch_None)
>> xmmreg,xmmreg,xmmrm,xmmreg
>> \361\362\372\1\x4B\75\120\77\x00
>> AVX,SANDYBRIDGE
>>
>> \ 361 = prefix 066h for SSE instruction
>> \ 362 = new flag VEX (starting with 0xC5 or 0xC4)
>> \ 372 = new flag VEX-CODE include prefix 0x0F3A
>> \ 75 = VEX-BYTE contains operand no. 2
>> \ 120 = operands 1 and 3 encoded in MODRM-Byte
>> \ 77 = immediate byte (bit 4-7) contains 4th operand
>> \ 00 = immediate byte (bit 0-3) = 0
>>
>>
>> i look forward to comments.
>>
> IMHO, since fpc's x86 assembler is based on NASM, the best way would
> be to stay as close to NASM format as possible.
>
is not simple.
Nasm: VBLENDVPD ymmreg,ymmreg*,ymmrm256,ymmreg [rvms:
vex.nds.256.66.0f3a.w0 4b /r /is4] AVX,SANDYBRIDGE
VADDPS xmmreg,xmmreg*,xmmrm128
[rvm: vex.nds.128.0f 58 /r] AVX,SANDYBRIDGE
fpc VBLENDVPD xmmreg,xmmreg,xmmrm,xmmreg
\361\362\372\1\x4B\75\120\77\x00
VADDPS Xmmreg,xmmreg,xmmrm
\362\370\1\x58\75\120 AVX,SANDYBRIDGE
> Sergei
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>
>
Torsten
More information about the fpc-devel
mailing list