blob: ace187b3e72beb3d5e033324ddd106a08ea78567 [file] [log] [blame]
Adhemerval Zanellabdface52012-11-15 20:56:03 +00001; RUN: llc -mcpu=pwr6 -mattr=+altivec < %s | FileCheck %s
2
3; Check vector round to single-precision toward -infinity (vrfim)
4; instruction generation using Altivec.
5
6target 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-v128:128:128-n32:64"
7target triple = "powerpc64-unknown-linux-gnu"
8
9declare <2 x double> @llvm.floor.v2f64(<2 x double> %p)
10define <2 x double> @floor_v2f64(<2 x double> %p)
11{
12 %t = call <2 x double> @llvm.floor.v2f64(<2 x double> %p)
13 ret <2 x double> %t
14}
Stephen Lind24ab202013-07-14 06:24:09 +000015; CHECK-LABEL: floor_v2f64:
Hal Finkelc20a08d2013-03-29 08:57:48 +000016; CHECK: frim
17; CHECK: frim
Adhemerval Zanellabdface52012-11-15 20:56:03 +000018
19declare <4 x double> @llvm.floor.v4f64(<4 x double> %p)
20define <4 x double> @floor_v4f64(<4 x double> %p)
21{
22 %t = call <4 x double> @llvm.floor.v4f64(<4 x double> %p)
23 ret <4 x double> %t
24}
Stephen Lind24ab202013-07-14 06:24:09 +000025; CHECK-LABEL: floor_v4f64:
Hal Finkelc20a08d2013-03-29 08:57:48 +000026; CHECK: frim
27; CHECK: frim
28; CHECK: frim
29; CHECK: frim
Adhemerval Zanellabdface52012-11-15 20:56:03 +000030
31declare <2 x double> @llvm.ceil.v2f64(<2 x double> %p)
32define <2 x double> @ceil_v2f64(<2 x double> %p)
33{
34 %t = call <2 x double> @llvm.ceil.v2f64(<2 x double> %p)
35 ret <2 x double> %t
36}
Stephen Lind24ab202013-07-14 06:24:09 +000037; CHECK-LABEL: ceil_v2f64:
Hal Finkelc20a08d2013-03-29 08:57:48 +000038; CHECK: frip
39; CHECK: frip
Adhemerval Zanellabdface52012-11-15 20:56:03 +000040
41declare <4 x double> @llvm.ceil.v4f64(<4 x double> %p)
42define <4 x double> @ceil_v4f64(<4 x double> %p)
43{
44 %t = call <4 x double> @llvm.ceil.v4f64(<4 x double> %p)
45 ret <4 x double> %t
46}
Stephen Lind24ab202013-07-14 06:24:09 +000047; CHECK-LABEL: ceil_v4f64:
Hal Finkelc20a08d2013-03-29 08:57:48 +000048; CHECK: frip
49; CHECK: frip
50; CHECK: frip
51; CHECK: frip
Adhemerval Zanellabdface52012-11-15 20:56:03 +000052
53declare <2 x double> @llvm.trunc.v2f64(<2 x double> %p)
54define <2 x double> @trunc_v2f64(<2 x double> %p)
55{
56 %t = call <2 x double> @llvm.trunc.v2f64(<2 x double> %p)
57 ret <2 x double> %t
58}
Stephen Lind24ab202013-07-14 06:24:09 +000059; CHECK-LABEL: trunc_v2f64:
Hal Finkelc20a08d2013-03-29 08:57:48 +000060; CHECK: friz
61; CHECK: friz
Adhemerval Zanellabdface52012-11-15 20:56:03 +000062
63declare <4 x double> @llvm.trunc.v4f64(<4 x double> %p)
64define <4 x double> @trunc_v4f64(<4 x double> %p)
65{
66 %t = call <4 x double> @llvm.trunc.v4f64(<4 x double> %p)
67 ret <4 x double> %t
68}
Stephen Lind24ab202013-07-14 06:24:09 +000069; CHECK-LABEL: trunc_v4f64:
Hal Finkelc20a08d2013-03-29 08:57:48 +000070; CHECK: friz
71; CHECK: friz
72; CHECK: friz
73; CHECK: friz
Adhemerval Zanellabdface52012-11-15 20:56:03 +000074
75declare <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)
76define <2 x double> @nearbyint_v2f64(<2 x double> %p)
77{
78 %t = call <2 x double> @llvm.nearbyint.v2f64(<2 x double> %p)
79 ret <2 x double> %t
80}
Stephen Lind24ab202013-07-14 06:24:09 +000081; CHECK-LABEL: nearbyint_v2f64:
Adhemerval Zanellabdface52012-11-15 20:56:03 +000082; CHECK: bl nearbyint
83; CHECK: bl nearbyint
84
85declare <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)
86define <4 x double> @nearbyint_v4f64(<4 x double> %p)
87{
88 %t = call <4 x double> @llvm.nearbyint.v4f64(<4 x double> %p)
89 ret <4 x double> %t
90}
Stephen Lind24ab202013-07-14 06:24:09 +000091; CHECK-LABEL: nearbyint_v4f64:
Adhemerval Zanellabdface52012-11-15 20:56:03 +000092; CHECK: bl nearbyint
93; CHECK: bl nearbyint
94; CHECK: bl nearbyint
95; CHECK: bl nearbyint
96
97
98declare <4 x float> @llvm.floor.v4f32(<4 x float> %p)
99define <4 x float> @floor_v4f32(<4 x float> %p)
100{
101 %t = call <4 x float> @llvm.floor.v4f32(<4 x float> %p)
102 ret <4 x float> %t
103}
Stephen Lind24ab202013-07-14 06:24:09 +0000104; CHECK-LABEL: floor_v4f32:
Adhemerval Zanellabdface52012-11-15 20:56:03 +0000105; CHECK: vrfim
106
107declare <8 x float> @llvm.floor.v8f32(<8 x float> %p)
108define <8 x float> @floor_v8f32(<8 x float> %p)
109{
110 %t = call <8 x float> @llvm.floor.v8f32(<8 x float> %p)
111 ret <8 x float> %t
112}
Stephen Lind24ab202013-07-14 06:24:09 +0000113; CHECK-LABEL: floor_v8f32:
Adhemerval Zanellabdface52012-11-15 20:56:03 +0000114; CHECK: vrfim
115; CHECK: vrfim
116
117declare <4 x float> @llvm.ceil.v4f32(<4 x float> %p)
118define <4 x float> @ceil_v4f32(<4 x float> %p)
119{
120 %t = call <4 x float> @llvm.ceil.v4f32(<4 x float> %p)
121 ret <4 x float> %t
122}
Stephen Lind24ab202013-07-14 06:24:09 +0000123; CHECK-LABEL: ceil_v4f32:
Adhemerval Zanellabdface52012-11-15 20:56:03 +0000124; CHECK: vrfip
125
126declare <8 x float> @llvm.ceil.v8f32(<8 x float> %p)
127define <8 x float> @ceil_v8f32(<8 x float> %p)
128{
129 %t = call <8 x float> @llvm.ceil.v8f32(<8 x float> %p)
130 ret <8 x float> %t
131}
Stephen Lind24ab202013-07-14 06:24:09 +0000132; CHECK-LABEL: ceil_v8f32:
Adhemerval Zanellabdface52012-11-15 20:56:03 +0000133; CHECK: vrfip
134; CHECK: vrfip
135
136declare <4 x float> @llvm.trunc.v4f32(<4 x float> %p)
137define <4 x float> @trunc_v4f32(<4 x float> %p)
138{
139 %t = call <4 x float> @llvm.trunc.v4f32(<4 x float> %p)
140 ret <4 x float> %t
141}
Stephen Lind24ab202013-07-14 06:24:09 +0000142; CHECK-LABEL: trunc_v4f32:
Adhemerval Zanellabdface52012-11-15 20:56:03 +0000143; CHECK: vrfiz
144
145declare <8 x float> @llvm.trunc.v8f32(<8 x float> %p)
146define <8 x float> @trunc_v8f32(<8 x float> %p)
147{
148 %t = call <8 x float> @llvm.trunc.v8f32(<8 x float> %p)
149 ret <8 x float> %t
150}
Stephen Lind24ab202013-07-14 06:24:09 +0000151; CHECK-LABEL: trunc_v8f32:
Adhemerval Zanellabdface52012-11-15 20:56:03 +0000152; CHECK: vrfiz
153; CHECK: vrfiz
154
155declare <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)
156define <4 x float> @nearbyint_v4f32(<4 x float> %p)
157{
158 %t = call <4 x float> @llvm.nearbyint.v4f32(<4 x float> %p)
159 ret <4 x float> %t
160}
Stephen Lind24ab202013-07-14 06:24:09 +0000161; CHECK-LABEL: nearbyint_v4f32:
Adhemerval Zanellabdface52012-11-15 20:56:03 +0000162; CHECK: vrfin
163
164declare <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)
165define <8 x float> @nearbyint_v8f32(<8 x float> %p)
166{
167 %t = call <8 x float> @llvm.nearbyint.v8f32(<8 x float> %p)
168 ret <8 x float> %t
169}
Stephen Lind24ab202013-07-14 06:24:09 +0000170; CHECK-LABEL: nearbyint_v8f32:
Adhemerval Zanellabdface52012-11-15 20:56:03 +0000171; CHECK: vrfin
172; CHECK: vrfin