| // skip-filecheck |
| //@ compile-flags: --crate-type=lib |
| #![feature(custom_mir, core_intrinsics)] |
| use std::intrinsics::mir::*; |
| |
| // EMIT_MIR operators.f.built.after.mir |
| #[custom_mir(dialect = "built")] |
| pub fn f(a: i32, b: bool) -> i32 { |
| mir! { |
| { |
| a = -a; |
| b = !b; |
| a = a + a; |
| a = a - a; |
| a = a * a; |
| a = a / a; |
| a = a % a; |
| a = a ^ a; |
| a = a & a; |
| a = a << a; |
| a = a >> a; |
| b = a == a; |
| b = a < a; |
| b = a <= a; |
| b = a >= a; |
| b = a > a; |
| let res = Checked(a + a); |
| b = res.1; |
| a = res.0; |
| RET = a; |
| Return() |
| } |
| } |
| } |
| |
| // EMIT_MIR operators.g.runtime.after.mir |
| #[custom_mir(dialect = "runtime")] |
| pub fn g(p: *const i32, q: *const [i32]) { |
| mir! { |
| { |
| let a = PtrMetadata(p); |
| let b = PtrMetadata(q); |
| Return() |
| } |
| } |
| } |