#include typedef unsigned long int uL; typedef struct{uL q; uL r;} res; typedef long long v2di __attribute__ ((__vector_size__ (16))); int main(){ v2di a, b; v2di x = __builtin_ia32_pclmulqdq128(a, b, 0); return 0;} /* clang mp.c -mpclmul -g; gdb a.out instruction at 0x100000f63 Below are bytes 0x100000f6x beginning with high addr. 0f660000 0000b800 c1443a0f 66d04d28 Dump of assembler code for function main: 0x0000000100000f50 : push %rbp 0x0000000100000f51 : mov %rsp,%rbp 0x0000000100000f54 : movl $0x0,-0x4(%rbp) 0x0000000100000f5b : movaps -0x20(%rbp),%xmm0 0x0000000100000f5f : movaps -0x30(%rbp),%xmm1 0x0000000100000f63 : data16 0x0000000100000f64 : (bad) 0x0000000100000f67 : roll $0xb8,(%rax) 0x0000000100000f6a : add %al,(%rax) 0x0000000100000f6c : add %al,(%rax) 0x0000000100000f6e : movdqa %xmm0,-0x40(%rbp) 0x0000000100000f73 : pop %rbp 0x0000000100000f74 : retq */