@@ -607,7 +607,7 @@ bool Recompiler::Recompile(
607607 break ;
608608
609609 case PPC_INST_BLRL :
610- println (" __debugbreak ();" );
610+ println (" __builtin_debugtrap ();" );
611611 break ;
612612
613613 case PPC_INST_BLT :
@@ -688,7 +688,7 @@ bool Recompiler::Recompile(
688688 break ;
689689
690690 case PPC_INST_CNTLZW :
691- println (" \t {}.u64 = __lzcnt ({}.u32);" , r (insn.operands [0 ]), r (insn.operands [1 ]));
691+ println (" \t {}.u64 = __lzcnt32 ({}.u32);" , r (insn.operands [0 ]), r (insn.operands [1 ]));
692692 break ;
693693
694694 case PPC_INST_DB16CYC :
@@ -1263,43 +1263,43 @@ bool Recompiler::Recompile(
12631263 break ;
12641264
12651265 case PPC_INST_RLDICL :
1266- println (" \t {}.u64 = _rotl64 ({}.u64, {}) & 0x{:X};" , r (insn.operands [0 ]), r (insn.operands [1 ]), insn.operands [2 ], ComputeMask (insn.operands [3 ], 63 ));
1266+ println (" \t {}.u64 = __builtin_rotateleft64 ({}.u64, {}) & 0x{:X};" , r (insn.operands [0 ]), r (insn.operands [1 ]), insn.operands [2 ], ComputeMask (insn.operands [3 ], 63 ));
12671267 break ;
12681268
12691269 case PPC_INST_RLDICR :
1270- println (" \t {}.u64 = _rotl64 ({}.u64, {}) & 0x{:X};" , r (insn.operands [0 ]), r (insn.operands [1 ]), insn.operands [2 ], ComputeMask (0 , insn.operands [3 ]));
1270+ println (" \t {}.u64 = __builtin_rotateleft64 ({}.u64, {}) & 0x{:X};" , r (insn.operands [0 ]), r (insn.operands [1 ]), insn.operands [2 ], ComputeMask (0 , insn.operands [3 ]));
12711271 break ;
12721272
12731273 case PPC_INST_RLDIMI :
12741274 {
12751275 const uint64_t mask = ComputeMask (insn.operands [3 ], ~insn.operands [2 ]);
1276- println (" \t {}.u64 = (_rotl64 ({}.u64, {}) & 0x{:X}) | ({}.u64 & 0x{:X});" , r (insn.operands [0 ]), r (insn.operands [1 ]), insn.operands [2 ], mask, r (insn.operands [0 ]), ~mask);
1276+ println (" \t {}.u64 = (__builtin_rotateleft64 ({}.u64, {}) & 0x{:X}) | ({}.u64 & 0x{:X});" , r (insn.operands [0 ]), r (insn.operands [1 ]), insn.operands [2 ], mask, r (insn.operands [0 ]), ~mask);
12771277 break ;
12781278 }
12791279
12801280 case PPC_INST_RLWIMI :
12811281 {
12821282 const uint64_t mask = ComputeMask (insn.operands [3 ] + 32 , insn.operands [4 ] + 32 );
1283- println (" \t {}.u64 = (_rotl ({}.u32, {}) & 0x{:X}) | ({}.u64 & 0x{:X});" , r (insn.operands [0 ]), r (insn.operands [1 ]), insn.operands [2 ], mask, r (insn.operands [0 ]), ~mask);
1283+ println (" \t {}.u64 = (__builtin_rotateleft32 ({}.u32, {}) & 0x{:X}) | ({}.u64 & 0x{:X});" , r (insn.operands [0 ]), r (insn.operands [1 ]), insn.operands [2 ], mask, r (insn.operands [0 ]), ~mask);
12841284 break ;
12851285 }
12861286
12871287 case PPC_INST_RLWINM :
1288- println (" \t {}.u64 = _rotl64 ({}.u32 | ({}.u64 << 32), {}) & 0x{:X};" , r (insn.operands [0 ]), r (insn.operands [1 ]), r (insn.operands [1 ]), insn.operands [2 ], ComputeMask (insn.operands [3 ] + 32 , insn.operands [4 ] + 32 ));
1288+ println (" \t {}.u64 = __builtin_rotateleft64 ({}.u32 | ({}.u64 << 32), {}) & 0x{:X};" , r (insn.operands [0 ]), r (insn.operands [1 ]), r (insn.operands [1 ]), insn.operands [2 ], ComputeMask (insn.operands [3 ] + 32 , insn.operands [4 ] + 32 ));
12891289 if (strchr (insn.opcode ->name , ' .' ))
12901290 println (" \t {}.compare<int32_t>({}.s32, 0, {});" , cr (0 ), r (insn.operands [0 ]), xer ());
12911291 break ;
12921292
12931293 case PPC_INST_ROTLDI :
1294- println (" \t {}.u64 = _rotl64 ({}.u64, {});" , r (insn.operands [0 ]), r (insn.operands [1 ]), insn.operands [2 ]);
1294+ println (" \t {}.u64 = __builtin_rotateleft64 ({}.u64, {});" , r (insn.operands [0 ]), r (insn.operands [1 ]), insn.operands [2 ]);
12951295 break ;
12961296
12971297 case PPC_INST_ROTLW :
1298- println (" \t {}.u64 = _rotl ({}.u32, {}.u8 & 0x1F);" , r (insn.operands [0 ]), r (insn.operands [1 ]), r (insn.operands [2 ]));
1298+ println (" \t {}.u64 = __builtin_rotateleft32 ({}.u32, {}.u8 & 0x1F);" , r (insn.operands [0 ]), r (insn.operands [1 ]), r (insn.operands [2 ]));
12991299 break ;
13001300
13011301 case PPC_INST_ROTLWI :
1302- println (" \t {}.u64 = _rotl ({}.u32, {});" , r (insn.operands [0 ]), r (insn.operands [1 ]), insn.operands [2 ]);
1302+ println (" \t {}.u64 = __builtin_rotateleft32 ({}.u32, {});" , r (insn.operands [0 ]), r (insn.operands [1 ]), insn.operands [2 ]);
13031303 if (strchr (insn.opcode ->name , ' .' ))
13041304 println (" \t {}.compare<int32_t>({}.s32, 0, {});" , cr (0 ), r (insn.operands [0 ]), xer ());
13051305 break ;
@@ -1398,10 +1398,10 @@ bool Recompiler::Recompile(
13981398 case PPC_INST_STDCX :
13991399 println (" \t {}.lt = 0;" , cr (0 ));
14001400 println (" \t {}.gt = 0;" , cr (0 ));
1401- print (" \t {}.eq = _InterlockedCompareExchange64 (reinterpret_cast<__int64 *>(base + " , cr (0 ));
1401+ print (" \t {}.eq = __sync_bool_compare_and_swap (reinterpret_cast<uint64_t *>(base + " , cr (0 ));
14021402 if (insn.operands [1 ] != 0 )
14031403 print (" {}.u32 + " , r (insn.operands [1 ]));
1404- println (" {}.u32), __builtin_bswap64( {}.s64), {}.s64) == {}.s64 ;" , r (insn.operands [2 ]), r (insn.operands [0 ]), reserved (), reserved ( ));
1404+ println (" {}.u32), {}.s64, __builtin_bswap64( {}.s64)) ;" , r (insn.operands [2 ]), reserved (), r (insn.operands [0 ]));
14051405 println (" \t {}.so = {}.so;" , cr (0 ), xer ());
14061406 break ;
14071407
@@ -1553,10 +1553,10 @@ bool Recompiler::Recompile(
15531553 case PPC_INST_STWCX :
15541554 println (" \t {}.lt = 0;" , cr (0 ));
15551555 println (" \t {}.gt = 0;" , cr (0 ));
1556- print (" \t {}.eq = _InterlockedCompareExchange (reinterpret_cast<long *>(base + " , cr (0 ));
1556+ print (" \t {}.eq = __sync_bool_compare_and_swap (reinterpret_cast<uint32_t *>(base + " , cr (0 ));
15571557 if (insn.operands [1 ] != 0 )
15581558 print (" {}.u32 + " , r (insn.operands [1 ]));
1559- println (" {}.u32), __builtin_bswap32( {}.s32), {}.s32) == {}.s32 ;" , r (insn.operands [2 ]), r (insn.operands [0 ]), reserved (), reserved ( ));
1559+ println (" {}.u32), {}.s32, __builtin_bswap32( {}.s32)) ;" , r (insn.operands [2 ]), reserved (), r (insn.operands [0 ]));
15601560 println (" \t {}.so = {}.so;" , cr (0 ), xer ());
15611561 break ;
15621562
@@ -1726,7 +1726,7 @@ bool Recompiler::Recompile(
17261726
17271727 case PPC_INST_VCMPBFP :
17281728 case PPC_INST_VCMPBFP128 :
1729- println (" \t __debugbreak ();" );
1729+ println (" \t __builtin_debugtrap ();" );
17301730 break ;
17311731
17321732 case PPC_INST_VCMPEQFP :
@@ -1910,7 +1910,7 @@ bool Recompiler::Recompile(
19101910 break ;
19111911
19121912 default :
1913- println (" \t __debugbreak ();" );
1913+ println (" \t __builtin_debugtrap ();" );
19141914 break ;
19151915 }
19161916 break ;
@@ -2086,7 +2086,7 @@ bool Recompiler::Recompile(
20862086 break ;
20872087
20882088 default :
2089- println (" \t __debugbreak ();" );
2089+ println (" \t __builtin_debugtrap ();" );
20902090 break ;
20912091 }
20922092 break ;
0 commit comments