| ; 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 | |
| } |