comparison llvm/test/CodeGen/AMDGPU/ffloor.f64.ll @ 252:1f2b6ac9f198 llvm-original

LLVM16-1
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Aug 2023 09:04:13 +0900 (2023-08-18)
parents 79ff65ed7e25
children
comparison
equal deleted inserted replaced
237:c80f45b162ad 252:1f2b6ac9f198
17 ; SI-DAG: v_cmp_class_f64_e64 vcc 17 ; SI-DAG: v_cmp_class_f64_e64 vcc
18 ; SI: v_cndmask_b32_e32 18 ; SI: v_cndmask_b32_e32
19 ; SI: v_cndmask_b32_e32 19 ; SI: v_cndmask_b32_e32
20 ; SI: v_add_f64 20 ; SI: v_add_f64
21 ; SI: s_endpgm 21 ; SI: s_endpgm
22 define amdgpu_kernel void @ffloor_f64(double addrspace(1)* %out, double %x) { 22 define amdgpu_kernel void @ffloor_f64(ptr addrspace(1) %out, double %x) {
23 %y = call fast double @llvm.floor.f64(double %x) nounwind readnone 23 %y = call fast double @llvm.floor.f64(double %x) nounwind readnone
24 store double %y, double addrspace(1)* %out 24 store double %y, ptr addrspace(1) %out
25 ret void 25 ret void
26 } 26 }
27 27
28 ; FUNC-LABEL: {{^}}ffloor_f64_neg: 28 ; FUNC-LABEL: {{^}}ffloor_f64_neg:
29 ; CI: v_floor_f64_e64 29 ; CI: v_floor_f64_e64
32 ; SI-DAG: v_cmp_class_f64_e64 vcc 32 ; SI-DAG: v_cmp_class_f64_e64 vcc
33 ; SI: v_cndmask_b32_e32 33 ; SI: v_cndmask_b32_e32
34 ; SI: v_cndmask_b32_e32 34 ; SI: v_cndmask_b32_e32
35 ; SI: v_add_f64 {{v\[[0-9]+:[0-9]+\]}}, -[[INPUT]] 35 ; SI: v_add_f64 {{v\[[0-9]+:[0-9]+\]}}, -[[INPUT]]
36 ; SI: s_endpgm 36 ; SI: s_endpgm
37 define amdgpu_kernel void @ffloor_f64_neg(double addrspace(1)* %out, double %x) { 37 define amdgpu_kernel void @ffloor_f64_neg(ptr addrspace(1) %out, double %x) {
38 %neg = fsub nsz double 0.0, %x 38 %neg = fsub nsz double 0.0, %x
39 %y = call fast double @llvm.floor.f64(double %neg) nounwind readnone 39 %y = call fast double @llvm.floor.f64(double %neg) nounwind readnone
40 store double %y, double addrspace(1)* %out 40 store double %y, ptr addrspace(1) %out
41 ret void 41 ret void
42 } 42 }
43 43
44 ; FUNC-LABEL: {{^}}ffloor_f64_neg_abs: 44 ; FUNC-LABEL: {{^}}ffloor_f64_neg_abs:
45 ; CI: v_floor_f64_e64 45 ; CI: v_floor_f64_e64
48 ; SI-DAG: v_cmp_class_f64_e64 vcc 48 ; SI-DAG: v_cmp_class_f64_e64 vcc
49 ; SI: v_cndmask_b32_e32 49 ; SI: v_cndmask_b32_e32
50 ; SI: v_cndmask_b32_e32 50 ; SI: v_cndmask_b32_e32
51 ; SI: v_add_f64 {{v\[[0-9]+:[0-9]+\]}}, -|[[INPUT]]| 51 ; SI: v_add_f64 {{v\[[0-9]+:[0-9]+\]}}, -|[[INPUT]]|
52 ; SI: s_endpgm 52 ; SI: s_endpgm
53 define amdgpu_kernel void @ffloor_f64_neg_abs(double addrspace(1)* %out, double %x) { 53 define amdgpu_kernel void @ffloor_f64_neg_abs(ptr addrspace(1) %out, double %x) {
54 %abs = call fast double @llvm.fabs.f64(double %x) 54 %abs = call fast double @llvm.fabs.f64(double %x)
55 %neg = fsub nsz double 0.0, %abs 55 %neg = fsub nsz double 0.0, %abs
56 %y = call fast double @llvm.floor.f64(double %neg) nounwind readnone 56 %y = call fast double @llvm.floor.f64(double %neg) nounwind readnone
57 store double %y, double addrspace(1)* %out 57 store double %y, ptr addrspace(1) %out
58 ret void 58 ret void
59 } 59 }
60 60
61 ; FUNC-LABEL: {{^}}ffloor_v2f64: 61 ; FUNC-LABEL: {{^}}ffloor_v2f64:
62 ; CI: v_floor_f64_e32 62 ; CI: v_floor_f64_e32
63 ; CI: v_floor_f64_e32 63 ; CI: v_floor_f64_e32
64 define amdgpu_kernel void @ffloor_v2f64(<2 x double> addrspace(1)* %out, <2 x double> %x) { 64 define amdgpu_kernel void @ffloor_v2f64(ptr addrspace(1) %out, <2 x double> %x) {
65 %y = call fast <2 x double> @llvm.floor.v2f64(<2 x double> %x) nounwind readnone 65 %y = call fast <2 x double> @llvm.floor.v2f64(<2 x double> %x) nounwind readnone
66 store <2 x double> %y, <2 x double> addrspace(1)* %out 66 store <2 x double> %y, ptr addrspace(1) %out
67 ret void 67 ret void
68 } 68 }
69 69
70 ; FUNC-LABEL: {{^}}ffloor_v3f64: 70 ; FUNC-LABEL: {{^}}ffloor_v3f64:
71 ; CI: v_floor_f64_e32 71 ; CI: v_floor_f64_e32
72 ; CI: v_floor_f64_e32 72 ; CI: v_floor_f64_e32
73 ; CI: v_floor_f64_e32 73 ; CI: v_floor_f64_e32
74 ; CI-NOT: v_floor_f64_e32 74 ; CI-NOT: v_floor_f64_e32
75 define amdgpu_kernel void @ffloor_v3f64(<3 x double> addrspace(1)* %out, <3 x double> %x) { 75 define amdgpu_kernel void @ffloor_v3f64(ptr addrspace(1) %out, <3 x double> %x) {
76 %y = call fast <3 x double> @llvm.floor.v3f64(<3 x double> %x) nounwind readnone 76 %y = call fast <3 x double> @llvm.floor.v3f64(<3 x double> %x) nounwind readnone
77 store <3 x double> %y, <3 x double> addrspace(1)* %out 77 store <3 x double> %y, ptr addrspace(1) %out
78 ret void 78 ret void
79 } 79 }
80 80
81 ; FUNC-LABEL: {{^}}ffloor_v4f64: 81 ; FUNC-LABEL: {{^}}ffloor_v4f64:
82 ; CI: v_floor_f64_e32 82 ; CI: v_floor_f64_e32
83 ; CI: v_floor_f64_e32 83 ; CI: v_floor_f64_e32
84 ; CI: v_floor_f64_e32 84 ; CI: v_floor_f64_e32
85 ; CI: v_floor_f64_e32 85 ; CI: v_floor_f64_e32
86 define amdgpu_kernel void @ffloor_v4f64(<4 x double> addrspace(1)* %out, <4 x double> %x) { 86 define amdgpu_kernel void @ffloor_v4f64(ptr addrspace(1) %out, <4 x double> %x) {
87 %y = call fast <4 x double> @llvm.floor.v4f64(<4 x double> %x) nounwind readnone 87 %y = call fast <4 x double> @llvm.floor.v4f64(<4 x double> %x) nounwind readnone
88 store <4 x double> %y, <4 x double> addrspace(1)* %out 88 store <4 x double> %y, ptr addrspace(1) %out
89 ret void 89 ret void
90 } 90 }
91 91
92 ; FUNC-LABEL: {{^}}ffloor_v8f64: 92 ; FUNC-LABEL: {{^}}ffloor_v8f64:
93 ; CI: v_floor_f64_e32 93 ; CI: v_floor_f64_e32
96 ; CI: v_floor_f64_e32 96 ; CI: v_floor_f64_e32
97 ; CI: v_floor_f64_e32 97 ; CI: v_floor_f64_e32
98 ; CI: v_floor_f64_e32 98 ; CI: v_floor_f64_e32
99 ; CI: v_floor_f64_e32 99 ; CI: v_floor_f64_e32
100 ; CI: v_floor_f64_e32 100 ; CI: v_floor_f64_e32
101 define amdgpu_kernel void @ffloor_v8f64(<8 x double> addrspace(1)* %out, <8 x double> %x) { 101 define amdgpu_kernel void @ffloor_v8f64(ptr addrspace(1) %out, <8 x double> %x) {
102 %y = call fast <8 x double> @llvm.floor.v8f64(<8 x double> %x) nounwind readnone 102 %y = call fast <8 x double> @llvm.floor.v8f64(<8 x double> %x) nounwind readnone
103 store <8 x double> %y, <8 x double> addrspace(1)* %out 103 store <8 x double> %y, ptr addrspace(1) %out
104 ret void 104 ret void
105 } 105 }
106 106
107 ; FUNC-LABEL: {{^}}ffloor_v16f64: 107 ; FUNC-LABEL: {{^}}ffloor_v16f64:
108 ; CI: v_floor_f64_e32 108 ; CI: v_floor_f64_e32
119 ; CI: v_floor_f64_e32 119 ; CI: v_floor_f64_e32
120 ; CI: v_floor_f64_e32 120 ; CI: v_floor_f64_e32
121 ; CI: v_floor_f64_e32 121 ; CI: v_floor_f64_e32
122 ; CI: v_floor_f64_e32 122 ; CI: v_floor_f64_e32
123 ; CI: v_floor_f64_e32 123 ; CI: v_floor_f64_e32
124 define amdgpu_kernel void @ffloor_v16f64(<16 x double> addrspace(1)* %out, <16 x double> %x) { 124 define amdgpu_kernel void @ffloor_v16f64(ptr addrspace(1) %out, <16 x double> %x) {
125 %y = call fast <16 x double> @llvm.floor.v16f64(<16 x double> %x) nounwind readnone 125 %y = call fast <16 x double> @llvm.floor.v16f64(<16 x double> %x) nounwind readnone
126 store <16 x double> %y, <16 x double> addrspace(1)* %out 126 store <16 x double> %y, ptr addrspace(1) %out
127 ret void 127 ret void
128 } 128 }