138 FLAG_SET_DEFAULT(UseAESIntrinsics, true);
139 }
140 }
141 if (UseAESIntrinsics && !has_Crypto_AES()) {
142 warning("AES intrinsics are not available on this CPU");
143 FLAG_SET_DEFAULT(UseAESIntrinsics, false);
144 }
145
146 // TODO: implement AES/CTR intrinsics
147 if (UseAESCTRIntrinsics) {
148 warning("AES/CTR intrinsics are not available on this CPU");
149 FLAG_SET_DEFAULT(UseAESCTRIntrinsics, false);
150 }
151
152 // TODO: implement GHASH intrinsics
153 if (UseGHASHIntrinsics) {
154 warning("GHASH intrinsics are not available on this CPU");
155 FLAG_SET_DEFAULT(UseGHASHIntrinsics, false);
156 }
157
158 if (UseFMA) {
159 warning("FMA instructions are not available on this CPU");
160 FLAG_SET_DEFAULT(UseFMA, false);
161 }
162
163 // On z/Architecture, we take UseSHA as the general switch to enable/disable the SHA intrinsics.
164 // The specific switches UseSHAxxxIntrinsics will then be set depending on the actual
165 // machine capabilities.
166 // Explicitly setting them via CmdLine option takes precedence, of course.
167 if (FLAG_IS_DEFAULT(UseSHA) && has_Crypto_SHA()) {
168 FLAG_SET_DEFAULT(UseSHA, true);
169 }
170 if (UseSHA && !has_Crypto_SHA()) {
171 warning("SHA instructions are not available on this CPU");
172 FLAG_SET_DEFAULT(UseSHA, false);
173 }
174 if (UseSHA && has_Crypto_SHA1()) {
175 if (FLAG_IS_DEFAULT(UseSHA1Intrinsics)) {
176 FLAG_SET_DEFAULT(UseSHA1Intrinsics, true);
177 }
178 } else if (UseSHA1Intrinsics) {
179 warning("Intrinsics for SHA-1 crypto hash functions not available on this CPU.");
180 FLAG_SET_DEFAULT(UseSHA1Intrinsics, false);
|
138 FLAG_SET_DEFAULT(UseAESIntrinsics, true);
139 }
140 }
141 if (UseAESIntrinsics && !has_Crypto_AES()) {
142 warning("AES intrinsics are not available on this CPU");
143 FLAG_SET_DEFAULT(UseAESIntrinsics, false);
144 }
145
146 // TODO: implement AES/CTR intrinsics
147 if (UseAESCTRIntrinsics) {
148 warning("AES/CTR intrinsics are not available on this CPU");
149 FLAG_SET_DEFAULT(UseAESCTRIntrinsics, false);
150 }
151
152 // TODO: implement GHASH intrinsics
153 if (UseGHASHIntrinsics) {
154 warning("GHASH intrinsics are not available on this CPU");
155 FLAG_SET_DEFAULT(UseGHASHIntrinsics, false);
156 }
157
158 if (FLAG_IS_DEFAULT(UseFMA)) {
159 FLAG_SET_DEFAULT(UseFMA, true);
160 }
161
162 // On z/Architecture, we take UseSHA as the general switch to enable/disable the SHA intrinsics.
163 // The specific switches UseSHAxxxIntrinsics will then be set depending on the actual
164 // machine capabilities.
165 // Explicitly setting them via CmdLine option takes precedence, of course.
166 if (FLAG_IS_DEFAULT(UseSHA) && has_Crypto_SHA()) {
167 FLAG_SET_DEFAULT(UseSHA, true);
168 }
169 if (UseSHA && !has_Crypto_SHA()) {
170 warning("SHA instructions are not available on this CPU");
171 FLAG_SET_DEFAULT(UseSHA, false);
172 }
173 if (UseSHA && has_Crypto_SHA1()) {
174 if (FLAG_IS_DEFAULT(UseSHA1Intrinsics)) {
175 FLAG_SET_DEFAULT(UseSHA1Intrinsics, true);
176 }
177 } else if (UseSHA1Intrinsics) {
178 warning("Intrinsics for SHA-1 crypto hash functions not available on this CPU.");
179 FLAG_SET_DEFAULT(UseSHA1Intrinsics, false);
|