Implementation notes: aarch64, supercoplxc, crypto_core/invhrss701

Computer: supercoplxc
Architecture: aarch64
CPU ID: 410fd034
SUPERCOP version: 20190816
Operation: crypto_core
Primitive: invhrss701
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
95092804896 0 016963 896 784simplergcc_-O3_-fomit-frame-pointer2019082920190816
95116805508 0 018955 896 784simplergcc_-funroll-loops_-O3_-fomit-frame-pointer2019083020190816
98160805492 0 018899 896 784simplergcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019083020190816
107424804864 0 016907 896 784simplergcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019083020190816
127189603900 0 017212 800 792simplerclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019082920190816
132852803888 0 017196 800 792simplerclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019083020190816
132865603888 0 017140 800 792simplerclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019083020190816
132876003888 0 017196 800 792simplerclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019083020190816
132913603888 0 017196 800 792simplerclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019083020190816
191004806508 0 019881 888 784refgcc_-funroll-loops_-O3_-fomit-frame-pointer2019082920190816
193110406456 0 019801 888 784refgcc_-funroll-loops_-fno-schedule-insns_-O3_-fomit-frame-pointer2019082920190816
197943203632 0 015625 888 784refgcc_-O3_-fomit-frame-pointer2019082920190816
200984003564 0 015545 888 784refgcc_-fno-schedule-insns_-O3_-fomit-frame-pointer2019082920190816
2057848011640 0 024950 800 792refclang_-mcpu=native_-mfpu=neon_-O3_-fomit-frame-pointer_-fwrapv_-Qunused-arguments2019082920190816
2108648011740 0 024998 800 792refclang_-O3_-fomit-frame-pointer_-Qunused-arguments2019082920190816
2207928011740 0 025046 800 792refclang_-O3_-fwrapv_-mavx2_-fomit-frame-pointer_-Qunused-arguments2019082920190816
2208448011740 0 025046 800 792refclang_-O3_-fwrapv_-mavx_-maes_-mpclmul_-fomit-frame-pointer_-Qunused-arguments2019082920190816
2208640011740 0 025046 800 792refclang_-O3_-fwrapv_-mavx_-fomit-frame-pointer_-Qunused-arguments2019082920190816
643515202424 0 015208 880 768simplergcc_-funroll-loops_-O2_-fomit-frame-pointer2019083020190816
71685120796 0 011504 880 768simplergcc_-O2_-fomit-frame-pointer2019082920190816
73105680716 0 010822 864 760simplergcc_-funroll-loops_-Os_-fomit-frame-pointer2019083020190816
73107840716 0 010822 864 760simplergcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019083020190816
758588802392 0 015264 880 768simplergcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019083020190816
76946560676 0 010726 864 760simplergcc_-Os_-fomit-frame-pointer2019082920190816
76952240676 0 010726 864 760simplergcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019083020190816
85207280792 0 011448 880 768simplergcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019083020190816
852563202504 0 016648 880 768simplergcc_-funroll-loops_-O_-fomit-frame-pointer2019083020190816
852564802504 0 016648 880 768simplergcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019083020190816
91382880808 0 011720 880 768simplergcc_-O_-fomit-frame-pointer2019083020190816
91395440808 0 011720 880 768simplergcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019083020190816
996807203872 0 016744 880 768refgcc_-funroll-loops_-fno-schedule-insns_-O2_-fomit-frame-pointer2019082920190816
1008004803892 0 016680 880 768refgcc_-funroll-loops_-O2_-fomit-frame-pointer2019082920190816
1089645601044 0 011080 864 760refgcc_-fno-schedule-insns_-Os_-fomit-frame-pointer2019082920190816
1089771201044 0 011080 864 760refgcc_-Os_-fomit-frame-pointer2019082920190816
1125558404048 0 018200 880 768refgcc_-funroll-loops_-O_-fomit-frame-pointer2019082920190816
1125682404048 0 018200 880 768refgcc_-funroll-loops_-fno-schedule-insns_-O_-fomit-frame-pointer2019082920190816
1126900801140 0 011856 880 768refgcc_-O2_-fomit-frame-pointer2019082920190816
1140112801264 0 012192 880 768refgcc_-fno-schedule-insns_-O_-fomit-frame-pointer2019082920190816
1140152001264 0 012192 880 768refgcc_-O_-fomit-frame-pointer2019082920190816
1188467201132 0 011800 880 768refgcc_-fno-schedule-insns_-O2_-fomit-frame-pointer2019082920190816
1200691201136 0 015344 864 760refgcc_-funroll-loops_-Os_-fomit-frame-pointer2019082920190816
1200742401136 0 015344 864 760refgcc_-funroll-loops_-fno-schedule-insns_-Os_-fomit-frame-pointer2019082920190816

Test failure

Implementation: ref
Security model: unknown
Compiler: cc
error 142
Alarm clock

Number of similar (compiler,implementation) pairs: 6, namely:
CompilerImplementations
cc ref
gcc ref
gcc -funroll-loops ref
cc simpler
gcc simpler
gcc -funroll-loops simpler

Compiler output

Implementation: avx2
Security model: unknown
Compiler: cc
poly_s3_inv.S: poly_s3_inv.S: Assembler messages:
poly_s3_inv.S: poly_s3_inv.S:465: Error: unknown pseudo-op: `.att_syntax'
poly_s3_inv.S: poly_s3_inv.S:467: Error: unknown mnemonic `push' -- `push %r12'
poly_s3_inv.S: poly_s3_inv.S:468: Error: unknown mnemonic `push' -- `push %r13'
poly_s3_inv.S: poly_s3_inv.S:469: Error: unknown mnemonic `push' -- `push %r14'
poly_s3_inv.S: poly_s3_inv.S:470: Error: operand 1 must be an integer register -- `mov %rsp,%r8'
poly_s3_inv.S: poly_s3_inv.S:471: Error: unknown mnemonic `andq' -- `andq $-32,%rsp'
poly_s3_inv.S: poly_s3_inv.S:472: Error: unknown mnemonic `subq' -- `subq $768,%rsp'
poly_s3_inv.S: poly_s3_inv.S:473: Error: operand 1 must be an integer register -- `mov $281479271743489,%r9'
poly_s3_inv.S: poly_s3_inv.S:474: Error: operand 1 must be an integer register -- `mov $562958543486978,%rdx'
poly_s3_inv.S: poly_s3_inv.S:475: Error: operand 1 must be an integer register -- `mov $0,%r10'
poly_s3_inv.S: poly_s3_inv.S:476: Error: operand 1 must be an integer register -- `mov $0,%r11'
poly_s3_inv.S: poly_s3_inv.S:477: Error: operand 1 must be an integer register -- `mov 0(%rsi),%rax'
poly_s3_inv.S: poly_s3_inv.S:478: Error: unknown mnemonic `pext' -- `pext %r9,%rax,%rcx'
poly_s3_inv.S: poly_s3_inv.S:479: Error: unknown mnemonic `pext' -- `pext %rdx,%rax,%rax'
poly_s3_inv.S: poly_s3_inv.S:480: Error: unknown mnemonic `or' -- `or %rcx,%r10'
poly_s3_inv.S: poly_s3_inv.S:481: Error: unknown mnemonic `or' -- `or %rax,%r11'
poly_s3_inv.S: poly_s3_inv.S:482: Error: operand 1 must be an integer register -- `mov 8(%rsi),%rax'
poly_s3_inv.S: poly_s3_inv.S:483: Error: unknown mnemonic `pext' -- `pext %r9,%rax,%rcx'
poly_s3_inv.S: poly_s3_inv.S:484: Error: unknown mnemonic `pext' -- `pext %rdx,%rax,%rax'
poly_s3_inv.S: poly_s3_inv.S:485: Error: operand 1 must be a SIMD scalar register -- `shl $4,%rcx'
poly_s3_inv.S: poly_s3_inv.S:486: Error: operand 1 must be a SIMD scalar register -- `shl $4,%rax'
poly_s3_inv.S: poly_s3_inv.S:487: Error: unknown mnemonic `or' -- `or %rcx,%r10'
poly_s3_inv.S: poly_s3_inv.S:488: Error: unknown mnemonic `or' -- `or %rax,%r11'
poly_s3_inv.S: poly_s3_inv.S:489: Error: operand 1 must be an integer register -- `mov 16(%rsi),%rax'
poly_s3_inv.S: ...

Number of similar (compiler,implementation) pairs: 19, namely:
CompilerImplementations
cc avx2
gcc avx2
gcc -O2 -fomit-frame-pointer avx2
gcc -O3 -fomit-frame-pointer avx2
gcc -O -fomit-frame-pointer avx2
gcc -Os -fomit-frame-pointer avx2
gcc -fno-schedule-insns -O2 -fomit-frame-pointer avx2
gcc -fno-schedule-insns -O3 -fomit-frame-pointer avx2
gcc -fno-schedule-insns -O -fomit-frame-pointer avx2
gcc -fno-schedule-insns -Os -fomit-frame-pointer avx2
gcc -funroll-loops avx2
gcc -funroll-loops -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -O -fomit-frame-pointer avx2
gcc -funroll-loops -Os -fomit-frame-pointer avx2
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer avx2
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer avx2
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer avx2
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer avx2

Compiler output

Implementation: avx2
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
poly_s3_inv.S: poly_s3_inv.S:3:8: error: invalid alignment value
poly_s3_inv.S: .align 32
poly_s3_inv.S: ^
poly_s3_inv.S: poly_s3_inv.S:465:1: error: unknown directive
poly_s3_inv.S: .att_syntax prefix
poly_s3_inv.S: ^
poly_s3_inv.S: poly_s3_inv.S:467:6: error: unknown token in expression
poly_s3_inv.S: push %r12
poly_s3_inv.S: ^
poly_s3_inv.S: poly_s3_inv.S:467:6: error: invalid operand
poly_s3_inv.S: push %r12
poly_s3_inv.S: ^
poly_s3_inv.S: poly_s3_inv.S:468:6: error: unknown token in expression
poly_s3_inv.S: push %r13
poly_s3_inv.S: ^
poly_s3_inv.S: poly_s3_inv.S:468:6: error: invalid operand
poly_s3_inv.S: push %r13
poly_s3_inv.S: ^
poly_s3_inv.S: poly_s3_inv.S:469:6: error: unknown token in expression
poly_s3_inv.S: push %r14
poly_s3_inv.S: ^
poly_s3_inv.S: poly_s3_inv.S:469:6: error: invalid operand
poly_s3_inv.S: push %r14
poly_s3_inv.S: ^
poly_s3_inv.S: poly_s3_inv.S:470:5: error: unknown token in expression
poly_s3_inv.S: ...

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments avx2
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments avx2
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments avx2
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments avx2
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments avx2

Compiler output

Implementation: faster
Security model: unknown
Compiler: cc
core.c: core.c:4:10: fatal error: immintrin.h: No such file or directory
core.c: #include <immintrin.h>
core.c: ^~~~~~~~~~~~~
core.c: compilation terminated.

Number of similar (compiler,implementation) pairs: 19, namely:
CompilerImplementations
cc faster
gcc faster
gcc -O2 -fomit-frame-pointer faster
gcc -O3 -fomit-frame-pointer faster
gcc -O -fomit-frame-pointer faster
gcc -Os -fomit-frame-pointer faster
gcc -fno-schedule-insns -O2 -fomit-frame-pointer faster
gcc -fno-schedule-insns -O3 -fomit-frame-pointer faster
gcc -fno-schedule-insns -O -fomit-frame-pointer faster
gcc -fno-schedule-insns -Os -fomit-frame-pointer faster
gcc -funroll-loops faster
gcc -funroll-loops -O2 -fomit-frame-pointer faster
gcc -funroll-loops -O3 -fomit-frame-pointer faster
gcc -funroll-loops -O -fomit-frame-pointer faster
gcc -funroll-loops -Os -fomit-frame-pointer faster
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer faster
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer faster
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer faster
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer faster

Compiler output

Implementation: faster
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
core.c: In file included from core.c:4:
core.c: In file included from /usr/lib/llvm-7/lib/clang/7.0.1/include/immintrin.h:28:
core.c: /usr/lib/llvm-7/lib/clang/7.0.1/include/mmintrin.h:64:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
core.c: return (__m64)__builtin_ia32_vec_init_v2si(__i, 0);
core.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
core.c: /usr/lib/llvm-7/lib/clang/7.0.1/include/mmintrin.h:143:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
core.c: return (__m64)__builtin_ia32_packsswb((__v4hi)__m1, (__v4hi)__m2);
core.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
core.c: /usr/lib/llvm-7/lib/clang/7.0.1/include/mmintrin.h:173:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
core.c: return (__m64)__builtin_ia32_packssdw((__v2si)__m1, (__v2si)__m2);
core.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
core.c: /usr/lib/llvm-7/lib/clang/7.0.1/include/mmintrin.h:203:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
core.c: return (__m64)__builtin_ia32_packuswb((__v4hi)__m1, (__v4hi)__m2);
core.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
core.c: /usr/lib/llvm-7/lib/clang/7.0.1/include/mmintrin.h:230:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
core.c: return (__m64)__builtin_ia32_punpckhbw((__v8qi)__m1, (__v8qi)__m2);
core.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
core.c: /usr/lib/llvm-7/lib/clang/7.0.1/include/mmintrin.h:253:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
core.c: return (__m64)__builtin_ia32_punpckhwd((__v4hi)__m1, (__v4hi)__m2);
core.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
core.c: /usr/lib/llvm-7/lib/clang/7.0.1/include/mmintrin.h:274:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
core.c: return (__m64)__builtin_ia32_punpckhdq((__v2si)__m1, (__v2si)__m2);
core.c: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
core.c: /usr/lib/llvm-7/lib/clang/7.0.1/include/mmintrin.h:301:12: error: invalid conversion between vector type '__m64' (vector of 1 'long long' value) and integer type 'int' of different size
core.c: return (__m64)__builtin_ia32_punpcklbw((__v8qi)__m1, (__v8qi)__m2);
core.c: ...

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments faster
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments faster
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments faster
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments faster
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments faster

Compiler output

Implementation: faster821
Security model: unknown
Compiler: cc
core.s: core.s: Assembler messages:
core.s: core.s:9: Error: unknown mnemonic `pushq' -- `pushq %rbp'
core.s: core.s:12: Error: unknown mnemonic `xorl' -- `xorl %ecx,%ecx'
core.s: core.s:13: Error: unknown mnemonic `vpcmpeqd' -- `vpcmpeqd %ymm7,%ymm7,%ymm7'
core.s: core.s:14: Error: unknown mnemonic `movq' -- `movq %rsp,%rbp'
core.s: core.s:16: Error: unknown mnemonic `pushq' -- `pushq %rbx'
core.s: core.s:18: Error: unknown mnemonic `movq' -- `movq %rdi,%rbx'
core.s: core.s:19: Error: unknown mnemonic `andq' -- `andq $-32,%rsp'
core.s: core.s:20: Error: unknown mnemonic `subq' -- `subq $5760,%rsp'
core.s: core.s:21: Error: unknown mnemonic `movzbl' -- `movzbl 1400(%rsi),%edi'
core.s: core.s:22: Error: unknown mnemonic `vmovdqa' -- `vmovdqa .LC2(%rip),%ymm3'
core.s: core.s:23: Error: unknown mnemonic `vmovdqa' -- `vmovdqa .LC3(%rip),%ymm6'
core.s: core.s:24: Error: unknown mnemonic `vmovdqa' -- `vmovdqa .LC4(%rip),%ymm5'
core.s: core.s:25: Error: unknown mnemonic `notl' -- `notl %edi'
core.s: core.s:26: Error: unknown mnemonic `vmovdqa' -- `vmovdqa .LC5(%rip),%ymm4'
core.s: core.s:27: Error: unknown mnemonic `andl' -- `andl $3,%edi'
core.s: core.s:28: Error: unknown mnemonic `movsbl' -- `movsbl %dil,%eax'
core.s: core.s:29: Error: unknown mnemonic `subl' -- `subl $3,%eax'
core.s: core.s:30: Error: unknown mnemonic `sarl' -- `sarl $5,%eax'
core.s: core.s:31: Error: unknown mnemonic `andl' -- `andl %eax,%edi'
core.s: core.s:32: Error: unknown mnemonic `incl' -- `incl %edi'
core.s: core.s:33: Error: unknown mnemonic `vmovd' -- `vmovd %edi,%xmm8'
core.s: core.s:34: Error: unknown mnemonic `vpbroadcastb' -- `vpbroadcastb %xmm8,%ymm8'
core.s: core.s:38: Error: unknown mnemonic `vpand' -- `vpand 32(%rsi,%rcx,2),%ymm3,%ymm0'
core.s: core.s:39: Error: unknown mnemonic `vpand' -- `vpand (%rsi,%rcx,2),%ymm3,%ymm1'
core.s: ...

Number of similar (compiler,implementation) pairs: 19, namely:
CompilerImplementations
cc faster821
gcc faster821
gcc -O2 -fomit-frame-pointer faster821
gcc -O3 -fomit-frame-pointer faster821
gcc -O -fomit-frame-pointer faster821
gcc -Os -fomit-frame-pointer faster821
gcc -fno-schedule-insns -O2 -fomit-frame-pointer faster821
gcc -fno-schedule-insns -O3 -fomit-frame-pointer faster821
gcc -fno-schedule-insns -O -fomit-frame-pointer faster821
gcc -fno-schedule-insns -Os -fomit-frame-pointer faster821
gcc -funroll-loops faster821
gcc -funroll-loops -O2 -fomit-frame-pointer faster821
gcc -funroll-loops -O3 -fomit-frame-pointer faster821
gcc -funroll-loops -O -fomit-frame-pointer faster821
gcc -funroll-loops -Os -fomit-frame-pointer faster821
gcc -funroll-loops -fno-schedule-insns -O2 -fomit-frame-pointer faster821
gcc -funroll-loops -fno-schedule-insns -O3 -fomit-frame-pointer faster821
gcc -funroll-loops -fno-schedule-insns -O -fomit-frame-pointer faster821
gcc -funroll-loops -fno-schedule-insns -Os -fomit-frame-pointer faster821

Compiler output

Implementation: faster821
Security model: unknown
Compiler: clang -O3 -fomit-frame-pointer -Qunused-arguments
core.s: core.s:9:8: error: unknown token in expression
core.s: pushq %rbp
core.s: ^
core.s: core.s:9:8: error: invalid operand
core.s: pushq %rbp
core.s: ^
core.s: core.s:12:7: error: unknown token in expression
core.s: xorl %ecx, %ecx
core.s: ^
core.s: core.s:12:7: error: invalid operand
core.s: xorl %ecx, %ecx
core.s: ^
core.s: core.s:13:11: error: unknown token in expression
core.s: vpcmpeqd %ymm7, %ymm7, %ymm7
core.s: ^
core.s: core.s:13:11: error: invalid operand
core.s: vpcmpeqd %ymm7, %ymm7, %ymm7
core.s: ^
core.s: core.s:14:7: error: unknown token in expression
core.s: movq %rsp, %rbp
core.s: ^
core.s: core.s:14:7: error: invalid operand
core.s: movq %rsp, %rbp
core.s: ^
core.s: core.s:16:8: error: unknown token in expression
core.s: ...

Number of similar (compiler,implementation) pairs: 5, namely:
CompilerImplementations
clang -O3 -fomit-frame-pointer -Qunused-arguments faster821
clang -O3 -fwrapv -mavx2 -fomit-frame-pointer -Qunused-arguments faster821
clang -O3 -fwrapv -mavx -fomit-frame-pointer -Qunused-arguments faster821
clang -O3 -fwrapv -mavx -maes -mpclmul -fomit-frame-pointer -Qunused-arguments faster821
clang -mcpu=native -mfpu=neon -O3 -fomit-frame-pointer -fwrapv -Qunused-arguments faster821