| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
| ; RUN: llc < %s -mtriple=armv7 | FileCheck %s |
| |
| define double @maximum_double(double %x, double %y) nounwind { |
| ; CHECK-LABEL: maximum_double: |
| ; CHECK: @ %bb.0: |
| ; CHECK-NEXT: vmov d16, r0, r1 |
| ; CHECK-NEXT: vmov d17, r2, r3 |
| ; CHECK-NEXT: vcvt.f32.f64 s0, d16 |
| ; CHECK-NEXT: vmov r0, s0 |
| ; CHECK-NEXT: vcmp.f64 d16, d17 |
| ; CHECK-NEXT: vorr d18, d17, d17 |
| ; CHECK-NEXT: clz r0, r0 |
| ; CHECK-NEXT: lsrs r0, r0, #5 |
| ; CHECK-NEXT: vmovne.f64 d18, d16 |
| ; CHECK-NEXT: vmrs APSR_nzcv, fpscr |
| ; CHECK-NEXT: vmovgt.f64 d17, d16 |
| ; CHECK-NEXT: vldr d16, .LCPI0_0 |
| ; CHECK-NEXT: vmovvs.f64 d17, d16 |
| ; CHECK-NEXT: vmoveq.f64 d17, d18 |
| ; CHECK-NEXT: vmov r0, r1, d17 |
| ; CHECK-NEXT: bx lr |
| ; CHECK-NEXT: .p2align 3 |
| ; CHECK-NEXT: @ %bb.1: |
| ; CHECK-NEXT: .LCPI0_0: |
| ; CHECK-NEXT: .long 0 @ double NaN |
| ; CHECK-NEXT: .long 2146959360 |
| %res = call double @llvm.maximum(double %x, double %y) |
| ret double %res |
| } |