This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug target/58139] New: PowerPC volatile VSX register live across call


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58139

            Bug ID: 58139
           Summary: PowerPC volatile VSX register live across call
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dje at gcc dot gnu.org

void tightness3_intrinsics2(double* A, double* B, int N) {
 __vector double * vA = (__vector double*)A;
 __vector double * vB = (__vector double*)B;
 __vector double va0, va1;
 double b0, b1, b2, b3;
 va0 = vA[0];
 va1 = vA[1];
 b0 = log(vec_extract(va0, 0));
 b1 = log(vec_extract(va0, 1));
 b2 = log(vec_extract(va1, 0));
 b3 = log(vec_extract(va1, 1));
 __vector double vb0 = {b0, b1};
 __vector double vb1 = {b2, b3};
 vB[0] = vb0;
 vB[1] = vb1;
}

         xxpermdi 1,63,63,2
         xxpermdi 30,30,29,0
         bl log
         nop
         addi 1,1,192
         li 0,-80
         stxvd2x 30,0,30

GCC should not expect VSX 30 to be preserved across the call to log().


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]