Implementation notes: x86, floodyberry, crypto_encrypt/4hfe

Computer: floodyberry
Architecture: x86
CPU ID: GenuineIntel-00010676-bfebfbff
SUPERCOP version: 20140505
Operation: crypto_encrypt
Primitive: 4hfe

Compiler output

Implementation: crypto_encrypt/4hfe/ref
Compiler: clang++ -O1 -march=native -m32 -fomit-frame-pointer
HFE-test.cpp: In file included from HFE-test.cpp:18:
HFE-test.cpp: In file included from ./HFE.h:6:
HFE-test.cpp: ./tower.h:364:9: error: argument to '__builtin_ia32_palignr128' must be a constant integer
HFE-test.cpp: return _mm_alignr_epi8(a1, a0, i*2);
HFE-test.cpp: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
HFE-test.cpp: /usr/bin/../lib/clang/3.4/include/tmmintrin.h:72:12: note: expanded from macro '_mm_alignr_epi8'
HFE-test.cpp: (__m128i)__builtin_ia32_palignr128((__v16qi)__a, (__v16qi)__b, (n)); })
HFE-test.cpp: ^ ~~~
HFE-test.cpp: In file included from HFE-test.cpp:18:
HFE-test.cpp: In file included from ./HFE.h:6:
HFE-test.cpp: ./tower.h:364:9: error: cannot initialize return object of type '__m128i' with an rvalue of type 'void'
HFE-test.cpp: return _mm_alignr_epi8(a1, a0, i*2);
HFE-test.cpp: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
HFE-test.cpp: /usr/bin/../lib/clang/3.4/include/tmmintrin.h:69:34: note: expanded from macro '_mm_alignr_epi8'
HFE-test.cpp: #define _mm_alignr_epi8(a, b, n) __extension__ ({ \
HFE-test.cpp: ^~~~~~~~~~~~~~~~~~
HFE-test.cpp: 2 errors generated.

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
clang++ -O1 -march=native -m32 -fomit-frame-pointer ref
clang++ -O3 -march=native -m32 -fomit-frame-pointer ref

Compiler output

Implementation: crypto_encrypt/4hfe/ref
Compiler: g++ -m32 -O2 -fomit-frame-pointer
HFE-test.cpp: In file included from gfv.h:3:0,
HFE-test.cpp: from tower.h:5,
HFE-test.cpp: from HFE.h:6,
HFE-test.cpp: from HFE-test.cpp:18:
HFE-test.cpp: /usr/lib/gcc/x86_64-linux-gnu/4.6/include/emmintrin.h:32:3: error: #error "SSE2 instruction set not enabled"
HFE-test.cpp: In file included from tower.h:5:0,
HFE-test.cpp: from HFE.h:6,
HFE-test.cpp: from HFE-test.cpp:18:
HFE-test.cpp: gfv.h:7:2: error: '__m128i' does not name a type
HFE-test.cpp: gfv.h:12:22: error: '__m128i' does not name a type
HFE-test.cpp: gfv.h:12:31: error: ISO C++ forbids declaration of 'a' with no type [-fpermissive]
HFE-test.cpp: gfv.h: In copy constructor 'gfvgt;::gfv(const gfvgt;&)':
HFE-test.cpp: gfv.h:11:33: error: class 'gfvgt;' does not have any field named 'v'
HFE-test.cpp: gfv.h: In constructor 'gfvgt;::gfv(const int&)':
HFE-test.cpp: gfv.h:12:34: error: class 'gfvgt;' does not have any field named 'v'
HFE-test.cpp: gfv.h: In constructor 'gfvgt;::gfv(const gfgt;&)':
HFE-test.cpp: gfv.h:13:32: error: class 'gfvgt;' does not have any field named 'v'
HFE-test.cpp: gfv.h: In member function 'gfvgt;& gfvgt;::operator=(const gfvgt;&)':
HFE-test.cpp: gfv.h:14:45: error: 'v' was not declared in this scope
HFE-test.cpp: gfv.h: In member function 'const gfvgt; gfvgt;::operator-() const':
HFE-test.cpp: gfv.h:24:80: error: there are no arguments to '_mm_setzero_si128' that depend on a template parameter, so a declaration of '_mm_setzero_si128' must be available [-fpermissive]
HFE-test.cpp: gfv.h:24:80: note: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
HFE-test.cpp: gfv.h: In member function 'const gfgt; gfvgt;::operator[](unsigned int) const':
HFE-test.cpp: gfv.h:26:69: error: 'v' was not declared in this scope
HFE-test.cpp: gfv.h: In function 'const gfvgt; reducev(const gfvgt;&)':
HFE-test.cpp: ...

Number of similar (compiler,implementation) pairs: 2, namely:
CompilerImplementations
g++ -m32 -O2 -fomit-frame-pointer ref
g++ -m32 -O3 -fomit-frame-pointer ref

Compiler output

Implementation: crypto_encrypt/4hfe/ref
Compiler: g++ -m32 -march=native -mtune=native -O2 -fomit-frame-pointer
HFE-test.cpp: In file included from HFE-test.cpp:19:0:
HFE-test.cpp: conversion.h: In function 'void convert_to_31(uint8*, uint64) [with unsigned int num_gf31 = 12u, uint8 = unsigned char, uint64 = long long unsigned int]':
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h: In function 'void convert_to_31(uint8*, uint64) [with unsigned int num_gf31 = 13u, uint8 = unsigned char, uint64 = long long unsigned int]':
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h: In function 'int shortplaintext(unsigned char*, long long unsigned int*, const unsigned char*, long long unsigned int, const unsigned char*, long long unsigned int)':
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
g++ -m32 -march=native -mtune=native -O2 -fomit-frame-pointer ref

Compiler output

Implementation: crypto_encrypt/4hfe/ref
Compiler: g++ -m32 -march=native -mtune=native -O3 -fomit-frame-pointer
HFE-test.cpp: In file included from HFE-test.cpp:19:0:
HFE-test.cpp: conversion.h: In function 'int shortciphertext(unsigned char*, long long unsigned int*, const unsigned char*, long long unsigned int, const unsigned char*, long long unsigned int)':
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: conversion.h:48:3: error: unknown register name 'r8' in 'asm'
HFE-test.cpp: ...

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
g++ -m32 -march=native -mtune=native -O3 -fomit-frame-pointer ref

Compiler output

Implementation: crypto_encrypt/4hfe/ref
Compiler: icpc -m32 -O1 -static -xHost -fomit-frame-pointer
HFE-test.cpp: conversion.h(48): catastrophic error: unknown register name rdi in asm statement
HFE-test.cpp:
HFE-test.cpp: compilation aborted for HFE-test.cpp (code 4)

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
icpc -m32 -O1 -static -xHost -fomit-frame-pointer ref

Compiler output

Implementation: crypto_encrypt/4hfe/ref
Compiler: icpc -m32 -O3 -static -xHost -fomit-frame-pointer
HFE-test.cpp: HFE-test.cpp(70) (col. 2): catastrophic error: unknown register name rdi in asm statement
HFE-test.cpp:
HFE-test.cpp: compilation aborted for HFE-test.cpp (code 4)

Number of similar (compiler,implementation) pairs: 1, namely:
CompilerImplementations
icpc -m32 -O3 -static -xHost -fomit-frame-pointer ref