1510792a2SMark Murray; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2510792a2SMark Murray; RUN: llc -mtriple=thumbv8.1m.main -mattr=+mve.fp -verify-machineinstrs -o - %s | FileCheck %s 3510792a2SMark Murray 4228c7407SMark Murraydefine arm_aapcs_vfpcc <8 x half> @test_vminnmq_f16(<8 x half> %a, <8 x half> %b) local_unnamed_addr #0 { 5510792a2SMark Murray; CHECK-LABEL: test_vminnmq_f16: 6510792a2SMark Murray; CHECK: @ %bb.0: @ %entry 7510792a2SMark Murray; CHECK-NEXT: vminnm.f16 q0, q0, q1 8510792a2SMark Murray; CHECK-NEXT: bx lr 9510792a2SMark Murrayentry: 10510792a2SMark Murray %0 = tail call <8 x half> @llvm.minnum.v8f16(<8 x half> %a, <8 x half> %b) 11510792a2SMark Murray ret <8 x half> %0 12510792a2SMark Murray} 13510792a2SMark Murray 14510792a2SMark Murraydeclare <8 x half> @llvm.minnum.v8f16(<8 x half>, <8 x half>) #1 15510792a2SMark Murray 16228c7407SMark Murraydefine arm_aapcs_vfpcc <4 x float> @test_vminnmq_f32(<4 x float> %a, <4 x float> %b) local_unnamed_addr #0 { 17510792a2SMark Murray; CHECK-LABEL: test_vminnmq_f32: 18510792a2SMark Murray; CHECK: @ %bb.0: @ %entry 19510792a2SMark Murray; CHECK-NEXT: vminnm.f32 q0, q0, q1 20510792a2SMark Murray; CHECK-NEXT: bx lr 21510792a2SMark Murrayentry: 22510792a2SMark Murray %0 = tail call <4 x float> @llvm.minnum.v4f32(<4 x float> %a, <4 x float> %b) 23510792a2SMark Murray ret <4 x float> %0 24510792a2SMark Murray} 25510792a2SMark Murray 26510792a2SMark Murraydeclare <4 x float> @llvm.minnum.v4f32(<4 x float>, <4 x float>) #1 27510792a2SMark Murray 28228c7407SMark Murraydefine arm_aapcs_vfpcc <8 x half> @test_vminnmq_m_f16(<8 x half> %inactive, <8 x half> %a, <8 x half> %b, i16 zeroext %p) local_unnamed_addr #0 { 29510792a2SMark Murray; CHECK-LABEL: test_vminnmq_m_f16: 30510792a2SMark Murray; CHECK: @ %bb.0: @ %entry 31510792a2SMark Murray; CHECK-NEXT: vmsr p0, r0 32510792a2SMark Murray; CHECK-NEXT: vpst 33b99ef32dSSimon Tatham; CHECK-NEXT: vminnmt.f16 q0, q1, q2 34510792a2SMark Murray; CHECK-NEXT: bx lr 35510792a2SMark Murrayentry: 36510792a2SMark Murray %0 = zext i16 %p to i32 37510792a2SMark Murray %1 = tail call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0) 38*34817e04SSimon Tatham %2 = tail call <8 x half> @llvm.arm.mve.min.predicated.v8f16.v8i1(<8 x half> %a, <8 x half> %b, i32 0, <8 x i1> %1, <8 x half> %inactive) 39510792a2SMark Murray ret <8 x half> %2 40510792a2SMark Murray} 41510792a2SMark Murray 42510792a2SMark Murraydeclare <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32) #2 43510792a2SMark Murray 44*34817e04SSimon Tathamdeclare <8 x half> @llvm.arm.mve.min.predicated.v8f16.v8i1(<8 x half>, <8 x half>, i32, <8 x i1>, <8 x half>) #2 45510792a2SMark Murray 46228c7407SMark Murraydefine arm_aapcs_vfpcc <4 x float> @test_vminnmq_m_f32(<4 x float> %inactive, <4 x float> %a, <4 x float> %b, i16 zeroext %p) local_unnamed_addr #0 { 47510792a2SMark Murray; CHECK-LABEL: test_vminnmq_m_f32: 48510792a2SMark Murray; CHECK: @ %bb.0: @ %entry 49510792a2SMark Murray; CHECK-NEXT: vmsr p0, r0 50510792a2SMark Murray; CHECK-NEXT: vpst 51510792a2SMark Murray; CHECK-NEXT: vminnmt.f32 q0, q1, q2 52510792a2SMark Murray; CHECK-NEXT: bx lr 53510792a2SMark Murrayentry: 54510792a2SMark Murray %0 = zext i16 %p to i32 55510792a2SMark Murray %1 = tail call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0) 56*34817e04SSimon Tatham %2 = tail call <4 x float> @llvm.arm.mve.min.predicated.v4f32.v4i1(<4 x float> %a, <4 x float> %b, i32 0, <4 x i1> %1, <4 x float> %inactive) 57510792a2SMark Murray ret <4 x float> %2 58510792a2SMark Murray} 59510792a2SMark Murray 60510792a2SMark Murraydeclare <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32) #2 61510792a2SMark Murray 62*34817e04SSimon Tathamdeclare <4 x float> @llvm.arm.mve.min.predicated.v4f32.v4i1(<4 x float>, <4 x float>, i32, <4 x i1>, <4 x float>) #2 63228c7407SMark Murray 64228c7407SMark Murraydefine arm_aapcs_vfpcc <8 x half> @test_vminnmq_x_f16(<8 x half> %a, <8 x half> %b, i16 zeroext %p) local_unnamed_addr #0 { 65228c7407SMark Murray; CHECK-LABEL: test_vminnmq_x_f16: 66228c7407SMark Murray; CHECK: @ %bb.0: @ %entry 67228c7407SMark Murray; CHECK-NEXT: vmsr p0, r0 68228c7407SMark Murray; CHECK-NEXT: vpst 69b99ef32dSSimon Tatham; CHECK-NEXT: vminnmt.f16 q0, q0, q1 70228c7407SMark Murray; CHECK-NEXT: bx lr 71228c7407SMark Murrayentry: 72228c7407SMark Murray %0 = zext i16 %p to i32 73228c7407SMark Murray %1 = tail call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0) 74*34817e04SSimon Tatham %2 = tail call <8 x half> @llvm.arm.mve.min.predicated.v8f16.v8i1(<8 x half> %a, <8 x half> %b, i32 0, <8 x i1> %1, <8 x half> undef) 75228c7407SMark Murray ret <8 x half> %2 76228c7407SMark Murray} 77228c7407SMark Murray 78228c7407SMark Murraydefine arm_aapcs_vfpcc <4 x float> @test_vminnmq_x_f32(<4 x float> %a, <4 x float> %b, i16 zeroext %p) local_unnamed_addr #0 { 79228c7407SMark Murray; CHECK-LABEL: test_vminnmq_x_f32: 80228c7407SMark Murray; CHECK: @ %bb.0: @ %entry 81228c7407SMark Murray; CHECK-NEXT: vmsr p0, r0 82228c7407SMark Murray; CHECK-NEXT: vpst 83228c7407SMark Murray; CHECK-NEXT: vminnmt.f32 q0, q0, q1 84228c7407SMark Murray; CHECK-NEXT: bx lr 85228c7407SMark Murrayentry: 86228c7407SMark Murray %0 = zext i16 %p to i32 87228c7407SMark Murray %1 = tail call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0) 88*34817e04SSimon Tatham %2 = tail call <4 x float> @llvm.arm.mve.min.predicated.v4f32.v4i1(<4 x float> %a, <4 x float> %b, i32 0, <4 x i1> %1, <4 x float> undef) 89228c7407SMark Murray ret <4 x float> %2 90228c7407SMark Murray} 91228c7407SMark Murray 92