; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=armv8-eabi | FileCheck %s declare float @llvm.minnum.f32(float, float) declare float @llvm.maxnum.f32(float, float) declare float @llvm.minimum.f32(float, float) declare float @llvm.maximum.f32(float, float) declare <2 x float> @llvm.minnum.v2f32(<2 x float>, <2 x float>) declare <2 x float> @llvm.maxnum.v2f32(<2 x float>, <2 x float>) declare <2 x float> @llvm.minimum.v2f32(<2 x float>, <2 x float>) declare <2 x float> @llvm.maximum.v2f32(<2 x float>, <2 x float>) define float @test_minnum_const_nan(float %x) { ; CHECK-LABEL: test_minnum_const_nan: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call float @llvm.minnum.f32(float %x, float 0x7fff000000000000) ret float %r } define float @test_maxnum_const_nan(float %x) { ; CHECK-LABEL: test_maxnum_const_nan: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call float @llvm.maxnum.f32(float %x, float 0x7fff000000000000) ret float %r } define float @test_maximum_const_nan(float %x) { ; CHECK-LABEL: test_maximum_const_nan: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #0 ; CHECK-NEXT: movt r0, #32760 ; CHECK-NEXT: bx lr %r = call float @llvm.maximum.f32(float %x, float 0x7fff000000000000) ret float %r } define float @test_minimum_const_nan(float %x) { ; CHECK-LABEL: test_minimum_const_nan: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #0 ; CHECK-NEXT: movt r0, #32760 ; CHECK-NEXT: bx lr %r = call float @llvm.minimum.f32(float %x, float 0x7fff000000000000) ret float %r } define float @test_minnum_const_inf(float %x) { ; CHECK-LABEL: test_minnum_const_inf: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI4_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vminnm.f32 s0, s2, s0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI4_0: ; CHECK-NEXT: .long 0x7f800000 @ float +Inf %r = call float @llvm.minnum.f32(float %x, float 0x7ff0000000000000) ret float %r } define float @test_maxnum_const_inf(float %x) { ; CHECK-LABEL: test_maxnum_const_inf: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #0 ; CHECK-NEXT: movt r0, #32640 ; CHECK-NEXT: bx lr %r = call float @llvm.maxnum.f32(float %x, float 0x7ff0000000000000) ret float %r } define float @test_maximum_const_inf(float %x) { ; CHECK-LABEL: test_maximum_const_inf: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI6_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vmax.f32 d0, d1, d0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI6_0: ; CHECK-NEXT: .long 0x7f800000 @ float +Inf %r = call float @llvm.maximum.f32(float %x, float 0x7ff0000000000000) ret float %r } define float @test_minimum_const_inf(float %x) { ; CHECK-LABEL: test_minimum_const_inf: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call float @llvm.minimum.f32(float %x, float 0x7ff0000000000000) ret float %r } define float @test_minnum_const_neg_inf(float %x) { ; CHECK-LABEL: test_minnum_const_neg_inf: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #0 ; CHECK-NEXT: movt r0, #65408 ; CHECK-NEXT: bx lr %r = call float @llvm.minnum.f32(float %x, float 0xfff0000000000000) ret float %r } define float @test_maxnum_const_neg_inf(float %x) { ; CHECK-LABEL: test_maxnum_const_neg_inf: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI9_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vmaxnm.f32 s0, s2, s0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI9_0: ; CHECK-NEXT: .long 0xff800000 @ float -Inf %r = call float @llvm.maxnum.f32(float %x, float 0xfff0000000000000) ret float %r } define float @test_maximum_const_neg_inf(float %x) { ; CHECK-LABEL: test_maximum_const_neg_inf: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call float @llvm.maximum.f32(float %x, float 0xfff0000000000000) ret float %r } define float @test_minimum_const_neg_inf(float %x) { ; CHECK-LABEL: test_minimum_const_neg_inf: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI11_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vmin.f32 d0, d1, d0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI11_0: ; CHECK-NEXT: .long 0xff800000 @ float -Inf %r = call float @llvm.minimum.f32(float %x, float 0xfff0000000000000) ret float %r } define float @test_minnum_const_inf_nnan(float %x) { ; CHECK-LABEL: test_minnum_const_inf_nnan: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call nnan float @llvm.minnum.f32(float %x, float 0x7ff0000000000000) ret float %r } define float @test_maxnum_const_inf_nnan(float %x) { ; CHECK-LABEL: test_maxnum_const_inf_nnan: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #0 ; CHECK-NEXT: movt r0, #32640 ; CHECK-NEXT: bx lr %r = call nnan float @llvm.maxnum.f32(float %x, float 0x7ff0000000000000) ret float %r } define float @test_maximum_const_inf_nnan(float %x) { ; CHECK-LABEL: test_maximum_const_inf_nnan: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #0 ; CHECK-NEXT: movt r0, #32640 ; CHECK-NEXT: bx lr %r = call nnan float @llvm.maximum.f32(float %x, float 0x7ff0000000000000) ret float %r } define float @test_minimum_const_inf_nnan(float %x) { ; CHECK-LABEL: test_minimum_const_inf_nnan: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call nnan float @llvm.minimum.f32(float %x, float 0x7ff0000000000000) ret float %r } define float @test_minnum_const_inf_nnan_comm(float %x) { ; CHECK-LABEL: test_minnum_const_inf_nnan_comm: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call nnan float @llvm.minnum.f32(float 0x7ff0000000000000, float %x) ret float %r } define float @test_maxnum_const_inf_nnan_comm(float %x) { ; CHECK-LABEL: test_maxnum_const_inf_nnan_comm: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #0 ; CHECK-NEXT: movt r0, #32640 ; CHECK-NEXT: bx lr %r = call nnan float @llvm.maxnum.f32(float 0x7ff0000000000000, float %x) ret float %r } define float @test_maximum_const_inf_nnan_comm(float %x) { ; CHECK-LABEL: test_maximum_const_inf_nnan_comm: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #0 ; CHECK-NEXT: movt r0, #32640 ; CHECK-NEXT: bx lr %r = call nnan float @llvm.maximum.f32(float 0x7ff0000000000000, float %x) ret float %r } define float @test_minimum_const_inf_nnan_comm(float %x) { ; CHECK-LABEL: test_minimum_const_inf_nnan_comm: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call nnan float @llvm.minimum.f32(float 0x7ff0000000000000, float %x) ret float %r } define <2 x float> @test_minnum_const_inf_nnan_comm_vec(<2 x float> %x) { ; CHECK-LABEL: test_minnum_const_inf_nnan_comm_vec: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call nnan <2 x float> @llvm.minnum.v2f32(<2 x float> <float 0x7ff0000000000000, float 0x7ff0000000000000>, <2 x float> %x) ret <2 x float> %r } define <2 x float> @test_maxnum_const_inf_nnan_comm_vec(<2 x float> %x) { ; CHECK-LABEL: test_maxnum_const_inf_nnan_comm_vec: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr d16, .LCPI21_0 ; CHECK-NEXT: vmov r0, r1, d16 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 3 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI21_0: ; CHECK-NEXT: .long 0x7f800000 @ float +Inf ; CHECK-NEXT: .long 0x7f800000 @ float +Inf %r = call nnan <2 x float> @llvm.maxnum.v2f32(<2 x float> <float 0x7ff0000000000000, float 0x7ff0000000000000>, <2 x float> %x) ret <2 x float> %r } define <2 x float> @test_maximum_const_inf_nnan_comm_vec(<2 x float> %x) { ; CHECK-LABEL: test_maximum_const_inf_nnan_comm_vec: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr d16, .LCPI22_0 ; CHECK-NEXT: vmov r0, r1, d16 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 3 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI22_0: ; CHECK-NEXT: .long 0x7f800000 @ float +Inf ; CHECK-NEXT: .long 0x7f800000 @ float +Inf %r = call nnan <2 x float> @llvm.maximum.v2f32(<2 x float> <float 0x7ff0000000000000, float 0x7ff0000000000000>, <2 x float> %x) ret <2 x float> %r } define <2 x float> @test_minimum_const_inf_nnan_comm_vec(<2 x float> %x) { ; CHECK-LABEL: test_minimum_const_inf_nnan_comm_vec: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call nnan <2 x float> @llvm.minimum.v2f32(<2 x float> <float 0x7ff0000000000000, float 0x7ff0000000000000>, <2 x float> %x) ret <2 x float> %r } define float @test_minnum_const_neg_inf_nnan(float %x) { ; CHECK-LABEL: test_minnum_const_neg_inf_nnan: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #0 ; CHECK-NEXT: movt r0, #65408 ; CHECK-NEXT: bx lr %r = call nnan float @llvm.minnum.f32(float %x, float 0xfff0000000000000) ret float %r } define float @test_maxnum_const_neg_inf_nnan(float %x) { ; CHECK-LABEL: test_maxnum_const_neg_inf_nnan: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call nnan float @llvm.maxnum.f32(float %x, float 0xfff0000000000000) ret float %r } define float @test_maximum_const_neg_inf_nnan(float %x) { ; CHECK-LABEL: test_maximum_const_neg_inf_nnan: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call nnan float @llvm.maximum.f32(float %x, float 0xfff0000000000000) ret float %r } define float @test_minimum_const_neg_inf_nnan(float %x) { ; CHECK-LABEL: test_minimum_const_neg_inf_nnan: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #0 ; CHECK-NEXT: movt r0, #65408 ; CHECK-NEXT: bx lr %r = call nnan float @llvm.minimum.f32(float %x, float 0xfff0000000000000) ret float %r } define float @test_minnum_const_max(float %x) { ; CHECK-LABEL: test_minnum_const_max: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI28_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vminnm.f32 s0, s2, s0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI28_0: ; CHECK-NEXT: .long 0x7f7fffff @ float 3.40282347E+38 %r = call float @llvm.minnum.f32(float %x, float 0x47efffffe0000000) ret float %r } define float @test_maxnum_const_max(float %x) { ; CHECK-LABEL: test_maxnum_const_max: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI29_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vmaxnm.f32 s0, s2, s0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI29_0: ; CHECK-NEXT: .long 0x7f7fffff @ float 3.40282347E+38 %r = call float @llvm.maxnum.f32(float %x, float 0x47efffffe0000000) ret float %r } define float @test_maximum_const_max(float %x) { ; CHECK-LABEL: test_maximum_const_max: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI30_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vmax.f32 d0, d1, d0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI30_0: ; CHECK-NEXT: .long 0x7f7fffff @ float 3.40282347E+38 %r = call float @llvm.maximum.f32(float %x, float 0x47efffffe0000000) ret float %r } define float @test_minimum_const_max(float %x) { ; CHECK-LABEL: test_minimum_const_max: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI31_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vmin.f32 d0, d1, d0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI31_0: ; CHECK-NEXT: .long 0x7f7fffff @ float 3.40282347E+38 %r = call float @llvm.minimum.f32(float %x, float 0x47efffffe0000000) ret float %r } define float @test_minnum_const_neg_max(float %x) { ; CHECK-LABEL: test_minnum_const_neg_max: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI32_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vminnm.f32 s0, s2, s0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI32_0: ; CHECK-NEXT: .long 0xff7fffff @ float -3.40282347E+38 %r = call float @llvm.minnum.f32(float %x, float 0xc7efffffe0000000) ret float %r } define float @test_maxnum_const_neg_max(float %x) { ; CHECK-LABEL: test_maxnum_const_neg_max: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI33_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vmaxnm.f32 s0, s2, s0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI33_0: ; CHECK-NEXT: .long 0xff7fffff @ float -3.40282347E+38 %r = call float @llvm.maxnum.f32(float %x, float 0xc7efffffe0000000) ret float %r } define float @test_maximum_const_neg_max(float %x) { ; CHECK-LABEL: test_maximum_const_neg_max: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI34_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vmax.f32 d0, d1, d0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI34_0: ; CHECK-NEXT: .long 0xff7fffff @ float -3.40282347E+38 %r = call float @llvm.maximum.f32(float %x, float 0xc7efffffe0000000) ret float %r } define float @test_minimum_const_neg_max(float %x) { ; CHECK-LABEL: test_minimum_const_neg_max: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI35_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vmin.f32 d0, d1, d0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI35_0: ; CHECK-NEXT: .long 0xff7fffff @ float -3.40282347E+38 %r = call float @llvm.minimum.f32(float %x, float 0xc7efffffe0000000) ret float %r } define float @test_minnum_const_max_ninf(float %x) { ; CHECK-LABEL: test_minnum_const_max_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI36_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vminnm.f32 s0, s2, s0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI36_0: ; CHECK-NEXT: .long 0x7f7fffff @ float 3.40282347E+38 %r = call ninf float @llvm.minnum.f32(float %x, float 0x47efffffe0000000) ret float %r } define float @test_maxnum_const_max_ninf(float %x) { ; CHECK-LABEL: test_maxnum_const_max_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #65535 ; CHECK-NEXT: movt r0, #32639 ; CHECK-NEXT: bx lr %r = call ninf float @llvm.maxnum.f32(float %x, float 0x47efffffe0000000) ret float %r } define float @test_maximum_const_max_ninf(float %x) { ; CHECK-LABEL: test_maximum_const_max_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI38_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vmax.f32 d0, d1, d0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI38_0: ; CHECK-NEXT: .long 0x7f7fffff @ float 3.40282347E+38 %r = call ninf float @llvm.maximum.f32(float %x, float 0x47efffffe0000000) ret float %r } define float @test_minimum_const_max_ninf(float %x) { ; CHECK-LABEL: test_minimum_const_max_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call ninf float @llvm.minimum.f32(float %x, float 0x47efffffe0000000) ret float %r } define float @test_minnum_const_neg_max_ninf(float %x) { ; CHECK-LABEL: test_minnum_const_neg_max_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: mvn r0, #8388608 ; CHECK-NEXT: bx lr %r = call ninf float @llvm.minnum.f32(float %x, float 0xc7efffffe0000000) ret float %r } define float @test_maxnum_const_neg_max_ninf(float %x) { ; CHECK-LABEL: test_maxnum_const_neg_max_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI41_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vmaxnm.f32 s0, s2, s0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI41_0: ; CHECK-NEXT: .long 0xff7fffff @ float -3.40282347E+38 %r = call ninf float @llvm.maxnum.f32(float %x, float 0xc7efffffe0000000) ret float %r } define float @test_maximum_const_neg_max_ninf(float %x) { ; CHECK-LABEL: test_maximum_const_neg_max_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call ninf float @llvm.maximum.f32(float %x, float 0xc7efffffe0000000) ret float %r } define float @test_minimum_const_neg_max_ninf(float %x) { ; CHECK-LABEL: test_minimum_const_neg_max_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: vldr s0, .LCPI43_0 ; CHECK-NEXT: vmov s2, r0 ; CHECK-NEXT: vmin.f32 d0, d1, d0 ; CHECK-NEXT: vmov r0, s0 ; CHECK-NEXT: bx lr ; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: @ %bb.1: ; CHECK-NEXT: .LCPI43_0: ; CHECK-NEXT: .long 0xff7fffff @ float -3.40282347E+38 %r = call ninf float @llvm.minimum.f32(float %x, float 0xc7efffffe0000000) ret float %r } define float @test_minnum_const_max_nnan_ninf(float %x) { ; CHECK-LABEL: test_minnum_const_max_nnan_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call nnan ninf float @llvm.minnum.f32(float %x, float 0x47efffffe0000000) ret float %r } define float @test_maxnum_const_max_nnan_ninf(float %x) { ; CHECK-LABEL: test_maxnum_const_max_nnan_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #65535 ; CHECK-NEXT: movt r0, #32639 ; CHECK-NEXT: bx lr %r = call nnan ninf float @llvm.maxnum.f32(float %x, float 0x47efffffe0000000) ret float %r } define float @test_maximum_const_max_nnan_ninf(float %x) { ; CHECK-LABEL: test_maximum_const_max_nnan_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: movw r0, #65535 ; CHECK-NEXT: movt r0, #32639 ; CHECK-NEXT: bx lr %r = call nnan ninf float @llvm.maximum.f32(float %x, float 0x47efffffe0000000) ret float %r } define float @test_minimum_const_max_nnan_ninf(float %x) { ; CHECK-LABEL: test_minimum_const_max_nnan_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call nnan ninf float @llvm.minimum.f32(float %x, float 0x47efffffe0000000) ret float %r } define float @test_minnum_const_neg_max_nnan_ninf(float %x) { ; CHECK-LABEL: test_minnum_const_neg_max_nnan_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: mvn r0, #8388608 ; CHECK-NEXT: bx lr %r = call nnan ninf float @llvm.minnum.f32(float %x, float 0xc7efffffe0000000) ret float %r } define float @test_maxnum_const_neg_max_nnan_ninf(float %x) { ; CHECK-LABEL: test_maxnum_const_neg_max_nnan_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call nnan ninf float @llvm.maxnum.f32(float %x, float 0xc7efffffe0000000) ret float %r } define float @test_maximum_const_neg_max_nnan_ninf(float %x) { ; CHECK-LABEL: test_maximum_const_neg_max_nnan_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: bx lr %r = call nnan ninf float @llvm.maximum.f32(float %x, float 0xc7efffffe0000000) ret float %r } define float @test_minimum_const_neg_max_nnan_ninf(float %x) { ; CHECK-LABEL: test_minimum_const_neg_max_nnan_ninf: ; CHECK: @ %bb.0: ; CHECK-NEXT: mvn r0, #8388608 ; CHECK-NEXT: bx lr %r = call nnan ninf float @llvm.minimum.f32(float %x, float 0xc7efffffe0000000) ret float %r }