Cranelift: ensure ISA level needed for SIMD is present when SIMD is enabled. (#3816)

Addresses #3809: when we are asked to create a Cranelift backend with
shared flags that indicate support for SIMD, we should check that the
ISA level needed for our SIMD lowerings is present.
This commit is contained in:
Chris Fallin
2022-02-16 17:29:30 -08:00
committed by GitHub
parent ef17a36852
commit 1c014d129a
55 changed files with 172 additions and 84 deletions

View File

@@ -11,7 +11,9 @@ use cranelift_object::*;
fn error_on_incompatible_sig_in_declare_function() {
let flag_builder = settings::builder();
let isa_builder = cranelift_codegen::isa::lookup_by_name("x86_64-unknown-linux-gnu").unwrap();
let isa = isa_builder.finish(settings::Flags::new(flag_builder));
let isa = isa_builder
.finish(settings::Flags::new(flag_builder))
.unwrap();
let mut module =
ObjectModule::new(ObjectBuilder::new(isa, "foo", default_libcall_names()).unwrap());
let mut sig = Signature {
@@ -60,7 +62,9 @@ fn define_simple_function(module: &mut ObjectModule) -> FuncId {
fn panic_on_define_after_finalize() {
let flag_builder = settings::builder();
let isa_builder = cranelift_codegen::isa::lookup_by_name("x86_64-unknown-linux-gnu").unwrap();
let isa = isa_builder.finish(settings::Flags::new(flag_builder));
let isa = isa_builder
.finish(settings::Flags::new(flag_builder))
.unwrap();
let mut module =
ObjectModule::new(ObjectBuilder::new(isa, "foo", default_libcall_names()).unwrap());
@@ -145,7 +149,9 @@ fn switch_error() {
fn libcall_function() {
let flag_builder = settings::builder();
let isa_builder = cranelift_codegen::isa::lookup_by_name("x86_64-unknown-linux-gnu").unwrap();
let isa = isa_builder.finish(settings::Flags::new(flag_builder));
let isa = isa_builder
.finish(settings::Flags::new(flag_builder))
.unwrap();
let mut module =
ObjectModule::new(ObjectBuilder::new(isa, "foo", default_libcall_names()).unwrap());
@@ -199,7 +205,9 @@ fn libcall_function() {
fn reject_nul_byte_symbol_for_func() {
let flag_builder = settings::builder();
let isa_builder = cranelift_codegen::isa::lookup_by_name("x86_64-unknown-linux-gnu").unwrap();
let isa = isa_builder.finish(settings::Flags::new(flag_builder));
let isa = isa_builder
.finish(settings::Flags::new(flag_builder))
.unwrap();
let mut module =
ObjectModule::new(ObjectBuilder::new(isa, "foo", default_libcall_names()).unwrap());
@@ -221,7 +229,9 @@ fn reject_nul_byte_symbol_for_func() {
fn reject_nul_byte_symbol_for_data() {
let flag_builder = settings::builder();
let isa_builder = cranelift_codegen::isa::lookup_by_name("x86_64-unknown-linux-gnu").unwrap();
let isa = isa_builder.finish(settings::Flags::new(flag_builder));
let isa = isa_builder
.finish(settings::Flags::new(flag_builder))
.unwrap();
let mut module =
ObjectModule::new(ObjectBuilder::new(isa, "foo", default_libcall_names()).unwrap());