diff --git a/src/interpreter/terminator/intrinsics.rs b/src/interpreter/terminator/intrinsics.rs index 5fd96426b798..dbf99cad52dc 100644 --- a/src/interpreter/terminator/intrinsics.rs +++ b/src/interpreter/terminator/intrinsics.rs @@ -75,6 +75,20 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> { } } + "atomic_load" | + "volatile_load" => { + let ty = substs.type_at(0); + let ptr = args_ptrs[0].read_ptr(&self.memory)?; + self.write_value(Value::ByRef(ptr), dest, ty)?; + } + + "atomic_store" | + "volatile_store" => { + let ty = substs.type_at(0); + let dest = args_ptrs[0].read_ptr(&self.memory)?; + self.write_value_to_ptr(args_ptrs[1], dest, ty)?; + } + "breakpoint" => unimplemented!(), // halt miri "copy" | @@ -246,18 +260,6 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> { self.memory.mark_definedness(dest, size, false)?; } - "volatile_load" => { - let ty = substs.type_at(0); - let ptr = args_ptrs[0].read_ptr(&self.memory)?; - self.write_value(Value::ByRef(ptr), dest, ty)?; - } - - "volatile_store" => { - let ty = substs.type_at(0); - let dest = args_ptrs[0].read_ptr(&self.memory)?; - self.write_value_to_ptr(args_ptrs[1], dest, ty)?; - } - name => return Err(EvalError::Unimplemented(format!("unimplemented intrinsic: {}", name))), }