While this has been a problem in the past with latest clang version 16.0.6 on 
linux and a simple example:
    
    
    const
       Size = 10000006
    
    proc dot(a, b: seq[float]): seq[float] =
       result = newSeq[float](Size)
       for j in 0 ..< 200: # some repetitions
          for i in 0 ..< Size:
             result[i] = a[i] * b[i]
    
    proc main =
       var a = newSeq[float](Size)
       var b = newSeq[float](Size)
       
       var c = a.dot(b)
    
    main()
    
    
    Run

It seems that it is correctly autovectorized:

Reply via email to