blob: 720fe7a45e3dfd8478ff93b99dd488534df2d4b1 [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
Matt Arsenault76723d72015-01-16 22:11:00 +00003; RUN: llc -march=r600 -mcpu=redwood < %s | FileCheck -check-prefix=R600 -check-prefix=FUNC %s
Matt Arsenault41e2f2b2014-02-24 21:01:28 +00004
Matt Arsenault76723d72015-01-16 22:11:00 +00005; FUNC-LABEL: {{^}}floor_f32:
6; SI: v_floor_f32_e32
7; R600: FLOOR
Matt Arsenault3dbeefa2017-03-21 21:39:51 +00008define amdgpu_kernel void @floor_f32(float addrspace(1)* %out, float %in) {
Matt Arsenault76723d72015-01-16 22:11:00 +00009 %tmp = call float @llvm.floor.f32(float %in) #0
10 store float %tmp, float addrspace(1)* %out
Matt Arsenault41e2f2b2014-02-24 21:01:28 +000011 ret void
12}
13
Matt Arsenault76723d72015-01-16 22:11:00 +000014; FUNC-LABEL: {{^}}floor_v2f32:
15; SI: v_floor_f32_e32
16; SI: v_floor_f32_e32
17
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000018define amdgpu_kernel void @floor_v2f32(<2 x float> addrspace(1)* %out, <2 x float> %in) {
Matt Arsenault76723d72015-01-16 22:11:00 +000019 %tmp = call <2 x float> @llvm.floor.v2f32(<2 x float> %in) #0
20 store <2 x float> %tmp, <2 x float> addrspace(1)* %out
Matt Arsenault41e2f2b2014-02-24 21:01:28 +000021 ret void
22}
23
Matt Arsenault76723d72015-01-16 22:11:00 +000024; FUNC-LABEL: {{^}}floor_v4f32:
25; SI: v_floor_f32_e32
26; SI: v_floor_f32_e32
27; SI: v_floor_f32_e32
28; SI: v_floor_f32_e32
Matt Arsenault41e2f2b2014-02-24 21:01:28 +000029
Matt Arsenault76723d72015-01-16 22:11:00 +000030; R600: FLOOR
31; R600: FLOOR
32; R600: FLOOR
33; R600: FLOOR
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000034define amdgpu_kernel void @floor_v4f32(<4 x float> addrspace(1)* %out, <4 x float> %in) {
Matt Arsenault76723d72015-01-16 22:11:00 +000035 %tmp = call <4 x float> @llvm.floor.v4f32(<4 x float> %in) #0
36 store <4 x float> %tmp, <4 x float> addrspace(1)* %out
Matt Arsenault41e2f2b2014-02-24 21:01:28 +000037 ret void
38}
39
Matt Arsenault76723d72015-01-16 22:11:00 +000040; Function Attrs: nounwind readonly
41declare float @llvm.floor.f32(float) #0
Matt Arsenault41e2f2b2014-02-24 21:01:28 +000042
Matt Arsenault76723d72015-01-16 22:11:00 +000043; Function Attrs: nounwind readonly
44declare <2 x float> @llvm.floor.v2f32(<2 x float>) #0
45
46; Function Attrs: nounwind readonly
47declare <4 x float> @llvm.floor.v4f32(<4 x float>) #0
48
Matt Arsenault4843f192015-01-18 19:30:32 +000049attributes #0 = { nounwind readnone }