| #![crate_type = "lib"] |
| #![feature(core_intrinsics)] |
| |
| use std::intrinsics::*; |
| |
| // CHECK-LABEL: @unchecked_add_signed |
| #[no_mangle] |
| pub unsafe fn unchecked_add_signed(a: i32, b: i32) -> i32 { |
| // CHECK: add nsw |
| unchecked_add(a, b) |
| } |
| |
| // CHECK-LABEL: @unchecked_add_unsigned |
| #[no_mangle] |
| pub unsafe fn unchecked_add_unsigned(a: u32, b: u32) -> u32 { |
| // CHECK: add nuw |
| unchecked_add(a, b) |
| } |
| |
| // CHECK-LABEL: @unchecked_sub_signed |
| #[no_mangle] |
| pub unsafe fn unchecked_sub_signed(a: i32, b: i32) -> i32 { |
| // CHECK: sub nsw |
| unchecked_sub(a, b) |
| } |
| |
| // CHECK-LABEL: @unchecked_sub_unsigned |
| #[no_mangle] |
| pub unsafe fn unchecked_sub_unsigned(a: u32, b: u32) -> u32 { |
| // CHECK: sub nuw |
| unchecked_sub(a, b) |
| } |
| |
| // CHECK-LABEL: @unchecked_mul_signed |
| #[no_mangle] |
| pub unsafe fn unchecked_mul_signed(a: i32, b: i32) -> i32 { |
| // CHECK: mul nsw |
| unchecked_mul(a, b) |
| } |
| |
| // CHECK-LABEL: @unchecked_mul_unsigned |
| #[no_mangle] |
| pub unsafe fn unchecked_mul_unsigned(a: u32, b: u32) -> u32 { |
| // CHECK: mul nuw |
| unchecked_mul(a, b) |
| } |