@@ -693,7 +693,7 @@ EMITTER_OPCODE_TABLE(OPCODE_VECTOR_SUB, VECTOR_SUB);
693693// OPCODE_VECTOR_SHL
694694// ============================================================================
695695template <typename T, std::enable_if_t <std::is_integral<T>::value, int > = 0 >
696- static __m128i EmulateVectorShl (void *, __m128i src1, __m128i src2) {
696+ static __m128i EmulateVectorShl (void *, __m128i& src1, __m128i& src2) {
697697 alignas (16 ) T value[16 / sizeof (T)];
698698 alignas (16 ) T shamt[16 / sizeof (T)];
699699
@@ -882,7 +882,7 @@ EMITTER_OPCODE_TABLE(OPCODE_VECTOR_SHL, VECTOR_SHL_V128);
882882// OPCODE_VECTOR_SHR
883883// ============================================================================
884884template <typename T, std::enable_if_t <std::is_integral<T>::value, int > = 0 >
885- static __m128i EmulateVectorShr (void *, __m128i src1, __m128i src2) {
885+ static __m128i EmulateVectorShr (void *, __m128i& src1, __m128i& src2) {
886886 alignas (16 ) T value[16 / sizeof (T)];
887887 alignas (16 ) T shamt[16 / sizeof (T)];
888888
@@ -1212,7 +1212,7 @@ EMITTER_OPCODE_TABLE(OPCODE_VECTOR_SHA, VECTOR_SHA_V128);
12121212// OPCODE_VECTOR_ROTATE_LEFT
12131213// ============================================================================
12141214template <typename T, std::enable_if_t <std::is_integral<T>::value, int > = 0 >
1215- static __m128i EmulateVectorRotateLeft (void *, __m128i src1, __m128i src2) {
1215+ static __m128i EmulateVectorRotateLeft (void *, __m128i& src1, __m128i& src2) {
12161216 alignas (16 ) T value[16 / sizeof (T)];
12171217 alignas (16 ) T shamt[16 / sizeof (T)];
12181218
@@ -1305,7 +1305,7 @@ EMITTER_OPCODE_TABLE(OPCODE_VECTOR_ROTATE_LEFT, VECTOR_ROTATE_LEFT_V128);
13051305// OPCODE_VECTOR_AVERAGE
13061306// ============================================================================
13071307template <typename T, std::enable_if_t <std::is_integral<T>::value, int > = 0 >
1308- static __m128i EmulateVectorAverage (void *, __m128i src1, __m128i src2) {
1308+ static __m128i EmulateVectorAverage (void *, __m128i& src1, __m128i& src2) {
13091309 alignas (16 ) T src1v[16 / sizeof (T)];
13101310 alignas (16 ) T src2v[16 / sizeof (T)];
13111311 alignas (16 ) T value[16 / sizeof (T)];
@@ -1873,7 +1873,7 @@ struct PACK : Sequence<PACK, I<OPCODE_PACK, V128Op, V128Op, V128Op>> {
18731873 // ((src1.uy & 0xFF) << 8) | (src1.uz & 0xFF)
18741874 e.vpshufb (i.dest , i.dest , e.GetXmmConstPtr (XMMPackD3DCOLOR));
18751875 }
1876- static __m128i EmulateFLOAT16_2 (void *, __m128 src1) {
1876+ static __m128i EmulateFLOAT16_2 (void *, __m128& src1) {
18771877 alignas (16 ) float a[4 ];
18781878 alignas (16 ) uint16_t b[8 ];
18791879 _mm_store_ps (a, src1);
@@ -1912,7 +1912,7 @@ struct PACK : Sequence<PACK, I<OPCODE_PACK, V128Op, V128Op, V128Op>> {
19121912 e.vmovaps (i.dest , e.xmm0 );
19131913 }
19141914 }
1915- static __m128i EmulateFLOAT16_4 (void *, __m128 src1) {
1915+ static __m128i EmulateFLOAT16_4 (void *, __m128& src1) {
19161916 alignas (16 ) float a[4 ];
19171917 alignas (16 ) uint16_t b[8 ];
19181918 _mm_store_ps (a, src1);
@@ -2043,8 +2043,8 @@ struct PACK : Sequence<PACK, I<OPCODE_PACK, V128Op, V128Op, V128Op>> {
20432043 // Merge XZ and YW.
20442044 e.vorps (i.dest , e.xmm0 );
20452045 }
2046- static __m128i EmulatePack8_IN_16_UN_UN_SAT (void *, __m128i src1,
2047- __m128i src2) {
2046+ static __m128i EmulatePack8_IN_16_UN_UN_SAT (void *, __m128i& src1,
2047+ __m128i& src2) {
20482048 alignas (16 ) uint16_t a[8 ];
20492049 alignas (16 ) uint16_t b[8 ];
20502050 alignas (16 ) uint8_t c[16 ];
@@ -2056,7 +2056,7 @@ struct PACK : Sequence<PACK, I<OPCODE_PACK, V128Op, V128Op, V128Op>> {
20562056 }
20572057 return _mm_load_si128 (reinterpret_cast <__m128i*>(c));
20582058 }
2059- static __m128i EmulatePack8_IN_16_UN_UN (void *, __m128i src1, __m128i src2) {
2059+ static __m128i EmulatePack8_IN_16_UN_UN (void *, __m128i& src1, __m128i& src2) {
20602060 alignas (16 ) uint8_t a[16 ];
20612061 alignas (16 ) uint8_t b[16 ];
20622062 alignas (16 ) uint8_t c[16 ];
@@ -2289,7 +2289,7 @@ struct UNPACK : Sequence<UNPACK, I<OPCODE_UNPACK, V128Op, V128Op>> {
22892289 e.vpor (i.dest , e.GetXmmConstPtr (XMMOne));
22902290 // To convert to 0 to 1, games multiply by 0x47008081 and add 0xC7008081.
22912291 }
2292- static __m128 EmulateFLOAT16_2 (void *, __m128i src1) {
2292+ static __m128 EmulateFLOAT16_2 (void *, __m128i& src1) {
22932293 alignas (16 ) uint16_t a[8 ];
22942294 alignas (16 ) float b[4 ];
22952295 _mm_store_si128 (reinterpret_cast <__m128i*>(a), src1);
@@ -2346,7 +2346,7 @@ struct UNPACK : Sequence<UNPACK, I<OPCODE_UNPACK, V128Op, V128Op>> {
23462346 e.vmovaps (i.dest , e.xmm0 );
23472347 }
23482348 }
2349- static __m128 EmulateFLOAT16_4 (void *, __m128i src1) {
2349+ static __m128 EmulateFLOAT16_4 (void *, __m128i& src1) {
23502350 alignas (16 ) uint16_t a[8 ];
23512351 alignas (16 ) float b[4 ];
23522352 _mm_store_si128 (reinterpret_cast <__m128i*>(a), src1);
@@ -2624,4 +2624,4 @@ EMITTER_OPCODE_TABLE(OPCODE_UNPACK, UNPACK);
26242624} // namespace x64
26252625} // namespace backend
26262626} // namespace cpu
2627- } // namespace xe
2627+ } // namespace xe
0 commit comments