This is an archive of the discontinued LLVM Phabricator instance.

[X86][SKX] Added codegen regression test for avx512 instructions scheduling.NFC.
ClosedPublic

Authored by gadi.haber on Sep 19 2017, 6:22 AM.

Details

Summary

NFC.
Added code gen regression test for avx512 instructions scheduling called avx512-schedule.ll
This patch is in preparation of a larger patch of adding all SKX instruction scheduling and therefore
the scheduling for the avx512 instructions are still missing.
The avx512-schedule.ll test was formed from the following tests:
avx512bw-intrinsics.ll
avx512bwvl-intrinsics.ll
avx512cd-intrinsics.ll
avx512cdvl-intrinsics.ll
avx512dq-intrinsics.ll
avx512dqvl-intrinsics.ll
avx512-fma-intrinsics.ll
avx512-gather-scatter-intrin.ll
avx512-intrinsics.ll
avx512vpopcntdq-intrinsics.ll

Diff Detail

Repository
rL LLVM

Event Timeline

gadi.haber created this revision.Sep 19 2017, 6:22 AM
RKSimon edited edge metadata.Sep 19 2017, 6:36 AM

Thanks for doing this. Its pretty bulky in one file probably better to split it into *-schedule.ll files that match the *-intrinsics.ll equivalents? At least some Memory/Broadcast tests need to be present as well to help check we're matching those instructions as well.

gadi.haber retitled this revision from [X86][SKX] Added codegen regression test for avx512 instructions scheduling to [X86][SKX] Added codegen regression test for avx512 instructions scheduling.NFC..Sep 20 2017, 3:42 AM
gadi.haber edited the summary of this revision. (Show Details)

Updated diff after splitting the avx512 scheduling test into the following test files:
avx512bw-schedule-intrinsics.ll
avx512bwvl-schedule-intrinsics.ll
avx512cd-schedule-intrinsics.ll
avx512cdvl-schedule-intrinsics.ll
avx512dq-schedule-intrinsics.ll
avx512dqvl-schedule-intrinsics.ll
avx512-schedule-fma-intrinsics.ll
avx512-schedule-gather-scatter-intrin.ll
avx512-schedule-intrinsics.ll
avx512vpopcntdq-schedule-intrinsics.ll

The RUN commands need fixing to better test particular cpu models - I guess at the moment its just generic, knl and skx? Generic should be present (even though its set to SandyBridge right now), knl only needs to present for whatever features it supports, we can use skx for everything else. Worth testing cnl as well?

test/CodeGen/X86/avx512vpopcntdq-schedule-intrinsics.ll
2 ↗(On Diff #115983)

Add -mattr=+avx512vpopcntdq ?

gadi.haber marked an inline comment as done.Sep 20 2017, 7:50 AM

Updated diff after adding -mattr=+avx512vpopcntdq to the test: avx512vpopcntdq-schedule-intrinsics.ll

Had to replace all test files with new ones as they were using the avx512 intrinsics which are now in the process of being replaced by IR.
As a result I created 2 new tests which were compiled from the following regression tests:

avx512-schedule.ll:

cat avx512-arith.ll
cat avx512-cmp.ll
cat avx512-cvt.ll
cat avx512-ext.ll
cat avx512-fma.ll
cat avx512-logic.ll
cat avx512-mov.ll
cat avx512-mask-op.ll
cat avx512-vbroadcast.ll

avx512-shuffle-schedule.ll:

cat avx512-shuffles/permute.ll
cat avx512-shuffles/shuffle.ll
cat avx512-shuffles/shuffle-vec.ll
cat avx512-shuffles/unpack.ll

RKSimon accepted this revision.Sep 29 2017, 3:08 AM

LGTM - they're pretty bulky, so we might end up splitting them later as instruction coverage is increased, but its OK as a first step

This revision is now accepted and ready to land.Sep 29 2017, 3:08 AM
This revision was automatically updated to reflect the committed changes.