11#ifndef EIGEN_TYPE_CASTING_GPU_H
12#define EIGEN_TYPE_CASTING_GPU_H
15#include "../../InternalHeaderCheck.h"
21#if defined(EIGEN_GPU_COMPILE_PHASE)
26struct type_casting_traits<Eigen::half, float> : vectorized_type_casting_traits<Eigen::half, float> {};
29struct type_casting_traits<float, Eigen::half> : vectorized_type_casting_traits<float, Eigen::half> {};
36EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE float4 pcast<Packet4h2, float4>(
const Packet4h2& a) {
37 const float2 low = __half22float2(lane_half2(a, 0));
38 const float2 high = __half22float2(lane_half2(a, 1));
39 return make_float4(low.x, low.y, high.x, high.y);
43EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Packet4h2 pcast<float4, Packet4h2>(
const float4& a,
const float4& b) {
44 return make_packet4h2(__floats2half2_rn(a.x, a.y), __floats2half2_rn(a.z, a.w), __floats2half2_rn(b.x, b.y),
45 __floats2half2_rn(b.z, b.w));