diff options
| -rw-r--r-- | src/tools/miri/src/intrinsics/atomic.rs (renamed from src/tools/miri/src/shims/intrinsics/atomic.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/src/intrinsics/mod.rs (renamed from src/tools/miri/src/shims/intrinsics/mod.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/src/intrinsics/simd.rs (renamed from src/tools/miri/src/shims/intrinsics/simd.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/src/lib.rs | 3 | ||||
| -rw-r--r-- | src/tools/miri/src/shims/foreign_items.rs | 60 | ||||
| -rw-r--r-- | src/tools/miri/src/shims/mod.rs | 1 | ||||
| -rw-r--r-- | src/tools/miri/tests/fail/intrinsics/intrinsic_target_feature.rs (renamed from src/tools/miri/tests/fail/shims/intrinsic_target_feature.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/fail/intrinsics/intrinsic_target_feature.stderr (renamed from src/tools/miri/tests/fail/shims/intrinsic_target_feature.stderr) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/integers.rs (renamed from src/tools/miri/tests/pass/ints.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/intrinsics/integer.rs (renamed from src/tools/miri/tests/pass/intrinsics-integer.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/intrinsics/intrinsics.rs (renamed from src/tools/miri/tests/pass/intrinsics.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/intrinsics/portable-simd-ptrs.rs (renamed from src/tools/miri/tests/pass/portable-simd-ptrs.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/intrinsics/portable-simd.rs (renamed from src/tools/miri/tests/pass/portable-simd.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/intrinsics/volatile.rs (renamed from src/tools/miri/tests/pass/volatile.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/shims/available-parallelism-miri-num-cpus.rs (renamed from src/tools/miri/tests/pass/available-parallelism-miri-num-cpus.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/shims/available-parallelism.rs (renamed from src/tools/miri/tests/pass/available-parallelism.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/shims/x86/intrinsics-x86-aes-vaes.rs (renamed from src/tools/miri/tests/pass/intrinsics-x86-aes-vaes.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx.rs (renamed from src/tools/miri/tests/pass/intrinsics-x86-avx.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx2.rs (renamed from src/tools/miri/tests/pass/intrinsics-x86-avx2.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx512.rs (renamed from src/tools/miri/tests/pass/intrinsics-x86-avx512.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/shims/x86/intrinsics-x86-pause-without-sse2.rs (renamed from src/tools/miri/tests/pass/intrinsics-x86-pause-without-sse2.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/shims/x86/intrinsics-x86-sse.rs (renamed from src/tools/miri/tests/pass/intrinsics-x86-sse.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/shims/x86/intrinsics-x86-sse2.rs (renamed from src/tools/miri/tests/pass/intrinsics-x86-sse2.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/shims/x86/intrinsics-x86-sse3-ssse3.rs (renamed from src/tools/miri/tests/pass/intrinsics-x86-sse3-ssse3.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/shims/x86/intrinsics-x86-sse41.rs (renamed from src/tools/miri/tests/pass/intrinsics-x86-sse41.rs) | 0 | ||||
| -rw-r--r-- | src/tools/miri/tests/pass/shims/x86/intrinsics-x86.rs (renamed from src/tools/miri/tests/pass/intrinsics-x86.rs) | 0 |
26 files changed, 32 insertions, 32 deletions
diff --git a/src/tools/miri/src/shims/intrinsics/atomic.rs b/src/tools/miri/src/intrinsics/atomic.rs index 865886a7fc1..865886a7fc1 100644 --- a/src/tools/miri/src/shims/intrinsics/atomic.rs +++ b/src/tools/miri/src/intrinsics/atomic.rs diff --git a/src/tools/miri/src/shims/intrinsics/mod.rs b/src/tools/miri/src/intrinsics/mod.rs index a7ba4fd7f9e..a7ba4fd7f9e 100644 --- a/src/tools/miri/src/shims/intrinsics/mod.rs +++ b/src/tools/miri/src/intrinsics/mod.rs diff --git a/src/tools/miri/src/shims/intrinsics/simd.rs b/src/tools/miri/src/intrinsics/simd.rs index e6d6f72404e..e6d6f72404e 100644 --- a/src/tools/miri/src/shims/intrinsics/simd.rs +++ b/src/tools/miri/src/intrinsics/simd.rs diff --git a/src/tools/miri/src/lib.rs b/src/tools/miri/src/lib.rs index f47c84842b1..f01c2da25d9 100644 --- a/src/tools/miri/src/lib.rs +++ b/src/tools/miri/src/lib.rs @@ -79,6 +79,7 @@ mod concurrency; mod diagnostics; mod eval; mod helpers; +mod intrinsics; mod machine; mod mono_hash_map; mod operator; @@ -95,9 +96,9 @@ pub use rustc_const_eval::interpret::*; #[doc(no_inline)] pub use rustc_const_eval::interpret::{self, AllocMap, PlaceTy, Provenance as _}; +pub use crate::intrinsics::EvalContextExt as _; pub use crate::shims::env::{EnvVars, EvalContextExt as _}; pub use crate::shims::foreign_items::{DynSym, EvalContextExt as _}; -pub use crate::shims::intrinsics::EvalContextExt as _; pub use crate::shims::os_str::EvalContextExt as _; pub use crate::shims::panic::{CatchUnwindData, EvalContextExt as _}; pub use crate::shims::time::EvalContextExt as _; diff --git a/src/tools/miri/src/shims/foreign_items.rs b/src/tools/miri/src/shims/foreign_items.rs index 4b96ff18b74..6a12180b836 100644 --- a/src/tools/miri/src/shims/foreign_items.rs +++ b/src/tools/miri/src/shims/foreign_items.rs @@ -893,36 +893,6 @@ trait EvalContextExtPriv<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> { throw_unsup_format!("unsupported `llvm.prefetch` type argument: {}", ty); } } - // FIXME: Move these to an `arm` submodule. - "llvm.aarch64.isb" if this.tcx.sess.target.arch == "aarch64" => { - let [arg] = this.check_shim(abi, Abi::Unadjusted, link_name, args)?; - let arg = this.read_scalar(arg)?.to_i32()?; - match arg { - // SY ("full system scope") - 15 => { - this.yield_active_thread(); - } - _ => { - throw_unsup_format!("unsupported llvm.aarch64.isb argument {}", arg); - } - } - } - "llvm.arm.hint" if this.tcx.sess.target.arch == "arm" => { - let [arg] = this.check_shim(abi, Abi::Unadjusted, link_name, args)?; - let arg = this.read_scalar(arg)?.to_i32()?; - // Note that different arguments might have different target feature requirements. - match arg { - // YIELD - 1 => { - this.expect_target_feature_for_intrinsic(link_name, "v6")?; - this.yield_active_thread(); - } - _ => { - throw_unsup_format!("unsupported llvm.arm.hint argument {}", arg); - } - } - } - // Used to implement the x86 `_mm{,256,512}_popcnt_epi{8,16,32,64}` and wasm // `{i,u}8x16_popcnt` functions. name if name.starts_with("llvm.ctpop.v") => { @@ -946,6 +916,7 @@ trait EvalContextExtPriv<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> { } } + // Target-specific shims name if name.starts_with("llvm.x86.") && (this.tcx.sess.target.arch == "x86" || this.tcx.sess.target.arch == "x86_64") => @@ -954,6 +925,35 @@ trait EvalContextExtPriv<'mir, 'tcx: 'mir>: crate::MiriInterpCxExt<'mir, 'tcx> { this, link_name, abi, args, dest, ); } + // FIXME: Move these to an `arm` submodule. + "llvm.aarch64.isb" if this.tcx.sess.target.arch == "aarch64" => { + let [arg] = this.check_shim(abi, Abi::Unadjusted, link_name, args)?; + let arg = this.read_scalar(arg)?.to_i32()?; + match arg { + // SY ("full system scope") + 15 => { + this.yield_active_thread(); + } + _ => { + throw_unsup_format!("unsupported llvm.aarch64.isb argument {}", arg); + } + } + } + "llvm.arm.hint" if this.tcx.sess.target.arch == "arm" => { + let [arg] = this.check_shim(abi, Abi::Unadjusted, link_name, args)?; + let arg = this.read_scalar(arg)?.to_i32()?; + // Note that different arguments might have different target feature requirements. + match arg { + // YIELD + 1 => { + this.expect_target_feature_for_intrinsic(link_name, "v6")?; + this.yield_active_thread(); + } + _ => { + throw_unsup_format!("unsupported llvm.arm.hint argument {}", arg); + } + } + } // Platform-specific shims _ => diff --git a/src/tools/miri/src/shims/mod.rs b/src/tools/miri/src/shims/mod.rs index 85c9a202f7d..ab5a8c5877e 100644 --- a/src/tools/miri/src/shims/mod.rs +++ b/src/tools/miri/src/shims/mod.rs @@ -5,7 +5,6 @@ mod backtrace; #[cfg(target_os = "linux")] pub mod ffi_support; pub mod foreign_items; -pub mod intrinsics; pub mod unix; pub mod windows; mod x86; diff --git a/src/tools/miri/tests/fail/shims/intrinsic_target_feature.rs b/src/tools/miri/tests/fail/intrinsics/intrinsic_target_feature.rs index 9263ad381d1..9263ad381d1 100644 --- a/src/tools/miri/tests/fail/shims/intrinsic_target_feature.rs +++ b/src/tools/miri/tests/fail/intrinsics/intrinsic_target_feature.rs diff --git a/src/tools/miri/tests/fail/shims/intrinsic_target_feature.stderr b/src/tools/miri/tests/fail/intrinsics/intrinsic_target_feature.stderr index 8e83d20854f..8e83d20854f 100644 --- a/src/tools/miri/tests/fail/shims/intrinsic_target_feature.stderr +++ b/src/tools/miri/tests/fail/intrinsics/intrinsic_target_feature.stderr diff --git a/src/tools/miri/tests/pass/ints.rs b/src/tools/miri/tests/pass/integers.rs index c04c6921f3c..c04c6921f3c 100644 --- a/src/tools/miri/tests/pass/ints.rs +++ b/src/tools/miri/tests/pass/integers.rs diff --git a/src/tools/miri/tests/pass/intrinsics-integer.rs b/src/tools/miri/tests/pass/intrinsics/integer.rs index 13e7bd8e1b9..13e7bd8e1b9 100644 --- a/src/tools/miri/tests/pass/intrinsics-integer.rs +++ b/src/tools/miri/tests/pass/intrinsics/integer.rs diff --git a/src/tools/miri/tests/pass/intrinsics.rs b/src/tools/miri/tests/pass/intrinsics/intrinsics.rs index 0dda5aadce2..0dda5aadce2 100644 --- a/src/tools/miri/tests/pass/intrinsics.rs +++ b/src/tools/miri/tests/pass/intrinsics/intrinsics.rs diff --git a/src/tools/miri/tests/pass/portable-simd-ptrs.rs b/src/tools/miri/tests/pass/intrinsics/portable-simd-ptrs.rs index 096ec78da1a..096ec78da1a 100644 --- a/src/tools/miri/tests/pass/portable-simd-ptrs.rs +++ b/src/tools/miri/tests/pass/intrinsics/portable-simd-ptrs.rs diff --git a/src/tools/miri/tests/pass/portable-simd.rs b/src/tools/miri/tests/pass/intrinsics/portable-simd.rs index 1fc713d48dc..1fc713d48dc 100644 --- a/src/tools/miri/tests/pass/portable-simd.rs +++ b/src/tools/miri/tests/pass/intrinsics/portable-simd.rs diff --git a/src/tools/miri/tests/pass/volatile.rs b/src/tools/miri/tests/pass/intrinsics/volatile.rs index c9799801455..c9799801455 100644 --- a/src/tools/miri/tests/pass/volatile.rs +++ b/src/tools/miri/tests/pass/intrinsics/volatile.rs diff --git a/src/tools/miri/tests/pass/available-parallelism-miri-num-cpus.rs b/src/tools/miri/tests/pass/shims/available-parallelism-miri-num-cpus.rs index 137fa510249..137fa510249 100644 --- a/src/tools/miri/tests/pass/available-parallelism-miri-num-cpus.rs +++ b/src/tools/miri/tests/pass/shims/available-parallelism-miri-num-cpus.rs diff --git a/src/tools/miri/tests/pass/available-parallelism.rs b/src/tools/miri/tests/pass/shims/available-parallelism.rs index 77fb78424ba..77fb78424ba 100644 --- a/src/tools/miri/tests/pass/available-parallelism.rs +++ b/src/tools/miri/tests/pass/shims/available-parallelism.rs diff --git a/src/tools/miri/tests/pass/intrinsics-x86-aes-vaes.rs b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-aes-vaes.rs index 7363c753617..7363c753617 100644 --- a/src/tools/miri/tests/pass/intrinsics-x86-aes-vaes.rs +++ b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-aes-vaes.rs diff --git a/src/tools/miri/tests/pass/intrinsics-x86-avx.rs b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx.rs index 7d43cc596ae..7d43cc596ae 100644 --- a/src/tools/miri/tests/pass/intrinsics-x86-avx.rs +++ b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx.rs diff --git a/src/tools/miri/tests/pass/intrinsics-x86-avx2.rs b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx2.rs index 80d125bb856..80d125bb856 100644 --- a/src/tools/miri/tests/pass/intrinsics-x86-avx2.rs +++ b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx2.rs diff --git a/src/tools/miri/tests/pass/intrinsics-x86-avx512.rs b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx512.rs index 66bfcb20f1c..66bfcb20f1c 100644 --- a/src/tools/miri/tests/pass/intrinsics-x86-avx512.rs +++ b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx512.rs diff --git a/src/tools/miri/tests/pass/intrinsics-x86-pause-without-sse2.rs b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-pause-without-sse2.rs index c8b92fd5458..c8b92fd5458 100644 --- a/src/tools/miri/tests/pass/intrinsics-x86-pause-without-sse2.rs +++ b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-pause-without-sse2.rs diff --git a/src/tools/miri/tests/pass/intrinsics-x86-sse.rs b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-sse.rs index a62a5ee3781..a62a5ee3781 100644 --- a/src/tools/miri/tests/pass/intrinsics-x86-sse.rs +++ b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-sse.rs diff --git a/src/tools/miri/tests/pass/intrinsics-x86-sse2.rs b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-sse2.rs index e0088b9eb24..e0088b9eb24 100644 --- a/src/tools/miri/tests/pass/intrinsics-x86-sse2.rs +++ b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-sse2.rs diff --git a/src/tools/miri/tests/pass/intrinsics-x86-sse3-ssse3.rs b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-sse3-ssse3.rs index 7566be4431b..7566be4431b 100644 --- a/src/tools/miri/tests/pass/intrinsics-x86-sse3-ssse3.rs +++ b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-sse3-ssse3.rs diff --git a/src/tools/miri/tests/pass/intrinsics-x86-sse41.rs b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-sse41.rs index 06607f3fd59..06607f3fd59 100644 --- a/src/tools/miri/tests/pass/intrinsics-x86-sse41.rs +++ b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-sse41.rs diff --git a/src/tools/miri/tests/pass/intrinsics-x86.rs b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86.rs index 90bcdba4353..90bcdba4353 100644 --- a/src/tools/miri/tests/pass/intrinsics-x86.rs +++ b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86.rs |
