comparison src/cpu/sparc/vm/vm_version_sparc.hpp @ 14261:00f5eff62d18

8002074: Support for AES on SPARC Summary: Add intrinsics/stub routines support for single-block and multi-block (as used by Cipher Block Chaining mode) AES encryption and decryption operations on the SPARC platform. Reviewed-by: kvn, roland Contributed-by: shrinivas.joshi@oracle.com
author kvn
date Tue, 14 Jan 2014 17:46:48 -0800
parents de6a9e811145
children 73b1030c6253
comparison
equal deleted inserted replaced
14260:8cdf3f43f63e 14261:00f5eff62d18
46 vis3_instructions = 12, 46 vis3_instructions = 12,
47 cbcond_instructions = 13, 47 cbcond_instructions = 13,
48 sparc64_family = 14, 48 sparc64_family = 14,
49 M_family = 15, 49 M_family = 15,
50 T_family = 16, 50 T_family = 16,
51 T1_model = 17 51 T1_model = 17,
52 aes_instructions = 18
52 }; 53 };
53 54
54 enum Feature_Flag_Set { 55 enum Feature_Flag_Set {
55 unknown_m = 0, 56 unknown_m = 0,
56 all_features_m = -1, 57 all_features_m = -1,
71 cbcond_instructions_m = 1 << cbcond_instructions, 72 cbcond_instructions_m = 1 << cbcond_instructions,
72 sparc64_family_m = 1 << sparc64_family, 73 sparc64_family_m = 1 << sparc64_family,
73 M_family_m = 1 << M_family, 74 M_family_m = 1 << M_family,
74 T_family_m = 1 << T_family, 75 T_family_m = 1 << T_family,
75 T1_model_m = 1 << T1_model, 76 T1_model_m = 1 << T1_model,
77 aes_instructions_m = 1 << aes_instructions,
76 78
77 generic_v8_m = v8_instructions_m | hardware_mul32_m | hardware_div32_m | hardware_fsmuld_m, 79 generic_v8_m = v8_instructions_m | hardware_mul32_m | hardware_div32_m | hardware_fsmuld_m,
78 generic_v9_m = generic_v8_m | v9_instructions_m, 80 generic_v9_m = generic_v8_m | v9_instructions_m,
79 ultra3_m = generic_v9_m | vis1_instructions_m | vis2_instructions_m, 81 ultra3_m = generic_v9_m | vis1_instructions_m | vis2_instructions_m,
80 82
121 static bool has_vis1() { return (_features & vis1_instructions_m) != 0; } 123 static bool has_vis1() { return (_features & vis1_instructions_m) != 0; }
122 static bool has_vis2() { return (_features & vis2_instructions_m) != 0; } 124 static bool has_vis2() { return (_features & vis2_instructions_m) != 0; }
123 static bool has_vis3() { return (_features & vis3_instructions_m) != 0; } 125 static bool has_vis3() { return (_features & vis3_instructions_m) != 0; }
124 static bool has_blk_init() { return (_features & blk_init_instructions_m) != 0; } 126 static bool has_blk_init() { return (_features & blk_init_instructions_m) != 0; }
125 static bool has_cbcond() { return (_features & cbcond_instructions_m) != 0; } 127 static bool has_cbcond() { return (_features & cbcond_instructions_m) != 0; }
128 static bool has_aes() { return (_features & aes_instructions_m) != 0; }
126 129
127 static bool supports_compare_and_exchange() 130 static bool supports_compare_and_exchange()
128 { return has_v9(); } 131 { return has_v9(); }
129 132
130 // Returns true if the platform is in the niagara line (T series) 133 // Returns true if the platform is in the niagara line (T series)