Index: src/IceTargetLoweringARM32.cpp |
diff --git a/src/IceTargetLoweringARM32.cpp b/src/IceTargetLoweringARM32.cpp |
index 4b2dc98ef735465fb561cf2502a69a98df20d84d..474f9e13300531aac3ab6508b3c7b39e98c77532 100644 |
--- a/src/IceTargetLoweringARM32.cpp |
+++ b/src/IceTargetLoweringARM32.cpp |
@@ -2809,6 +2809,8 @@ void TargetARM32::lowerArithmetic(const InstArithmetic *Instr) { |
case InstArithmetic::Sub: |
case InstArithmetic::And: |
case InstArithmetic::Or: |
+ case InstArithmetic::Fmul: |
+ case InstArithmetic::Mul: |
break; |
} |
} |
@@ -3110,7 +3112,11 @@ void TargetARM32::lowerArithmetic(const InstArithmetic *Instr) { |
} |
Variable *Src0R = Srcs.unswappedSrc0R(this); |
Variable *Src1R = Srcs.unswappedSrc1R(this); |
- _mul(T, Src0R, Src1R); |
+ if (isVectorType(DestTy)) { |
+ _vmul(T, Src0R, Src1R); |
+ } else { |
+ _mul(T, Src0R, Src1R); |
+ } |
_mov(Dest, T); |
return; |
} |