Intel® Advanced Vector Extensions

I210 driver delevopment (DOS)


I currently try to adapt firmware to new hardware. And have problems to get the I210 ethernet controler fetching DMA packets.

Old system: AMD Geode SC1200 Processor + Intel 82551
  - Firmware is a Win32 application using DOS + DOSExtender(DPMI)
  - The Intel 82551 Controller is directly controlled by firmware (NO DOS TCP/IP SOCKET)

Switching to protected mode clarification


I'm trying to understand a line in the Intel Architecture manual. It's a description of a possible failure situation when switching to protected mode.

Section 9.9.1 gives a recommended procedure for switching to protected mode. Step 3 is the mode switch, and step 4 is to immediately make a far transfer to initialize CS and cause serialization. The final paragraph says failures can occur if there are instructions between steps 3 and 4.

No explanation of comparison codes for integer vector compare instructions

In the ISE document 319433-022, instructions such as VPCMPD refer to an imm8 operand as a comparison predicate.  However, there is no explanation of the values of the predicate.

The Operation section of the instruction doc does indicate the 8 values of the low 3 bits.  But I only noticed this by chance.  It would be nice to have something in the Description section to refer the reader to the details.  Actually, why not use a similar language to that for VCMPPS, etc.

Wrong memory size for VGATHERQPS (?)

My version of the document, 319433-022, page 350 shows

EVEX.128.66.0F38.W0 93 /vsib
VGATHERQPS xmm1 {k1}, vm64x

I think this should be vm32x, not vm64x, since the operands are single-precision floats.

Similarly for the other two encodings of this instruction.

Please check other gather/scatter instructions that they are correct also.


What is syntax for broadcast decorator?

The ISE doc only describes the decorator syntax with the single example {1to16} (document 319433-022 page 7).

I would assume that generally you write {1ton} where n = the full vector size / the single element size.  But it would be nice to specify this exactly.

However, GNU `as` will not accept {1to4] or smaller.  Furthermore, it does not accept a broadcast decorator with a 128- or 256-bit vector size.  If I use .byte to assemble 128- and 256-bit instructions, the disassembler shows the {1to8} or {1to16} decorator regardless of VL.  Example:

IRET Pseudo-code Bug


I believe that there is a documentation bug in the pseudo-code for the IRET instruction in the current edition of Volume 2A of the Architectures Software Developers' Manual.

The case we're looking at is using IRET to switch from Ring-0 to Ring-3.

The prose for protected mode states:

Encodings for instructions with {sae} are unclear in the doc

Chapter 4.6 indicates that EVEX.L'L is encoded for the vector length, and that {sae} is supported for all vector lengths.

However, the various instruction pages, such as VCMPPD, only show {sae} for 512-bit vectors.  Furthermore, the E2 #UD equations indicate that EVEX.L'L must be 10b (VL=512).

Processor Trace decoding support library for Atom

Dear Intel guru,

Could I ask will libipt on github support decoding small-core (Atom) processor trace packets (pt pkt)?
Or is already supported in other commercial  product like PAL (Platform Analysis Library)?

I found that the Intel SDM documented the ia-core pt pkt format and atom processor (Cherry Trail) use another packet format documented in real-time-instruction-trace-atom-reference.pdf.

If I am wrong about there are two pkt format among ia and small core, please correct me.



Thank you!

订阅 Intel® Advanced Vector Extensions