Patchwork [i386] : Add REG_EQUAL notes to SSE mult sequences (+ a fix in legitimize_tls_address)

login
register
mail settings
Submitter Uros Bizjak
Date Aug. 27, 2011, 10:41 a.m.
Message ID <CAFULd4bcc=4S1Mu1XMpQWPZ4mydL5Y4HPJCZ1RQqv2jko=dxdQ@mail.gmail.com>
Download mbox | patch
Permalink /patch/111868/
State New
Headers show

Comments

Uros Bizjak - Aug. 27, 2011, 10:41 a.m.
Hello!

2011-08-27  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/sse.md (mulv16qi3): Attach REG_EQUAL note.
	(*sse2_mulv4si3): Ditto.
	(mulv2di3): Ditto.
	* config/i386/i386.c (legitimize_tls_address): Change REG_EQIV
	notes to REG_EQUAL.

Tested on x86_64-pc-linux-gnu {,-m32}, committed to mainline SVN.

Uros.

Patch

Index: sse.md
===================================================================
--- sse.md	(revision 178130)
+++ sse.md	(working copy)
@@ -4726,6 +4726,9 @@ 
 
   /* Extract the even bytes and merge them back together.  */
   ix86_expand_vec_extract_even_odd (operands[0], t[5], t[4], 0);
+
+  set_unique_reg_note (get_last_insn (), REG_EQUAL,
+		       gen_rtx_MULT (V16QImode, operands[1], operands[2]));
   DONE;
 })
 
@@ -5179,6 +5182,9 @@ 
 
   /* Merge the parts back together.  */
   emit_insn (gen_vec_interleave_lowv4si (op0, t5, t6));
+
+  set_unique_reg_note (get_last_insn (), REG_EQUAL,
+		       gen_rtx_MULT (V4SImode, operands[1], operands[2]));
   DONE;
 })
 
@@ -5261,6 +5267,9 @@ 
       emit_insn (gen_addv2di3 (t6, t1, t4));
       emit_insn (gen_addv2di3 (op0, t6, t5));
     }
+
+  set_unique_reg_note (get_last_insn (), REG_EQUAL,
+		       gen_rtx_MULT (V2DImode, operands[1], operands[2]));
   DONE;
 })
 
Index: i386.c
===================================================================
--- i386.c	(revision 178129)
+++ i386.c	(working copy)
@@ -12268,7 +12268,7 @@  legitimize_tls_address (rtx x, enum tls_model mode
 	  tp = get_thread_pointer (true);
 	  dest = force_reg (Pmode, gen_rtx_PLUS (Pmode, tp, dest));
 
-	  set_unique_reg_note (get_last_insn (), REG_EQUIV, x);
+	  set_unique_reg_note (get_last_insn (), REG_EQUAL, x);
 	}
       else
 	{
@@ -12315,7 +12315,7 @@  legitimize_tls_address (rtx x, enum tls_model mode
 	    emit_insn (gen_tls_dynamic_gnu2_32 (base, tmp, pic));
 
 	  tp = get_thread_pointer (true);
-	  set_unique_reg_note (get_last_insn (), REG_EQUIV,
+	  set_unique_reg_note (get_last_insn (), REG_EQUAL,
 			       gen_rtx_MINUS (Pmode, tmp, tp));
 	}
       else
@@ -12331,7 +12331,7 @@  legitimize_tls_address (rtx x, enum tls_model mode
 	      insns = get_insns ();
 	      end_sequence ();
 
-	      /* Attach a unique REG_EQUIV, to allow the RTL optimizers to
+	      /* Attach a unique REG_EQUAL, to allow the RTL optimizers to
 		 share the LD_BASE result with other LD model accesses.  */
 	      eqv = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, const0_rtx),
 				    UNSPEC_TLS_LD_BASE);
@@ -12352,7 +12352,7 @@  legitimize_tls_address (rtx x, enum tls_model mode
 	{
 	  dest = force_reg (Pmode, gen_rtx_PLUS (Pmode, dest, tp));
 
-	  set_unique_reg_note (get_last_insn (), REG_EQUIV, x);
+	  set_unique_reg_note (get_last_insn (), REG_EQUAL, x);
 	}
       break;