| 98 | } |
| 99 | |
| 100 | void NFloat16Ops::UnpackFloat16SequenceAuto(const TFloat16* src, float* dst, size_t len) { |
| 101 | if (AreIntrinsicsAvailableOnHost()) { |
| 102 | UnpackFloat16SequenceIntrisincs(src, dst, len); |
| 103 | } else { |
| 104 | while(len > 0) { |
| 105 | *dst = src->AsFloat(); |
| 106 | dst += 1; |
| 107 | src += 1; |
| 108 | len -= 1; |
| 109 | } |
| 110 | } |
| 111 | } |
| 112 | |
| 113 | float NFloat16Ops::DotProductOnFloatAuto(const float* f32, const TFloat16* f16, size_t len) { |
| 114 | Y_ASSERT(size_t(f16) % Float16BufferAlignmentRequirementInBytes == 0); |