OSDN Git Service

* config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 18 Mar 2011 20:54:25 +0000 (20:54 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 18 Mar 2011 20:54:25 +0000 (20:54 +0000)
Rewrite using indirect functions.
(lwp_slwpcb): Ditto.
* config/i386/sse.md (avx_vextractf128<mode>): Ditto.
(avx_vinsertf128<mode>): Ditto.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@171169 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386.md
gcc/config/i386/sse.md

index 4dda33c..762dbb4 100644 (file)
@@ -1,3 +1,11 @@
+2011-03-18  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (float<SSEMODEI24:mode><X87MODEF:mode>2):
+       Rewrite using indirect functions.
+       (lwp_slwpcb): Ditto.
+       * config/i386/sse.md (avx_vextractf128<mode>): Ditto.
+       (avx_vinsertf128<mode>): Ditto.
+
 2011-03-18  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
        * config/s390/s390.c (s390_delegitimize_address): Handle GOTOFF
 2011-03-16  Jeff Law  <law@redhat.com>
 
        * tree-vrp.c (identify_jump_threads): Slightly simplify type
-       check for operands of conditional.  Allow type to be a
-       pointer.
+       check for operands of conditional.  Allow type to be a pointer.
 
 2011-03-16  Richard Guenther  <rguenther@suse.de>
 
 
 2011-03-15  Richard Guenther  <rguenther@suse.de>
 
-       * config/i386/i386.c (ix86_emit_swdivsf): Implement more
-       efficiently.
+       * config/i386/i386.c (ix86_emit_swdivsf): Implement more efficiently.
 
 2011-03-15  Alan Modra  <amodra@gmail.com>
 
 
 2011-03-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
 
-       * config/sol2.c (solaris_assemble_visibility): Remove obsolete
-       URLs.
+       * config/sol2.c (solaris_assemble_visibility): Remove obsolete URLs.
 
 2011-03-14  Jakub Jelinek  <jakub@redhat.com>
 
index 12470ea..c9761a4 100644 (file)
       && !X87_ENABLE_FLOAT (<X87MODEF:MODE>mode, <SSEMODEI24:MODE>mode))
     {
       rtx reg = gen_reg_rtx (XFmode);
-      rtx insn;
+      rtx (*insn)(rtx, rtx);
 
       emit_insn (gen_float<SSEMODEI24:mode>xf2 (reg, operands[1]));
 
       if (<X87MODEF:MODE>mode == SFmode)
-       insn = gen_truncxfsf2 (operands[0], reg);
+       insn = gen_truncxfsf2;
       else if (<X87MODEF:MODE>mode == DFmode)
-       insn = gen_truncxfdf2 (operands[0], reg);
+       insn = gen_truncxfdf2;
       else
        gcc_unreachable ();
 
-      emit_insn (insn);
+      emit_insn (insn (operands[0], reg));
       DONE;
     }
 })
        (unspec_volatile [(const_int 0)] UNSPECV_SLWP_INTRINSIC))]
   "TARGET_LWP"
 {
-  if (TARGET_64BIT)
-    emit_insn (gen_lwp_slwpcbdi (operands[0]));
-  else
-    emit_insn (gen_lwp_slwpcbsi (operands[0]));
+  rtx (*insn)(rtx);
+
+  insn = (TARGET_64BIT
+         ? gen_lwp_slwpcbdi
+         : gen_lwp_slwpcbsi);
+
+  emit_insn (insn (operands[0]));
   DONE;
 })
 
index ba2bf24..6200419 100644 (file)
    (match_operand:SI 2 "const_0_to_1_operand" "")]
   "TARGET_AVX"
 {
+  rtx (*insn)(rtx, rtx);
+
   switch (INTVAL (operands[2]))
     {
     case 0:
-      emit_insn (gen_vec_extract_lo_<mode> (operands[0], operands[1]));
+      insn = gen_vec_extract_lo_<mode>;
       break;
     case 1:
-      emit_insn (gen_vec_extract_hi_<mode> (operands[0], operands[1]));
+      insn = gen_vec_extract_hi_<mode>;
       break;
     default:
       gcc_unreachable ();
     }
+
+  emit_insn (insn (operands[0], operands[1]));
   DONE;
 })
 
    (match_operand:SI 3 "const_0_to_1_operand" "")]
   "TARGET_AVX"
 {
+  rtx (*insn)(rtx, rtx, rtx);
+
   switch (INTVAL (operands[3]))
     {
     case 0:
-      emit_insn (gen_vec_set_lo_<mode> (operands[0], operands[1],
-                                       operands[2]));
+      insn = gen_vec_set_lo_<mode>;
       break;
     case 1:
-      emit_insn (gen_vec_set_hi_<mode> (operands[0], operands[1],
-                                       operands[2]));
+      insn = gen_vec_set_hi_<mode>;
       break;
     default:
       gcc_unreachable ();
     }
+
+  emit_insn (insn (operands[0], operands[1], operands[2]));
   DONE;
 })