Two questions for now, what to do to fill the data from `vals` into `a`
    
    
    import nimsimd/avx2
    
    when defined(gcc) or defined(clang):
      {.localPassc: "-mavx2".}
    
    
    proc test(vals: seq[float32])=
      let
        a = mm256_load_ps(vals.what_goes_here_??)
        b = mm256_set1_ps(-2.0)
        c = mm256_mul_ps(a, b)
        d = mm256_andnot_ps(mm256_set1_ps(-0.0), c) #abs
      echo cast[array[8, float32]](d)
    
    test(@[1.0.float32, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0])
    
    
    Run

how to adapt `mm256_abs_ps` to make it work?
    
    
    proc mm256_abs_ps(x: M256): M256 =
      mm256_andnot_ps(mm256_set1_ps(-0.0), x)
    
    let
      a = mm256_setr_ps(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0)
      b = mm256_set1_ps(-2.0)
      c = mm256_mul_ps(a, b)
      d = mm256_abs_ps(c)
    
    echo cast[array[8, float32]](d)
    
    #SIGSEGV: Illegal storage access. (Attempt to read from nil?) @ d
    
    
    Run

Reply via email to