Intel ISA Extensions

pin-2.14-71313 and WinSock library

I have a problem trying to start my pintool built with WinSock library (ws2_32.lib) - it immediately exits with message "Failure to open DLL file WS2_32.dll".
I've prepared a simple pintool to illistrate the problem:

#include "pin.H"

namespace WINDOWS
#include <Ws2tcpip.h>
void *p = WSAStartup;

int main(int argc, char *argv[])
if (PIN_Init(argc, argv)) return 1;
return 0;

Intel 64 documentation bug

This is for Intel 64 and IA-32 Architectures Software Developer’s Manual, Order Number: 325462-053
US January 2015. Page Vol. 1 5-29.

MOVZX (64-bits) Move doubleword to quadword, zero-extension

In fact 32 to 64 bit zero extension isn't supported as per Vol. 2A 3-583. It is only spec'd for r/m8 and r/m16.
There is a small chance that I'm misinterpreting that but then so is NASM which disallows this.
Somebody's wrong and so I'd like an official ruling.

How to work with AVX on windows


I am interested in AVX instructions set using in my application for speed up.But i am new to AVX.

How can i know whether my system processor is able to support AVX or not?

My System Configurations as

OS; Windows 7 with 64-bit

CPU: Inter(R) Xeon(R) CPU  W3505 @2.53GHz.

Anybody can help me..

Thanks in Advance.


Is profiling information running on SDE accurate and trustable?


         I am trying to look at AVX 512 performance, currently, I wrote a simple function for evaluation as below, I configured the optimization and enabled AVX-512 etc in the project properties setting(vs2013 integrated with Intel-parallel-studio ), and I see the AVX-512 instructions are used from the asm files generated by compiler.

void complexVectorConjMpy(float *inputPtr1, float *inputPtr2, float *outputPtr, int numData)
    int idxData;
    float data1Re, data1Im, data2Re, data2Im;

Measuring Core Voltage

I am using an Atom N2600 processor. The intel software developer's manual says that a p-state can be requested by writing to MSR 0x199 and the locked p-state can be seen in MSR 0x198. The way to compute Core Voltage is given as MSR_PERF_STATUS[47:32] * (float) 1/(2^13).

The data that I see in MSR_PERF_STATUS (MSR 0x198) is 62d104306001045. Bits [47:32] is always 1043 irrespective of the value that I set in MSR 0x199.

When I use the formula: 0x1043 = 4163. Voltage = 4163/(2^13)=0.5 V, which is a really low voltage for the processor to operate stably at.

why does _mm_mulhrs_epi16() always do biased rounding to positive infinity?

Does anyone know why the pmulhrsw instruction or

_mm_mulhrs_epi16(x) := RoundDown((x * y + 16384) / 32768)

always rounds towards positive infinity? To me, this is terribly biased for negative numbers, because then a sequence like -0.6, 0.6, -0.6, 0.6, ... won't add up to 0 on average.

Is this behavior intentional or unintentional? If it's intentional, what could be the use? Is there an easy way to make it less biased?

Lucky for me, I can just change the order of my operations to get a less biased result (my function is a signed geometric mean):

S’abonner à Intel ISA Extensions