599 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=armv8-eabi | FileCheck %s3 4declare float @llvm.minnum.f32(float, float)5declare float @llvm.maxnum.f32(float, float)6declare float @llvm.minimum.f32(float, float)7declare float @llvm.maximum.f32(float, float)8declare <2 x float> @llvm.minnum.v2f32(<2 x float>, <2 x float>)9declare <2 x float> @llvm.maxnum.v2f32(<2 x float>, <2 x float>)10declare <2 x float> @llvm.minimum.v2f32(<2 x float>, <2 x float>)11declare <2 x float> @llvm.maximum.v2f32(<2 x float>, <2 x float>)12 13define float @test_minnum_const_nan(float %x) {14; CHECK-LABEL: test_minnum_const_nan:15; CHECK: @ %bb.0:16; CHECK-NEXT: bx lr17 %r = call float @llvm.minnum.f32(float %x, float 0x7fff000000000000)18 ret float %r19}20 21define float @test_maxnum_const_nan(float %x) {22; CHECK-LABEL: test_maxnum_const_nan:23; CHECK: @ %bb.0:24; CHECK-NEXT: bx lr25 %r = call float @llvm.maxnum.f32(float %x, float 0x7fff000000000000)26 ret float %r27}28 29define float @test_maximum_const_nan(float %x) {30; CHECK-LABEL: test_maximum_const_nan:31; CHECK: @ %bb.0:32; CHECK-NEXT: movw r0, #033; CHECK-NEXT: movt r0, #3276034; CHECK-NEXT: bx lr35 %r = call float @llvm.maximum.f32(float %x, float 0x7fff000000000000)36 ret float %r37}38 39define float @test_minimum_const_nan(float %x) {40; CHECK-LABEL: test_minimum_const_nan:41; CHECK: @ %bb.0:42; CHECK-NEXT: movw r0, #043; CHECK-NEXT: movt r0, #3276044; CHECK-NEXT: bx lr45 %r = call float @llvm.minimum.f32(float %x, float 0x7fff000000000000)46 ret float %r47}48 49define float @test_minnum_const_inf(float %x) {50; CHECK-LABEL: test_minnum_const_inf:51; CHECK: @ %bb.0:52; CHECK-NEXT: vldr s0, .LCPI4_053; CHECK-NEXT: vmov s2, r054; CHECK-NEXT: vminnm.f32 s0, s2, s055; CHECK-NEXT: vmov r0, s056; CHECK-NEXT: bx lr57; CHECK-NEXT: .p2align 258; CHECK-NEXT: @ %bb.1:59; CHECK-NEXT: .LCPI4_0:60; CHECK-NEXT: .long 0x7f800000 @ float +Inf61 %r = call float @llvm.minnum.f32(float %x, float 0x7ff0000000000000)62 ret float %r63}64 65define float @test_maxnum_const_inf(float %x) {66; CHECK-LABEL: test_maxnum_const_inf:67; CHECK: @ %bb.0:68; CHECK-NEXT: movw r0, #069; CHECK-NEXT: movt r0, #3264070; CHECK-NEXT: bx lr71 %r = call float @llvm.maxnum.f32(float %x, float 0x7ff0000000000000)72 ret float %r73}74 75define float @test_maximum_const_inf(float %x) {76; CHECK-LABEL: test_maximum_const_inf:77; CHECK: @ %bb.0:78; CHECK-NEXT: vldr s0, .LCPI6_079; CHECK-NEXT: vmov s2, r080; CHECK-NEXT: vmax.f32 d0, d1, d081; CHECK-NEXT: vmov r0, s082; CHECK-NEXT: bx lr83; CHECK-NEXT: .p2align 284; CHECK-NEXT: @ %bb.1:85; CHECK-NEXT: .LCPI6_0:86; CHECK-NEXT: .long 0x7f800000 @ float +Inf87 %r = call float @llvm.maximum.f32(float %x, float 0x7ff0000000000000)88 ret float %r89}90 91define float @test_minimum_const_inf(float %x) {92; CHECK-LABEL: test_minimum_const_inf:93; CHECK: @ %bb.0:94; CHECK-NEXT: bx lr95 %r = call float @llvm.minimum.f32(float %x, float 0x7ff0000000000000)96 ret float %r97}98 99define float @test_minnum_const_neg_inf(float %x) {100; CHECK-LABEL: test_minnum_const_neg_inf:101; CHECK: @ %bb.0:102; CHECK-NEXT: movw r0, #0103; CHECK-NEXT: movt r0, #65408104; CHECK-NEXT: bx lr105 %r = call float @llvm.minnum.f32(float %x, float 0xfff0000000000000)106 ret float %r107}108 109define float @test_maxnum_const_neg_inf(float %x) {110; CHECK-LABEL: test_maxnum_const_neg_inf:111; CHECK: @ %bb.0:112; CHECK-NEXT: vldr s0, .LCPI9_0113; CHECK-NEXT: vmov s2, r0114; CHECK-NEXT: vmaxnm.f32 s0, s2, s0115; CHECK-NEXT: vmov r0, s0116; CHECK-NEXT: bx lr117; CHECK-NEXT: .p2align 2118; CHECK-NEXT: @ %bb.1:119; CHECK-NEXT: .LCPI9_0:120; CHECK-NEXT: .long 0xff800000 @ float -Inf121 %r = call float @llvm.maxnum.f32(float %x, float 0xfff0000000000000)122 ret float %r123}124 125define float @test_maximum_const_neg_inf(float %x) {126; CHECK-LABEL: test_maximum_const_neg_inf:127; CHECK: @ %bb.0:128; CHECK-NEXT: bx lr129 %r = call float @llvm.maximum.f32(float %x, float 0xfff0000000000000)130 ret float %r131}132 133define float @test_minimum_const_neg_inf(float %x) {134; CHECK-LABEL: test_minimum_const_neg_inf:135; CHECK: @ %bb.0:136; CHECK-NEXT: vldr s0, .LCPI11_0137; CHECK-NEXT: vmov s2, r0138; CHECK-NEXT: vmin.f32 d0, d1, d0139; CHECK-NEXT: vmov r0, s0140; CHECK-NEXT: bx lr141; CHECK-NEXT: .p2align 2142; CHECK-NEXT: @ %bb.1:143; CHECK-NEXT: .LCPI11_0:144; CHECK-NEXT: .long 0xff800000 @ float -Inf145 %r = call float @llvm.minimum.f32(float %x, float 0xfff0000000000000)146 ret float %r147}148 149define float @test_minnum_const_inf_nnan(float %x) {150; CHECK-LABEL: test_minnum_const_inf_nnan:151; CHECK: @ %bb.0:152; CHECK-NEXT: bx lr153 %r = call nnan float @llvm.minnum.f32(float %x, float 0x7ff0000000000000)154 ret float %r155}156 157define float @test_maxnum_const_inf_nnan(float %x) {158; CHECK-LABEL: test_maxnum_const_inf_nnan:159; CHECK: @ %bb.0:160; CHECK-NEXT: movw r0, #0161; CHECK-NEXT: movt r0, #32640162; CHECK-NEXT: bx lr163 %r = call nnan float @llvm.maxnum.f32(float %x, float 0x7ff0000000000000)164 ret float %r165}166 167define float @test_maximum_const_inf_nnan(float %x) {168; CHECK-LABEL: test_maximum_const_inf_nnan:169; CHECK: @ %bb.0:170; CHECK-NEXT: movw r0, #0171; CHECK-NEXT: movt r0, #32640172; CHECK-NEXT: bx lr173 %r = call nnan float @llvm.maximum.f32(float %x, float 0x7ff0000000000000)174 ret float %r175}176 177define float @test_minimum_const_inf_nnan(float %x) {178; CHECK-LABEL: test_minimum_const_inf_nnan:179; CHECK: @ %bb.0:180; CHECK-NEXT: bx lr181 %r = call nnan float @llvm.minimum.f32(float %x, float 0x7ff0000000000000)182 ret float %r183}184 185define float @test_minnum_const_inf_nnan_comm(float %x) {186; CHECK-LABEL: test_minnum_const_inf_nnan_comm:187; CHECK: @ %bb.0:188; CHECK-NEXT: bx lr189 %r = call nnan float @llvm.minnum.f32(float 0x7ff0000000000000, float %x)190 ret float %r191}192 193define float @test_maxnum_const_inf_nnan_comm(float %x) {194; CHECK-LABEL: test_maxnum_const_inf_nnan_comm:195; CHECK: @ %bb.0:196; CHECK-NEXT: movw r0, #0197; CHECK-NEXT: movt r0, #32640198; CHECK-NEXT: bx lr199 %r = call nnan float @llvm.maxnum.f32(float 0x7ff0000000000000, float %x)200 ret float %r201}202 203define float @test_maximum_const_inf_nnan_comm(float %x) {204; CHECK-LABEL: test_maximum_const_inf_nnan_comm:205; CHECK: @ %bb.0:206; CHECK-NEXT: movw r0, #0207; CHECK-NEXT: movt r0, #32640208; CHECK-NEXT: bx lr209 %r = call nnan float @llvm.maximum.f32(float 0x7ff0000000000000, float %x)210 ret float %r211}212 213define float @test_minimum_const_inf_nnan_comm(float %x) {214; CHECK-LABEL: test_minimum_const_inf_nnan_comm:215; CHECK: @ %bb.0:216; CHECK-NEXT: bx lr217 %r = call nnan float @llvm.minimum.f32(float 0x7ff0000000000000, float %x)218 ret float %r219}220 221define <2 x float> @test_minnum_const_inf_nnan_comm_vec(<2 x float> %x) {222; CHECK-LABEL: test_minnum_const_inf_nnan_comm_vec:223; CHECK: @ %bb.0:224; CHECK-NEXT: bx lr225 %r = call nnan <2 x float> @llvm.minnum.v2f32(<2 x float> <float 0x7ff0000000000000, float 0x7ff0000000000000>, <2 x float> %x)226 ret <2 x float> %r227}228 229define <2 x float> @test_maxnum_const_inf_nnan_comm_vec(<2 x float> %x) {230; CHECK-LABEL: test_maxnum_const_inf_nnan_comm_vec:231; CHECK: @ %bb.0:232; CHECK-NEXT: vldr d16, .LCPI21_0233; CHECK-NEXT: vmov r0, r1, d16234; CHECK-NEXT: bx lr235; CHECK-NEXT: .p2align 3236; CHECK-NEXT: @ %bb.1:237; CHECK-NEXT: .LCPI21_0:238; CHECK-NEXT: .long 0x7f800000 @ float +Inf239; CHECK-NEXT: .long 0x7f800000 @ float +Inf240 %r = call nnan <2 x float> @llvm.maxnum.v2f32(<2 x float> <float 0x7ff0000000000000, float 0x7ff0000000000000>, <2 x float> %x)241 ret <2 x float> %r242}243 244define <2 x float> @test_maximum_const_inf_nnan_comm_vec(<2 x float> %x) {245; CHECK-LABEL: test_maximum_const_inf_nnan_comm_vec:246; CHECK: @ %bb.0:247; CHECK-NEXT: vldr d16, .LCPI22_0248; CHECK-NEXT: vmov r0, r1, d16249; CHECK-NEXT: bx lr250; CHECK-NEXT: .p2align 3251; CHECK-NEXT: @ %bb.1:252; CHECK-NEXT: .LCPI22_0:253; CHECK-NEXT: .long 0x7f800000 @ float +Inf254; CHECK-NEXT: .long 0x7f800000 @ float +Inf255 %r = call nnan <2 x float> @llvm.maximum.v2f32(<2 x float> <float 0x7ff0000000000000, float 0x7ff0000000000000>, <2 x float> %x)256 ret <2 x float> %r257}258 259define <2 x float> @test_minimum_const_inf_nnan_comm_vec(<2 x float> %x) {260; CHECK-LABEL: test_minimum_const_inf_nnan_comm_vec:261; CHECK: @ %bb.0:262; CHECK-NEXT: bx lr263 %r = call nnan <2 x float> @llvm.minimum.v2f32(<2 x float> <float 0x7ff0000000000000, float 0x7ff0000000000000>, <2 x float> %x)264 ret <2 x float> %r265}266 267define float @test_minnum_const_neg_inf_nnan(float %x) {268; CHECK-LABEL: test_minnum_const_neg_inf_nnan:269; CHECK: @ %bb.0:270; CHECK-NEXT: movw r0, #0271; CHECK-NEXT: movt r0, #65408272; CHECK-NEXT: bx lr273 %r = call nnan float @llvm.minnum.f32(float %x, float 0xfff0000000000000)274 ret float %r275}276 277define float @test_maxnum_const_neg_inf_nnan(float %x) {278; CHECK-LABEL: test_maxnum_const_neg_inf_nnan:279; CHECK: @ %bb.0:280; CHECK-NEXT: bx lr281 %r = call nnan float @llvm.maxnum.f32(float %x, float 0xfff0000000000000)282 ret float %r283}284 285define float @test_maximum_const_neg_inf_nnan(float %x) {286; CHECK-LABEL: test_maximum_const_neg_inf_nnan:287; CHECK: @ %bb.0:288; CHECK-NEXT: bx lr289 %r = call nnan float @llvm.maximum.f32(float %x, float 0xfff0000000000000)290 ret float %r291}292 293define float @test_minimum_const_neg_inf_nnan(float %x) {294; CHECK-LABEL: test_minimum_const_neg_inf_nnan:295; CHECK: @ %bb.0:296; CHECK-NEXT: movw r0, #0297; CHECK-NEXT: movt r0, #65408298; CHECK-NEXT: bx lr299 %r = call nnan float @llvm.minimum.f32(float %x, float 0xfff0000000000000)300 ret float %r301}302 303define float @test_minnum_const_max(float %x) {304; CHECK-LABEL: test_minnum_const_max:305; CHECK: @ %bb.0:306; CHECK-NEXT: vldr s0, .LCPI28_0307; CHECK-NEXT: vmov s2, r0308; CHECK-NEXT: vminnm.f32 s0, s2, s0309; CHECK-NEXT: vmov r0, s0310; CHECK-NEXT: bx lr311; CHECK-NEXT: .p2align 2312; CHECK-NEXT: @ %bb.1:313; CHECK-NEXT: .LCPI28_0:314; CHECK-NEXT: .long 0x7f7fffff @ float 3.40282347E+38315 %r = call float @llvm.minnum.f32(float %x, float 0x47efffffe0000000)316 ret float %r317}318 319define float @test_maxnum_const_max(float %x) {320; CHECK-LABEL: test_maxnum_const_max:321; CHECK: @ %bb.0:322; CHECK-NEXT: vldr s0, .LCPI29_0323; CHECK-NEXT: vmov s2, r0324; CHECK-NEXT: vmaxnm.f32 s0, s2, s0325; CHECK-NEXT: vmov r0, s0326; CHECK-NEXT: bx lr327; CHECK-NEXT: .p2align 2328; CHECK-NEXT: @ %bb.1:329; CHECK-NEXT: .LCPI29_0:330; CHECK-NEXT: .long 0x7f7fffff @ float 3.40282347E+38331 %r = call float @llvm.maxnum.f32(float %x, float 0x47efffffe0000000)332 ret float %r333}334 335define float @test_maximum_const_max(float %x) {336; CHECK-LABEL: test_maximum_const_max:337; CHECK: @ %bb.0:338; CHECK-NEXT: vldr s0, .LCPI30_0339; CHECK-NEXT: vmov s2, r0340; CHECK-NEXT: vmax.f32 d0, d1, d0341; CHECK-NEXT: vmov r0, s0342; CHECK-NEXT: bx lr343; CHECK-NEXT: .p2align 2344; CHECK-NEXT: @ %bb.1:345; CHECK-NEXT: .LCPI30_0:346; CHECK-NEXT: .long 0x7f7fffff @ float 3.40282347E+38347 %r = call float @llvm.maximum.f32(float %x, float 0x47efffffe0000000)348 ret float %r349}350 351define float @test_minimum_const_max(float %x) {352; CHECK-LABEL: test_minimum_const_max:353; CHECK: @ %bb.0:354; CHECK-NEXT: vldr s0, .LCPI31_0355; CHECK-NEXT: vmov s2, r0356; CHECK-NEXT: vmin.f32 d0, d1, d0357; CHECK-NEXT: vmov r0, s0358; CHECK-NEXT: bx lr359; CHECK-NEXT: .p2align 2360; CHECK-NEXT: @ %bb.1:361; CHECK-NEXT: .LCPI31_0:362; CHECK-NEXT: .long 0x7f7fffff @ float 3.40282347E+38363 %r = call float @llvm.minimum.f32(float %x, float 0x47efffffe0000000)364 ret float %r365}366 367define float @test_minnum_const_neg_max(float %x) {368; CHECK-LABEL: test_minnum_const_neg_max:369; CHECK: @ %bb.0:370; CHECK-NEXT: vldr s0, .LCPI32_0371; CHECK-NEXT: vmov s2, r0372; CHECK-NEXT: vminnm.f32 s0, s2, s0373; CHECK-NEXT: vmov r0, s0374; CHECK-NEXT: bx lr375; CHECK-NEXT: .p2align 2376; CHECK-NEXT: @ %bb.1:377; CHECK-NEXT: .LCPI32_0:378; CHECK-NEXT: .long 0xff7fffff @ float -3.40282347E+38379 %r = call float @llvm.minnum.f32(float %x, float 0xc7efffffe0000000)380 ret float %r381}382 383define float @test_maxnum_const_neg_max(float %x) {384; CHECK-LABEL: test_maxnum_const_neg_max:385; CHECK: @ %bb.0:386; CHECK-NEXT: vldr s0, .LCPI33_0387; CHECK-NEXT: vmov s2, r0388; CHECK-NEXT: vmaxnm.f32 s0, s2, s0389; CHECK-NEXT: vmov r0, s0390; CHECK-NEXT: bx lr391; CHECK-NEXT: .p2align 2392; CHECK-NEXT: @ %bb.1:393; CHECK-NEXT: .LCPI33_0:394; CHECK-NEXT: .long 0xff7fffff @ float -3.40282347E+38395 %r = call float @llvm.maxnum.f32(float %x, float 0xc7efffffe0000000)396 ret float %r397}398 399define float @test_maximum_const_neg_max(float %x) {400; CHECK-LABEL: test_maximum_const_neg_max:401; CHECK: @ %bb.0:402; CHECK-NEXT: vldr s0, .LCPI34_0403; CHECK-NEXT: vmov s2, r0404; CHECK-NEXT: vmax.f32 d0, d1, d0405; CHECK-NEXT: vmov r0, s0406; CHECK-NEXT: bx lr407; CHECK-NEXT: .p2align 2408; CHECK-NEXT: @ %bb.1:409; CHECK-NEXT: .LCPI34_0:410; CHECK-NEXT: .long 0xff7fffff @ float -3.40282347E+38411 %r = call float @llvm.maximum.f32(float %x, float 0xc7efffffe0000000)412 ret float %r413}414 415define float @test_minimum_const_neg_max(float %x) {416; CHECK-LABEL: test_minimum_const_neg_max:417; CHECK: @ %bb.0:418; CHECK-NEXT: vldr s0, .LCPI35_0419; CHECK-NEXT: vmov s2, r0420; CHECK-NEXT: vmin.f32 d0, d1, d0421; CHECK-NEXT: vmov r0, s0422; CHECK-NEXT: bx lr423; CHECK-NEXT: .p2align 2424; CHECK-NEXT: @ %bb.1:425; CHECK-NEXT: .LCPI35_0:426; CHECK-NEXT: .long 0xff7fffff @ float -3.40282347E+38427 %r = call float @llvm.minimum.f32(float %x, float 0xc7efffffe0000000)428 ret float %r429}430 431define float @test_minnum_const_max_ninf(float %x) {432; CHECK-LABEL: test_minnum_const_max_ninf:433; CHECK: @ %bb.0:434; CHECK-NEXT: vldr s0, .LCPI36_0435; CHECK-NEXT: vmov s2, r0436; CHECK-NEXT: vminnm.f32 s0, s2, s0437; CHECK-NEXT: vmov r0, s0438; CHECK-NEXT: bx lr439; CHECK-NEXT: .p2align 2440; CHECK-NEXT: @ %bb.1:441; CHECK-NEXT: .LCPI36_0:442; CHECK-NEXT: .long 0x7f7fffff @ float 3.40282347E+38443 %r = call ninf float @llvm.minnum.f32(float %x, float 0x47efffffe0000000)444 ret float %r445}446 447define float @test_maxnum_const_max_ninf(float %x) {448; CHECK-LABEL: test_maxnum_const_max_ninf:449; CHECK: @ %bb.0:450; CHECK-NEXT: movw r0, #65535451; CHECK-NEXT: movt r0, #32639452; CHECK-NEXT: bx lr453 %r = call ninf float @llvm.maxnum.f32(float %x, float 0x47efffffe0000000)454 ret float %r455}456 457define float @test_maximum_const_max_ninf(float %x) {458; CHECK-LABEL: test_maximum_const_max_ninf:459; CHECK: @ %bb.0:460; CHECK-NEXT: vldr s0, .LCPI38_0461; CHECK-NEXT: vmov s2, r0462; CHECK-NEXT: vmax.f32 d0, d1, d0463; CHECK-NEXT: vmov r0, s0464; CHECK-NEXT: bx lr465; CHECK-NEXT: .p2align 2466; CHECK-NEXT: @ %bb.1:467; CHECK-NEXT: .LCPI38_0:468; CHECK-NEXT: .long 0x7f7fffff @ float 3.40282347E+38469 %r = call ninf float @llvm.maximum.f32(float %x, float 0x47efffffe0000000)470 ret float %r471}472 473define float @test_minimum_const_max_ninf(float %x) {474; CHECK-LABEL: test_minimum_const_max_ninf:475; CHECK: @ %bb.0:476; CHECK-NEXT: bx lr477 %r = call ninf float @llvm.minimum.f32(float %x, float 0x47efffffe0000000)478 ret float %r479}480 481define float @test_minnum_const_neg_max_ninf(float %x) {482; CHECK-LABEL: test_minnum_const_neg_max_ninf:483; CHECK: @ %bb.0:484; CHECK-NEXT: mvn r0, #8388608485; CHECK-NEXT: bx lr486 %r = call ninf float @llvm.minnum.f32(float %x, float 0xc7efffffe0000000)487 ret float %r488}489 490define float @test_maxnum_const_neg_max_ninf(float %x) {491; CHECK-LABEL: test_maxnum_const_neg_max_ninf:492; CHECK: @ %bb.0:493; CHECK-NEXT: vldr s0, .LCPI41_0494; CHECK-NEXT: vmov s2, r0495; CHECK-NEXT: vmaxnm.f32 s0, s2, s0496; CHECK-NEXT: vmov r0, s0497; CHECK-NEXT: bx lr498; CHECK-NEXT: .p2align 2499; CHECK-NEXT: @ %bb.1:500; CHECK-NEXT: .LCPI41_0:501; CHECK-NEXT: .long 0xff7fffff @ float -3.40282347E+38502 %r = call ninf float @llvm.maxnum.f32(float %x, float 0xc7efffffe0000000)503 ret float %r504}505 506define float @test_maximum_const_neg_max_ninf(float %x) {507; CHECK-LABEL: test_maximum_const_neg_max_ninf:508; CHECK: @ %bb.0:509; CHECK-NEXT: bx lr510 %r = call ninf float @llvm.maximum.f32(float %x, float 0xc7efffffe0000000)511 ret float %r512}513 514define float @test_minimum_const_neg_max_ninf(float %x) {515; CHECK-LABEL: test_minimum_const_neg_max_ninf:516; CHECK: @ %bb.0:517; CHECK-NEXT: vldr s0, .LCPI43_0518; CHECK-NEXT: vmov s2, r0519; CHECK-NEXT: vmin.f32 d0, d1, d0520; CHECK-NEXT: vmov r0, s0521; CHECK-NEXT: bx lr522; CHECK-NEXT: .p2align 2523; CHECK-NEXT: @ %bb.1:524; CHECK-NEXT: .LCPI43_0:525; CHECK-NEXT: .long 0xff7fffff @ float -3.40282347E+38526 %r = call ninf float @llvm.minimum.f32(float %x, float 0xc7efffffe0000000)527 ret float %r528}529 530define float @test_minnum_const_max_nnan_ninf(float %x) {531; CHECK-LABEL: test_minnum_const_max_nnan_ninf:532; CHECK: @ %bb.0:533; CHECK-NEXT: bx lr534 %r = call nnan ninf float @llvm.minnum.f32(float %x, float 0x47efffffe0000000)535 ret float %r536}537 538define float @test_maxnum_const_max_nnan_ninf(float %x) {539; CHECK-LABEL: test_maxnum_const_max_nnan_ninf:540; CHECK: @ %bb.0:541; CHECK-NEXT: movw r0, #65535542; CHECK-NEXT: movt r0, #32639543; CHECK-NEXT: bx lr544 %r = call nnan ninf float @llvm.maxnum.f32(float %x, float 0x47efffffe0000000)545 ret float %r546}547 548define float @test_maximum_const_max_nnan_ninf(float %x) {549; CHECK-LABEL: test_maximum_const_max_nnan_ninf:550; CHECK: @ %bb.0:551; CHECK-NEXT: movw r0, #65535552; CHECK-NEXT: movt r0, #32639553; CHECK-NEXT: bx lr554 %r = call nnan ninf float @llvm.maximum.f32(float %x, float 0x47efffffe0000000)555 ret float %r556}557 558define float @test_minimum_const_max_nnan_ninf(float %x) {559; CHECK-LABEL: test_minimum_const_max_nnan_ninf:560; CHECK: @ %bb.0:561; CHECK-NEXT: bx lr562 %r = call nnan ninf float @llvm.minimum.f32(float %x, float 0x47efffffe0000000)563 ret float %r564}565 566define float @test_minnum_const_neg_max_nnan_ninf(float %x) {567; CHECK-LABEL: test_minnum_const_neg_max_nnan_ninf:568; CHECK: @ %bb.0:569; CHECK-NEXT: mvn r0, #8388608570; CHECK-NEXT: bx lr571 %r = call nnan ninf float @llvm.minnum.f32(float %x, float 0xc7efffffe0000000)572 ret float %r573}574 575define float @test_maxnum_const_neg_max_nnan_ninf(float %x) {576; CHECK-LABEL: test_maxnum_const_neg_max_nnan_ninf:577; CHECK: @ %bb.0:578; CHECK-NEXT: bx lr579 %r = call nnan ninf float @llvm.maxnum.f32(float %x, float 0xc7efffffe0000000)580 ret float %r581}582 583define float @test_maximum_const_neg_max_nnan_ninf(float %x) {584; CHECK-LABEL: test_maximum_const_neg_max_nnan_ninf:585; CHECK: @ %bb.0:586; CHECK-NEXT: bx lr587 %r = call nnan ninf float @llvm.maximum.f32(float %x, float 0xc7efffffe0000000)588 ret float %r589}590 591define float @test_minimum_const_neg_max_nnan_ninf(float %x) {592; CHECK-LABEL: test_minimum_const_neg_max_nnan_ninf:593; CHECK: @ %bb.0:594; CHECK-NEXT: mvn r0, #8388608595; CHECK-NEXT: bx lr596 %r = call nnan ninf float @llvm.minimum.f32(float %x, float 0xc7efffffe0000000)597 ret float %r598}599