This is an archive of the discontinued LLVM Phabricator instance.

[Clang][AVX512][BuiltIn] Adding avx512 ( vperm{i|t}2var, vpermil{var}{ps|pd}{256|512} ) builtin to clang.
ClosedPublic

Authored by m_zuckerman on Apr 9 2016, 9:16 AM.

Diff Detail

Repository
rL LLVM

Event Timeline

m_zuckerman updated this revision to Diff 53138.Apr 9 2016, 9:16 AM
m_zuckerman retitled this revision from to [Clang][AVX512][BuiltIn] Adding avx512 ( vperm{i|t}2var, vpermil{var}{ps|pd}{256|512} ) builtin to clang..
m_zuckerman updated this object.
m_zuckerman added reviewers: AsafBadouh, igorb, delena.
m_zuckerman added a subscriber: llvm-commits.
delena added inline comments.Apr 9 2016, 9:43 AM
test/CodeGen/avx512f-builtins.c
2606 ↗(On Diff #53138)

What is 4? Current?

test/CodeGen/avx512vl-builtins.c
4302 ↗(On Diff #53138)

I don't understand round mode in shuffles. What instruction is generated with non-current mode?

m_zuckerman updated this revision to Diff 53151.Apr 9 2016, 1:10 PM
m_zuckerman updated this revision to Diff 53153.Apr 9 2016, 1:17 PM
m_zuckerman marked 2 inline comments as done.Apr 9 2016, 1:23 PM
m_zuckerman added inline comments.
test/CodeGen/avx512f-builtins.c
2606 ↗(On Diff #53138)

Not is an imm8 . All permute function gets imm8 argument as the last argument .

test/CodeGen/avx512vl-builtins.c
4302 ↗(On Diff #53153)

This is not a round mode, this function get imm8

"Shuffle double-precision (64-bit) floating-point elements in a using the control in imm8, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set)."

This was a mistake in replacing 4 in non-current mode.

delena accepted this revision.Apr 9 2016, 1:59 PM
delena edited edge metadata.
This revision is now accepted and ready to land.Apr 9 2016, 1:59 PM
This revision was automatically updated to reflect the committed changes.