Implementation notes: aarch64, pi4b, crypto_aead/iscream14v1

Computer: pi4b
Microarchitecture: aarch64; Cortex-A72 (410fd083)
Architecture: aarch64
CPU ID: 410fd083
SUPERCOP version: 20240716
Operation: crypto_aead
Primitive: iscream14v1
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
5431797604 1024 028258 1912 880T:refgcc_-march=native_-mtune=native_-O3_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625
5671826036 1024 027465 1920 872T:refclang_-mcpu=native_-O3_-fwrapv_-Qunused-arguments_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625
11076943064 1024 021426 1888 856T:refgcc_-march=native_-mtune=native_-Os_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625
11574783720 1024 023322 1904 864T:refgcc_-march=native_-mtune=native_-O2_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625
12285983848 1024 023546 1904 864T:refgcc_-march=native_-mtune=native_-O_-fwrapv_-fPIC_-fPIE_-gdwarf-4_-Wall2024062920240625

Compiler output


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


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