TI ARM C/C++ Optimizer v5.1.6 Build Number 1OE9R-KDADEMDK-RTARQ-WAR-ZAZE_V_R_W ======File-level Analysis Summary====== extern void bench_aes() is called from 2 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: printf() (2 times) AesCbcEncrypt() (1 times) current_time() (2 times) AesSetKey() (1 times) extern void bench_arc4() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: printf() (1 times) Arc4Process() (1 times) current_time() (2 times) Arc4SetKey() (1 times) extern void bench_camellia() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: printf() (2 times) CamelliaCbcEncrypt() (1 times) current_time() (2 times) CamelliaSetKey() (1 times) extern void bench_chacha() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: printf() (1 times) Chacha_Process() (1 times) Chacha_SetIV() (1 times) current_time() (2 times) Chacha_SetKey() (1 times) extern void bench_des() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: printf() (2 times) Des3_CbcEncrypt() (1 times) current_time() (2 times) Des3_SetKey() (1 times) extern void bench_dh() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: FreeDhKey() (1 times) DhAgree() (1 times) printf() (3 times) DhGenerateKeyPair() (2 times) current_time() (4 times) DhKeyDecode() (1 times) InitDhKey() (1 times) memcpy() (1 times) extern void bench_eccKeyAgree() is called from 1 sites in this file. It has 4 non-trivial scope blocks nested 4 deep. It calls these functions: ecc_free() (2 times) ecc_verify_hash() (1 times) ecc_sign_hash() (1 times) printf() (9 times) ecc_shared_secret() (1 times) current_time() (6 times) ecc_make_key() (2 times) InitRng() (1 times) ecc_init() (2 times) extern void bench_eccKeyGen() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: printf() (3 times) ecc_free() (1 times) ecc_make_key() (1 times) current_time() (2 times) InitRng() (1 times) extern void bench_md5() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: printf() (1 times) Md5Final() (1 times) Md5Update() (1 times) current_time() (2 times) InitMd5() (1 times) extern void bench_poly1305() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: printf() (2 times) Poly1305Final() (1 times) Poly1305Update() (1 times) current_time() (2 times) Poly1305SetKey() (1 times) extern void bench_rabbit() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: printf() (1 times) RabbitProcess() (1 times) current_time() (2 times) RabbitSetKey() (1 times) extern void bench_rsa() is called from 1 sites in this file. It has 4 non-trivial scope blocks nested 4 deep. It calls these functions: FreeRsaKey() (1 times) RsaPrivateDecrypt() (1 times) printf() (5 times) RsaPublicEncrypt() (1 times) current_time() (4 times) RsaPrivateKeyDecode() (1 times) InitRsaKey() (1 times) InitRng() (1 times) memcpy() (1 times) strlen() (1 times) extern void bench_sha() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: printf() (2 times) ShaFinal() (1 times) ShaUpdate() (1 times) current_time() (2 times) InitSha() (1 times) extern void bench_sha256() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: printf() (4 times) Sha256Final() (1 times) Sha256Update() (1 times) current_time() (2 times) InitSha256() (1 times) extern void bench_sha512() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: printf() (4 times) Sha512Final() (1 times) Sha512Update() (1 times) current_time() (2 times) InitSha512() (1 times) extern int benchmark_test() is called from 0 sites in this file. It appears to be inlineable (size = 24 units) It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: bench_eccKeyAgree() (1 times) bench_eccKeyGen() (1 times) bench_dh() (1 times) bench_rsa() (1 times) bench_sha512() (1 times) bench_sha256() (1 times) bench_sha() (1 times) bench_poly1305() (1 times) bench_md5() (1 times) printf() (2 times) bench_des() (1 times) bench_chacha() (1 times) bench_rabbit() (1 times) bench_arc4() (1 times) bench_camellia() (1 times) bench_aes() (2 times) static unsigned strlen() is called from 1 sites in this file. It appears to be inlineable (size = 15 units) It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: Global variable is not referenced in this file: extern const int sizeof_server_cert_der_2048 extern const int sizeof_server_key_der_2048 extern const int sizeof_ca_cert_der_2048 extern const int sizeof_rsa_key_der_2048 extern const int sizeof_dsa_key_der_2048 extern const int sizeof_dh_key_der_2048 extern const int sizeof_client_cert_der_2048 extern const int sizeof_client_key_der_2048 These functions may be recursive: benchmark_test() bench_eccKeyAgree() bench_eccKeyGen() bench_dh() bench_rsa() bench_sha512() bench_sha256() bench_sha() bench_poly1305() bench_md5() bench_des() bench_chacha() bench_rabbit() bench_arc4() bench_camellia() bench_aes() Inlineable function will be suppressed: strlen() These external functions are called but not defined here: memcpy() printf() InitSha512() Sha512Update() Sha512Final() InitSha256() Sha256Update() Sha256Final() InitSha() ShaUpdate() ShaFinal() InitRsaKey() RsaPrivateKeyDecode() RsaPublicEncrypt() RsaPrivateDecrypt() FreeRsaKey() RabbitSetKey() RabbitProcess() Poly1305SetKey() Poly1305Update() Poly1305Final() InitMd5() Md5Update() Md5Final() ecc_init() InitRng() ecc_make_key() ecc_shared_secret() ecc_sign_hash() ecc_verify_hash() ecc_free() InitDhKey() DhKeyDecode() DhGenerateKeyPair() DhAgree() FreeDhKey() Des3_SetKey() Des3_CbcEncrypt() Chacha_SetKey() Chacha_SetIV() Chacha_Process() CamelliaSetKey() CamelliaCbcEncrypt() Arc4SetKey() Arc4Process() AesSetKey() current_time() AesCbcEncrypt() The following variables will be grouped together to share a common base address. References in the source interlisting will look like "1$$.key", "K$1->key", "C$1->key", "&1$$+3", and "C$1+3". --offset-- --size-- --variable-- 0 3 static const unsigned char blockType[3] 3 24 static const unsigned char key[24] 27 24 static const unsigned char iv[24] 51 26 static const unsigned char $P$T0$1[26] 77 268 extern const unsigned char dh_key_der_2048[268] 345 1191 extern const unsigned char rsa_key_der_2048[1191] The following variables will be grouped together to share a common base address. References in the source interlisting will look like "2$$.plain", "K$1->plain", "C$1->plain", "&2$$+264", and "C$1+264". --offset-- --size-- --variable-- 0 264 static struct RNG rng 264 1024 static unsigned char plain[1024] 1288 1024 static unsigned char cipher[1024] ======= End file-level Analysis ======= ============================================================================== extern void bench_aes() is called from 2 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: There are 0 memory accesses with 0 dependences. ============================================================================== extern void bench_camellia() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: There are 0 memory accesses with 0 dependences. ============================================================================== extern void bench_arc4() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: There are 0 memory accesses with 0 dependences. ============================================================================== extern void bench_rabbit() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: There are 0 memory accesses with 0 dependences. ============================================================================== extern void bench_chacha() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: There are 0 memory accesses with 0 dependences. ============================================================================== extern void bench_des() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: There are 0 memory accesses with 0 dependences. ============================================================================== extern void bench_md5() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: There are 0 memory accesses with 0 dependences. ============================================================================== extern void bench_poly1305() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: There are 0 memory accesses with 0 dependences. ============================================================================== extern void bench_sha() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: There are 0 memory accesses with 0 dependences. ============================================================================== extern void bench_sha256() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: There are 0 memory accesses with 0 dependences. ============================================================================== extern void bench_sha512() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: There are 0 memory accesses with 0 dependences. ============================================================================== extern void bench_rsa() is called from 1 sites in this file. It has 4 non-trivial scope blocks nested 4 deep. It calls these functions: strlen() (1 times) There are 4 memory accesses with 1 dependences. ============================================================================== extern void bench_dh() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: There are 5 memory accesses with 2 dependences. ============================================================================== extern void bench_eccKeyGen() is called from 1 sites in this file. It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: There are 0 memory accesses with 0 dependences. ============================================================================== extern void bench_eccKeyAgree() is called from 1 sites in this file. It has 4 non-trivial scope blocks nested 4 deep. It calls these functions: Unrolling 'for' loop on 'i' at lines C:/wolfssl/wolfcrypt/benchmark/benchmark.c:1396-1397 completely by factor 32. Estimated speedup: 6.79x, code size increase: 8.00x (4:->32) There are 37 memory accesses with 6 dependences. ============================================================================== extern int benchmark_test() is called from 0 sites in this file. It appears to be inlineable (size = 24 units) It has 3 non-trivial scope blocks nested 3 deep. It calls these functions: bench_aes() (2 times) bench_camellia() (1 times) bench_arc4() (1 times) bench_rabbit() (1 times) bench_chacha() (1 times) bench_des() (1 times) bench_md5() (1 times) bench_poly1305() (1 times) bench_sha() (1 times) bench_sha256() (1 times) bench_sha512() (1 times) bench_rsa() (1 times) bench_dh() (1 times) bench_eccKeyGen() (1 times) bench_eccKeyAgree() (1 times) There are 0 memory accesses with 0 dependences. == END OF INFO OUTPUT==