Skip to content
  1. Mar 16, 2006
  2. Mar 13, 2006
    • Chris Lattner's avatar
      For functions that use vector registers, save VRSAVE, mark used · 02e2c18c
      Chris Lattner authored
      registers, and update it on entry to each function, then restore it on exit.
      
      This compiles:
      
      void func(vfloat *a, vfloat *b, vfloat *c) {
              *a = *b * *c + *c;
      }
      
      to this:
      
      _func:
              mfspr r2, 256
              oris r6, r2, 49152
              mtspr 256, r6
              lvx v0, 0, r5
              lvx v1, 0, r4
              vmaddfp v0, v1, v0, v0
              stvx v0, 0, r3
              mtspr 256, r2
              blr
      
      GCC produces this (which has additional stack accesses):
      
      _func:
              mfspr r0,256
              stw r0,-4(r1)
              oris r0,r0,0xc000
              mtspr 256,r0
              lvx v0,0,r5
              lvx v1,0,r4
              lwz r12,-4(r1)
              vmaddfp v0,v0,v1,v0
              stvx v0,0,r3
              mtspr 256,r12
              blr
      
      llvm-svn: 26733
      02e2c18c
  3. Feb 02, 2006
  4. Jan 12, 2006
  5. Jan 09, 2006
  6. Dec 23, 2005
  7. Nov 06, 2005
  8. Oct 18, 2005
  9. Oct 16, 2005
  10. Oct 15, 2005
  11. Oct 02, 2005
  12. Oct 01, 2005
  13. Sep 30, 2005
  14. Sep 17, 2005
  15. Sep 09, 2005
  16. Aug 26, 2005
  17. Aug 19, 2005
  18. Aug 04, 2005
  19. Jul 30, 2005
  20. Jul 28, 2005
  21. Jul 27, 2005
  22. Apr 22, 2005
  23. Apr 12, 2005
  24. Apr 10, 2005
  25. Apr 04, 2005
Loading