Beispiel #1
0
 inline
 float32x4x4_t
 identity<float32x4x4_t>()
 {
     return float32x4x4_t(
         float32x4_t(1.0f, 0.0f, 0.0f, 0.0f),
         float32x4_t(0.0f, 1.0f, 0.0f, 0.0f),
         float32x4_t(0.0f, 0.0f, 1.0f, 0.0f),
         float32x4_t(0.0f, 0.0f, 0.0f, 1.0f)
     );
 }
Beispiel #2
0
 inline
 float32x4x4_t
 transpose(float32x4x4_t const & m)
 {
     return float32x4x4_t(
         float32x4_t(m.x.x, m.y.x, m.z.x, m.w.x),
         float32x4_t(m.x.y, m.y.y, m.z.y, m.w.y),
         float32x4_t(m.x.z, m.y.z, m.z.z, m.w.z),
         float32x4_t(m.x.w, m.y.w, m.z.w, m.w.w)
     );
 }
Beispiel #3
0
//__attribute__ ((noinline))
inline vector<float, 4> cmin(vector<float, 4> const& v) noexcept
{
  using vector_type = typename vector_traits<float, 4>::vector_type;

  auto tmp(vpmin_f32(vget_low_f32(float32x4_t(v.data_)),
    vget_high_f32(float32x4_t(v.data_))));

  tmp = vpmin_f32(tmp, tmp);

  return {
    vector_type(vcombine_f32(tmp, tmp))
  };
}