brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · 66cab0b Raw
129 lines · plain
1; RUN: llc -mtriple=amdgcn < %s | FileCheck -check-prefix=SI -check-prefix=FUNC %s2; RUN: llc -mtriple=amdgcn -mcpu=bonaire < %s | FileCheck -check-prefix=CI -check-prefix=FUNC %s3; RUN: llc -mtriple=amdgcn -mcpu=tonga -mattr=-flat-for-global < %s | FileCheck -check-prefix=CI -check-prefix=FUNC %s4 5declare double @llvm.fabs.f64(double %Val)6declare double @llvm.floor.f64(double) nounwind readnone7declare <2 x double> @llvm.floor.v2f64(<2 x double>) nounwind readnone8declare <3 x double> @llvm.floor.v3f64(<3 x double>) nounwind readnone9declare <4 x double> @llvm.floor.v4f64(<4 x double>) nounwind readnone10declare <8 x double> @llvm.floor.v8f64(<8 x double>) nounwind readnone11declare <16 x double> @llvm.floor.v16f64(<16 x double>) nounwind readnone12 13; FUNC-LABEL: {{^}}ffloor_f64:14; CI: v_floor_f64_e3215; SI: v_fract_f64_e3216; SI-DAG: v_min_f6417; SI-DAG: v_cmp_class_f64_e64 vcc18; SI: v_cndmask_b32_e3219; SI: v_cndmask_b32_e3220; SI: v_add_f6421; SI: s_endpgm22define amdgpu_kernel void @ffloor_f64(ptr addrspace(1) %out, double %x) {23  %y = call fast double @llvm.floor.f64(double %x) nounwind readnone24  store double %y, ptr addrspace(1) %out25  ret void26}27 28; FUNC-LABEL: {{^}}ffloor_f64_neg:29; CI: v_floor_f64_e6430; SI: v_fract_f64_e64 {{v\[[0-9]+:[0-9]+\]}}, -[[INPUT:s\[[0-9]+:[0-9]+\]]]31; SI-DAG: v_min_f6432; SI-DAG: v_cmp_class_f64_e64 vcc33; SI: v_cndmask_b32_e3234; SI: v_cndmask_b32_e3235; SI: v_add_f64 {{v\[[0-9]+:[0-9]+\]}}, -[[INPUT]]36; SI: s_endpgm37define amdgpu_kernel void @ffloor_f64_neg(ptr addrspace(1) %out, double %x) {38  %neg = fsub nsz double 0.0, %x39  %y = call fast double @llvm.floor.f64(double %neg) nounwind readnone40  store double %y, ptr addrspace(1) %out41  ret void42}43 44; FUNC-LABEL: {{^}}ffloor_f64_neg_abs:45; CI: v_floor_f64_e6446; SI: v_fract_f64_e64 {{v\[[0-9]+:[0-9]+\]}}, -|[[INPUT:s\[[0-9]+:[0-9]+\]]]|47; SI-DAG: v_min_f6448; SI-DAG: v_cmp_class_f64_e64 vcc49; SI: v_cndmask_b32_e3250; SI: v_cndmask_b32_e3251; SI: v_add_f64 {{v\[[0-9]+:[0-9]+\]}}, -|[[INPUT]]|52; SI: s_endpgm53define amdgpu_kernel void @ffloor_f64_neg_abs(ptr addrspace(1) %out, double %x) {54  %abs = call fast double @llvm.fabs.f64(double %x)55  %neg = fsub nsz double 0.0, %abs56  %y = call fast double @llvm.floor.f64(double %neg) nounwind readnone57  store double %y, ptr addrspace(1) %out58  ret void59}60 61; FUNC-LABEL: {{^}}ffloor_v2f64:62; CI: v_floor_f64_e3263; CI: v_floor_f64_e3264define 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 readnone66  store <2 x double> %y, ptr addrspace(1) %out67  ret void68}69 70; FUNC-LABEL: {{^}}ffloor_v3f64:71; CI: v_floor_f64_e3272; CI: v_floor_f64_e3273; CI: v_floor_f64_e3274; CI-NOT: v_floor_f64_e3275define 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 readnone77  store <3 x double> %y, ptr addrspace(1) %out78  ret void79}80 81; FUNC-LABEL: {{^}}ffloor_v4f64:82; CI: v_floor_f64_e3283; CI: v_floor_f64_e3284; CI: v_floor_f64_e3285; CI: v_floor_f64_e3286define 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 readnone88  store <4 x double> %y, ptr addrspace(1) %out89  ret void90}91 92; FUNC-LABEL: {{^}}ffloor_v8f64:93; CI: v_floor_f64_e3294; CI: v_floor_f64_e3295; CI: v_floor_f64_e3296; CI: v_floor_f64_e3297; CI: v_floor_f64_e3298; CI: v_floor_f64_e3299; CI: v_floor_f64_e32100; CI: v_floor_f64_e32101define 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 readnone103  store <8 x double> %y, ptr addrspace(1) %out104  ret void105}106 107; FUNC-LABEL: {{^}}ffloor_v16f64:108; CI: v_floor_f64_e32109; CI: v_floor_f64_e32110; CI: v_floor_f64_e32111; CI: v_floor_f64_e32112; CI: v_floor_f64_e32113; CI: v_floor_f64_e32114; CI: v_floor_f64_e32115; CI: v_floor_f64_e32116; CI: v_floor_f64_e32117; CI: v_floor_f64_e32118; CI: v_floor_f64_e32119; CI: v_floor_f64_e32120; CI: v_floor_f64_e32121; CI: v_floor_f64_e32122; CI: v_floor_f64_e32123; CI: v_floor_f64_e32124define 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 readnone126  store <16 x double> %y, ptr addrspace(1) %out127  ret void128}129