622
623
624
625
626
627
628
629
630
631
632
633
634
635
|
return (x86_cpuid(1, 0).ecx & (1u << 28));
}
+ (bool)supportsAVX2
{
return x86_cpuid(0, 0).eax >= 7 && (x86_cpuid(7, 0).ebx & (1u << 5));
}
#endif
#if defined(OF_POWERPC) || defined(OF_POWERPC64)
+ (bool)supportsAltiVec
{
# if defined(OF_MACOS)
int name[2] = { CTL_HW, HW_VECTORUNIT }, value = 0;
|
>
>
>
>
>
>
>
>
>
>
|
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
|
return (x86_cpuid(1, 0).ecx & (1u << 28));
}
+ (bool)supportsAVX2
{
return x86_cpuid(0, 0).eax >= 7 && (x86_cpuid(7, 0).ebx & (1u << 5));
}
+ (bool)supportsAESNI
{
return (x86_cpuid(1, 0).ecx & (1u << 25));
}
+ (bool)supportsSHAExtensions
{
return (x86_cpuid(7, 0).ebx & (1u << 29));
}
#endif
#if defined(OF_POWERPC) || defined(OF_POWERPC64)
+ (bool)supportsAltiVec
{
# if defined(OF_MACOS)
int name[2] = { CTL_HW, HW_VECTORUNIT }, value = 0;
|
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
|
return (vectorUnit == VECTORTYPE_ALTIVEC);
# elif defined(OF_MORPHOS)
uint32_t supportsAltiVec;
if (NewGetSystemAttrs(&supportsAltiVec, sizeof(supportsAltiVec),
SYSTEMINFOTYPE_PPC_ALTIVEC, TAG_DONE) > 0)
return supportsAltiVec;
return false;
# endif
return false;
}
#endif
- (instancetype)init
{
OF_INVALID_INIT_METHOD
}
@end
|
<
<
|
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
|
return (vectorUnit == VECTORTYPE_ALTIVEC);
# elif defined(OF_MORPHOS)
uint32_t supportsAltiVec;
if (NewGetSystemAttrs(&supportsAltiVec, sizeof(supportsAltiVec),
SYSTEMINFOTYPE_PPC_ALTIVEC, TAG_DONE) > 0)
return supportsAltiVec;
# endif
return false;
}
#endif
- (instancetype)init
{
OF_INVALID_INIT_METHOD
}
@end
|