24 lines
1.1 KiB
Groff
24 lines
1.1 KiB
Groff
|
--- a/src/opts/SkRasterPipeline_opts.h
|
||
|
+++ b/src/opts/SkRasterPipeline_opts.h
|
||
|
@@ -1047,7 +1047,7 @@ static const size_t N = sizeof(F) / sizeof(float);
|
||
|
// TODO: crashes during compilation :(
|
||
|
#define ABI __attribute__((sysv_abi))
|
||
|
#define JUMPER_NARROW_STAGES 0
|
||
|
-#elif defined(_MSC_VER)
|
||
|
+#elif defined(_MSC_VER) && SK_CPU_SSE_LEVEL >= SK_CPU_SSE_LEVEL_SSE2
|
||
|
// Even if not vectorized, this lets us pass {r,g,b,a} as registers,
|
||
|
// instead of {b,a} on the stack. Narrow stages work best for __vectorcall.
|
||
|
#define ABI __vectorcall
|
||
|
--- a/include/private/SkVx.h
|
||
|
+++ b/include/private/SkVx.h
|
||
|
@@ -515,9 +515,6 @@ static inline Vec<N,uint8_t> approx_scale(const Vec<N,uint8_t>& x, const Vec<N,u
|
||
|
static inline Vec<4,float> rcp(const Vec<4,float>& x) {
|
||
|
return bit_pun<Vec<4,float>>(_mm_rcp_ps(bit_pun<__m128>(x)));
|
||
|
}
|
||
|
- static inline Vec<4,int> lrint(const Vec<4,float>& x) {
|
||
|
- return bit_pun<Vec<4,int>>(_mm_cvtps_epi32(bit_pun<__m128>(x)));
|
||
|
- }
|
||
|
|
||
|
static inline Vec<2,float> sqrt(const Vec<2,float>& x) {
|
||
|
return shuffle<0,1>( sqrt(shuffle<0,1,0,1>(x)));
|