@@ -373,7 +373,7 @@ class alignas(16) GSVector4i
373373
374374 __forceinline u32 minv_u32 () const
375375 {
376- return vminvq_u32 (v4s);
376+ return vminvq_u32 (vreinterpretq_u32_s32 ( v4s) );
377377 }
378378
379379 __forceinline u32 maxv_s32 () const
@@ -383,7 +383,7 @@ class alignas(16) GSVector4i
383383
384384 __forceinline u32 maxv_u32 () const
385385 {
386- return vmaxvq_u32 (v4s);
386+ return vmaxvq_u32 (vreinterpretq_u32_s32 ( v4s) );
387387 }
388388
389389 __forceinline static int min_i16 (int a, int b)
@@ -508,12 +508,12 @@ class alignas(16) GSVector4i
508508
509509 __forceinline GSVector4i pkl32 (const GSVector4i& a) const
510510 {
511- return GSVector4i (vuzp1q_u32 (v4s, a.v4s ));
511+ return GSVector4i (vuzp1q_s32 (v4s, a.v4s ));
512512 }
513513
514514 __forceinline GSVector4i pku32 (const GSVector4i& a) const
515515 {
516- return GSVector4i (vuzp2q_u32 (v4s, a.v4s ));
516+ return GSVector4i (vuzp2q_s32 (v4s, a.v4s ));
517517 }
518518
519519 __forceinline GSVector4i upl8 (const GSVector4i& a) const
@@ -701,7 +701,7 @@ class alignas(16) GSVector4i
701701
702702 __forceinline GSVector4i srl16 (s32 i) const
703703 {
704- return GSVector4i (vreinterpretq_s32_u16 (vshlq_u16 (vreinterpretq_u16_s32 (v4s), vdupq_n_u16 (-i))));
704+ return GSVector4i (vreinterpretq_s32_u16 (vshlq_u16 (vreinterpretq_u16_s32 (v4s), vdupq_n_s16 (-i))));
705705 }
706706
707707 __forceinline GSVector4i srlv16 (const GSVector4i& v) const
@@ -764,7 +764,7 @@ class alignas(16) GSVector4i
764764
765765 __forceinline GSVector4i srav32 (const GSVector4i& v) const
766766 {
767- return GSVector4i (vshlq_s32 (vreinterpretq_u32_s32 ( v4s) , vnegq_s32 (v.v4s )));
767+ return GSVector4i (vshlq_s32 (v4s, vnegq_s32 (v.v4s )));
768768 }
769769
770770 template <int i>
@@ -775,7 +775,7 @@ class alignas(16) GSVector4i
775775
776776 __forceinline GSVector4i sll64 (s32 i) const
777777 {
778- return GSVector4i (vreinterpretq_s32_s64 (vshlq_s64 (vreinterpretq_s64_s32 (v4s), vdupq_n_s16 (i))));
778+ return GSVector4i (vreinterpretq_s32_s64 (vshlq_s64 (vreinterpretq_s64_s32 (v4s), vdupq_n_s64 (i))));
779779 }
780780
781781 __forceinline GSVector4i sllv64 (const GSVector4i& v) const
@@ -791,7 +791,7 @@ class alignas(16) GSVector4i
791791
792792 __forceinline GSVector4i sra64 (s32 i) const
793793 {
794- return GSVector4i (vreinterpretq_s32_s64 (vshlq_s64 (vreinterpretq_s64_s32 (v4s), vdupq_n_s16 (-i))));
794+ return GSVector4i (vreinterpretq_s32_s64 (vshlq_s64 (vreinterpretq_s64_s32 (v4s), vdupq_n_s64 (-i))));
795795 }
796796
797797 __forceinline GSVector4i srav64 (const GSVector4i& v) const
@@ -808,7 +808,7 @@ class alignas(16) GSVector4i
808808
809809 __forceinline GSVector4i srl64 (s32 i) const
810810 {
811- return GSVector4i (vreinterpretq_s32_u64 (vshlq_u64 (vreinterpretq_u64_s32 (v4s), vdupq_n_u16 (-i))));
811+ return GSVector4i (vreinterpretq_s32_u64 (vshlq_u64 (vreinterpretq_u64_s32 (v4s), vdupq_n_s64 (-i))));
812812 }
813813
814814 __forceinline GSVector4i srlv64 (const GSVector4i& v) const
@@ -858,7 +858,7 @@ class alignas(16) GSVector4i
858858 // return GSVector4i(vreinterpretq_s32_s16(vpaddq_s16(vreinterpretq_s16_s32(v4s), vreinterpretq_s16_s32(v.v4s))));
859859 const int16x8_t a = vreinterpretq_s16_s32 (v4s);
860860 const int16x8_t b = vreinterpretq_s16_s32 (v.v4s );
861- return GSVector4i (vqaddq_s16 (vuzp1q_s16 (a, b), vuzp2q_s16 (a, b)));
861+ return GSVector4i (vreinterpretq_s32_s16 ( vqaddq_s16 (vuzp1q_s16 (a, b), vuzp2q_s16 (a, b) )));
862862 }
863863
864864 __forceinline GSVector4i addus8 (const GSVector4i& v) const
@@ -888,7 +888,7 @@ class alignas(16) GSVector4i
888888
889889 __forceinline GSVector4i hsub32 (const GSVector4i& v) const
890890 {
891- return GSVector4i (vsubq_u32 ( vuzp1q_u32 (v4s, v.v4s ), vuzp2q_u32 (v4s, v.v4s )));
891+ return GSVector4i (vsubq_s32 ( vuzp1q_s32 (v4s, v.v4s ), vuzp2q_s32 (v4s, v.v4s )));
892892 }
893893
894894 __forceinline GSVector4i subs8 (const GSVector4i& v) const
@@ -1029,62 +1029,62 @@ class alignas(16) GSVector4i
10291029
10301030 __forceinline GSVector4i gt8 (const GSVector4i& v) const
10311031 {
1032- return GSVector4i (vreinterpretq_s32_s8 (vcgtq_s8 (vreinterpretq_s8_s32 (v4s), vreinterpretq_s8_s32 (v.v4s ))));
1032+ return GSVector4i (vreinterpretq_s32_u8 (vcgtq_s8 (vreinterpretq_s8_s32 (v4s), vreinterpretq_s8_s32 (v.v4s ))));
10331033 }
10341034
10351035 __forceinline GSVector4i gt16 (const GSVector4i& v) const
10361036 {
1037- return GSVector4i (vreinterpretq_s32_s16 (vcgtq_s16 (vreinterpretq_s16_s32 (v4s), vreinterpretq_s16_s32 (v.v4s ))));
1037+ return GSVector4i (vreinterpretq_s32_u16 (vcgtq_s16 (vreinterpretq_s16_s32 (v4s), vreinterpretq_s16_s32 (v.v4s ))));
10381038 }
10391039
10401040 __forceinline GSVector4i gt32 (const GSVector4i& v) const
10411041 {
1042- return GSVector4i (vcgtq_s32 (v4s, v.v4s ));
1042+ return GSVector4i (vreinterpretq_s32_u32 ( vcgtq_s32 (v4s, v.v4s ) ));
10431043 }
10441044
10451045 __forceinline GSVector4i ge8 (const GSVector4i& v) const
10461046 {
1047- return GSVector4i (vreinterpretq_s32_s8 (vcgeq_s8 (vreinterpretq_s8_s32 (v4s), vreinterpretq_s8_s32 (v.v4s ))));
1047+ return GSVector4i (vreinterpretq_s32_u8 (vcgeq_s8 (vreinterpretq_s8_s32 (v4s), vreinterpretq_s8_s32 (v.v4s ))));
10481048 }
10491049
10501050 __forceinline GSVector4i ge16 (const GSVector4i& v) const
10511051 {
1052- return GSVector4i (vreinterpretq_s32_s16 (vcgeq_s16 (vreinterpretq_s16_s32 (v4s), vreinterpretq_s16_s32 (v.v4s ))));
1052+ return GSVector4i (vreinterpretq_s32_u16 (vcgeq_s16 (vreinterpretq_s16_s32 (v4s), vreinterpretq_s16_s32 (v.v4s ))));
10531053 }
10541054
10551055 __forceinline GSVector4i ge32 (const GSVector4i& v) const
10561056 {
1057- return GSVector4i (vcgeq_s32 (v4s, v.v4s ));
1057+ return GSVector4i (vreinterpretq_s32_u32 ( vcgeq_s32 (v4s, v.v4s ) ));
10581058 }
10591059
10601060 __forceinline GSVector4i lt8 (const GSVector4i& v) const
10611061 {
1062- return GSVector4i (vreinterpretq_s32_s8 (vcltq_s8 (vreinterpretq_s8_s32 (v4s), vreinterpretq_s8_s32 (v.v4s ))));
1062+ return GSVector4i (vreinterpretq_s32_u8 (vcltq_s8 (vreinterpretq_s8_s32 (v4s), vreinterpretq_s8_s32 (v.v4s ))));
10631063 }
10641064
10651065 __forceinline GSVector4i lt16 (const GSVector4i& v) const
10661066 {
1067- return GSVector4i (vreinterpretq_s32_s16 (vcltq_s16 (vreinterpretq_s16_s32 (v4s), vreinterpretq_s16_s32 (v.v4s ))));
1067+ return GSVector4i (vreinterpretq_s32_u16 (vcltq_s16 (vreinterpretq_s16_s32 (v4s), vreinterpretq_s16_s32 (v.v4s ))));
10681068 }
10691069
10701070 __forceinline GSVector4i lt32 (const GSVector4i& v) const
10711071 {
1072- return GSVector4i (vcltq_s32 (v4s, v.v4s ));
1072+ return GSVector4i (vreinterpretq_s32_u32 ( vcltq_s32 (v4s, v.v4s ) ));
10731073 }
10741074
10751075 __forceinline GSVector4i le8 (const GSVector4i& v) const
10761076 {
1077- return GSVector4i (vreinterpretq_s32_s8 (vcleq_s8 (vreinterpretq_s8_s32 (v4s), vreinterpretq_s8_s32 (v.v4s ))));
1077+ return GSVector4i (vreinterpretq_s32_u8 (vcleq_s8 (vreinterpretq_s8_s32 (v4s), vreinterpretq_s8_s32 (v.v4s ))));
10781078 }
10791079
10801080 __forceinline GSVector4i le16 (const GSVector4i& v) const
10811081 {
1082- return GSVector4i (vreinterpretq_s32_s16 (vcleq_s16 (vreinterpretq_s16_s32 (v4s), vreinterpretq_s16_s32 (v.v4s ))));
1082+ return GSVector4i (vreinterpretq_s32_u16 (vcleq_s16 (vreinterpretq_s16_s32 (v4s), vreinterpretq_s16_s32 (v.v4s ))));
10831083 }
10841084
10851085 __forceinline GSVector4i le32 (const GSVector4i& v) const
10861086 {
1087- return GSVector4i (vcleq_s32 (v4s, v.v4s ));
1087+ return GSVector4i (vreinterpretq_s32_u32 ( vcleq_s32 (v4s, v.v4s ) ));
10881088 }
10891089
10901090
@@ -1112,7 +1112,7 @@ class alignas(16) GSVector4i
11121112 __forceinline bool allfalse () const
11131113 {
11141114 // MSB should be clear in all 8-bit lanes.
1115- return (vmaxvq_u32 (vreinterpretq_u8_s32 (v4s)) & 0x80 ) != 0x80 ;
1115+ return (vmaxvq_u8 (vreinterpretq_u8_s32 (v4s)) & 0x80 ) != 0x80 ;
11161116 }
11171117
11181118 template <int i>
0 commit comments