• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=EG --check-prefix=FUNC %s
2; RUN: llc -march=r600 -mcpu=SI < %s | FileCheck -check-prefix=SI --check-prefix=FUNC %s
3
4declare float @llvm.trunc.f32(float) nounwind readnone
5declare <2 x float> @llvm.trunc.v2f32(<2 x float>) nounwind readnone
6declare <3 x float> @llvm.trunc.v3f32(<3 x float>) nounwind readnone
7declare <4 x float> @llvm.trunc.v4f32(<4 x float>) nounwind readnone
8declare <8 x float> @llvm.trunc.v8f32(<8 x float>) nounwind readnone
9declare <16 x float> @llvm.trunc.v16f32(<16 x float>) nounwind readnone
10
11; FUNC-LABEL: @ftrunc_f32:
12; EG: TRUNC
13; SI: V_TRUNC_F32_e32
14define void @ftrunc_f32(float addrspace(1)* %out, float %x) {
15  %y = call float @llvm.trunc.f32(float %x) nounwind readnone
16  store float %y, float addrspace(1)* %out
17  ret void
18}
19
20; FUNC-LABEL: @ftrunc_v2f32:
21; EG: TRUNC
22; EG: TRUNC
23; SI: V_TRUNC_F32_e32
24; SI: V_TRUNC_F32_e32
25define void @ftrunc_v2f32(<2 x float> addrspace(1)* %out, <2 x float> %x) {
26  %y = call <2 x float> @llvm.trunc.v2f32(<2 x float> %x) nounwind readnone
27  store <2 x float> %y, <2 x float> addrspace(1)* %out
28  ret void
29}
30
31; FIXME-FUNC-LABEL: @ftrunc_v3f32:
32; FIXME-EG: TRUNC
33; FIXME-EG: TRUNC
34; FIXME-EG: TRUNC
35; FIXME-SI: V_TRUNC_F32_e32
36; FIXME-SI: V_TRUNC_F32_e32
37; FIXME-SI: V_TRUNC_F32_e32
38; define void @ftrunc_v3f32(<3 x float> addrspace(1)* %out, <3 x float> %x) {
39;   %y = call <3 x float> @llvm.trunc.v3f32(<3 x float> %x) nounwind readnone
40;   store <3 x float> %y, <3 x float> addrspace(1)* %out
41;   ret void
42; }
43
44; FUNC-LABEL: @ftrunc_v4f32:
45; EG: TRUNC
46; EG: TRUNC
47; EG: TRUNC
48; EG: TRUNC
49; SI: V_TRUNC_F32_e32
50; SI: V_TRUNC_F32_e32
51; SI: V_TRUNC_F32_e32
52; SI: V_TRUNC_F32_e32
53define void @ftrunc_v4f32(<4 x float> addrspace(1)* %out, <4 x float> %x) {
54  %y = call <4 x float> @llvm.trunc.v4f32(<4 x float> %x) nounwind readnone
55  store <4 x float> %y, <4 x float> addrspace(1)* %out
56  ret void
57}
58
59; FUNC-LABEL: @ftrunc_v8f32:
60; EG: TRUNC
61; EG: TRUNC
62; EG: TRUNC
63; EG: TRUNC
64; EG: TRUNC
65; EG: TRUNC
66; EG: TRUNC
67; EG: TRUNC
68; SI: V_TRUNC_F32_e32
69; SI: V_TRUNC_F32_e32
70; SI: V_TRUNC_F32_e32
71; SI: V_TRUNC_F32_e32
72; SI: V_TRUNC_F32_e32
73; SI: V_TRUNC_F32_e32
74; SI: V_TRUNC_F32_e32
75; SI: V_TRUNC_F32_e32
76define void @ftrunc_v8f32(<8 x float> addrspace(1)* %out, <8 x float> %x) {
77  %y = call <8 x float> @llvm.trunc.v8f32(<8 x float> %x) nounwind readnone
78  store <8 x float> %y, <8 x float> addrspace(1)* %out
79  ret void
80}
81
82; FUNC-LABEL: @ftrunc_v16f32:
83; EG: TRUNC
84; EG: TRUNC
85; EG: TRUNC
86; EG: TRUNC
87; EG: TRUNC
88; EG: TRUNC
89; EG: TRUNC
90; EG: TRUNC
91; EG: TRUNC
92; EG: TRUNC
93; EG: TRUNC
94; EG: TRUNC
95; EG: TRUNC
96; EG: TRUNC
97; EG: TRUNC
98; EG: TRUNC
99; SI: V_TRUNC_F32_e32
100; SI: V_TRUNC_F32_e32
101; SI: V_TRUNC_F32_e32
102; SI: V_TRUNC_F32_e32
103; SI: V_TRUNC_F32_e32
104; SI: V_TRUNC_F32_e32
105; SI: V_TRUNC_F32_e32
106; SI: V_TRUNC_F32_e32
107; SI: V_TRUNC_F32_e32
108; SI: V_TRUNC_F32_e32
109; SI: V_TRUNC_F32_e32
110; SI: V_TRUNC_F32_e32
111; SI: V_TRUNC_F32_e32
112; SI: V_TRUNC_F32_e32
113; SI: V_TRUNC_F32_e32
114; SI: V_TRUNC_F32_e32
115define void @ftrunc_v16f32(<16 x float> addrspace(1)* %out, <16 x float> %x) {
116  %y = call <16 x float> @llvm.trunc.v16f32(<16 x float> %x) nounwind readnone
117  store <16 x float> %y, <16 x float> addrspace(1)* %out
118  ret void
119}
120