xref: /llvm-project/llvm/test/CodeGen/Thumb2/mve-intrinsics/vabdq.ll (revision 34817e04feeb00dcd0515e5810218587438bd5a8)
1f4bba07bSMark Murray; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2f4bba07bSMark Murray; RUN: llc -mtriple=thumbv8.1m.main -mattr=+mve.fp -verify-machineinstrs -o - %s | FileCheck %s
3f4bba07bSMark Murray
4228c7407SMark Murraydefine arm_aapcs_vfpcc <16 x i8> @test_vabdq_s8(<16 x i8> %a, <16 x i8> %b) local_unnamed_addr #0 {
5228c7407SMark Murray; CHECK-LABEL: test_vabdq_s8:
6228c7407SMark Murray; CHECK:       @ %bb.0: @ %entry
7228c7407SMark Murray; CHECK-NEXT:    vabd.s8 q0, q0, q1
8228c7407SMark Murray; CHECK-NEXT:    bx lr
9228c7407SMark Murrayentry:
10*34817e04SSimon Tatham  %0 = tail call <16 x i8> @llvm.arm.mve.vabd.v16i8(<16 x i8> %a, <16 x i8> %b, i32 0)
11228c7407SMark Murray  ret <16 x i8> %0
12228c7407SMark Murray}
13228c7407SMark Murray
14*34817e04SSimon Tathamdeclare <16 x i8> @llvm.arm.mve.vabd.v16i8(<16 x i8>, <16 x i8>, i32) #1
15228c7407SMark Murray
16228c7407SMark Murraydefine arm_aapcs_vfpcc <4 x i32> @test_vabdq_u32(<4 x i32> %a, <4 x i32> %b) local_unnamed_addr #0 {
17f4bba07bSMark Murray; CHECK-LABEL: test_vabdq_u32:
18f4bba07bSMark Murray; CHECK:       @ %bb.0: @ %entry
19*34817e04SSimon Tatham; CHECK-NEXT:    vabd.u32 q0, q0, q1
20f4bba07bSMark Murray; CHECK-NEXT:    bx lr
21f4bba07bSMark Murrayentry:
22*34817e04SSimon Tatham  %0 = tail call <4 x i32> @llvm.arm.mve.vabd.v4i32(<4 x i32> %a, <4 x i32> %b, i32 1)
23f4bba07bSMark Murray  ret <4 x i32> %0
24f4bba07bSMark Murray}
25f4bba07bSMark Murray
26*34817e04SSimon Tathamdeclare <4 x i32> @llvm.arm.mve.vabd.v4i32(<4 x i32>, <4 x i32>, i32) #1
27f4bba07bSMark Murray
28228c7407SMark Murraydefine arm_aapcs_vfpcc <8 x half> @test_vabdq_f32(<8 x half> %a, <8 x half> %b) local_unnamed_addr #0 {
29f4bba07bSMark Murray; CHECK-LABEL: test_vabdq_f32:
30f4bba07bSMark Murray; CHECK:       @ %bb.0: @ %entry
31228c7407SMark Murray; CHECK-NEXT:    vabd.f16 q0, q0, q1
32f4bba07bSMark Murray; CHECK-NEXT:    bx lr
33f4bba07bSMark Murrayentry:
34*34817e04SSimon Tatham  %0 = tail call <8 x half> @llvm.arm.mve.vabd.v8f16(<8 x half> %a, <8 x half> %b, i32 0)
35228c7407SMark Murray  ret <8 x half> %0
36f4bba07bSMark Murray}
37f4bba07bSMark Murray
38*34817e04SSimon Tathamdeclare <8 x half> @llvm.arm.mve.vabd.v8f16(<8 x half>, <8 x half>, i32) #1
39f4bba07bSMark Murray
40228c7407SMark Murraydefine arm_aapcs_vfpcc <8 x i16> @test_vabdq_m_u16(<8 x i16> %inactive, <8 x i16> %a, <8 x i16> %b, i16 zeroext %p) local_unnamed_addr #0 {
41228c7407SMark Murray; CHECK-LABEL: test_vabdq_m_u16:
42228c7407SMark Murray; CHECK:       @ %bb.0: @ %entry
43228c7407SMark Murray; CHECK-NEXT:    vmsr p0, r0
44228c7407SMark Murray; CHECK-NEXT:    vpst
45*34817e04SSimon Tatham; CHECK-NEXT:    vabdt.u16 q0, q1, q2
46228c7407SMark Murray; CHECK-NEXT:    bx lr
47228c7407SMark Murrayentry:
48228c7407SMark Murray  %0 = zext i16 %p to i32
49228c7407SMark Murray  %1 = tail call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
50*34817e04SSimon Tatham  %2 = tail call <8 x i16> @llvm.arm.mve.abd.predicated.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 1, <8 x i1> %1, <8 x i16> %inactive)
51228c7407SMark Murray  ret <8 x i16> %2
52228c7407SMark Murray}
53228c7407SMark Murray
54228c7407SMark Murraydeclare <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32) #1
55228c7407SMark Murray
56*34817e04SSimon Tathamdeclare <8 x i16> @llvm.arm.mve.abd.predicated.v8i16.v8i1(<8 x i16>, <8 x i16>, i32, <8 x i1>, <8 x i16>) #1
57228c7407SMark Murray
58228c7407SMark Murraydefine arm_aapcs_vfpcc <16 x i8> @test_vabdq_m_s8(<16 x i8> %inactive, <16 x i8> %a, <16 x i8> %b, i16 zeroext %p) local_unnamed_addr #0 {
59f4bba07bSMark Murray; CHECK-LABEL: test_vabdq_m_s8:
60f4bba07bSMark Murray; CHECK:       @ %bb.0: @ %entry
61f4bba07bSMark Murray; CHECK-NEXT:    vmsr p0, r0
62f4bba07bSMark Murray; CHECK-NEXT:    vpst
63f4bba07bSMark Murray; CHECK-NEXT:    vabdt.s8 q0, q1, q2
64f4bba07bSMark Murray; CHECK-NEXT:    bx lr
65f4bba07bSMark Murrayentry:
66f4bba07bSMark Murray  %0 = zext i16 %p to i32
67f4bba07bSMark Murray  %1 = tail call <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32 %0)
68*34817e04SSimon Tatham  %2 = tail call <16 x i8> @llvm.arm.mve.abd.predicated.v16i8.v16i1(<16 x i8> %a, <16 x i8> %b, i32 0, <16 x i1> %1, <16 x i8> %inactive)
69f4bba07bSMark Murray  ret <16 x i8> %2
70f4bba07bSMark Murray}
71f4bba07bSMark Murray
72228c7407SMark Murraydeclare <16 x i1> @llvm.arm.mve.pred.i2v.v16i1(i32) #1
73f4bba07bSMark Murray
74*34817e04SSimon Tathamdeclare <16 x i8> @llvm.arm.mve.abd.predicated.v16i8.v16i1(<16 x i8>, <16 x i8>, i32, <16 x i1>, <16 x i8>) #1
75f4bba07bSMark Murray
76228c7407SMark Murraydefine arm_aapcs_vfpcc <4 x float> @test_vabdq_m_f32(<4 x float> %inactive, <4 x float> %a, <4 x float> %b, i16 zeroext %p) local_unnamed_addr #0 {
77228c7407SMark Murray; CHECK-LABEL: test_vabdq_m_f32:
78f4bba07bSMark Murray; CHECK:       @ %bb.0: @ %entry
79f4bba07bSMark Murray; CHECK-NEXT:    vmsr p0, r0
80f4bba07bSMark Murray; CHECK-NEXT:    vpst
81228c7407SMark Murray; CHECK-NEXT:    vabdt.f32 q0, q1, q2
82228c7407SMark Murray; CHECK-NEXT:    bx lr
83228c7407SMark Murrayentry:
84228c7407SMark Murray  %0 = zext i16 %p to i32
85228c7407SMark Murray  %1 = tail call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
86*34817e04SSimon Tatham  %2 = tail call <4 x float> @llvm.arm.mve.abd.predicated.v4f32.v4i1(<4 x float> %a, <4 x float> %b, i32 0, <4 x i1> %1, <4 x float> %inactive)
87228c7407SMark Murray  ret <4 x float> %2
88228c7407SMark Murray}
89228c7407SMark Murray
90228c7407SMark Murraydeclare <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32) #1
91228c7407SMark Murray
92*34817e04SSimon Tathamdeclare <4 x float> @llvm.arm.mve.abd.predicated.v4f32.v4i1(<4 x float>, <4 x float>, i32, <4 x i1>, <4 x float>) #1
93228c7407SMark Murray
94228c7407SMark Murraydefine arm_aapcs_vfpcc <8 x i16> @test_vabdq_x_u16(<8 x i16> %a, <8 x i16> %b, i16 zeroext %p) local_unnamed_addr #0 {
95228c7407SMark Murray; CHECK-LABEL: test_vabdq_x_u16:
96228c7407SMark Murray; CHECK:       @ %bb.0: @ %entry
97228c7407SMark Murray; CHECK-NEXT:    vmsr p0, r0
98228c7407SMark Murray; CHECK-NEXT:    vpst
99*34817e04SSimon Tatham; CHECK-NEXT:    vabdt.u16 q0, q0, q1
100f4bba07bSMark Murray; CHECK-NEXT:    bx lr
101f4bba07bSMark Murrayentry:
102f4bba07bSMark Murray  %0 = zext i16 %p to i32
103f4bba07bSMark Murray  %1 = tail call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
104*34817e04SSimon Tatham  %2 = tail call <8 x i16> @llvm.arm.mve.abd.predicated.v8i16.v8i1(<8 x i16> %a, <8 x i16> %b, i32 1, <8 x i1> %1, <8 x i16> undef)
105228c7407SMark Murray  ret <8 x i16> %2
106228c7407SMark Murray}
107228c7407SMark Murray
108228c7407SMark Murraydefine arm_aapcs_vfpcc <4 x i32> @test_vabdq_x_u32(<4 x i32> %a, <4 x i32> %b, i16 zeroext %p) local_unnamed_addr #0 {
109228c7407SMark Murray; CHECK-LABEL: test_vabdq_x_u32:
110228c7407SMark Murray; CHECK:       @ %bb.0: @ %entry
111228c7407SMark Murray; CHECK-NEXT:    vmsr p0, r0
112228c7407SMark Murray; CHECK-NEXT:    vpst
113*34817e04SSimon Tatham; CHECK-NEXT:    vabdt.u32 q0, q0, q1
114228c7407SMark Murray; CHECK-NEXT:    bx lr
115228c7407SMark Murrayentry:
116228c7407SMark Murray  %0 = zext i16 %p to i32
117228c7407SMark Murray  %1 = tail call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 %0)
118*34817e04SSimon Tatham  %2 = tail call <4 x i32> @llvm.arm.mve.abd.predicated.v4i32.v4i1(<4 x i32> %a, <4 x i32> %b, i32 1, <4 x i1> %1, <4 x i32> undef)
119228c7407SMark Murray  ret <4 x i32> %2
120228c7407SMark Murray}
121228c7407SMark Murray
122*34817e04SSimon Tathamdeclare <4 x i32> @llvm.arm.mve.abd.predicated.v4i32.v4i1(<4 x i32>, <4 x i32>, i32, <4 x i1>, <4 x i32>) #1
123228c7407SMark Murray
124228c7407SMark Murraydefine arm_aapcs_vfpcc <8 x half> @test_vabdq_x_f16(<8 x half> %a, <8 x half> %b, i16 zeroext %p) local_unnamed_addr #0 {
125228c7407SMark Murray; CHECK-LABEL: test_vabdq_x_f16:
126228c7407SMark Murray; CHECK:       @ %bb.0: @ %entry
127228c7407SMark Murray; CHECK-NEXT:    vmsr p0, r0
128228c7407SMark Murray; CHECK-NEXT:    vpst
129228c7407SMark Murray; CHECK-NEXT:    vabdt.f16 q0, q0, q1
130228c7407SMark Murray; CHECK-NEXT:    bx lr
131228c7407SMark Murrayentry:
132228c7407SMark Murray  %0 = zext i16 %p to i32
133228c7407SMark Murray  %1 = tail call <8 x i1> @llvm.arm.mve.pred.i2v.v8i1(i32 %0)
134*34817e04SSimon Tatham  %2 = tail call <8 x half> @llvm.arm.mve.abd.predicated.v8f16.v8i1(<8 x half> %a, <8 x half> %b, i32 0, <8 x i1> %1, <8 x half> undef)
135f4bba07bSMark Murray  ret <8 x half> %2
136f4bba07bSMark Murray}
137f4bba07bSMark Murray
138*34817e04SSimon Tathamdeclare <8 x half> @llvm.arm.mve.abd.predicated.v8f16.v8i1(<8 x half>, <8 x half>, i32, <8 x i1>, <8 x half>) #1
139f4bba07bSMark Murray
140