This is an archive of the discontinued LLVM Phabricator instance.

[Clang][AVX512][intrinsics] Fix vscalef intrinsics.
ClosedPublic

Authored by m_zuckerman on May 17 2016, 5:20 AM.

Details

Summary

Separating between scalar intrinsics and vector intrinsics.

Bug description:
Clang lowers the scalef_sd and scalef_ss to a wrong instruction. This patch fixes this problem by adding new SDnode name. By that LLVM distinguishes between the two intrinsics.

Diff Detail

Repository
rL LLVM

Event Timeline

m_zuckerman retitled this revision from to [Clang][AVX512][intrinsics] Fix vscalef intrinsics..
m_zuckerman updated this object.
m_zuckerman added reviewers: igorb, delena, AsafBadouh.
m_zuckerman added a subscriber: llvm-commits.
igorb edited edge metadata.May 17 2016, 6:15 AM

Please add bug explanation.

I think that instead of scalefIntrin.ll the relevant scalar tests should be moved from avx512f-intrinsics.ll to avx512f-scalar-intrinsics.ll and tested for AVX512F and AVX512F & VL to insure correct result . In general all scalar intrinsics should be tested to catch similar bug.

lib/Target/X86/X86ISelLowering.cpp
21847 ↗(On Diff #57464)

please remove space

lib/Target/X86/X86InstrAVX512.td
3821 ↗(On Diff #57464)

please add space

m_zuckerman edited edge metadata.May 17 2016, 6:41 AM
m_zuckerman marked an inline comment as done.
m_zuckerman updated this object.May 17 2016, 1:31 PM
AsafBadouh accepted this revision.May 19 2016, 6:56 AM
AsafBadouh edited edge metadata.

LGTM

This revision is now accepted and ready to land.May 19 2016, 6:56 AM
m_zuckerman edited edge metadata.
igorb accepted this revision.May 19 2016, 7:56 AM
igorb edited edge metadata.

LGTM

This revision was automatically updated to reflect the committed changes.