Home | History | Annotate | Download | only in AMDGPU
      1 ; RUN: llc -march=amdgcn -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s
      2 ; RUN: llc -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefix=GCN %s
      3 ; RUN: llc -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -enable-unsafe-fp-math -verify-machineinstrs < %s | FileCheck -check-prefixes=GCN-UNSAFE %s
      4 
      5 ; FUNC-LABEL: {{^}}fptrunc_f64_to_f32:
      6 ; GCN: v_cvt_f32_f64_e32 {{v[0-9]+}}, {{s\[[0-9]+:[0-9]+\]}}
      7 define amdgpu_kernel void @fptrunc_f64_to_f32(float addrspace(1)* %out, double %in) {
      8   %result = fptrunc double %in to float
      9   store float %result, float addrspace(1)* %out
     10   ret void
     11 }
     12 
     13 ; FUNC-LABEL: {{^}}fptrunc_f64_to_f16:
     14 ; GCN-NOT: v_cvt
     15 ; GCN-UNSAFE: v_cvt_f32_f64_e32 [[F32:v[0-9]+]]
     16 ; GCN-UNSAFE: v_cvt_f16_f32_e32 v{{[0-9]+}}, [[F32]]
     17 define amdgpu_kernel void @fptrunc_f64_to_f16(i16 addrspace(1)* %out, double %in) {
     18   %result = fptrunc double %in to half
     19   %result_i16 = bitcast half %result to i16
     20   store i16 %result_i16, i16 addrspace(1)* %out
     21   ret void
     22 }
     23 
     24 ; FUNC-LABEL: {{^}}fptrunc_v2f64_to_v2f32:
     25 ; GCN: v_cvt_f32_f64_e32
     26 ; GCN: v_cvt_f32_f64_e32
     27 define amdgpu_kernel void @fptrunc_v2f64_to_v2f32(<2 x float> addrspace(1)* %out, <2 x double> %in) {
     28   %result = fptrunc <2 x double> %in to <2 x float>
     29   store <2 x float> %result, <2 x float> addrspace(1)* %out
     30   ret void
     31 }
     32 
     33 ; FUNC-LABEL: {{^}}fptrunc_v4f64_to_v4f32:
     34 ; GCN: v_cvt_f32_f64_e32
     35 ; GCN: v_cvt_f32_f64_e32
     36 ; GCN: v_cvt_f32_f64_e32
     37 ; GCN: v_cvt_f32_f64_e32
     38 define amdgpu_kernel void @fptrunc_v4f64_to_v4f32(<4 x float> addrspace(1)* %out, <4 x double> %in) {
     39   %result = fptrunc <4 x double> %in to <4 x float>
     40   store <4 x float> %result, <4 x float> addrspace(1)* %out
     41   ret void
     42 }
     43 
     44 ; FUNC-LABEL: {{^}}fptrunc_v8f64_to_v8f32:
     45 ; GCN: v_cvt_f32_f64_e32
     46 ; GCN: v_cvt_f32_f64_e32
     47 ; GCN: v_cvt_f32_f64_e32
     48 ; GCN: v_cvt_f32_f64_e32
     49 ; GCN: v_cvt_f32_f64_e32
     50 ; GCN: v_cvt_f32_f64_e32
     51 ; GCN: v_cvt_f32_f64_e32
     52 ; GCN: v_cvt_f32_f64_e32
     53 define amdgpu_kernel void @fptrunc_v8f64_to_v8f32(<8 x float> addrspace(1)* %out, <8 x double> %in) {
     54   %result = fptrunc <8 x double> %in to <8 x float>
     55   store <8 x float> %result, <8 x float> addrspace(1)* %out
     56   ret void
     57 }
     58