This is an archive of the discontinued LLVM Phabricator instance.

[ARMv8-M] [7/9] Add ARMv8-M security extension instructions to ARMv8-M Baseline/Mainline
ClosedPublic

Authored by bsmith on Dec 7 2015, 3:16 AM.

Details

Reviewers
t.p.northover
Summary

This patch forms part of the ARMv8-M Baseline/Mainline support, adding support for ARMv8-M security extension instructions in ARMv8-M Baseline/Mainline.

Diff Detail

Repository
rL LLVM

Event Timeline

bsmith updated this revision to Diff 42046.Dec 7 2015, 3:16 AM
bsmith retitled this revision from to [ARMv8-M] [7/9] Add ARMv8-M security extension instructions to ARMv8-M Baseline/Mainline.
bsmith updated this object.
bsmith added a reviewer: t.p.northover.
bsmith set the repository for this revision to rL LLVM.
bsmith added a subscriber: llvm-commits.
bsmith updated this revision to Diff 43881.Jan 4 2016, 6:20 AM

Rebase patch against latest trunk changes.

t.p.northover edited edge metadata.Jan 13 2016, 4:10 PM

Some minor points here, though again I'm having to trust you on matching the specification.

Cheers.

Tim.

lib/Target/ARM/ARMInstrThumb2.td
4342–4345

Does this need hasSideEffects or similar? Otherwise (with no inputs or outputs) if it ever gets to CodeGen the compiler is going to nuke it out of hand.

lib/Target/ARM/ARMInstrVFP.td
207

These look unrelated to the security extensions. Probably also need mayLoad/mayStore.

test/MC/ARM/thumbv8m.s
168

Written like this, it becomes just a count of "invalid operand for instruction" errors. It's easier to track down future regressions if the problematic input line gets checked too (as in other error tests).

bsmith added inline comments.Jan 14 2016, 3:27 AM
lib/Target/ARM/ARMInstrVFP.td
207

These are infact part of the security extensions, they are used for loading/storing floating point state to the specified register, however you are correct about the missing mayLoad/mayStore.

bsmith updated this revision to Diff 44868.Jan 14 2016, 5:42 AM
bsmith edited edge metadata.

Add missing mayLoad/mayStore/hasSideEffects flags to added intructions

t.p.northover added inline comments.Jan 14 2016, 6:48 AM
lib/Target/ARM/ARMInstrVFP.td
207

So don't they need to be marked Has8MSecExt too?

bsmith added inline comments.Jan 14 2016, 7:13 AM
lib/Target/ARM/ARMInstrVFP.td
207

Sorry yes, I missed this.

bsmith updated this revision to Diff 44879.Jan 14 2016, 7:39 AM

Add missing HasV8SecExt to VLLDM/VLSTM instructions.

t.p.northover accepted this revision.Jan 14 2016, 10:45 AM
t.p.northover edited edge metadata.

Thanks Bradley, this looks fine now.

Tim.

This revision is now accepted and ready to land.Jan 14 2016, 10:45 AM
bsmith closed this revision.Jan 15 2016, 2:35 AM

Thanks, committed as r257883.