[llvm] 84be76f - [X86][EVEX512] Move 512-bit operations under useAVX512Regs
Phoebe Wang via llvm-commits
llvm-commits at lists.llvm.org
Thu May 23 23:10:46 PDT 2024
Author: Phoebe Wang
Date: 2024-05-24T14:10:32+08:00
New Revision: 84be76f5f3095fcf804ba33c2ab55e548e800338
URL: https://github.com/llvm/llvm-project/commit/84be76f5f3095fcf804ba33c2ab55e548e800338
DIFF: https://github.com/llvm/llvm-project/commit/84be76f5f3095fcf804ba33c2ab55e548e800338.diff
LOG: [X86][EVEX512] Move 512-bit operations under useAVX512Regs
Added:
Modified:
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/pr90844.ll
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 70058fba4f3d5..95282c7c1455b 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -2022,6 +2022,10 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
setOperationAction(ISD::ROTL, MVT::v32i16, Custom);
setOperationAction(ISD::ROTR, MVT::v32i16, Custom);
}
+
+ setOperationAction(ISD::FNEG, MVT::v32f16, Custom);
+ setOperationAction(ISD::FABS, MVT::v32f16, Custom);
+ setOperationAction(ISD::FCOPYSIGN, MVT::v32f16, Custom);
}// useAVX512Regs
if (!Subtarget.useSoftFloat() && Subtarget.hasVBMI2()) {
@@ -2098,9 +2102,6 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
for (auto VT : { MVT::v4i32, MVT::v8i32, MVT::v2i64, MVT::v4i64 })
setOperationAction(ISD::CTPOP, VT, Legal);
}
- setOperationAction(ISD::FNEG, MVT::v32f16, Custom);
- setOperationAction(ISD::FABS, MVT::v32f16, Custom);
- setOperationAction(ISD::FCOPYSIGN, MVT::v32f16, Custom);
}
// This block control legalization of v32i1/v64i1 which are available with
diff --git a/llvm/test/CodeGen/X86/pr90844.ll b/llvm/test/CodeGen/X86/pr90844.ll
index 6feece7f66d87..b250c3f6f9a2e 100644
--- a/llvm/test/CodeGen/X86/pr90844.ll
+++ b/llvm/test/CodeGen/X86/pr90844.ll
@@ -17,3 +17,20 @@ entry:
store <2 x i64> %5, ptr poison, align 16
ret void
}
+
+define void @foo(ptr %0) {
+; CHECK-LABEL: foo:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: vpbroadcastw {{.*#+}} ymm0 = [-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0,-0.0E+0]
+; CHECK-NEXT: vpxor 32(%rdi), %ymm0, %ymm1
+; CHECK-NEXT: vpxor (%rdi), %ymm0, %ymm0
+; CHECK-NEXT: vmovdqa %ymm0, (%rdi)
+; CHECK-NEXT: vmovdqa %ymm1, 32(%rdi)
+; CHECK-NEXT: vzeroupper
+; CHECK-NEXT: retq
+entry:
+ %1 = load <32 x half>, ptr %0
+ %2 = fneg <32 x half> %1
+ store <32 x half> %2, ptr %0
+ ret void
+}
More information about the llvm-commits
mailing list