Skip to content

Commit 6762e9c

Browse files
authored
Fix incorrect natural vector size on Zen4 (#8570)
Fix incorrect natural vectorize size on Zen4
1 parent f770beb commit 6762e9c

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/Target.cpp

+10-4
Original file line numberDiff line numberDiff line change
@@ -1458,16 +1458,22 @@ int Target::natural_vector_size(const Halide::Type &t) const {
14581458
}
14591459
} else if (arch == Target::X86) {
14601460
if (is_integer && (has_feature(Halide::Target::AVX512_Skylake) ||
1461-
has_feature(Halide::Target::AVX512_Cannonlake))) {
1462-
// AVX512BW exists on Skylake and Cannonlake
1461+
has_feature(Halide::Target::AVX512_Cannonlake) ||
1462+
has_feature(Halide::Target::AVX512_Zen4) ||
1463+
has_feature(Halide::Target::AVX512_SapphireRapids))) {
1464+
// AVX512BW exists on any of these avx512 variants
14631465
return 64 / data_size;
14641466
} else if (t.is_float() && (has_feature(Halide::Target::AVX512) ||
14651467
has_feature(Halide::Target::AVX512_KNL) ||
14661468
has_feature(Halide::Target::AVX512_Skylake) ||
1467-
has_feature(Halide::Target::AVX512_Cannonlake))) {
1469+
has_feature(Halide::Target::AVX512_Cannonlake) ||
1470+
has_feature(Halide::Target::AVX512_Zen4) ||
1471+
has_feature(Halide::Target::AVX512_SapphireRapids))) {
14681472
// AVX512F is on all AVX512 architectures
14691473
return 64 / data_size;
1470-
} else if (has_feature(Halide::Target::AVX2)) {
1474+
} else if (has_feature(Halide::Target::AVX2) ||
1475+
has_feature(Halide::Target::AVX512) ||
1476+
has_feature(Halide::Target::AVX512_KNL)) {
14711477
// AVX2 uses 256-bit vectors for everything.
14721478
return 32 / data_size;
14731479
} else if (!is_integer && has_feature(Halide::Target::AVX)) {

0 commit comments

Comments
 (0)