This is an archive of the discontinued LLVM Phabricator instance.

[RISCV] Define vmsbf.m/vmsif.m/vmsof.m/viota.m/vid.v intrinsics.
ClosedPublic

Authored by khchen on Dec 26 2020, 9:00 AM.

Details

Summary

Define those intrinsics and lower to V instructions.

Use update_llc_test_checks.py for viota.m tests to check
earlyclobber is applied correctly.
mask viota.m tests uses the same argument as input and mask for
avoid dependency of D93364.

We work with @rogfer01 from BSC to come out this patch.

Diff Detail

Event Timeline

khchen created this revision.Dec 26 2020, 9:00 AM
khchen requested review of this revision.Dec 26 2020, 9:00 AM
Herald added a project: Restricted Project. · View Herald TranscriptDec 26 2020, 9:00 AM
HsiangKai added inline comments.Dec 26 2020, 7:11 PM
llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
573

Put VPseudoUnaryNoMask and VPseudoUnaryMask after VMaskPseudoUnaryMOutMask to make the order consistent.

582

duplicated.

1159

Put VPatUnaryNoMask and VPatUnaryMask after VPatMaskUnaryMOut for consistency.

1436

Put the pattern into a class just like VPatUnary for consistency.

2449

Could it be wrapped using multiclass/class like other instructions?

2944

Put foreach into multiclass definition for consistency.

2953

Could it be wrapped using multiclass/class like other instructions?

khchen updated this revision to Diff 313811.Dec 27 2020, 6:49 PM

address @HsiangKai's comments, thanks!!

khchen updated this revision to Diff 313812.Dec 27 2020, 7:05 PM

make consistent for td class naming.

khchen updated this revision to Diff 313815.Dec 27 2020, 7:40 PM
  1. remove HasDummyMask = 1 in mask pseudo class
  2. chagne DAGOperand to VReg in VPseudoUnaryNoMask
khchen updated this revision to Diff 313816.Dec 27 2020, 7:59 PM

Change back VPseudoUnaryNoMask argument and add a comment

This revision is now accepted and ready to land.Dec 28 2020, 5:14 AM