Chromium Code Reviews| Index: src/IceTargetLoweringMIPS32.cpp |
| diff --git a/src/IceTargetLoweringMIPS32.cpp b/src/IceTargetLoweringMIPS32.cpp |
| index 6d6c6b9316f43f8e48f4e759d7493ea7a7eea595..e8ab8aa673e08dd3af60bc8edbe561823b952b68 100644 |
| --- a/src/IceTargetLoweringMIPS32.cpp |
| +++ b/src/IceTargetLoweringMIPS32.cpp |
| @@ -2809,7 +2809,18 @@ void TargetMIPS32::lowerIntrinsicCall(const InstIntrinsicCall *Instr) { |
| return; |
| } |
| case Intrinsics::Ctlz: { |
| - UnimplementedLoweringError(this, Instr); |
| + auto *Src = Instr->getArg(0); |
| + Type SrcTy = Src->getType(); |
|
Jim Stichnoth
2016/09/22 13:48:27
const Type
obucinac
2016/09/22 15:42:07
Done.
|
| + if (isScalarIntegerType(SrcTy)) { |
|
Jim Stichnoth
2016/09/22 13:48:27
This code seems a bit unbalanced - it appears to d
obucinac
2016/09/22 15:42:07
Done.
|
| + if (SrcTy == IceType_i64) { |
| + UnimplementedLoweringError(this, Instr); |
| + } else { |
| + auto *DestR = legalizeToReg(Dest); |
|
Jim Stichnoth
2016/09/22 13:48:27
This doesn't seem right to me. Dest shouldn't act
obucinac
2016/09/22 15:42:07
Done.
|
| + auto *SrcR = legalizeToReg(Src); |
| + _clz(DestR, SrcR); |
| + _mov(Dest, DestR); |
| + } |
| + } |
| return; |
| } |
| case Intrinsics::Cttz: { |