| // Floating-point clamp is designed to be implementable as max+min, |
| // so check to make sure that's what it's actually emitting. |
| |
| //@ assembly-output: emit-asm |
| // Set the base cpu explicitly, in case the default has been changed. |
| //@ compile-flags: --crate-type=lib -O -C llvm-args=-x86-asm-syntax=intel -C target-cpu=x86-64 |
| //@ only-x86_64 |
| //@ ignore-sgx |
| |
| // CHECK-LABEL: clamp_demo: |
| #[no_mangle] |
| pub fn clamp_demo(a: f32, x: f32, y: f32) -> f32 { |
| // CHECK: maxss |
| // CHECK: minss |
| a.clamp(x, y) |
| } |
| |
| // CHECK-LABEL: clamp12_demo: |
| #[no_mangle] |
| pub fn clamp12_demo(a: f32) -> f32 { |
| // CHECK: movss xmm1 |
| // CHECK-NEXT: maxss xmm1, xmm0 |
| // CHECK-NEXT: movss xmm0 |
| // CHECK-NEXT: minss xmm0, xmm1 |
| // CHECK: ret |
| a.clamp(1.0, 2.0) |
| } |