327 return (reg & 0x1c) | ((reg & 0x20) >> 5); 328 } 329 330 public Set<CPUFeature> getFeatures() { 331 return features; 332 } 333 334 public boolean hasFeature(CPUFeature feature) { 335 return features.contains(feature); 336 } 337 338 public enum CPUFeature { 339 // ISA determined properties: 340 ADI, 341 AES, 342 BLK_INIT, 343 CAMELLIA, 344 CBCOND, 345 CRC32C, 346 DES, 347 FMAF, 348 HPC, 349 IMA, 350 KASUMI, 351 MD5, 352 MONT, 353 MPMUL, 354 MWAIT, 355 PAUSE, 356 PAUSE_NSEC, 357 POPC, 358 SHA1, 359 SHA256, 360 SHA512, 361 SPARC5, 362 V9, 363 VAMASK, 364 VIS1, 365 VIS2, 366 VIS3, 367 VIS3B, 368 XMONT, 369 XMPMUL, 370 // Synthesised CPU properties: 371 BLK_ZEROING, 372 FAST_BIS, 373 FAST_CMOVE, 374 FAST_IDIV, 375 FAST_IND_BR, 376 FAST_LD, 377 FAST_RDPC 378 } 379 } | 327 return (reg & 0x1c) | ((reg & 0x20) >> 5); 328 } 329 330 public Set<CPUFeature> getFeatures() { 331 return features; 332 } 333 334 public boolean hasFeature(CPUFeature feature) { 335 return features.contains(feature); 336 } 337 338 public enum CPUFeature { 339 // ISA determined properties: 340 ADI, 341 AES, 342 BLK_INIT, 343 CAMELLIA, 344 CBCOND, 345 CRC32C, 346 DES, 347 DICTUNP, 348 FMAF, 349 FPCMPSHL, 350 HPC, 351 IMA, 352 KASUMI, 353 MD5, 354 MME, 355 MONT, 356 MPMUL, 357 MWAIT, 358 PAUSE, 359 PAUSE_NSEC, 360 POPC, 361 RLE, 362 SHA1, 363 SHA256, 364 SHA3, 365 SHA512, 366 SPARC5, 367 SPARC5B, 368 SPARC6, 369 V9, 370 VAMASK, 371 VIS1, 372 VIS2, 373 VIS3, 374 VIS3B, 375 VIS3C, 376 XMONT, 377 XMPMUL, 378 // Synthesised CPU properties: 379 BLK_ZEROING, 380 FAST_BIS, 381 FAST_CMOVE, 382 FAST_IDIV, 383 FAST_IND_BR, 384 FAST_LD, 385 FAST_RDPC 386 } 387 } |