blob: 0b913fda858005fee95b0cef084aeb90ca11e4fa [file] [log] [blame]
Matt Arsenault7aad8fd2017-01-24 22:02:15 +00001; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
2; RUN: llc -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s
Jan Vesely85f0dbc2014-06-18 17:57:29 +00003; RUN: llc -march=r600 -mcpu=cypress < %s | FileCheck -check-prefix=EG -check-prefix=FUNC %s
Matt Arsenault41e2f2b2014-02-24 21:01:28 +00004
Jan Vesely85f0dbc2014-06-18 17:57:29 +00005declare float @llvm.ceil.f32(float) nounwind readnone
6declare <2 x float> @llvm.ceil.v2f32(<2 x float>) nounwind readnone
7declare <3 x float> @llvm.ceil.v3f32(<3 x float>) nounwind readnone
8declare <4 x float> @llvm.ceil.v4f32(<4 x float>) nounwind readnone
9declare <8 x float> @llvm.ceil.v8f32(<8 x float>) nounwind readnone
10declare <16 x float> @llvm.ceil.v16f32(<16 x float>) nounwind readnone
Matt Arsenault41e2f2b2014-02-24 21:01:28 +000011
Tom Stellard79243d92014-10-01 17:15:17 +000012; FUNC-LABEL: {{^}}fceil_f32:
Tom Stellard326d6ec2014-11-05 14:50:53 +000013; SI: v_ceil_f32_e32
Jan Vesely85f0dbc2014-06-18 17:57:29 +000014; EG: MEM_RAT_CACHELESS STORE_RAW [[RESULT:T[0-9]+\.[XYZW]]]
15; EG: CEIL {{\*? *}}[[RESULT]]
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000016define amdgpu_kernel void @fceil_f32(float addrspace(1)* %out, float %x) {
Jan Vesely85f0dbc2014-06-18 17:57:29 +000017 %y = call float @llvm.ceil.f32(float %x) nounwind readnone
18 store float %y, float addrspace(1)* %out
Matt Arsenault41e2f2b2014-02-24 21:01:28 +000019 ret void
20}
21
Tom Stellard79243d92014-10-01 17:15:17 +000022; FUNC-LABEL: {{^}}fceil_v2f32:
Tom Stellard326d6ec2014-11-05 14:50:53 +000023; SI: v_ceil_f32_e32
24; SI: v_ceil_f32_e32
Jan Vesely85f0dbc2014-06-18 17:57:29 +000025; EG: MEM_RAT_CACHELESS STORE_RAW [[RESULT:T[0-9]+]]{{\.[XYZW]}}
26; EG: CEIL {{\*? *}}[[RESULT]]
27; EG: CEIL {{\*? *}}[[RESULT]]
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000028define amdgpu_kernel void @fceil_v2f32(<2 x float> addrspace(1)* %out, <2 x float> %x) {
Jan Vesely85f0dbc2014-06-18 17:57:29 +000029 %y = call <2 x float> @llvm.ceil.v2f32(<2 x float> %x) nounwind readnone
30 store <2 x float> %y, <2 x float> addrspace(1)* %out
Matt Arsenault41e2f2b2014-02-24 21:01:28 +000031 ret void
32}
33
Tom Stellard79243d92014-10-01 17:15:17 +000034; FUNC-LABEL: {{^}}fceil_v3f32:
Tom Stellard326d6ec2014-11-05 14:50:53 +000035; FIXME-SI: v_ceil_f32_e32
36; FIXME-SI: v_ceil_f32_e32
37; FIXME-SI: v_ceil_f32_e32
Jan Vesely85f0dbc2014-06-18 17:57:29 +000038; FIXME-EG: v3 is treated as v2 and v1, hence 2 stores
39; EG: MEM_RAT_CACHELESS STORE_RAW [[RESULT1:T[0-9]+]]{{\.[XYZW]}}
40; EG: MEM_RAT_CACHELESS STORE_RAW [[RESULT2:T[0-9]+]]{{\.[XYZW]}}
41; EG-DAG: CEIL {{\*? *}}[[RESULT1]]
42; EG-DAG: CEIL {{\*? *}}[[RESULT2]]
43; EG-DAG: CEIL {{\*? *}}[[RESULT2]]
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000044define amdgpu_kernel void @fceil_v3f32(<3 x float> addrspace(1)* %out, <3 x float> %x) {
Jan Vesely85f0dbc2014-06-18 17:57:29 +000045 %y = call <3 x float> @llvm.ceil.v3f32(<3 x float> %x) nounwind readnone
46 store <3 x float> %y, <3 x float> addrspace(1)* %out
Matt Arsenault41e2f2b2014-02-24 21:01:28 +000047 ret void
48}
49
Tom Stellard79243d92014-10-01 17:15:17 +000050; FUNC-LABEL: {{^}}fceil_v4f32:
Tom Stellard326d6ec2014-11-05 14:50:53 +000051; SI: v_ceil_f32_e32
52; SI: v_ceil_f32_e32
53; SI: v_ceil_f32_e32
54; SI: v_ceil_f32_e32
Jan Vesely85f0dbc2014-06-18 17:57:29 +000055; EG: MEM_RAT_CACHELESS STORE_RAW [[RESULT:T[0-9]+]]{{\.[XYZW]}}
56; EG: CEIL {{\*? *}}[[RESULT]]
57; EG: CEIL {{\*? *}}[[RESULT]]
58; EG: CEIL {{\*? *}}[[RESULT]]
59; EG: CEIL {{\*? *}}[[RESULT]]
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000060define amdgpu_kernel void @fceil_v4f32(<4 x float> addrspace(1)* %out, <4 x float> %x) {
Jan Vesely85f0dbc2014-06-18 17:57:29 +000061 %y = call <4 x float> @llvm.ceil.v4f32(<4 x float> %x) nounwind readnone
62 store <4 x float> %y, <4 x float> addrspace(1)* %out
Matt Arsenault41e2f2b2014-02-24 21:01:28 +000063 ret void
64}
65
Tom Stellard79243d92014-10-01 17:15:17 +000066; FUNC-LABEL: {{^}}fceil_v8f32:
Tom Stellard326d6ec2014-11-05 14:50:53 +000067; SI: v_ceil_f32_e32
68; SI: v_ceil_f32_e32
69; SI: v_ceil_f32_e32
70; SI: v_ceil_f32_e32
71; SI: v_ceil_f32_e32
72; SI: v_ceil_f32_e32
73; SI: v_ceil_f32_e32
74; SI: v_ceil_f32_e32
Jan Vesely85f0dbc2014-06-18 17:57:29 +000075; EG: MEM_RAT_CACHELESS STORE_RAW [[RESULT1:T[0-9]+]]{{\.[XYZW]}}
76; EG: MEM_RAT_CACHELESS STORE_RAW [[RESULT2:T[0-9]+]]{{\.[XYZW]}}
77; EG-DAG: CEIL {{\*? *}}[[RESULT1]]
78; EG-DAG: CEIL {{\*? *}}[[RESULT1]]
79; EG-DAG: CEIL {{\*? *}}[[RESULT1]]
80; EG-DAG: CEIL {{\*? *}}[[RESULT1]]
81; EG-DAG: CEIL {{\*? *}}[[RESULT2]]
82; EG-DAG: CEIL {{\*? *}}[[RESULT2]]
83; EG-DAG: CEIL {{\*? *}}[[RESULT2]]
84; EG-DAG: CEIL {{\*? *}}[[RESULT2]]
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000085define amdgpu_kernel void @fceil_v8f32(<8 x float> addrspace(1)* %out, <8 x float> %x) {
Jan Vesely85f0dbc2014-06-18 17:57:29 +000086 %y = call <8 x float> @llvm.ceil.v8f32(<8 x float> %x) nounwind readnone
87 store <8 x float> %y, <8 x float> addrspace(1)* %out
88 ret void
89}
90
Tom Stellard79243d92014-10-01 17:15:17 +000091; FUNC-LABEL: {{^}}fceil_v16f32:
Tom Stellard326d6ec2014-11-05 14:50:53 +000092; SI: v_ceil_f32_e32
93; SI: v_ceil_f32_e32
94; SI: v_ceil_f32_e32
95; SI: v_ceil_f32_e32
96; SI: v_ceil_f32_e32
97; SI: v_ceil_f32_e32
98; SI: v_ceil_f32_e32
99; SI: v_ceil_f32_e32
100; SI: v_ceil_f32_e32
101; SI: v_ceil_f32_e32
102; SI: v_ceil_f32_e32
103; SI: v_ceil_f32_e32
104; SI: v_ceil_f32_e32
105; SI: v_ceil_f32_e32
106; SI: v_ceil_f32_e32
107; SI: v_ceil_f32_e32
Jan Vesely85f0dbc2014-06-18 17:57:29 +0000108; EG: MEM_RAT_CACHELESS STORE_RAW [[RESULT1:T[0-9]+]]{{\.[XYZW]}}
109; EG: MEM_RAT_CACHELESS STORE_RAW [[RESULT2:T[0-9]+]]{{\.[XYZW]}}
110; EG: MEM_RAT_CACHELESS STORE_RAW [[RESULT3:T[0-9]+]]{{\.[XYZW]}}
111; EG: MEM_RAT_CACHELESS STORE_RAW [[RESULT4:T[0-9]+]]{{\.[XYZW]}}
112; EG-DAG: CEIL {{\*? *}}[[RESULT1]]
113; EG-DAG: CEIL {{\*? *}}[[RESULT1]]
114; EG-DAG: CEIL {{\*? *}}[[RESULT1]]
115; EG-DAG: CEIL {{\*? *}}[[RESULT1]]
116; EG-DAG: CEIL {{\*? *}}[[RESULT2]]
117; EG-DAG: CEIL {{\*? *}}[[RESULT2]]
118; EG-DAG: CEIL {{\*? *}}[[RESULT2]]
119; EG-DAG: CEIL {{\*? *}}[[RESULT2]]
120; EG-DAG: CEIL {{\*? *}}[[RESULT3]]
121; EG-DAG: CEIL {{\*? *}}[[RESULT3]]
122; EG-DAG: CEIL {{\*? *}}[[RESULT3]]
123; EG-DAG: CEIL {{\*? *}}[[RESULT3]]
124; EG-DAG: CEIL {{\*? *}}[[RESULT4]]
125; EG-DAG: CEIL {{\*? *}}[[RESULT4]]
126; EG-DAG: CEIL {{\*? *}}[[RESULT4]]
127; EG-DAG: CEIL {{\*? *}}[[RESULT4]]
Matt Arsenault3dbeefa2017-03-21 21:39:51 +0000128define amdgpu_kernel void @fceil_v16f32(<16 x float> addrspace(1)* %out, <16 x float> %x) {
Jan Vesely85f0dbc2014-06-18 17:57:29 +0000129 %y = call <16 x float> @llvm.ceil.v16f32(<16 x float> %x) nounwind readnone
130 store <16 x float> %y, <16 x float> addrspace(1)* %out
Matt Arsenault41e2f2b2014-02-24 21:01:28 +0000131 ret void
132}