Blame SOURCES/gcc48-rh1482762.patch

8178f7
2017-03-25  Uros Bizjak  <ubizjak@gmail.com>
8178f7
8178f7
	PR target/80180
8178f7
	* config/i386/i386.c (ix86_expand_builtin)
8178f7
	<IX86_BUILTIN_RDSEED{16,32,64}_STEP>: Do not expand arg0 between
8178f7
	flags reg setting and flags reg using instructions.
8178f7
	<IX86_BUILTIN_RDRAND{16,32,64}_STEP>: Ditto.  Use non-flags reg
8178f7
	clobbering instructions to zero extend op2.
8178f7
8178f7
--- gcc/config/i386/i386.c	(revision 246478)
8178f7
+++ gcc/config/i386/i386.c	(revision 246479)
8178f7
@@ -39533,9 +39533,6 @@
8178f7
       mode0 = DImode;
8178f7
 
8178f7
 rdrand_step:
8178f7
-      op0 = gen_reg_rtx (mode0);
8178f7
-      emit_insn (GEN_FCN (icode) (op0));
8178f7
-
8178f7
       arg0 = CALL_EXPR_ARG (exp, 0);
8178f7
       op1 = expand_normal (arg0);
8178f7
       if (!address_operand (op1, VOIDmode))
8178f7
@@ -39543,6 +39540,10 @@
8178f7
 	  op1 = convert_memory_address (Pmode, op1);
8178f7
 	  op1 = copy_addr_to_reg (op1);
8178f7
 	}
8178f7
+
8178f7
+      op0 = gen_reg_rtx (mode0);
8178f7
+      emit_insn (GEN_FCN (icode) (op0));
8178f7
+
8178f7
       emit_move_insn (gen_rtx_MEM (mode0, op1), op0);
8178f7
 
8178f7
       op1 = gen_reg_rtx (SImode);
8178f7
@@ -39584,9 +39597,6 @@
8178f7
       mode0 = DImode;
8178f7
 
8178f7
 rdseed_step:
8178f7
-      op0 = gen_reg_rtx (mode0);
8178f7
-      emit_insn (GEN_FCN (icode) (op0));
8178f7
-
8178f7
       arg0 = CALL_EXPR_ARG (exp, 0);
8178f7
       op1 = expand_normal (arg0);
8178f7
       if (!address_operand (op1, VOIDmode))
8178f7
@@ -39594,6 +39604,10 @@
8178f7
 	  op1 = convert_memory_address (Pmode, op1);
8178f7
 	  op1 = copy_addr_to_reg (op1);
8178f7
 	}
8178f7
+
8178f7
+      op0 = gen_reg_rtx (mode0);
8178f7
+      emit_insn (GEN_FCN (icode) (op0));
8178f7
+
8178f7
       emit_move_insn (gen_rtx_MEM (mode0, op1), op0);
8178f7
 
8178f7
       op2 = gen_reg_rtx (QImode);