Use roundss/roundsd when available for Ceil/Floor/Trunc/Nearest (#931)

Don't tie the preexisting SIMD ISA predicates to the shared
enable_simd setting but make new ones instead.

Fixes: https://github.com/CraneStation/cranelift/issues/908
This commit is contained in:
Ujjwal Sharma
2019-08-26 17:07:27 +05:30
committed by Benjamin Bouvier
parent b8fb52446c
commit ec8f72bf20
4 changed files with 24 additions and 14 deletions

View File

@@ -32,12 +32,23 @@ pub fn define(shared: &SettingGroup) -> SettingGroup {
let shared_enable_simd = shared.get_bool("enable_simd");
settings.add_predicate("use_ssse3", predicate!(shared_enable_simd && has_ssse3));
settings.add_predicate("use_sse41", predicate!(shared_enable_simd && has_sse41));
settings.add_predicate("use_ssse3", predicate!(has_ssse3));
settings.add_predicate("use_sse41", predicate!(has_sse41));
settings.add_predicate("use_sse42", predicate!(has_sse41 && has_sse42));
settings.add_predicate(
"use_sse42",
"use_ssse3_simd",
predicate!(shared_enable_simd && has_ssse3),
);
settings.add_predicate(
"use_sse41_simd",
predicate!(shared_enable_simd && has_sse41),
);
settings.add_predicate(
"use_sse42_simd",
predicate!(shared_enable_simd && has_sse41 && has_sse42),
);
settings.add_predicate("use_popcnt", predicate!(has_popcnt && has_sse42));
settings.add_predicate("use_bmi1", predicate!(has_bmi1));
settings.add_predicate("use_lzcnt", predicate!(has_lzcnt));