Page MenuHomePhabricator

[X86] Optimize fdiv with reciprocal instructions for half type
ClosedPublic

Authored by pengfei on Sep 27 2021, 8:18 AM.

Diff Detail

Unit TestsFailed

TimeTest
720 msx64 debian > ORC-x86_64-linux.TestCases/Linux/x86-64::trivial-cxa-atexit.S
Script: -- : 'RUN: at line 3'; /var/lib/buildkite-agent/builds/llvm-project/build/./bin/clang -m64 -c -o /var/lib/buildkite-agent/builds/llvm-project/build/projects/compiler-rt/test/orc/X86_64LinuxConfig/TestCases/Linux/x86-64/Output/trivial-cxa-atexit.S.tmp /var/lib/buildkite-agent/builds/llvm-project/compiler-rt/test/orc/TestCases/Linux/x86-64/trivial-cxa-atexit.S
600 msx64 debian > ORC-x86_64-linux.TestCases/Linux/x86-64::trivial-static-initializer.S
Script: -- : 'RUN: at line 7'; /var/lib/buildkite-agent/builds/llvm-project/build/./bin/clang -m64 -c -o /var/lib/buildkite-agent/builds/llvm-project/build/projects/compiler-rt/test/orc/X86_64LinuxConfig/TestCases/Linux/x86-64/Output/trivial-static-initializer.S.tmp /var/lib/buildkite-agent/builds/llvm-project/compiler-rt/test/orc/TestCases/Linux/x86-64/trivial-static-initializer.S
710 msx64 debian > ORC-x86_64-linux.TestCases/Linux/x86-64::trivial-tls.S
Script: -- : 'RUN: at line 1'; /var/lib/buildkite-agent/builds/llvm-project/build/./bin/clang -m64 -c -o /var/lib/buildkite-agent/builds/llvm-project/build/projects/compiler-rt/test/orc/X86_64LinuxConfig/TestCases/Linux/x86-64/Output/trivial-tls.S.tmp /var/lib/buildkite-agent/builds/llvm-project/compiler-rt/test/orc/TestCases/Linux/x86-64/trivial-tls.S

Event Timeline

pengfei created this revision.Sep 27 2021, 8:18 AM
pengfei requested review of this revision.Sep 27 2021, 8:18 AM
Herald added a project: Restricted Project. · View Herald TranscriptSep 27 2021, 8:18 AM
pengfei updated this revision to Diff 377263.Oct 5 2021, 8:36 AM

Fix scalar problem.

pengfei retitled this revision from [X86][WIP] Optimize fdiv with reciprocal instructions for half type to [X86] Optimize fdiv with reciprocal instructions for half type.Oct 5 2021, 8:40 AM
RKSimon added inline comments.Oct 5 2021, 8:46 AM
llvm/lib/Target/X86/X86ISelLowering.cpp
23161

This is a SCALAR_TO_VECTOR node

23203

SCALAR_TO_VECTOR

pengfei updated this revision to Diff 377276.Oct 5 2021, 9:12 AM
pengfei marked 2 inline comments as done.

Thanks Simon. I had seen the discussion about INSERT_VECTOR_ELT and SCALAR_TO_VECTOR, but forgot the conclusion. Do you remember the reason why we prefer the latter?

craig.topper added inline comments.Oct 5 2021, 9:23 AM
llvm/lib/Target/X86/X86ISelLowering.cpp
23156

Should we keep the user RefinementStep if it isn't ReciprocalEstimate::Unspecified?

23198

Same question as above.

pengfei updated this revision to Diff 377415.Oct 5 2021, 6:58 PM
pengfei marked an inline comment as done.

Keep the user RefinementStep when ReciprocalEstimate::Unspecified.

llvm/lib/Target/X86/X86ISelLowering.cpp
23156

Yes, we should respect user RefinementStep here. Thanks Craig.

craig.topper added inline comments.Oct 6 2021, 9:27 AM
llvm/lib/Target/X86/X86ISelLowering.cpp
23197

You need to know the type is legal. v64f16 will get through this, but type legalization won't be able to split a v64f16 X86ISD::RCP14 node.

pengfei updated this revision to Diff 377863.Oct 7 2021, 8:18 AM

Address review comment.

llvm/lib/Target/X86/X86ISelLowering.cpp
23197

Yes. Thanks Craig!

This revision is now accepted and ready to land.Oct 7 2021, 10:53 AM