| Index: src/mips/simulator-mips.cc
 | 
| diff --git a/src/mips/simulator-mips.cc b/src/mips/simulator-mips.cc
 | 
| index 10417d573cfa2ae8b1f2e06587c2615e67cd2ef6..efce887c2e6d4e5f7ef21e07246b1118114ec6de 100644
 | 
| --- a/src/mips/simulator-mips.cc
 | 
| +++ b/src/mips/simulator-mips.cc
 | 
| @@ -1926,7 +1926,11 @@ void Simulator::ConfigureTypeRegister(Instruction* instr,
 | 
|            alu_out = rs_u * rt_u;  // Only the lower 32 bits are kept.
 | 
|            break;
 | 
|          case CLZ:
 | 
| -          alu_out = __builtin_clz(rs_u);
 | 
| +          // MIPS32 spec: If no bits were set in GPR rs, the result written to
 | 
| +          // GPR rd is 32.
 | 
| +          // GCC __builtin_clz: If input is 0, the result is undefined.
 | 
| +          alu_out =
 | 
| +              rs_u == 0 ? 32 : CompilerIntrinsics::CountLeadingZeros(rs_u);
 | 
|            break;
 | 
|          default:
 | 
|            UNREACHABLE();
 | 
| 
 |