Implementation notes: aarch64, pi4b, crypto_aead/scream10v3

Computer: pi4b
Microarchitecture: aarch64; Cortex-A72 (410fd083)
Architecture: aarch64
CPU ID: 410fd083
SUPERCOP version: 20240808
Operation: crypto_aead
Primitive: scream10v3
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
4144957352 0 1426270 840 872T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024082120240808
4410888712 0 826863 824 872T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024082120240808
7061985880 0 821711 808 848T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024082120240808
7335506528 0 823615 824 856T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024082120240808
7845056308 0 827599 824 856T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024082120240808

Compiler output


scream.c: scream.c:199:10: error: use of unknown builtin '__builtin_ia32_psrldi128' [-Wimplicit-function-declaration]
scream.c:     t0 = shift_right(in[0]) & V(0xf);
scream.c:          ^
scream.c: scream.c:16:32: note: expanded from macro 'shift_right'
scream.c: #define shift_right(x) ((v16qi)__builtin_ia32_psrldi128((v4si)x, 4))
scream.c:                                ^
scream.c: scream.c:199:10: error: invalid conversion between vector type 'v16qi' (vector of 16 'char' values) and integer type 'int' of different size
scream.c:     t0 = shift_right(in[0]) & V(0xf);
scream.c:          ^~~~~~~~~~~~~~~~~~
scream.c: scream.c:16:25: note: expanded from macro 'shift_right'
scream.c: #define shift_right(x) ((v16qi)__builtin_ia32_psrldi128((v4si)x, 4))
scream.c:                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scream.c: scream.c:200:10: error: invalid conversion between vector type 'v16qi' (vector of 16 'char' values) and integer type 'int' of different size
scream.c:     t1 = shift_right(in[2]) & V(0xf);
scream.c:          ^~~~~~~~~~~~~~~~~~
scream.c: scream.c:16:25: note: expanded from macro 'shift_right'
scream.c: #define shift_right(x) ((v16qi)__builtin_ia32_psrldi128((v4si)x, 4))
scream.c:                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scream.c: scream.c:202:10: error: use of unknown builtin '__builtin_ia32_pshufb128' [-Wimplicit-function-declaration]
scream.c:     A  = __builtin_ia32_pshufb128(table, t0);
scream.c:          ^
scream.c: scream.c:202:10: note: did you mean '__builtin_ia32_psrldi128'?
scream.c: scream.c:199:10: note: '__builtin_ia32_psrldi128' declared here
scream.c:     t0 = shift_right(in[0]) & V(0xf);
scream.c:          ^
scream.c: ...

Number of similar (implementation,compiler) pairs: 1, namely:
ImplementationCompiler
T:sseclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)

Compiler output


scream.c: scream.c: In function 'LBox16P':
scream.c: scream.c:16:32: warning: implicit declaration of function '__builtin_ia32_psrldi128' [-Wimplicit-function-declaration]
scream.c:    16 | #define shift_right(x) ((v16qi)__builtin_ia32_psrldi128((v4si)x, 4))
scream.c:       |                                ^~~~~~~~~~~~~~~~~~~~~~~~
scream.c: scream.c:199:10: note: in expansion of macro 'shift_right'
scream.c:   199 |     t0 = shift_right(in[0]) & V(0xf);
scream.c:       |          ^~~~~~~~~~~
scream.c: scream.c:199:5: error: cannot convert a value of type 'int' to vector type '__vector(16) char' which has different size
scream.c:   199 |     t0 = shift_right(in[0]) & V(0xf);
scream.c:       |     ^~
scream.c: scream.c:200:5: error: cannot convert a value of type 'int' to vector type '__vector(16) char' which has different size
scream.c:   200 |     t1 = shift_right(in[2]) & V(0xf);
scream.c:       |     ^~
scream.c: scream.c:202:10: warning: implicit declaration of function '__builtin_ia32_pshufb128'; did you mean '__builtin_fabsf128'? [-Wimplicit-function-declaration]
scream.c:   202 |     A  = __builtin_ia32_pshufb128(table, t0);
scream.c:       |          ^~~~~~~~~~~~~~~~~~~~~~~~
scream.c:       |          __builtin_fabsf128
scream.c: scream.c:202:10: error: incompatible types when assigning to type 'v16qi' {aka '__vector(16) char'} from type 'int'
scream.c: scream.c:203:10: error: incompatible types when assigning to type 'v16qi' {aka '__vector(16) char'} from type 'int'
scream.c:   203 |     C  = __builtin_ia32_pshufb128(table, t1);
scream.c:       |          ^~~~~~~~~~~~~~~~~~~~~~~~
scream.c: scream.c:207:10: error: incompatible types when assigning to type 'v16qi' {aka '__vector(16) char'} from type 'int'
scream.c:   207 |     B  = __builtin_ia32_pshufb128(table, t0);
scream.c:       |          ^~~~~~~~~~~~~~~~~~~~~~~~
scream.c: scream.c:208:10: error: incompatible types when assigning to type 'v16qi' {aka '__vector(16) char'} from type 'int'
scream.c: ...

Number of similar (implementation,compiler) pairs: 4, namely:
ImplementationCompiler
T:ssegcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:ssegcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:ssegcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:ssegcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)

Namespace violations


scream_cipher.o LS_decrypt T
scream_cipher.o LS_encrypt T
scream_cipher.o __a B
scream_cipher.o __b B
scream_cipher.o __c B
scream_cipher.o __d B

Number of similar (implementation,compiler) pairs: 5, namely:
ImplementationCompiler
T:refclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Ubuntu_Clang_14.0.0)
T:refgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:refgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:refgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)
T:refgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (11.4.0)