mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			constraints.md (T): Use special memory constraint.
* config/sparc/constraints.md (T): Use special memory constraint. (U): Minor tweak. (W): Add TARGET_ARCH64 test. * config/sparc/sparc.md (*movdi_insn_sp32): Replace 'W' with 'T'. (*movdf_insn_sp32): Likewise. (*mov<VM64:mode>_insn_sp32): Likewise. Replace 'e' with 'f' in conjunction with offsettable memory references. From-SVN: r243540
This commit is contained in:
		
							parent
							
								
									d688bd654e
								
							
						
					
					
						commit
						5c2ee2f1fe
					
				|  | @ -1,3 +1,13 @@ | ||||||
|  | 2016-12-12  Eric Botcazou  <ebotcazou@adacore.com> | ||||||
|  | 
 | ||||||
|  | 	* config/sparc/constraints.md (T): Use special memory constraint. | ||||||
|  | 	(U): Minor tweak. | ||||||
|  | 	(W): Add TARGET_ARCH64 test. | ||||||
|  | 	* config/sparc/sparc.md (*movdi_insn_sp32): Replace 'W' with 'T'. | ||||||
|  | 	(*movdf_insn_sp32): Likewise. | ||||||
|  | 	(*mov<VM64:mode>_insn_sp32): Likewise.  Replace 'e' with 'f' in | ||||||
|  | 	conjunction with offsettable memory references. | ||||||
|  | 
 | ||||||
| 2016-12-11  Sandra Loosemore  <sandra@codesourcery.com> | 2016-12-11  Sandra Loosemore  <sandra@codesourcery.com> | ||||||
| 
 | 
 | ||||||
| 	* config/nios2/nios2.c (nios2_emit_move_sequence): Call copy_rtx | 	* config/nios2/nios2.c (nios2_emit_move_sequence): Call copy_rtx | ||||||
|  |  | ||||||
|  | @ -128,11 +128,11 @@ | ||||||
|  (and (match_code "const_double") |  (and (match_code "const_double") | ||||||
|       (match_test "fp_high_losum_p (op)"))) |       (match_test "fp_high_losum_p (op)"))) | ||||||
| 
 | 
 | ||||||
| ;; Not needed in 64-bit mode | ;; We need a special memory constraint because of the alignment requirement | ||||||
| (define_memory_constraint "T" | (define_special_memory_constraint "T" | ||||||
|  "Memory reference whose address is aligned to 8-byte boundary" |  "Memory reference whose address is aligned to 8-byte boundary" | ||||||
|  (and (match_test "TARGET_ARCH32") |  (and (match_code "mem") | ||||||
|       (match_code "mem") |       (match_test "TARGET_ARCH32") | ||||||
|       (match_test "memory_ok_for_ldd (op)"))) |       (match_test "memory_ok_for_ldd (op)"))) | ||||||
| 
 | 
 | ||||||
| ;; This awkward register constraint is necessary because it is not | ;; This awkward register constraint is necessary because it is not | ||||||
|  | @ -174,16 +174,17 @@ | ||||||
| ;; reg_class_for_constraint, and checks it against NO_REGS. | ;; reg_class_for_constraint, and checks it against NO_REGS. | ||||||
| (define_constraint "U" | (define_constraint "U" | ||||||
|  "Pseudo-register or hard even-numbered integer register" |  "Pseudo-register or hard even-numbered integer register" | ||||||
|  (and (match_test "TARGET_ARCH32") |  (and (match_code "reg") | ||||||
|       (match_code "reg") |  | ||||||
|       (ior (match_test "REGNO (op) < FIRST_PSEUDO_REGISTER") |       (ior (match_test "REGNO (op) < FIRST_PSEUDO_REGISTER") | ||||||
| 	   (not (match_test "reload_in_progress && reg_renumber [REGNO (op)] < 0"))) | 	   (not (match_test "reload_in_progress && reg_renumber [REGNO (op)] < 0"))) | ||||||
|  |       (match_test "TARGET_ARCH32") | ||||||
|       (match_test "register_ok_for_ldd (op)"))) |       (match_test "register_ok_for_ldd (op)"))) | ||||||
| 
 | 
 | ||||||
| ;; Equivalent to 'T' but available in 64-bit mode | ;; Equivalent to 'T' but in 64-bit mode without alignment requirement | ||||||
| (define_memory_constraint "W" | (define_memory_constraint "W" | ||||||
|  "Memory reference for 'e' constraint floating-point register" |  "Memory reference for 'e' constraint floating-point register" | ||||||
|  (and (match_code "mem") |  (and (match_code "mem") | ||||||
|  |       (match_test "TARGET_ARCH64") | ||||||
|       (match_test "memory_ok_for_ldd (op)"))) |       (match_test "memory_ok_for_ldd (op)"))) | ||||||
| 
 | 
 | ||||||
| (define_memory_constraint "w" | (define_memory_constraint "w" | ||||||
|  |  | ||||||
|  | @ -1705,9 +1705,9 @@ | ||||||
| 
 | 
 | ||||||
| (define_insn "*movdi_insn_sp32" | (define_insn "*movdi_insn_sp32" | ||||||
|   [(set (match_operand:DI 0 "nonimmediate_operand" |   [(set (match_operand:DI 0 "nonimmediate_operand" | ||||||
| 			    "=T,o,U,T,r,o,r,r,?*f,?T,?*f,?o,?*e,?*e,  r,?*f,?*e,?W,*b,*b") | 			    "=T,o,U,T,r,o,r,r,?*f,?T,?*f,?o,?*e,?*e,  r,?*f,?*e,?T,*b,*b") | ||||||
|         (match_operand:DI 1 "input_operand" |         (match_operand:DI 1 "input_operand" | ||||||
| 			    " J,J,T,U,o,r,i,r,  T,*f,  o,*f, *e, *e,?*f,  r,  W,*e, J, P"))] | 			    " J,J,T,U,o,r,i,r,  T,*f,  o,*f, *e, *e,?*f,  r,  T,*e, J, P"))] | ||||||
|   "TARGET_ARCH32 |   "TARGET_ARCH32 | ||||||
|    && (register_operand (operands[0], DImode) |    && (register_operand (operands[0], DImode) | ||||||
|        || register_or_zero_operand (operands[1], DImode))" |        || register_or_zero_operand (operands[1], DImode))" | ||||||
|  | @ -2336,9 +2336,9 @@ | ||||||
| 
 | 
 | ||||||
| (define_insn "*movdf_insn_sp32" | (define_insn "*movdf_insn_sp32" | ||||||
|   [(set (match_operand:DF 0 "nonimmediate_operand" |   [(set (match_operand:DF 0 "nonimmediate_operand" | ||||||
| 			    "=T,o,b,b,e,e,*r, f,  e,W,U,T,  f,o, *r,*r, o") | 			    "=T,o,b,b,e,e,*r, f,  e,T,U,T,  f,o, *r,*r, o") | ||||||
| 	(match_operand:DF 1 "input_operand" | 	(match_operand:DF 1 "input_operand" | ||||||
| 			    " G,G,G,C,e,e, f,*r,W#F,e,T,U,o#F,f,*rF, o,*r"))] | 			    " G,G,G,C,e,e, f,*r,T#F,e,T,U,o#F,f,*rF, o,*r"))] | ||||||
|   "TARGET_ARCH32 |   "TARGET_ARCH32 | ||||||
|    && (register_operand (operands[0], DFmode) |    && (register_operand (operands[0], DFmode) | ||||||
|        || register_or_zero_or_all_ones_operand (operands[1], DFmode))" |        || register_or_zero_or_all_ones_operand (operands[1], DFmode))" | ||||||
|  | @ -8543,9 +8543,9 @@ | ||||||
| 
 | 
 | ||||||
| (define_insn "*mov<VM64:mode>_insn_sp32" | (define_insn "*mov<VM64:mode>_insn_sp32" | ||||||
|   [(set (match_operand:VM64 0 "nonimmediate_operand" |   [(set (match_operand:VM64 0 "nonimmediate_operand" | ||||||
| 			      "=T,o,e,e,e,*r, f,e,W,U,T,e,o,*r,*r, o") | 			      "=T,o,e,e,e,*r, f,e,T,U,T,f,o,*r,*r, o") | ||||||
| 	(match_operand:VM64 1 "input_operand" | 	(match_operand:VM64 1 "input_operand" | ||||||
| 			      " Y,Y,Y,Z,e, f,*r,W,e,T,U,o,e,*r, o,*r"))] | 			      " Y,Y,Y,Z,e, f,*r,T,e,T,U,o,f,*r, o,*r"))] | ||||||
|   "TARGET_VIS |   "TARGET_VIS | ||||||
|    && TARGET_ARCH32 |    && TARGET_ARCH32 | ||||||
|    && (register_operand (operands[0], <VM64:MODE>mode) |    && (register_operand (operands[0], <VM64:MODE>mode) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Eric Botcazou
						Eric Botcazou