[PATCH, i386]: Change mode attribute of movddup insn to DF.

Uros Bizjak ubizjak@gmail.com
Wed Jan 9 16:50:00 GMT 2013


Hello!

Jakub noticed that we declare the mode of movddup insn inconistently
as V2DF or DF. Calculation of various prefixes for certain non-AVX sse
insns depends on correct definition of insn mode; for V2DFmode
prefix_data16 is added and for DFmode, prefix_rep is added. In case of
movddup, the later is used, so the insn mode should be declared as DF.

In practice, there is no difference in calculated insn length, but
let's be consistent here.

2013-01-09  Uros Bizjak  <ubizjak@gmail.com>

	* config/i386/sse.md (*vec_interleave_highv2df): Change mode
	attribute of movddup insn to DF.
	(*vec_interleave_lowv2df): Ditto.
	(vec_dupv2df): Ditto.

Patch was tested on x86_64-pc-linux-gnu {,-m32}. The patch is trivial
and will committed to mainline (even in this stage) and 4.7 branch.

Uros.
-------------- next part --------------
Index: sse.md
===================================================================
--- sse.md	(revision 195051)
+++ sse.md	(working copy)
@@ -4622,7 +4622,7 @@
   (set_attr "type" "sselog,sselog,sselog,ssemov,ssemov,ssemov")
    (set_attr "prefix_data16" "*,*,*,1,*,1")
    (set_attr "prefix" "orig,vex,maybe_vex,orig,vex,maybe_vex")
-   (set_attr "mode" "V2DF,V2DF,V2DF,V1DF,V1DF,V1DF")])
+   (set_attr "mode" "V2DF,V2DF,DF,V1DF,V1DF,V1DF")])
 
 ;; Recall that the 256-bit unpck insns only shuffle within their lanes.
 (define_expand "avx_movddup256"
@@ -4723,7 +4723,7 @@
    (set_attr "type" "sselog,sselog,sselog,ssemov,ssemov,ssemov")
    (set_attr "prefix_data16" "*,*,*,1,*,1")
    (set_attr "prefix" "orig,vex,maybe_vex,orig,vex,maybe_vex")
-   (set_attr "mode" "V2DF,V2DF,V2DF,V1DF,V1DF,V1DF")])
+   (set_attr "mode" "V2DF,V2DF,DF,V1DF,V1DF,V1DF")])
 
 (define_split
   [(set (match_operand:V2DF 0 "memory_operand")
@@ -5180,7 +5180,7 @@
   [(set_attr "isa" "noavx,sse3")
    (set_attr "type" "sselog1")
    (set_attr "prefix" "orig,maybe_vex")
-   (set_attr "mode" "V2DF")])
+   (set_attr "mode" "V2DF,DF")])
 
 (define_insn "*vec_concatv2df"
   [(set (match_operand:V2DF 0 "register_operand"     "=x,x,x,x,x,x,x,x")


More information about the Gcc-patches mailing list