Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / Thumb2 / mve-intrinsics / vmaxnmaq.ll
blob0f412cab6d11a8e1d43eb3ac4e6473ae25b7317c
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=thumbv8.1m.main -mattr=+mve.fp -verify-machineinstrs -o - %s | FileCheck %s
4 define arm_aapcs_vfpcc <8 x half> @test_vmaxnmaq_f16(<8 x half> %a, <8 x half> %b) local_unnamed_addr #0 {
5 ; CHECK-LABEL: test_vmaxnmaq_f16:
6 ; CHECK:       @ %bb.0: @ %entry
7 ; CHECK-NEXT:    vmaxnma.f16 q0, q1
8 ; CHECK-NEXT:    bx lr
9 entry:
10   %0 = tail call <8 x half> @llvm.fabs.v8f16(<8 x half> %a)
11   %1 = tail call <8 x half> @llvm.fabs.v8f16(<8 x half> %b)
12   %2 = tail call <8 x half> @llvm.maxnum.v8f16(<8 x half> %0, <8 x half> %1)
13   ret <8 x half> %2
16 declare <8 x half> @llvm.fabs.v8f16(<8 x half>) #1
18 declare <8 x half> @llvm.maxnum.v8f16(<8 x half>, <8 x half>) #1
20 define arm_aapcs_vfpcc <4 x float> @test_vmaxnmaq_f32(<4 x float> %a, <4 x float> %b) local_unnamed_addr #0 {
21 ; CHECK-LABEL: test_vmaxnmaq_f32:
22 ; CHECK:       @ %bb.0: @ %entry
23 ; CHECK-NEXT:    vmaxnma.f32 q0, q1
24 ; CHECK-NEXT:    bx lr
25 entry:
26   %0 = tail call <4 x float> @llvm.fabs.v4f32(<4 x float> %a)
27   %1 = tail call <4 x float> @llvm.fabs.v4f32(<4 x float> %b)
28   %2 = tail call <4 x float> @llvm.maxnum.v4f32(<4 x float> %0, <4 x float> %1)
29   ret <4 x float> %2
32 declare <4 x float> @llvm.fabs.v4f32(<4 x float>) #1
34 declare <4 x float> @llvm.maxnum.v4f32(<4 x float>, <4 x float>) #1
36 define arm_aapcs_vfpcc <8 x half> @test_vmaxnmaq_m_f16(<8 x half> %a, <8 x half> %b, i16 zeroext %p) local_unnamed_addr #0 {
37 ; CHECK-LABEL: test_vmaxnmaq_m_f16:
38 ; CHECK:       @ %bb.0: @ %entry
39 ; CHECK-NEXT:    vmsr p0, r0
40 ; CHECK-NEXT:    vpst
41 ; CHECK-NEXT:    vmaxnmat.f16 q0, q1
42 ; CHECK-NEXT:    bx lr
43 entry:
44   %0 = zext i16 %p to i32
45   %1 = tail call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
46   %2 = tail call <8 x half> @llvm.arm.mve.vmaxnma.predicated.v8f16.v8i1(<8 x half> %a, <8 x half> %b, <8 x i1> %1)
47   ret <8 x half> %2
50 declare <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32) #2
52 declare <8 x half> @llvm.arm.mve.vmaxnma.predicated.v8f16.v8i1(<8 x half>, <8 x half>, <8 x i1>) #2
54 define arm_aapcs_vfpcc <4 x float> @test_vmaxnmaq_m_f32(<4 x float> %a, <4 x float> %b, i16 zeroext %p) local_unnamed_addr #0 {
55 ; CHECK-LABEL: test_vmaxnmaq_m_f32:
56 ; CHECK:       @ %bb.0: @ %entry
57 ; CHECK-NEXT:    vmsr p0, r0
58 ; CHECK-NEXT:    vpst
59 ; CHECK-NEXT:    vmaxnmat.f32 q0, q1
60 ; CHECK-NEXT:    bx lr
61 entry:
62   %0 = zext i16 %p to i32
63   %1 = tail call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
64   %2 = tail call <4 x float> @llvm.arm.mve.vmaxnma.predicated.v4f32.v4i1(<4 x float> %a, <4 x float> %b, <4 x i1> %1)
65   ret <4 x float> %2
68 declare <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32) #2
70 declare <4 x float> @llvm.arm.mve.vmaxnma.predicated.v4f32.v4i1(<4 x float>, <4 x float>, <4 x i1>) #2