@@ -612,9 +612,14 @@ bool test_fp_types(queue q) {
612
612
613
613
if constexpr (Features == TestFeatures::DG2 ||
614
614
Features == TestFeatures::PVC) {
615
- if (q.get_device ().has (sycl::aspect::atomic64) &&
616
- q.get_device ().has (sycl::aspect::fp64)) {
617
- passed &= run_test<UseAcc, double , N, Op, UseMask>(q);
615
+ // TODO: fmin/fmax/fcmpxchg for double requires a newer GPU driver.
616
+ if constexpr (!std::is_same_v<Op<double , N>, ImplLSCFmax<double , N>> &&
617
+ !std::is_same_v<Op<double , N>, ImplLSCFmin<double , N>> &&
618
+ !std::is_same_v<Op<double , N>, ImplLSCFcmpwr<double , N>>) {
619
+ if (q.get_device ().has (sycl::aspect::atomic64) &&
620
+ q.get_device ().has (sycl::aspect::fp64)) {
621
+ passed &= run_test<UseAcc, double , N, Op, UseMask>(q);
622
+ }
618
623
}
619
624
}
620
625
return passed;
@@ -628,6 +633,7 @@ bool test_int_types_and_sizes(queue q) {
628
633
passed &= test_int_types<2 , Op, UseMask, Features, UseAcc, SignMask>(q);
629
634
passed &= test_int_types<4 , Op, UseMask, Features, UseAcc, SignMask>(q);
630
635
passed &= test_int_types<8 , Op, UseMask, Features, UseAcc, SignMask>(q);
636
+ // TODO: N=16 and N=32 does not pass on Gen12 with mask due to older driver.
631
637
if (UseMask && Features == TestFeatures::Generic &&
632
638
esimd_test::isGPUDriverGE (q, esimd_test::GPUDriverOS::LinuxAndWindows,
633
639
" 26918" , " 101.4953" , false )) {
@@ -639,8 +645,13 @@ bool test_int_types_and_sizes(queue q) {
639
645
if constexpr (Features == TestFeatures::DG2 ||
640
646
Features == TestFeatures::PVC) {
641
647
passed &= test_int_types<64 , Op, UseMask, Features, UseAcc, SignMask>(q);
648
+ // non power of two values are supported only in newer driver.
649
+ // TODO: Enable this when the new driver reaches test infrastructure
650
+ // (v27556).
651
+ #if 0
642
652
passed &= test_int_types<12, Op, UseMask, Features, UseAcc, SignMask>(q);
643
653
passed &= test_int_types<33, Op, UseMask, Features, UseAcc, SignMask>(q);
654
+ #endif
644
655
}
645
656
646
657
return passed;
@@ -661,8 +672,13 @@ bool test_fp_types_and_sizes(queue q) {
661
672
if constexpr (Features == TestFeatures::DG2 ||
662
673
Features == TestFeatures::PVC) {
663
674
passed &= test_fp_types<64 , Op, UseMask, Features, UseAcc>(q);
675
+ // non power of two values are supported only in newer driver.
676
+ // TODO: Enable this when the new driver reaches test infrastructure
677
+ // (v27556).
678
+ #if 0
664
679
passed &= test_fp_types<33, Op, UseMask, Features, UseAcc>(q);
665
680
passed &= test_fp_types<65, Op, UseMask, Features, UseAcc>(q);
681
+ #endif
666
682
}
667
683
return passed;
668
684
}
0 commit comments