These are how the API's in question are getting presented in Swift:
// without `ACCELERATE_NEW_LAPACK=1` and `ACCELERATE_LAPACK_ILP64=1`
cblas_cgemv(CBLAS_ORDER, CBLAS_TRANSPOSE, Int32, Int32,
UnsafeRawPointer!, UnsafeRawPointer!, Int32,
UnsafeRawPointer!, Int32, UnsafeRawPointer!,
UnsafeMutableRawPointer!, Int32)
cblas_dgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE,
Int32, Int32, Int32, Double,
UnsafePointer<Double>!, Int32, UnsafePointer<Double>!, Int32, Double,
UnsafeMutablePointer<Double>!, Int32)
// with `ACCELERATE_NEW_LAPACK=1` and `ACCELERATE_LAPACK_ILP64=1`
cblas_cgemv(CBLAS_ORDER, CBLAS_TRANSPOSE, __LAPACK_int, __LAPACK_int,
OpaquePointer, OpaquePointer?, __LAPACK_int,
OpaquePointer?, __LAPACK_int, OpaquePointer,
OpaquePointer?, __LAPACK_int)
cblas_dgemm(CBLAS_ORDER, CBLAS_TRANSPOSE, CBLAS_TRANSPOSE,
__LAPACK_int, __LAPACK_int, __LAPACK_int, Double,
UnsafePointer<Double>?, __LAPACK_int, UnsafePointer<Double>?, __LAPACK_int, Double,
UnsafeMutablePointer<Double>?, __LAPACK_int)
As you can see there's always "unsafe" stuff involved when importing C's API's that work with pointers... Sometime you don't see this unsafely at the use sites (when Swift could help you implicitly converting from &x to unsafePointer under the hood), sometimes you see it when Swift can't help doing that magic conversion.
If you use the "func cblas_cgemv_wrapper" of my previous post and put it out of sight in some library of yours – you'd use it without explicit unsafe stuff at the call sites, similar to how you don't see it when using cblas_dgemm now.
Why the library uses Unsafe[Mutable][Raw]Pointer with one settings and OpaquePointer with another? I think this has to do with C types involved:
struct S; // no body
typedef struct S T;
// or is this #define T struct S
double * x // converted to unsafe pointer
T * x; // converted to opaque pointer