| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | |
| ; RUN: llc -mtriple=arm-eabihf -mattr=+neon < %s | FileCheck -check-prefixes=CHECK-NO_NEON %s | |
| ; RUN: llc -mtriple=arm-eabihf -mattr=+neon,+neonfp < %s | FileCheck -check-prefixes=CHECK-NEON %s | |
| define float @max_f32(float, float) { | |
| ; CHECK-NO_NEON-LABEL: max_f32: | |
| ; CHECK-NO_NEON: @ %bb.0: | |
| ; CHECK-NO_NEON-NEXT: vmov.f32 s2, s1 | |
| ; CHECK-NO_NEON-NEXT: @ kill: def $s0 killed $s0 def $d0 | |
| ; CHECK-NO_NEON-NEXT: vmax.f32 d0, d1, d0 | |
| ; CHECK-NO_NEON-NEXT: @ kill: def $s0 killed $s0 killed $d0 | |
| ; CHECK-NO_NEON-NEXT: mov pc, lr | |
| ; | |
| ; CHECK-NEON-LABEL: max_f32: | |
| ; CHECK-NEON: @ %bb.0: | |
| ; CHECK-NEON-NEXT: vmov.f32 s2, s1 | |
| ; CHECK-NEON-NEXT: @ kill: def $s0 killed $s0 def $d0 | |
| ; CHECK-NEON-NEXT: vmax.f32 d0, d1, d0 | |
| ; CHECK-NEON-NEXT: @ kill: def $s0 killed $s0 killed $d0 | |
| ; CHECK-NEON-NEXT: mov pc, lr | |
| %3 = call nnan float @llvm.maxnum.f32(float %1, float %0) | |
| ret float %3 | |
| } | |
| declare float @llvm.maxnum.f32(float, float) #1 | |
| define float @min_f32(float, float) { | |
| ; CHECK-NO_NEON-LABEL: min_f32: | |
| ; CHECK-NO_NEON: @ %bb.0: | |
| ; CHECK-NO_NEON-NEXT: vmov.f32 s2, s1 | |
| ; CHECK-NO_NEON-NEXT: @ kill: def $s0 killed $s0 def $d0 | |
| ; CHECK-NO_NEON-NEXT: vmin.f32 d0, d1, d0 | |
| ; CHECK-NO_NEON-NEXT: @ kill: def $s0 killed $s0 killed $d0 | |
| ; CHECK-NO_NEON-NEXT: mov pc, lr | |
| ; | |
| ; CHECK-NEON-LABEL: min_f32: | |
| ; CHECK-NEON: @ %bb.0: | |
| ; CHECK-NEON-NEXT: vmov.f32 s2, s1 | |
| ; CHECK-NEON-NEXT: @ kill: def $s0 killed $s0 def $d0 | |
| ; CHECK-NEON-NEXT: vmin.f32 d0, d1, d0 | |
| ; CHECK-NEON-NEXT: @ kill: def $s0 killed $s0 killed $d0 | |
| ; CHECK-NEON-NEXT: mov pc, lr | |
| %3 = call nnan float @llvm.minnum.f32(float %1, float %0) | |
| ret float %3 | |
| } | |
| declare float @llvm.minnum.f32(float, float) #1 | |