xref: /llvm-project/llvm/test/CodeGen/Thumb2/mve-intrinsics/vminnmq.ll (revision 34817e04feeb00dcd0515e5810218587438bd5a8)
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