|  |  |  | @ -897,17 +897,17 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_FCTID: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(false); | 
		
	
		
			
				|  |  |  |  |         println("\t{}.s64 = ({}.f64 > double(LLONG_MAX)) ? LLONG_MAX : _mm_cvtsd_si64(_mm_load_sd(&{}.f64));", f(insn.operands[0]), f(insn.operands[1]), f(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\t{}.s64 = ({}.f64 > double(LLONG_MAX)) ? LLONG_MAX : simde_mm_cvtsd_si64(simde_mm_load_sd(&{}.f64));", f(insn.operands[0]), f(insn.operands[1]), f(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_FCTIDZ: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(false); | 
		
	
		
			
				|  |  |  |  |         println("\t{}.s64 = ({}.f64 > double(LLONG_MAX)) ? LLONG_MAX : _mm_cvttsd_si64(_mm_load_sd(&{}.f64));", f(insn.operands[0]), f(insn.operands[1]), f(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\t{}.s64 = ({}.f64 > double(LLONG_MAX)) ? LLONG_MAX : simde_mm_cvttsd_si64(simde_mm_load_sd(&{}.f64));", f(insn.operands[0]), f(insn.operands[1]), f(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_FCTIWZ: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(false); | 
		
	
		
			
				|  |  |  |  |         println("\t{}.s64 = ({}.f64 > double(INT_MAX)) ? INT_MAX : _mm_cvttsd_si32(_mm_load_sd(&{}.f64));", f(insn.operands[0]), f(insn.operands[1]), f(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\t{}.s64 = ({}.f64 > double(INT_MAX)) ? INT_MAX : simde_mm_cvttsd_si32(simde_mm_load_sd(&{}.f64));", f(insn.operands[0]), f(insn.operands[1]), f(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_FDIV: | 
		
	
	
		
			
				
					|  |  |  | @ -1139,10 +1139,10 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_LVX128: | 
		
	
		
			
				|  |  |  |  |         // NOTE: for endian swapping, we reverse the whole vector instead of individual elements.
 | 
		
	
		
			
				|  |  |  |  |         // this is accounted for in every instruction (eg. dp3 sums yzw instead of xyz)
 | 
		
	
		
			
				|  |  |  |  |         print("\t_mm_store_si128((__m128i*){}.u8, _mm_shuffle_epi8(_mm_load_si128((__m128i*)(base + ((", v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         print("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_shuffle_epi8(simde_mm_load_si128((simde__m128i*)(base + ((", v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         if (insn.operands[1] != 0) | 
		
	
		
			
				|  |  |  |  |             print("{}.u32 + ", r(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("{}.u32) & ~0xF))), _mm_load_si128((__m128i*)VectorMaskL)));", r(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("{}.u32) & ~0xF))), simde_mm_load_si128((simde__m128i*)VectorMaskL)));", r(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_LVLX: | 
		
	
	
		
			
				
					|  |  |  | @ -1151,7 +1151,7 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |         if (insn.operands[1] != 0) | 
		
	
		
			
				|  |  |  |  |             print("{}.u32 + ", r(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("{}.u32;", r(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_shuffle_epi8(_mm_load_si128((__m128i*)(base + ({}.u32 & ~0xF))), _mm_load_si128((__m128i*)&VectorMaskL[({}.u32 & 0xF) * 16])));", v(insn.operands[0]), temp(), temp()); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_shuffle_epi8(simde_mm_load_si128((simde__m128i*)(base + ({}.u32 & ~0xF))), simde_mm_load_si128((simde__m128i*)&VectorMaskL[({}.u32 & 0xF) * 16])));", v(insn.operands[0]), temp(), temp()); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_LVRX: | 
		
	
	
		
			
				
					|  |  |  | @ -1160,7 +1160,7 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |         if (insn.operands[1] != 0) | 
		
	
		
			
				|  |  |  |  |             print("{}.u32 + ", r(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("{}.u32;", r(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, {}.u32 & 0xF ? _mm_shuffle_epi8(_mm_load_si128((__m128i*)(base + ({}.u32 & ~0xF))), _mm_load_si128((__m128i*)&VectorMaskR[({}.u32 & 0xF) * 16])) : _mm_setzero_si128());", v(insn.operands[0]), temp(), temp(), temp()); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, {}.u32 & 0xF ? simde_mm_shuffle_epi8(simde_mm_load_si128((simde__m128i*)(base + ({}.u32 & ~0xF))), simde_mm_load_si128((simde__m128i*)&VectorMaskR[({}.u32 & 0xF) * 16])) : simde_mm_setzero_si128());", v(insn.operands[0]), temp(), temp(), temp()); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_LVSL: | 
		
	
	
		
			
				
					|  |  |  | @ -1168,7 +1168,7 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |         if (insn.operands[1] != 0) | 
		
	
		
			
				|  |  |  |  |             print("{}.u32 + ", r(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("{}.u32;", r(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_load_si128((__m128i*)&VectorShiftTableL[({}.u32 & 0xF) * 16]));", v(insn.operands[0]), temp()); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_load_si128((simde__m128i*)&VectorShiftTableL[({}.u32 & 0xF) * 16]));", v(insn.operands[0]), temp()); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_LVSR: | 
		
	
	
		
			
				
					|  |  |  | @ -1176,7 +1176,7 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |         if (insn.operands[1] != 0) | 
		
	
		
			
				|  |  |  |  |             print("{}.u32 + ", r(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("{}.u32;", r(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_load_si128((__m128i*)&VectorShiftTableR[({}.u32 & 0xF) * 16]));", v(insn.operands[0]), temp()); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_load_si128((simde__m128i*)&VectorShiftTableR[({}.u32 & 0xF) * 16]));", v(insn.operands[0]), temp()); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_LWA: | 
		
	
	
		
			
				
					|  |  |  | @ -1635,10 +1635,10 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_STVX: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_STVX128: | 
		
	
		
			
				|  |  |  |  |         print("\t_mm_store_si128((__m128i*)(base + (("); | 
		
	
		
			
				|  |  |  |  |         print("\tsimde_mm_store_si128((simde__m128i*)(base + (("); | 
		
	
		
			
				|  |  |  |  |         if (insn.operands[1] != 0) | 
		
	
		
			
				|  |  |  |  |             print("{}.u32 + ", r(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("{}.u32) & ~0xF)), _mm_shuffle_epi8(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*)VectorMaskL)));", r(insn.operands[2]), v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         println("{}.u32) & ~0xF)), simde_mm_shuffle_epi8(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*)VectorMaskL)));", r(insn.operands[2]), v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_STW: | 
		
	
	
		
			
				
					|  |  |  | @ -1737,77 +1737,77 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VADDFP: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VADDFP128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_add_ps(_mm_load_ps({}.f32), _mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_add_ps(simde_mm_load_ps({}.f32), simde_mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VADDSHS: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.s16, _mm_adds_epi16(_mm_load_si128((__m128i*){}.s16), _mm_load_si128((__m128i*){}.s16)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.s16, simde_mm_adds_epi16(simde_mm_load_si128((simde__m128i*){}.s16), simde_mm_load_si128((simde__m128i*){}.s16)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VADDUBM: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_add_epi8(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_add_epi8(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VADDUBS: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_adds_epu8(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_adds_epu8(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VADDUHM: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u16, _mm_add_epi16(_mm_load_si128((__m128i*){}.u16), _mm_load_si128((__m128i*){}.u16)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u16, simde_mm_add_epi16(simde_mm_load_si128((simde__m128i*){}.u16), simde_mm_load_si128((simde__m128i*){}.u16)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VADDUWM: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u32, _mm_add_epi32(_mm_load_si128((__m128i*){}.u32), _mm_load_si128((__m128i*){}.u32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u32, simde_mm_add_epi32(simde_mm_load_si128((simde__m128i*){}.u32), simde_mm_load_si128((simde__m128i*){}.u32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VADDUWS: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u32, _mm_adds_epu32(_mm_load_si128((__m128i*){}.u32), _mm_load_si128((__m128i*){}.u32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u32, simde_mm_adds_epu32(simde_mm_load_si128((simde__m128i*){}.u32), simde_mm_load_si128((simde__m128i*){}.u32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VAND: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VAND128: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_and_si128(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_and_si128(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VANDC128: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_andnot_si128(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_andnot_si128(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VAVGSB: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_avg_epi8(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_avg_epi8(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VAVGSH: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_avg_epi16(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_avg_epi16(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VAVGUB: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_avg_epu8(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_avg_epu8(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCTSXS: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCFPSXWS128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         print("\t_mm_store_si128((__m128i*){}.s32, _mm_vctsxs(", v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         print("\tsimde_mm_store_si128((simde__m128i*){}.s32, simde_mm_vctsxs(", v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         if (insn.operands[2] != 0) | 
		
	
		
			
				|  |  |  |  |             println("_mm_mul_ps(_mm_load_ps({}.f32), _mm_set1_ps({}))));", v(insn.operands[1]), 1u << insn.operands[2]); | 
		
	
		
			
				|  |  |  |  |             println("simde_mm_mul_ps(simde_mm_load_ps({}.f32), simde_mm_set1_ps({}))));", v(insn.operands[1]), 1u << insn.operands[2]); | 
		
	
		
			
				|  |  |  |  |         else | 
		
	
		
			
				|  |  |  |  |             println("_mm_load_ps({}.f32)));", v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |             println("simde_mm_load_ps({}.f32)));", v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCFSX: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCSXWFP128: | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         print("\t_mm_store_ps({}.f32, ", v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         print("\tsimde_mm_store_ps({}.f32, ", v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         if (insn.operands[2] != 0) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             const float value = ldexp(1.0f, -int32_t(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |             println("_mm_mul_ps(_mm_cvtepi32_ps(_mm_load_si128((__m128i*){}.u32)), _mm_castsi128_ps(_mm_set1_epi32(int(0x{:X})))));", v(insn.operands[1]), *reinterpret_cast<const uint32_t*>(&value)); | 
		
	
		
			
				|  |  |  |  |             println("simde_mm_mul_ps(simde_mm_cvtepi32_ps(simde_mm_load_si128((simde__m128i*){}.u32)), simde_mm_castsi128_ps(simde_mm_set1_epi32(int(0x{:X})))));", v(insn.operands[1]), *reinterpret_cast<const uint32_t*>(&value)); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         else | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             println("_mm_cvtepi32_ps(_mm_load_si128((__m128i*){}.u32)));", v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |             println("simde_mm_cvtepi32_ps(simde_mm_load_si128((simde__m128i*){}.u32)));", v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
	
		
			
				
					|  |  |  | @ -1816,15 +1816,15 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCUXWFP128: | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         print("\t_mm_store_ps({}.f32, ", v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         print("\tsimde_mm_store_ps({}.f32, ", v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         if (insn.operands[2] != 0) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             const float value = ldexp(1.0f, -int32_t(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |             println("_mm_mul_ps(_mm_cvtepu32_ps_(_mm_load_si128((__m128i*){}.u32)), _mm_castsi128_ps(_mm_set1_epi32(int(0x{:X})))));", v(insn.operands[1]), *reinterpret_cast<const uint32_t*>(&value)); | 
		
	
		
			
				|  |  |  |  |             println("simde_mm_mul_ps(simde_mm_cvtepu32_ps_(simde_mm_load_si128((simde__m128i*){}.u32)), simde_mm_castsi128_ps(simde_mm_set1_epi32(int(0x{:X})))));", v(insn.operands[1]), *reinterpret_cast<const uint32_t*>(&value)); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         else | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             println("_mm_cvtepu32_ps_(_mm_load_si128((__m128i*){}.u32)));", v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |             println("simde_mm_cvtepu32_ps_(simde_mm_load_si128((simde__m128i*){}.u32)));", v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
	
		
			
				
					|  |  |  | @ -1837,46 +1837,46 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCMPEQFP: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCMPEQFP128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_cmpeq_ps(_mm_load_ps({}.f32), _mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_cmpeq_ps(simde_mm_load_ps({}.f32), simde_mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         if (strchr(insn.opcode->name, '.')) | 
		
	
		
			
				|  |  |  |  |             println("\t{}.setFromMask(_mm_load_ps({}.f32), 0xF);", cr(6), v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |             println("\t{}.setFromMask(simde_mm_load_ps({}.f32), 0xF);", cr(6), v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCMPEQUB: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_cmpeq_epi8(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_cmpeq_epi8(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         if (strchr(insn.opcode->name, '.')) | 
		
	
		
			
				|  |  |  |  |             println("\t{}.setFromMask(_mm_load_si128((__m128i*){}.u8), 0xFFFF);", cr(6), v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |             println("\t{}.setFromMask(simde_mm_load_si128((simde__m128i*){}.u8), 0xFFFF);", cr(6), v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCMPEQUW: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCMPEQUW128: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_cmpeq_epi32(_mm_load_si128((__m128i*){}.u32), _mm_load_si128((__m128i*){}.u32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_cmpeq_epi32(simde_mm_load_si128((simde__m128i*){}.u32), simde_mm_load_si128((simde__m128i*){}.u32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         if (strchr(insn.opcode->name, '.')) | 
		
	
		
			
				|  |  |  |  |             println("\t{}.setFromMask(_mm_load_ps({}.f32), 0xF);", cr(6), v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |             println("\t{}.setFromMask(simde_mm_load_ps({}.f32), 0xF);", cr(6), v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCMPGEFP: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCMPGEFP128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_cmpge_ps(_mm_load_ps({}.f32), _mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_cmpge_ps(simde_mm_load_ps({}.f32), simde_mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         if (strchr(insn.opcode->name, '.')) | 
		
	
		
			
				|  |  |  |  |             println("\t{}.setFromMask(_mm_load_ps({}.f32), 0xF);", cr(6), v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |             println("\t{}.setFromMask(simde_mm_load_ps({}.f32), 0xF);", cr(6), v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCMPGTFP: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCMPGTFP128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_cmpgt_ps(_mm_load_ps({}.f32), _mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_cmpgt_ps(simde_mm_load_ps({}.f32), simde_mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         if (strchr(insn.opcode->name, '.')) | 
		
	
		
			
				|  |  |  |  |             println("\t{}.setFromMask(_mm_load_ps({}.f32), 0xF);", cr(6), v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |             println("\t{}.setFromMask(simde_mm_load_ps({}.f32), 0xF);", cr(6), v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCMPGTUB: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_cmpgt_epu8(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_cmpgt_epu8(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VCMPGTUH: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_cmpgt_epu16(_mm_load_si128((__m128i*){}.u16), _mm_load_si128((__m128i*){}.u16)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_cmpgt_epu16(simde_mm_load_si128((simde__m128i*){}.u16), simde_mm_load_si128((simde__m128i*){}.u16)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VEXPTEFP: | 
		
	
	
		
			
				
					|  |  |  | @ -1899,87 +1899,87 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMADDFP: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMADDFP128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_add_ps(_mm_mul_ps(_mm_load_ps({}.f32), _mm_load_ps({}.f32)), _mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2]), v(insn.operands[3])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_add_ps(simde_mm_mul_ps(simde_mm_load_ps({}.f32), simde_mm_load_ps({}.f32)), simde_mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2]), v(insn.operands[3])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMAXFP: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMAXFP128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_max_ps(_mm_load_ps({}.f32), _mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_max_ps(simde_mm_load_ps({}.f32), simde_mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMAXSW: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u32, _mm_max_epi32(_mm_load_si128((__m128i*){}.u32), _mm_load_si128((__m128i*){}.u32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u32, simde_mm_max_epi32(simde_mm_load_si128((simde__m128i*){}.u32), simde_mm_load_si128((simde__m128i*){}.u32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMINFP: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMINFP128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_min_ps(_mm_load_ps({}.f32), _mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_min_ps(simde_mm_load_ps({}.f32), simde_mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMRGHB: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_unpackhi_epi8(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_unpackhi_epi8(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMRGHH: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u16, _mm_unpackhi_epi16(_mm_load_si128((__m128i*){}.u16), _mm_load_si128((__m128i*){}.u16)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u16, simde_mm_unpackhi_epi16(simde_mm_load_si128((simde__m128i*){}.u16), simde_mm_load_si128((simde__m128i*){}.u16)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMRGHW: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMRGHW128: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u32, _mm_unpackhi_epi32(_mm_load_si128((__m128i*){}.u32), _mm_load_si128((__m128i*){}.u32)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u32, simde_mm_unpackhi_epi32(simde_mm_load_si128((simde__m128i*){}.u32), simde_mm_load_si128((simde__m128i*){}.u32)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMRGLB: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_unpacklo_epi8(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_unpacklo_epi8(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMRGLH: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u16, _mm_unpacklo_epi16(_mm_load_si128((__m128i*){}.u16), _mm_load_si128((__m128i*){}.u16)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u16, simde_mm_unpacklo_epi16(simde_mm_load_si128((simde__m128i*){}.u16), simde_mm_load_si128((simde__m128i*){}.u16)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMRGLW: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMRGLW128: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u32, _mm_unpacklo_epi32(_mm_load_si128((__m128i*){}.u32), _mm_load_si128((__m128i*){}.u32)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u32, simde_mm_unpacklo_epi32(simde_mm_load_si128((simde__m128i*){}.u32), simde_mm_load_si128((simde__m128i*){}.u32)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMSUM3FP128: | 
		
	
		
			
				|  |  |  |  |         // NOTE: accounting for full vector reversal here. should dot product yzw instead of xyz
 | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_dp_ps(_mm_load_ps({}.f32), _mm_load_ps({}.f32), 0xEF));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_dp_ps(simde_mm_load_ps({}.f32), simde_mm_load_ps({}.f32), 0xEF));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMSUM4FP128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_dp_ps(_mm_load_ps({}.f32), _mm_load_ps({}.f32), 0xFF));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_dp_ps(simde_mm_load_ps({}.f32), simde_mm_load_ps({}.f32), 0xFF));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VMULFP128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_mul_ps(_mm_load_ps({}.f32), _mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_mul_ps(simde_mm_load_ps({}.f32), simde_mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VNMSUBFP: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VNMSUBFP128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_xor_ps(_mm_sub_ps(_mm_mul_ps(_mm_load_ps({}.f32), _mm_load_ps({}.f32)), _mm_load_ps({}.f32)), _mm_castsi128_ps(_mm_set1_epi32(int(0x80000000)))));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2]), v(insn.operands[3])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_xor_ps(simde_mm_sub_ps(simde_mm_mul_ps(simde_mm_load_ps({}.f32), simde_mm_load_ps({}.f32)), simde_mm_load_ps({}.f32)), simde_mm_castsi128_ps(simde_mm_set1_epi32(int(0x80000000)))));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2]), v(insn.operands[3])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VOR: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VOR128: | 
		
	
		
			
				|  |  |  |  |         print("\t_mm_store_si128((__m128i*){}.u8, ", v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         print("\tsimde_mm_store_si128((simde__m128i*){}.u8, ", v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         if (insn.operands[1] != insn.operands[2]) | 
		
	
		
			
				|  |  |  |  |             println("_mm_or_si128(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |             println("simde_mm_or_si128(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         else | 
		
	
		
			
				|  |  |  |  |             println("_mm_load_si128((__m128i*){}.u8));", v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |             println("simde_mm_load_si128((simde__m128i*){}.u8));", v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VPERM: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VPERM128: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_perm_epi8_(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2]), v(insn.operands[3])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_perm_epi8_(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2]), v(insn.operands[3])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VPERMWI128: | 
		
	
	
		
			
				
					|  |  |  | @ -1990,7 +1990,7 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |         uint32_t z = 3 - ((insn.operands[2] >> 4) & 0x3); | 
		
	
		
			
				|  |  |  |  |         uint32_t w = 3 - ((insn.operands[2] >> 6) & 0x3); | 
		
	
		
			
				|  |  |  |  |         uint32_t perm = x | (y << 2) | (z << 4) | (w << 6); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u32, _mm_shuffle_epi32(_mm_load_si128((__m128i*){}.u32), 0x{:X}));", v(insn.operands[0]), v(insn.operands[1]), perm); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u32, simde_mm_shuffle_epi32(simde_mm_load_si128((simde__m128i*){}.u32), 0x{:X}));", v(insn.operands[0]), v(insn.operands[1]), perm); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -2044,38 +2044,38 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VPKSHUS: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VPKSHUS128: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_packus_epi16(_mm_load_si128((__m128i*){}.s16), _mm_load_si128((__m128i*){}.s16)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_packus_epi16(simde_mm_load_si128((simde__m128i*){}.s16), simde_mm_load_si128((simde__m128i*){}.s16)));", v(insn.operands[0]), v(insn.operands[2]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VREFP: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VREFP128: | 
		
	
		
			
				|  |  |  |  |         // TODO: see if we can use rcp safely
 | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_div_ps(_mm_set1_ps(1), _mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_div_ps(simde_mm_set1_ps(1), simde_mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VRFIM: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VRFIM128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_round_ps(_mm_load_ps({}.f32), _MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_round_ps(simde_mm_load_ps({}.f32), SIMDE_MM_FROUND_TO_NEG_INF | SIMDE_MM_FROUND_NO_EXC));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VRFIN: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VRFIN128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_round_ps(_mm_load_ps({}.f32), _MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_round_ps(simde_mm_load_ps({}.f32), SIMDE_MM_FROUND_TO_NEAREST_INT | SIMDE_MM_FROUND_NO_EXC));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VRFIZ: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VRFIZ128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_round_ps(_mm_load_ps({}.f32), _MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_round_ps(simde_mm_load_ps({}.f32), SIMDE_MM_FROUND_TO_ZERO | SIMDE_MM_FROUND_NO_EXC));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VRLIMI128: | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         constexpr size_t shuffles[] = { _MM_SHUFFLE(3, 2, 1, 0), _MM_SHUFFLE(2, 1, 0, 3), _MM_SHUFFLE(1, 0, 3, 2), _MM_SHUFFLE(0, 3, 2, 1) }; | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_blend_ps(_mm_load_ps({}.f32), _mm_permute_ps(_mm_load_ps({}.f32), {}), {}));", v(insn.operands[0]), v(insn.operands[0]), v(insn.operands[1]), shuffles[insn.operands[3]], insn.operands[2]); | 
		
	
		
			
				|  |  |  |  |         constexpr size_t shuffles[] = { SIMDE_MM_SHUFFLE(3, 2, 1, 0), SIMDE_MM_SHUFFLE(2, 1, 0, 3), SIMDE_MM_SHUFFLE(1, 0, 3, 2), SIMDE_MM_SHUFFLE(0, 3, 2, 1) }; | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_blend_ps(simde_mm_load_ps({}.f32), simde_mm_permute_ps(simde_mm_load_ps({}.f32), {}), {}));", v(insn.operands[0]), v(insn.operands[0]), v(insn.operands[1]), shuffles[insn.operands[3]], insn.operands[2]); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -2084,11 +2084,11 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |         // TODO: see if we can use rsqrt safely
 | 
		
	
		
			
				|  |  |  |  |         // TODO: we can detect if the input is from a dot product and apply logic only on one value
 | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_div_ps(_mm_set1_ps(1), _mm_sqrt_ps(_mm_load_ps({}.f32))));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_div_ps(simde_mm_set1_ps(1), simde_mm_sqrt_ps(simde_mm_load_ps({}.f32))));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSEL: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_or_si128(_mm_andnot_si128(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)), _mm_and_si128(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8))));", v(insn.operands[0]), v(insn.operands[3]), v(insn.operands[1]), v(insn.operands[3]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_or_si128(simde_mm_andnot_si128(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)), simde_mm_and_si128(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8))));", v(insn.operands[0]), v(insn.operands[3]), v(insn.operands[1]), v(insn.operands[3]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSLB: | 
		
	
	
		
			
				
					|  |  |  | @ -2099,7 +2099,7 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSLDOI: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSLDOI128: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_alignr_epi8(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8), {}));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2]), 16 - insn.operands[3]); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_alignr_epi8(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8), {}));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2]), 16 - insn.operands[3]); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSLW: | 
		
	
	
		
			
				
					|  |  |  | @ -2113,7 +2113,7 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         // NOTE: accounting for full vector reversal here
 | 
		
	
		
			
				|  |  |  |  |         uint32_t perm = 15 - insn.operands[2]; | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_shuffle_epi8(_mm_load_si128((__m128i*){}.u8), _mm_set1_epi8(char(0x{:X}))));", v(insn.operands[0]), v(insn.operands[1]), perm); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_shuffle_epi8(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_set1_epi8(char(0x{:X}))));", v(insn.operands[0]), v(insn.operands[1]), perm); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -2122,17 +2122,17 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |         // NOTE: accounting for full vector reversal here
 | 
		
	
		
			
				|  |  |  |  |         uint32_t perm = 7 - insn.operands[2]; | 
		
	
		
			
				|  |  |  |  |         perm = (perm * 2) | ((perm * 2 + 1) << 8); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u16, _mm_shuffle_epi8(_mm_load_si128((__m128i*){}.u16), _mm_set1_epi16(short(0x{:X}))));", v(insn.operands[0]), v(insn.operands[1]), perm); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u16, simde_mm_shuffle_epi8(simde_mm_load_si128((simde__m128i*){}.u16), simde_mm_set1_epi16(short(0x{:X}))));", v(insn.operands[0]), v(insn.operands[1]), perm); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSPLTISB: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_set1_epi8(char(0x{:X})));", v(insn.operands[0]), insn.operands[1]); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_set1_epi8(char(0x{:X})));", v(insn.operands[0]), insn.operands[1]); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSPLTISW: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSPLTISW128: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u32, _mm_set1_epi32(int(0x{:X})));", v(insn.operands[0]), insn.operands[1]); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u32, simde_mm_set1_epi32(int(0x{:X})));", v(insn.operands[0]), insn.operands[1]); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSPLTW: | 
		
	
	
		
			
				
					|  |  |  | @ -2141,12 +2141,12 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |         // NOTE: accounting for full vector reversal here
 | 
		
	
		
			
				|  |  |  |  |         uint32_t perm = 3 - insn.operands[2]; | 
		
	
		
			
				|  |  |  |  |         perm |= (perm << 2) | (perm << 4) | (perm << 6); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u32, _mm_shuffle_epi32(_mm_load_si128((__m128i*){}.u32), 0x{:X}));", v(insn.operands[0]), v(insn.operands[1]), perm); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u32, simde_mm_shuffle_epi32(simde_mm_load_si128((simde__m128i*){}.u32), 0x{:X}));", v(insn.operands[0]), v(insn.operands[1]), perm); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSR: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_vsr(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_vsr(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSRAW: | 
		
	
	
		
			
				
					|  |  |  | @ -2166,7 +2166,7 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSUBFP: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSUBFP128: | 
		
	
		
			
				|  |  |  |  |         printSetFlushMode(true); | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_ps({}.f32, _mm_sub_ps(_mm_load_ps({}.f32), _mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_ps({}.f32, simde_mm_sub_ps(simde_mm_load_ps({}.f32), simde_mm_load_ps({}.f32)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSUBSWS: | 
		
	
	
		
			
				
					|  |  |  | @ -2179,11 +2179,11 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSUBUBS: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_subs_epu8(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_subs_epu8(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VSUBUHM: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.u8, _mm_sub_epi16(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.u8, simde_mm_sub_epi16(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VUPKD3D128: | 
		
	
	
		
			
				
					|  |  |  | @ -2220,32 +2220,32 @@ bool Recompiler::Recompile( | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VUPKHSB: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VUPKHSB128: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.s16, _mm_cvtepi8_epi16(_mm_unpackhi_epi64(_mm_load_si128((__m128i*){}.s8), _mm_load_si128((__m128i*){}.s8))));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.s16, simde_mm_cvtepi8_epi16(simde_mm_unpackhi_epi64(simde_mm_load_si128((simde__m128i*){}.s8), simde_mm_load_si128((simde__m128i*){}.s8))));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VUPKHSH: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VUPKHSH128: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.s32, _mm_cvtepi16_epi32(_mm_unpackhi_epi64(_mm_load_si128((__m128i*){}.s16), _mm_load_si128((__m128i*){}.s16))));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.s32, simde_mm_cvtepi16_epi32(simde_mm_unpackhi_epi64(simde_mm_load_si128((simde__m128i*){}.s16), simde_mm_load_si128((simde__m128i*){}.s16))));", v(insn.operands[0]), v(insn.operands[1]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VUPKLSB: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VUPKLSB128: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.s32, _mm_cvtepi8_epi16(_mm_load_si128((__m128i*){}.s16)));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.s32, simde_mm_cvtepi8_epi16(simde_mm_load_si128((simde__m128i*){}.s16)));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VUPKLSH: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VUPKLSH128: | 
		
	
		
			
				|  |  |  |  |         println("\t_mm_store_si128((__m128i*){}.s32, _mm_cvtepi16_epi32(_mm_load_si128((__m128i*){}.s16)));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         println("\tsimde_mm_store_si128((simde__m128i*){}.s32, simde_mm_cvtepi16_epi32(simde_mm_load_si128((simde__m128i*){}.s16)));", v(insn.operands[0]), v(insn.operands[1])); | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VXOR: | 
		
	
		
			
				|  |  |  |  |     case PPC_INST_VXOR128: | 
		
	
		
			
				|  |  |  |  |         print("\t_mm_store_si128((__m128i*){}.u8, ", v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  |         print("\tsimde_mm_store_si128((simde__m128i*){}.u8, ", v(insn.operands[0])); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         if (insn.operands[1] != insn.operands[2]) | 
		
	
		
			
				|  |  |  |  |             println("_mm_xor_si128(_mm_load_si128((__m128i*){}.u8), _mm_load_si128((__m128i*){}.u8)));", v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |             println("simde_mm_xor_si128(simde_mm_load_si128((simde__m128i*){}.u8), simde_mm_load_si128((simde__m128i*){}.u8)));", v(insn.operands[1]), v(insn.operands[2])); | 
		
	
		
			
				|  |  |  |  |         else | 
		
	
		
			
				|  |  |  |  |             println("_mm_setzero_si128());"); | 
		
	
		
			
				|  |  |  |  |             println("simde_mm_setzero_si128());"); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |         break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | 
 |