Test results for amd64, h9ivy, crypto_aead/lilliputaeii128v11

[Page version: 20250926 22:04:25]

Measurements for amd64, h9ivy, crypto_aead Test results for amd64, h9ivy, crypto_aead Test results for crypto_aead/lilliputaeii128v11
Computer: h9ivy
Microarchitecture: amd64; Ivy Bridge+AES (306a9)
Architecture: amd64
CPU ID: GenuineIntel-000306a9-bfebfbff
SUPERCOP version: 20250922
Operation: crypto_aead
Primitive: lilliputaeii128v11
TimeObject sizeTest sizeImplementationCompilerBenchmark dateSUPERCOP version
25308097304 0 022908 780 1096T:add_felicsrefgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
26623885771 0 024261 820 1032T:add_felicsrefclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
26641017148 0 025149 820 1032T:add_felicsrefclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
26784447403 0 027837 820 1032T:add_felicsrefclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
26980027663 0 025661 820 1032T:refclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
27032918045 0 028461 820 1032T:refclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
27063967661 0 025661 820 1032T:add_tweakeyloopclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
27110818043 0 028461 820 1032T:add_tweakeyloopclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
27337415878 0 024341 820 1032T:refclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
27418525876 0 024357 820 1032T:add_tweakeyloopclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
31187939198 56 024996 836 1096T:refgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
33888869550 56 025380 836 1096T:add_tweakeyloopgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
37124044676 0 018996 780 1096T:add_felicsrefgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
38163354236 0 018133 820 1032T:add_felicsrefclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
41828634731 56 018829 876 1032T:refclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
42296024844 56 018965 876 1032T:add_tweakeyloopclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
45588545306 56 019828 836 1096T:refgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
46213524297 0 018587 772 1096T:add_felicsrefgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
47413894388 0 017902 812 1032T:add_felicsrefclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
47672775674 56 020228 836 1096T:add_tweakeyloopgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
50696114847 56 019315 828 1096T:refgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
54604964860 56 018614 868 1032T:add_tweakeyloopclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
54707884729 56 018478 868 1032T:refclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
54968423638 0 016383 756 1064T:add_felicsrefgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
60109224097 56 016999 812 1064T:refgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
61274434615 56 019115 828 1096T:add_tweakeyloopgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
71914493747 56 016695 812 1064T:add_tweakeyloopgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
1563678610579 0 031005 820 1032T:add_thresholdclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
1564985510355 0 028405 820 1032T:add_thresholdclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
157377938343 0 026853 820 1032T:add_thresholdclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
1672853812867 0 028524 780 1096T:add_thresholdgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
171839296365 56 020485 876 1032T:add_thresholdclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
178752096588 56 020358 868 1032T:add_thresholdclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
182280508497 0 022908 780 1096T:add_thresholdgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
185242926820 0 021179 772 1096T:add_thresholdgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415
228766665986 0 018759 756 1064T:add_thresholdgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall2025082720250415

Compiler output


tweakey.c: In file included from tweakey.c:33:
tweakey.c: ./multiplications.h:93:13: warning: unused function '_multiply_MR' [-Wunused-function]
tweakey.c:    93 | static void _multiply_MR(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
tweakey.c:       |             ^~~~~~~~~~~~
tweakey.c: ./multiplications.h:105:13: warning: unused function '_multiply_MR2' [-Wunused-function]
tweakey.c:   105 | static void _multiply_MR2(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
tweakey.c:       |             ^~~~~~~~~~~~~
tweakey.c: ./multiplications.h:119:13: warning: unused function '_multiply_MR3' [-Wunused-function]
tweakey.c:   119 | static void _multiply_MR3(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
tweakey.c:       |             ^~~~~~~~~~~~~
tweakey.c: 3 warnings generated.

Number of similar (implementation,compiler) pairs: 5, namely:
ImplementationCompiler
T:add_felicsrefclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))

Compiler output


tweakey.c: In file included from tweakey.c:33:
tweakey.c: multiplications.h:119:13: warning: '_multiply_MR3' defined but not used [-Wunused-function]
tweakey.c:   119 | static void _multiply_MR3(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
tweakey.c:       |             ^~~~~~~~~~~~~
tweakey.c: multiplications.h:105:13: warning: '_multiply_MR2' defined but not used [-Wunused-function]
tweakey.c:   105 | static void _multiply_MR2(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
tweakey.c:       |             ^~~~~~~~~~~~~
tweakey.c: multiplications.h:93:13: warning: '_multiply_MR' defined but not used [-Wunused-function]
tweakey.c:    93 | static void _multiply_MR(const uint8_t x[LANE_BYTES], uint8_t y[LANE_BYTES])
tweakey.c:       |             ^~~~~~~~~~~~

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

Compiler output


cipher.c: cipher.c:173:24: warning: '&' within '^' [-Wbitwise-op-parentheses]
cipher.c:   173 |         tmp0 = P[Q[y_hi&3 ^ (y_hi&8)>>1][z_hi]];
cipher.c:       |                    ~~~~^~ ~
cipher.c: cipher.c:173:24: note: place parentheses around the '&' expression to silence this warning
cipher.c:   173 |         tmp0 = P[Q[y_hi&3 ^ (y_hi&8)>>1][z_hi]];
cipher.c:       |                        ^
cipher.c:       |                    (     )
cipher.c: cipher.c:174:24: warning: '&' within '^' [-Wbitwise-op-parentheses]
cipher.c:   174 |         tmp1 = P[Q[z_hi&3 ^ (z_hi&8)>>1][x_hi]];
cipher.c:       |                    ~~~~^~ ~
cipher.c: cipher.c:174:24: note: place parentheses around the '&' expression to silence this warning
cipher.c:   174 |         tmp1 = P[Q[z_hi&3 ^ (z_hi&8)>>1][x_hi]];
cipher.c:       |                        ^
cipher.c:       |                    (     )
cipher.c: cipher.c:175:24: warning: '&' within '^' [-Wbitwise-op-parentheses]
cipher.c:   175 |         tmp2 = P[Q[x_hi&3 ^ (x_hi&8)>>1][y_hi]];
cipher.c:       |                    ~~~~^~ ~
cipher.c: cipher.c:175:24: note: place parentheses around the '&' expression to silence this warning
cipher.c:   175 |         tmp2 = P[Q[x_hi&3 ^ (x_hi&8)>>1][y_hi]];
cipher.c:       |                        ^
cipher.c:       |                    (     )
cipher.c: cipher.c:176:23: warning: '&' within '^' [-Wbitwise-op-parentheses]
cipher.c:   176 |         x_lo ^= Q[tmp1&3 ^ (tmp1&8)>>1][tmp2];
cipher.c:       |                   ~~~~^~ ~
cipher.c: cipher.c:176:23: note: place parentheses around the '&' expression to silence this warning
cipher.c: ...
tweakey.c: tweakey.c:39:13: warning: argument 'TK_Y' of type 'uint8_t[16]' (aka 'unsigned char[16]') with mismatched bound [-Warray-parameter]
tweakey.c:    39 |     uint8_t TK_Y[KEY_BYTES],
tweakey.c:       |             ^
tweakey.c: ./tweakey.h:33:13: note: previously declared as 'uint8_t[32]' (aka 'unsigned char[32]') here
tweakey.c:    33 |     uint8_t TK_Y[TWEAKEY_BYTES],
tweakey.c:       |             ^
tweakey.c: 1 warning generated.

Number of similar (implementation,compiler) pairs: 5, namely:
ImplementationCompiler
T:add_thresholdclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))

Compiler output


cipher.c: cipher.c: In function '_nonlinear_layer':
cipher.c: cipher.c:173:24: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
cipher.c:   173 |         tmp0 = P[Q[y_hi&3 ^ (y_hi&8)>>1][z_hi]];
cipher.c:       |                    ~~~~^~
cipher.c: cipher.c:174:24: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
cipher.c:   174 |         tmp1 = P[Q[z_hi&3 ^ (z_hi&8)>>1][x_hi]];
cipher.c:       |                    ~~~~^~
cipher.c: cipher.c:175:24: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
cipher.c:   175 |         tmp2 = P[Q[x_hi&3 ^ (x_hi&8)>>1][y_hi]];
cipher.c:       |                    ~~~~^~
cipher.c: cipher.c:176:23: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
cipher.c:   176 |         x_lo ^= Q[tmp1&3 ^ (tmp1&8)>>1][tmp2];
cipher.c:       |                   ~~~~^~
cipher.c: cipher.c:177:23: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
cipher.c:   177 |         y_lo ^= Q[tmp2&3 ^ (tmp2&8)>>1][tmp0];
cipher.c:       |                   ~~~~^~
cipher.c: cipher.c:178:23: warning: suggest parentheses around arithmetic in operand of '^' [-Wparentheses]
cipher.c:   178 |         z_lo ^= Q[tmp0&3 ^ (tmp0&8)>>1][tmp1];
cipher.c:       |                   ~~~~^~
tweakey.c: tweakey.c:39:13: warning: argument 2 of type 'uint8_t[16]' {aka 'unsigned char[16]'} with mismatched bound [-Warray-parameter=]
tweakey.c:    39 |     uint8_t TK_Y[KEY_BYTES],
tweakey.c:       |     ~~~~~~~~^~~~~~~~~~~~~~~
tweakey.c: In file included from tweakey.c:29:
tweakey.c: tweakey.h:33:13: note: previously declared as 'uint8_t[32]' {aka 'unsigned char[32]'}
tweakey.c:    33 |     uint8_t TK_Y[TWEAKEY_BYTES],
tweakey.c:       |     ~~~~~~~~^~~~~~~~~~~~~~~~~~~

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

Namespace violations


cipher.o lilliput_tbc_decrypt T
cipher.o lilliput_tbc_encrypt T
lilliput-ii.o lilliput_ae_decrypt T
lilliput-ii.o lilliput_ae_encrypt T
tweakey.o tweakey_state_extract T
tweakey.o tweakey_state_init T
tweakey.o tweakey_state_update T

Number of similar (implementation,compiler) pairs: 27, namely:
ImplementationCompiler
T:add_felicsrefclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_felicsrefgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_felicsrefgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_felicsrefgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_felicsrefgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_tweakeyloopclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_tweakeyloopclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_tweakeyloopclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_tweakeyloopclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_tweakeyloopclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_tweakeyloopgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_tweakeyloopgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_tweakeyloopgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_tweakeyloopgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:refclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:refclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:refclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:refclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:refclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:refgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:refgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:refgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:refgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)

Namespace violations


cipher.o lilliput_tbc_decrypt T
cipher.o lilliput_tbc_encrypt T
lilliput-ii.o lilliput_ae_decrypt T
lilliput-ii.o lilliput_ae_encrypt T
random.o randombytes T
tweakey.o tweakey_state_extract T
tweakey.o tweakey_state_init T
tweakey.o tweakey_state_update T

Number of similar (implementation,compiler) pairs: 9, namely:
ImplementationCompiler
T:add_thresholdclang -march=native -O2 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -march=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -march=native -O -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -march=native -Os -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdclang -mcpu=native -O3 -fwrapv -Qunused-arguments -fPIC -fPIE -gdwarf-4 -Wall (Debian_Clang_19.1.7_(3+b1))
T:add_thresholdgcc -march=native -mtune=native -O2 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_thresholdgcc -march=native -mtune=native -O3 -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_thresholdgcc -march=native -mtune=native -O -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)
T:add_thresholdgcc -march=native -mtune=native -Os -fwrapv -fPIC -fPIE -gdwarf-4 -Wall (14.2.0)