[PATCH] D120158: [SelectionDAG][X86] Support f16 in getReciprocalOpName.
Craig Topper via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Feb 18 22:15:05 PST 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rG1df8efae56b5: [SelectionDAG][X86] Support f16 in getReciprocalOpName. (authored by craig.topper).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D120158/new/
https://reviews.llvm.org/D120158
Files:
llvm/lib/CodeGen/TargetLoweringBase.cpp
llvm/test/CodeGen/X86/avx512fp16-intrinsics.ll
Index: llvm/test/CodeGen/X86/avx512fp16-intrinsics.ll
===================================================================
--- llvm/test/CodeGen/X86/avx512fp16-intrinsics.ll
+++ llvm/test/CodeGen/X86/avx512fp16-intrinsics.ll
@@ -35,6 +35,32 @@
ret <32 x half> %2
}
+define <32 x half> @test_sqrt_ph_512_fast_estimate_attribute(<32 x half> %a0, <32 x half> %a1) "reciprocal-estimates"="vec-sqrt" {
+; CHECK-LABEL: test_sqrt_ph_512_fast_estimate_attribute:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vrsqrtph %zmm0, %zmm0
+; CHECK-NEXT: vmulph %zmm0, %zmm1, %zmm0
+; CHECK-NEXT: retq
+ %1 = call fast <32 x half> @llvm.sqrt.v32f16(<32 x half> %a0)
+ %2 = fdiv fast <32 x half> %a1, %1
+ ret <32 x half> %2
+}
+
+define <32 x half> @test_sqrt_ph_512_fast_estimate_attribute_2(<32 x half> %a0, <32 x half> %a1) "reciprocal-estimates"="vec-sqrth:1" {
+; CHECK-LABEL: test_sqrt_ph_512_fast_estimate_attribute_2:
+; CHECK: # %bb.0:
+; CHECK-NEXT: vrsqrtph %zmm0, %zmm2
+; CHECK-NEXT: vmulph %zmm2, %zmm0, %zmm0
+; CHECK-NEXT: vfmadd213ph {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to32}, %zmm2, %zmm0
+; CHECK-NEXT: vmulph {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to32}, %zmm2, %zmm2
+; CHECK-NEXT: vmulph %zmm1, %zmm0, %zmm0
+; CHECK-NEXT: vmulph %zmm0, %zmm2, %zmm0
+; CHECK-NEXT: retq
+ %1 = call fast <32 x half> @llvm.sqrt.v32f16(<32 x half> %a0)
+ %2 = fdiv fast <32 x half> %a1, %1
+ ret <32 x half> %2
+}
+
define <32 x half> @test_mask_sqrt_ph_512(<32 x half> %a0, <32 x half> %passthru, i32 %mask) {
; CHECK-LABEL: test_mask_sqrt_ph_512:
; CHECK: # %bb.0:
Index: llvm/lib/CodeGen/TargetLoweringBase.cpp
===================================================================
--- llvm/lib/CodeGen/TargetLoweringBase.cpp
+++ llvm/lib/CodeGen/TargetLoweringBase.cpp
@@ -2072,9 +2072,11 @@
Name += IsSqrt ? "sqrt" : "div";
- // TODO: Handle "half" or other float types?
+ // TODO: Handle other float types?
if (VT.getScalarType() == MVT::f64) {
Name += "d";
+ } else if (VT.getScalarType() == MVT::f16) {
+ Name += "h";
} else {
assert(VT.getScalarType() == MVT::f32 &&
"Unexpected FP type for reciprocal estimate");
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D120158.410066.patch
Type: text/x-patch
Size: 2186 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220219/ff6db2c6/attachment.bin>
More information about the llvm-commits
mailing list