equal
deleted
inserted
replaced
759 // Check for vector live range (only if vector register is used). |
759 // Check for vector live range (only if vector register is used). |
760 // On SPARC vector uses RegD which could be misaligned so it is not |
760 // On SPARC vector uses RegD which could be misaligned so it is not |
761 // processes as vector in RA. |
761 // processes as vector in RA. |
762 if (RegMask::is_vector(ireg)) |
762 if (RegMask::is_vector(ireg)) |
763 lrg._is_vector = 1; |
763 lrg._is_vector = 1; |
764 assert(n_type->isa_vect() == NULL || lrg._is_vector || ireg == Op_RegD, |
764 assert(n_type->isa_vect() == NULL || lrg._is_vector || ireg == Op_RegD || ireg == Op_RegL, |
765 "vector must be in vector registers"); |
765 "vector must be in vector registers"); |
766 |
766 |
767 // Check for bound register masks |
767 // Check for bound register masks |
768 const RegMask &lrgmask = lrg.mask(); |
768 const RegMask &lrgmask = lrg.mask(); |
769 if (lrgmask.is_bound(ireg)) { |
769 if (lrgmask.is_bound(ireg)) { |
959 // Check for bound register masks |
959 // Check for bound register masks |
960 const RegMask &lrgmask = lrg.mask(); |
960 const RegMask &lrgmask = lrg.mask(); |
961 int kreg = n->in(k)->ideal_reg(); |
961 int kreg = n->in(k)->ideal_reg(); |
962 bool is_vect = RegMask::is_vector(kreg); |
962 bool is_vect = RegMask::is_vector(kreg); |
963 assert(n->in(k)->bottom_type()->isa_vect() == NULL || |
963 assert(n->in(k)->bottom_type()->isa_vect() == NULL || |
964 is_vect || kreg == Op_RegD, |
964 is_vect || kreg == Op_RegD || kreg == Op_RegL, |
965 "vector must be in vector registers"); |
965 "vector must be in vector registers"); |
966 if (lrgmask.is_bound(kreg)) |
966 if (lrgmask.is_bound(kreg)) |
967 lrg._is_bound = 1; |
967 lrg._is_bound = 1; |
968 |
968 |
969 // If this use of a double forces a mis-aligned double, |
969 // If this use of a double forces a mis-aligned double, |