Chromium Code Reviews| Index: src/IceTargetLoweringMIPS32.cpp | 
| diff --git a/src/IceTargetLoweringMIPS32.cpp b/src/IceTargetLoweringMIPS32.cpp | 
| index 32656ce4ee9ba008bee7b1f7482b627942c6a49c..37ebd8e7b304c9eabc2da14da696339963d60569 100644 | 
| --- a/src/IceTargetLoweringMIPS32.cpp | 
| +++ b/src/IceTargetLoweringMIPS32.cpp | 
| @@ -2846,8 +2846,25 @@ void TargetMIPS32::lowerIntrinsicCall(const InstIntrinsicCall *Instr) { | 
| return; | 
| } | 
| case Intrinsics::Ctlz: { | 
| - UnimplementedLoweringError(this, Instr); | 
| - return; | 
| + auto *Src = Instr->getArg(0); | 
| + const Type SrcTy = Src->getType(); | 
| 
 
Jim Stichnoth
2016/09/22 18:18:24
This gives an error in a MINIMAL build (make -f Ma
 
obucinac
2016/09/22 18:58:16
Maybe this would do...
 
 | 
| + assert(SrcTy == IceType_i32 || SrcTy == IceType_i64); | 
| + switch (Src->getType()) { | 
| + case IceType_i32: { | 
| + auto *T = I32Reg(); | 
| + auto *SrcR = legalizeToReg(Src); | 
| + _clz(T, SrcR); | 
| + _mov(Dest, T); | 
| + break; | 
| + } | 
| + case IceType_i64: { | 
| + UnimplementedLoweringError(this, Instr); | 
| + break; | 
| + } | 
| + default: | 
| + llvm::report_fatal_error("Control flow should never have reached here."); | 
| + } | 
| + break; | 
| } | 
| case Intrinsics::Cttz: { | 
| UnimplementedLoweringError(this, Instr); |