xref: /aosp_15_r20/external/llvm/test/CodeGen/PowerPC/qpx-rounding-ops.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=a2q | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=a2q -enable-unsafe-fp-math | FileCheck -check-prefix=CHECK-FM %s
3*9880d681SAndroid Build Coastguard Workertarget datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
4*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64-unknown-linux-gnu"
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test1(<4 x float> %x) nounwind  {
7*9880d681SAndroid Build Coastguard Worker  %call = tail call <4 x float> @llvm.floor.v4f32(<4 x float> %x) nounwind readnone
8*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %call
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Worker; CHECK: test1:
11*9880d681SAndroid Build Coastguard Worker; CHECK: qvfrim 1, 1
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker; CHECK-FM: test1:
14*9880d681SAndroid Build Coastguard Worker; CHECK-FM: qvfrim 1, 1
15*9880d681SAndroid Build Coastguard Worker}
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.floor.v4f32(<4 x float>) nounwind readnone
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test2(<4 x double> %x) nounwind  {
20*9880d681SAndroid Build Coastguard Worker  %call = tail call <4 x double> @llvm.floor.v4f64(<4 x double> %x) nounwind readnone
21*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %call
22*9880d681SAndroid Build Coastguard Worker
23*9880d681SAndroid Build Coastguard Worker; CHECK: test2:
24*9880d681SAndroid Build Coastguard Worker; CHECK: qvfrim 1, 1
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Worker; CHECK-FM: test2:
27*9880d681SAndroid Build Coastguard Worker; CHECK-FM: qvfrim 1, 1
28*9880d681SAndroid Build Coastguard Worker}
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.floor.v4f64(<4 x double>) nounwind readnone
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test3(<4 x float> %x) nounwind  {
33*9880d681SAndroid Build Coastguard Worker  %call = tail call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %x) nounwind readnone
34*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %call
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker; CHECK: test3:
37*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: qvfrin
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker; CHECK-FM: test3:
40*9880d681SAndroid Build Coastguard Worker; CHECK-FM-NOT: qvfrin
41*9880d681SAndroid Build Coastguard Worker}
42*9880d681SAndroid Build Coastguard Worker
43*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.nearbyint.v4f32(<4 x float>) nounwind readnone
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test4(<4 x double> %x) nounwind  {
46*9880d681SAndroid Build Coastguard Worker  %call = tail call <4 x double> @llvm.nearbyint.v4f64(<4 x double> %x) nounwind readnone
47*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %call
48*9880d681SAndroid Build Coastguard Worker
49*9880d681SAndroid Build Coastguard Worker; CHECK: test4:
50*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: qvfrin
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker; CHECK-FM: test4:
53*9880d681SAndroid Build Coastguard Worker; CHECK-FM-NOT: qvfrin
54*9880d681SAndroid Build Coastguard Worker}
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.nearbyint.v4f64(<4 x double>) nounwind readnone
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test5(<4 x float> %x) nounwind  {
59*9880d681SAndroid Build Coastguard Worker  %call = tail call <4 x float> @llvm.ceil.v4f32(<4 x float> %x) nounwind readnone
60*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %call
61*9880d681SAndroid Build Coastguard Worker
62*9880d681SAndroid Build Coastguard Worker; CHECK: test5:
63*9880d681SAndroid Build Coastguard Worker; CHECK: qvfrip 1, 1
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Worker; CHECK-FM: test5:
66*9880d681SAndroid Build Coastguard Worker; CHECK-FM: qvfrip 1, 1
67*9880d681SAndroid Build Coastguard Worker}
68*9880d681SAndroid Build Coastguard Worker
69*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.ceil.v4f32(<4 x float>) nounwind readnone
70*9880d681SAndroid Build Coastguard Worker
71*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test6(<4 x double> %x) nounwind  {
72*9880d681SAndroid Build Coastguard Worker  %call = tail call <4 x double> @llvm.ceil.v4f64(<4 x double> %x) nounwind readnone
73*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %call
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Worker; CHECK: test6:
76*9880d681SAndroid Build Coastguard Worker; CHECK: qvfrip 1, 1
77*9880d681SAndroid Build Coastguard Worker
78*9880d681SAndroid Build Coastguard Worker; CHECK-FM: test6:
79*9880d681SAndroid Build Coastguard Worker; CHECK-FM: qvfrip 1, 1
80*9880d681SAndroid Build Coastguard Worker}
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.ceil.v4f64(<4 x double>) nounwind readnone
83*9880d681SAndroid Build Coastguard Worker
84*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test9(<4 x float> %x) nounwind  {
85*9880d681SAndroid Build Coastguard Worker  %call = tail call <4 x float> @llvm.trunc.v4f32(<4 x float> %x) nounwind readnone
86*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %call
87*9880d681SAndroid Build Coastguard Worker
88*9880d681SAndroid Build Coastguard Worker; CHECK: test9:
89*9880d681SAndroid Build Coastguard Worker; CHECK: qvfriz 1, 1
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard Worker; CHECK-FM: test9:
92*9880d681SAndroid Build Coastguard Worker; CHECK-FM: qvfriz 1, 1
93*9880d681SAndroid Build Coastguard Worker}
94*9880d681SAndroid Build Coastguard Worker
95*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @llvm.trunc.v4f32(<4 x float>) nounwind readnone
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard Workerdefine <4 x double> @test10(<4 x double> %x) nounwind  {
98*9880d681SAndroid Build Coastguard Worker  %call = tail call <4 x double> @llvm.trunc.v4f64(<4 x double> %x) nounwind readnone
99*9880d681SAndroid Build Coastguard Worker  ret <4 x double> %call
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Worker; CHECK: test10:
102*9880d681SAndroid Build Coastguard Worker; CHECK: qvfriz 1, 1
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard Worker; CHECK-FM: test10:
105*9880d681SAndroid Build Coastguard Worker; CHECK-FM: qvfriz 1, 1
106*9880d681SAndroid Build Coastguard Worker}
107*9880d681SAndroid Build Coastguard Worker
108*9880d681SAndroid Build Coastguard Workerdeclare <4 x double> @llvm.trunc.v4f64(<4 x double>) nounwind readnone
109*9880d681SAndroid Build Coastguard Worker
110