This is an archive of the discontinued LLVM Phabricator instance.

Implement initial Altivec support
ClosedPublic

Authored by jhibbits on Jan 17 2015, 11:31 PM.

Details

Summary

This adds the register plumbing, as well as register reading in FreeBSD core
dumps. Further work on the POSIX/FreeBSD ProcessMonitor is required in order to
support ptrace access to these registers.

Diff Detail

Repository
rL LLVM

Event Timeline

jhibbits updated this revision to Diff 18353.Jan 17 2015, 11:31 PM
jhibbits retitled this revision from to Implement initial Altivec support.
jhibbits updated this object.
jhibbits edited the test plan for this revision. (Show Details)
jhibbits added reviewers: emaste, tfiala.
jhibbits set the repository for this revision to rL LLVM.
jhibbits added a subscriber: Unknown Object (MLST).
emaste accepted this revision.Jan 28 2015, 7:28 PM
emaste edited edge metadata.

I'm not familiar with low-level ppc details but overall looks fine to me.

Two minor comments,

  • reg_info->name[0] == 'v' feels somewhat kludgey.
  • We'll need a similar change on x86; I think vregset is probably a sufficiently generic name.
This revision is now accepted and ready to land.Jan 28 2015, 7:28 PM

I'm not familiar with low-level ppc details but overall looks fine to me.

Two minor comments,

  • reg_info->name[0] == 'v' feels somewhat kludgey.
  • We'll need a similar change on x86; I think vregset is probably a sufficiently generic name.

You're right, it is a kludge. I followed the FPR check, which I think I copied from somewhere else. I've since fixed both, with an IsFPR() for the FPR check, and added a 'IsVMX()' function to check VMX registers.

jhibbits updated this revision to Diff 19109.Jan 31 2015, 10:38 PM
jhibbits edited edge metadata.
jhibbits removed rL LLVM as the repository for this revision.

Updated with fixing the kludge for getting the vector registers.

This revision was automatically updated to reflect the committed changes.