[llvm] [TargetLowering] Handle vector types in expandFixedPointMul (PR #102635)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 9 10:05:22 PDT 2024
================
@@ -137,3 +137,17 @@ define <4 x i64> @vec3(<4 x i64> %x, <4 x i64> %y) nounwind {
%tmp = call <4 x i64> @llvm.smul.fix.v4i64(<4 x i64> %x, <4 x i64> %y, i32 32)
ret <4 x i64> %tmp
}
+
+define <4 x i16> @widemul(<4 x i16> %x, <4 x i16> %y) nounwind {
+; CHECK-LABEL: widemul:
+; CHECK: // %bb.0:
+; CHECK-NEXT: smull v0.4s, v0.4h, v1.4h
+; CHECK-NEXT: shrn v1.4h, v0.4s, #16
+; CHECK-NEXT: xtn v2.4h, v0.4s
+; CHECK-NEXT: add v1.4h, v1.4h, v1.4h
+; CHECK-NEXT: shl v0.4h, v1.4h, #13
+; CHECK-NEXT: usra v0.4h, v2.4h, #2
+; CHECK-NEXT: ret
+ %tmp = call <4 x i16> @llvm.smul.fix.v4i16(<4 x i16> %x, <4 x i16> %y, i32 2)
----------------
arsenm wrote:
Also add a test for the umul case?
https://github.com/llvm/llvm-project/pull/102635
More information about the llvm-commits
mailing list