Commit ba94c7af by Uros Bizjak

i386.md: Use default value in "isa" attribute.

	* config/i386/i386.md: Use default value in "isa" attribute.
	* config/i386/sse.md: Ditto.
	* config/i386/mmx.md: Ditto.

From-SVN: r174945
parent b5ee9d1c
...@@ -2151,7 +2151,7 @@ ...@@ -2151,7 +2151,7 @@
[(set (attr "isa") [(set (attr "isa")
(if_then_else (eq_attr "alternative" "9,10,11,12") (if_then_else (eq_attr "alternative" "9,10,11,12")
(const_string "noavx") (const_string "noavx")
(const_string "base"))) (const_string "*")))
(set (attr "type") (set (attr "type")
(cond [(eq_attr "alternative" "0,1") (cond [(eq_attr "alternative" "0,1")
(const_string "multi") (const_string "multi")
...@@ -12700,7 +12700,7 @@ ...@@ -12700,7 +12700,7 @@
(if_then_else (match_operand:MODEF 3 "mult_operator" "") (if_then_else (match_operand:MODEF 3 "mult_operator" "")
(const_string "fmul") (const_string "fmul")
(const_string "fop")))) (const_string "fop"))))
(set_attr "isa" "base,noavx,avx") (set_attr "isa" "*,noavx,avx")
(set_attr "prefix" "orig,orig,vex") (set_attr "prefix" "orig,orig,vex")
(set_attr "mode" "<MODE>")]) (set_attr "mode" "<MODE>")])
...@@ -12760,7 +12760,7 @@ ...@@ -12760,7 +12760,7 @@
(const_string "fdiv") (const_string "fdiv")
] ]
(const_string "fop"))) (const_string "fop")))
(set_attr "isa" "base,base,noavx,avx") (set_attr "isa" "*,*,noavx,avx")
(set_attr "prefix" "orig,orig,orig,vex") (set_attr "prefix" "orig,orig,orig,vex")
(set_attr "mode" "<MODE>")]) (set_attr "mode" "<MODE>")])
......
...@@ -85,7 +85,19 @@ ...@@ -85,7 +85,19 @@
%vmovq\t{%1, %0|%0, %1} %vmovq\t{%1, %0|%0, %1}
%vmovd\t{%1, %0|%0, %1} %vmovd\t{%1, %0|%0, %1}
%vmovd\t{%1, %0|%0, %1}" %vmovd\t{%1, %0|%0, %1}"
[(set_attr "type" "imov,imov,mmx,mmxmov,mmxmov,mmxmov,ssecvt,ssecvt,sselog1,ssemov,ssemov,ssemov,ssemov") [(set (attr "type")
(cond [(eq_attr "alternative" "0,1")
(const_string "imov")
(eq_attr "alternative" "2")
(const_string "mmx")
(eq_attr "alternative" "3,4,5")
(const_string "mmxmov")
(eq_attr "alternative" "6,7")
(const_string "ssecvt")
(eq_attr "alternative" "8")
(const_string "sselog1")
]
(const_string "ssemov")))
(set_attr "unit" "*,*,*,*,*,*,mmx,mmx,*,*,*,*,*") (set_attr "unit" "*,*,*,*,*,*,mmx,mmx,*,*,*,*,*")
(set_attr "prefix_rep" "*,*,*,*,*,*,1,1,*,1,*,*,*") (set_attr "prefix_rep" "*,*,*,*,*,*,1,1,*,1,*,*,*")
(set_attr "prefix_data16" "*,*,*,*,*,*,*,*,*,*,1,1,1") (set_attr "prefix_data16" "*,*,*,*,*,*,*,*,*,*,1,1,1")
...@@ -125,8 +137,20 @@ ...@@ -125,8 +137,20 @@
[(set (attr "isa") [(set (attr "isa")
(if_then_else (eq_attr "alternative" "9,10,11,12") (if_then_else (eq_attr "alternative" "9,10,11,12")
(const_string "noavx") (const_string "noavx")
(const_string "base"))) (const_string "*")))
(set_attr "type" "mmx,mmxmov,mmxmov,mmxmov,ssecvt,ssecvt,sselog1,ssemov,ssemov,sselog1,ssemov,ssemov,ssemov,*,*") (set (attr "type")
(cond [(eq_attr "alternative" "0")
(const_string "mmx")
(eq_attr "alternative" "1,2,3")
(const_string "mmxmov")
(eq_attr "alternative" "4,5")
(const_string "ssecvt")
(eq_attr "alternative" "6,9")
(const_string "sselog1")
(eq_attr "alternative" "13,14")
(const_string "multi")
]
(const_string "ssemov")))
(set_attr "unit" "*,*,*,*,mmx,mmx,*,*,*,*,*,*,*,*,*") (set_attr "unit" "*,*,*,*,mmx,mmx,*,*,*,*,*,*,*,*,*")
(set (attr "prefix_rep") (set (attr "prefix_rep")
(if_then_else (if_then_else
...@@ -179,7 +203,19 @@ ...@@ -179,7 +203,19 @@
%vmovlps\t{%1, %0|%0, %1} %vmovlps\t{%1, %0|%0, %1}
%vmovd\t{%1, %0|%0, %1} %vmovd\t{%1, %0|%0, %1}
%vmovd\t{%1, %0|%0, %1}" %vmovd\t{%1, %0|%0, %1}"
[(set_attr "type" "imov,imov,mmx,mmxmov,mmxmov,mmxmov,ssecvt,ssecvt,ssemov,sselog1,ssemov,ssemov,ssemov,ssemov") [(set (attr "type")
(cond [(eq_attr "alternative" "0,1")
(const_string "imov")
(eq_attr "alternative" "2")
(const_string "mmx")
(eq_attr "alternative" "3,4,5")
(const_string "mmxmov")
(eq_attr "alternative" "6,7")
(const_string "ssecvt")
(eq_attr "alternative" "9")
(const_string "sselog1")
]
(const_string "ssemov")))
(set_attr "unit" "*,*,*,*,*,*,mmx,mmx,*,*,*,*,*,*") (set_attr "unit" "*,*,*,*,*,*,mmx,mmx,*,*,*,*,*,*")
(set_attr "prefix_rep" "*,*,*,*,*,*,1,1,*,*,*,*,*,*") (set_attr "prefix_rep" "*,*,*,*,*,*,1,1,*,*,*,*,*,*")
(set (attr "length_vex") (set (attr "length_vex")
...@@ -214,7 +250,19 @@ ...@@ -214,7 +250,19 @@
%vmovlps\t{%1, %0|%0, %1} %vmovlps\t{%1, %0|%0, %1}
# #
#" #"
[(set_attr "type" "mmx,mmxmov,mmxmov,mmxmov,ssecvt,ssecvt,sselog1,ssemov,ssemov,ssemov,*,*") [(set (attr "type")
(cond [(eq_attr "alternative" "0")
(const_string "mmx")
(eq_attr "alternative" "1,2,3")
(const_string "mmxmov")
(eq_attr "alternative" "4,5")
(const_string "ssecvt")
(eq_attr "alternative" "6")
(const_string "sselog1")
(eq_attr "alternative" "10,11")
(const_string "multi")
]
(const_string "ssemov")))
(set_attr "unit" "*,*,*,*,mmx,mmx,*,*,*,*,*,*") (set_attr "unit" "*,*,*,*,mmx,mmx,*,*,*,*,*,*")
(set_attr "prefix_rep" "*,*,*,*,1,1,*,*,*,*,*,*") (set_attr "prefix_rep" "*,*,*,*,1,1,*,*,*,*,*,*")
(set (attr "prefix") (set (attr "prefix")
...@@ -228,8 +276,8 @@ ...@@ -228,8 +276,8 @@
[(set (match_operand:MMXMODE 0 "nonimmediate_operand" "") [(set (match_operand:MMXMODE 0 "nonimmediate_operand" "")
(match_operand:MMXMODE 1 "general_operand" ""))] (match_operand:MMXMODE 1 "general_operand" ""))]
"!TARGET_64BIT && reload_completed "!TARGET_64BIT && reload_completed
&& (!MMX_REG_P (operands[0]) && !SSE_REG_P (operands[0])) && !(MMX_REG_P (operands[0]) || SSE_REG_P (operands[0])
&& (!MMX_REG_P (operands[1]) && !SSE_REG_P (operands[1]))" || MMX_REG_P (operands[1]) || SSE_REG_P (operands[1]))"
[(const_int 0)] [(const_int 0)]
"ix86_split_long_move (operands); DONE;") "ix86_split_long_move (operands); DONE;")
......
...@@ -2792,7 +2792,7 @@ ...@@ -2792,7 +2792,7 @@
movlps\t{%H2, %0|%0, %H2} movlps\t{%H2, %0|%0, %H2}
vmovlps\t{%H2, %1, %0|%0, %1, %H2} vmovlps\t{%H2, %1, %0|%0, %1, %H2}
%vmovhps\t{%2, %0|%0, %2}" %vmovhps\t{%2, %0|%0, %2}"
[(set_attr "isa" "noavx,avx,noavx,avx,base") [(set_attr "isa" "noavx,avx,noavx,avx,*")
(set_attr "type" "ssemov") (set_attr "type" "ssemov")
(set_attr "prefix" "orig,vex,orig,vex,maybe_vex") (set_attr "prefix" "orig,vex,orig,vex,maybe_vex")
(set_attr "mode" "V4SF,V4SF,V2SF,V2SF,V2SF")]) (set_attr "mode" "V4SF,V4SF,V2SF,V2SF,V2SF")])
...@@ -2837,7 +2837,7 @@ ...@@ -2837,7 +2837,7 @@
movhps\t{%2, %0|%0, %2} movhps\t{%2, %0|%0, %2}
vmovhps\t{%2, %1, %0|%0, %1, %2} vmovhps\t{%2, %1, %0|%0, %1, %2}
%vmovlps\t{%2, %H0|%H0, %2}" %vmovlps\t{%2, %H0|%H0, %2}"
[(set_attr "isa" "noavx,avx,noavx,avx,base") [(set_attr "isa" "noavx,avx,noavx,avx,*")
(set_attr "type" "ssemov") (set_attr "type" "ssemov")
(set_attr "prefix" "orig,vex,orig,vex,maybe_vex") (set_attr "prefix" "orig,vex,orig,vex,maybe_vex")
(set_attr "mode" "V4SF,V4SF,V2SF,V2SF,V2SF")]) (set_attr "mode" "V4SF,V4SF,V2SF,V2SF,V2SF")])
...@@ -3200,7 +3200,7 @@ ...@@ -3200,7 +3200,7 @@
movlhps\t{%2, %0|%0, %2} movlhps\t{%2, %0|%0, %2}
vmovlhps\t{%2, %1, %0|%0, %1, %2} vmovlhps\t{%2, %1, %0|%0, %1, %2}
%vmovlps\t{%2, %H0|%H0, %2}" %vmovlps\t{%2, %H0|%H0, %2}"
[(set_attr "isa" "noavx,avx,noavx,avx,base") [(set_attr "isa" "noavx,avx,noavx,avx,*")
(set_attr "type" "ssemov") (set_attr "type" "ssemov")
(set_attr "prefix" "orig,vex,orig,vex,maybe_vex") (set_attr "prefix" "orig,vex,orig,vex,maybe_vex")
(set_attr "mode" "V2SF,V2SF,V4SF,V4SF,V2SF")]) (set_attr "mode" "V2SF,V2SF,V4SF,V4SF,V2SF")])
...@@ -3253,7 +3253,7 @@ ...@@ -3253,7 +3253,7 @@
movlps\t{%2, %0|%0, %2} movlps\t{%2, %0|%0, %2}
vmovlps\t{%2, %1, %0|%0, %1, %2} vmovlps\t{%2, %1, %0|%0, %1, %2}
%vmovlps\t{%2, %0|%0, %2}" %vmovlps\t{%2, %0|%0, %2}"
[(set_attr "isa" "noavx,avx,noavx,avx,base") [(set_attr "isa" "noavx,avx,noavx,avx,*")
(set_attr "type" "sselog,sselog,ssemov,ssemov,ssemov") (set_attr "type" "sselog,sselog,ssemov,ssemov,ssemov")
(set_attr "length_immediate" "1,1,*,*,*") (set_attr "length_immediate" "1,1,*,*,*")
(set_attr "prefix" "orig,vex,orig,vex,maybe_vex") (set_attr "prefix" "orig,vex,orig,vex,maybe_vex")
...@@ -3324,7 +3324,7 @@ ...@@ -3324,7 +3324,7 @@
%vmovss\t{%1, %0|%0, %1} %vmovss\t{%1, %0|%0, %1}
punpckldq\t{%2, %0|%0, %2} punpckldq\t{%2, %0|%0, %2}
movd\t{%1, %0|%0, %1}" movd\t{%1, %0|%0, %1}"
[(set_attr "isa" "noavx,avx,noavx,avx,base,base,base") [(set_attr "isa" "noavx,avx,noavx,avx,*,*,*")
(set_attr "type" "sselog,sselog,sselog,sselog,ssemov,mmxcvt,mmxmov") (set_attr "type" "sselog,sselog,sselog,sselog,ssemov,mmxcvt,mmxmov")
(set_attr "prefix_data16" "*,*,1,*,*,*,*") (set_attr "prefix_data16" "*,*,1,*,*,*,*")
(set_attr "prefix_extra" "*,*,1,1,*,*,*") (set_attr "prefix_extra" "*,*,1,1,*,*,*")
...@@ -3378,11 +3378,11 @@ ...@@ -3378,11 +3378,11 @@
;; see comment above inline_secondary_memory_needed function in i386.c ;; see comment above inline_secondary_memory_needed function in i386.c
(define_insn "vec_set<mode>_0" (define_insn "vec_set<mode>_0"
[(set (match_operand:VI4F_128 0 "nonimmediate_operand" [(set (match_operand:VI4F_128 0 "nonimmediate_operand"
"=Y4,Y2,Y2,x,x,x,Y4 ,x ,m,m,m") "=Y4,Y2,Y2,x,x,x,Y4 ,x ,m,m ,m")
(vec_merge:VI4F_128 (vec_merge:VI4F_128
(vec_duplicate:VI4F_128 (vec_duplicate:VI4F_128
(match_operand:<ssescalarmode> 2 "general_operand" (match_operand:<ssescalarmode> 2 "general_operand"
" Y4,m ,*r,m,x,x,*rm,*rm,x,*r,fF")) " Y4,m ,*r,m,x,x,*rm,*rm,x,fF,*r"))
(match_operand:VI4F_128 1 "vector_move_operand" (match_operand:VI4F_128 1 "vector_move_operand"
" C ,C ,C ,C,0,x,0 ,x ,0,0 ,0") " C ,C ,C ,C,0,x,0 ,x ,0,0 ,0")
(const_int 1)))] (const_int 1)))]
...@@ -3399,8 +3399,16 @@ ...@@ -3399,8 +3399,16 @@
# #
# #
#" #"
[(set_attr "isa" "base,base,base,noavx,noavx,avx,noavx,avx,base,base,base") [(set_attr "isa" "*,*,*,noavx,noavx,avx,noavx,avx,*,*,*")
(set_attr "type" "sselog,ssemov,ssemov,ssemov,ssemov,ssemov,sselog,sselog,*,*,*") (set (attr "type")
(cond [(eq_attr "alternative" "0,6,7")
(const_string "sselog")
(eq_attr "alternative" "9")
(const_string "fmov")
(eq_attr "alternative" "10")
(const_string "imov")
]
(const_string "ssemov")))
(set_attr "prefix_extra" "*,*,*,*,*,*,1,1,*,*,*") (set_attr "prefix_extra" "*,*,*,*,*,*,1,1,*,*,*")
(set_attr "length_immediate" "*,*,*,*,*,*,1,1,*,*,*") (set_attr "length_immediate" "*,*,*,*,*,*,1,1,*,*,*")
(set_attr "prefix" "maybe_vex,maybe_vex,maybe_vex,orig,orig,vex,orig,vex,*,*,*") (set_attr "prefix" "maybe_vex,maybe_vex,maybe_vex,orig,orig,vex,orig,vex,*,*,*")
...@@ -3820,7 +3828,7 @@ ...@@ -3820,7 +3828,7 @@
movlpd\t{%H1, %0|%0, %H1} movlpd\t{%H1, %0|%0, %H1}
vmovlpd\t{%H1, %2, %0|%0, %2, %H1} vmovlpd\t{%H1, %2, %0|%0, %2, %H1}
%vmovhpd\t{%1, %0|%0, %1}" %vmovhpd\t{%1, %0|%0, %1}"
[(set_attr "isa" "noavx,avx,base,noavx,avx,base") [(set_attr "isa" "noavx,avx,*,noavx,avx,*")
(set_attr "type" "sselog,sselog,sselog,ssemov,ssemov,ssemov") (set_attr "type" "sselog,sselog,sselog,ssemov,ssemov,ssemov")
(set_attr "prefix_data16" "*,*,*,1,*,1") (set_attr "prefix_data16" "*,*,*,1,*,1")
(set_attr "prefix" "orig,vex,maybe_vex,orig,vex,maybe_vex") (set_attr "prefix" "orig,vex,maybe_vex,orig,vex,maybe_vex")
...@@ -3922,7 +3930,7 @@ ...@@ -3922,7 +3930,7 @@
movhpd\t{%2, %0|%0, %2} movhpd\t{%2, %0|%0, %2}
vmovhpd\t{%2, %1, %0|%0, %1, %2} vmovhpd\t{%2, %1, %0|%0, %1, %2}
%vmovlpd\t{%2, %H0|%H0, %2}" %vmovlpd\t{%2, %H0|%H0, %2}"
[(set_attr "isa" "noavx,avx,base,noavx,avx,base") [(set_attr "isa" "noavx,avx,*,noavx,avx,*")
(set_attr "type" "sselog,sselog,sselog,ssemov,ssemov,ssemov") (set_attr "type" "sselog,sselog,sselog,ssemov,ssemov,ssemov")
(set_attr "prefix_data16" "*,*,*,1,*,1") (set_attr "prefix_data16" "*,*,*,1,*,1")
(set_attr "prefix" "orig,vex,maybe_vex,orig,vex,maybe_vex") (set_attr "prefix" "orig,vex,maybe_vex,orig,vex,maybe_vex")
...@@ -4128,7 +4136,7 @@ ...@@ -4128,7 +4136,7 @@
# #
# #
#" #"
[(set_attr "isa" "base,noavx,avx,base,base,base") [(set_attr "isa" "*,noavx,avx,*,*,*")
(set_attr "type" "ssemov,sselog1,sselog1,ssemov,fmov,imov") (set_attr "type" "ssemov,sselog1,sselog1,ssemov,fmov,imov")
(set (attr "prefix_data16") (set (attr "prefix_data16")
(if_then_else (if_then_else
...@@ -4148,6 +4156,20 @@ ...@@ -4148,6 +4156,20 @@
[(set (match_dup 0) (match_dup 1))] [(set (match_dup 0) (match_dup 1))]
"operands[1] = adjust_address (operands[1], DFmode, 8);") "operands[1] = adjust_address (operands[1], DFmode, 8);")
(define_insn "*vec_extractv2df_1_sse"
[(set (match_operand:DF 0 "nonimmediate_operand" "=m,x,x")
(vec_select:DF
(match_operand:V2DF 1 "nonimmediate_operand" "x,x,o")
(parallel [(const_int 1)])))]
"!TARGET_SSE2 && TARGET_SSE
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
movhps\t{%1, %0|%0, %1}
movhlps\t{%1, %0|%0, %1}
movlps\t{%H1, %0|%0, %H1}"
[(set_attr "type" "ssemov")
(set_attr "mode" "V2SF,V4SF,V2SF")])
;; Avoid combining registers from different units in a single alternative, ;; Avoid combining registers from different units in a single alternative,
;; see comment above inline_secondary_memory_needed function in i386.c ;; see comment above inline_secondary_memory_needed function in i386.c
(define_insn "sse2_storelpd" (define_insn "sse2_storelpd"
...@@ -4184,6 +4206,20 @@ ...@@ -4184,6 +4206,20 @@
DONE; DONE;
}) })
(define_insn "*vec_extractv2df_0_sse"
[(set (match_operand:DF 0 "nonimmediate_operand" "=m,x,x")
(vec_select:DF
(match_operand:V2DF 1 "nonimmediate_operand" "x,x,m")
(parallel [(const_int 0)])))]
"!TARGET_SSE2 && TARGET_SSE
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
movlps\t{%1, %0|%0, %1}
movaps\t{%1, %0|%0, %1}
movlps\t{%1, %0|%0, %1}"
[(set_attr "type" "ssemov")
(set_attr "mode" "V2SF,V4SF,V2SF")])
(define_expand "sse2_loadhpd_exp" (define_expand "sse2_loadhpd_exp"
[(set (match_operand:V2DF 0 "nonimmediate_operand" "") [(set (match_operand:V2DF 0 "nonimmediate_operand" "")
(vec_concat:V2DF (vec_concat:V2DF
...@@ -4225,7 +4261,7 @@ ...@@ -4225,7 +4261,7 @@
# #
# #
#" #"
[(set_attr "isa" "noavx,avx,noavx,avx,base,base,base") [(set_attr "isa" "noavx,avx,noavx,avx,*,*,*")
(set_attr "type" "ssemov,ssemov,sselog,sselog,ssemov,fmov,imov") (set_attr "type" "ssemov,ssemov,sselog,sselog,ssemov,fmov,imov")
(set_attr "prefix_data16" "1,*,*,*,*,*,*") (set_attr "prefix_data16" "1,*,*,*,*,*,*")
(set_attr "prefix" "orig,vex,orig,vex,*,*,*") (set_attr "prefix" "orig,vex,orig,vex,*,*,*")
...@@ -4285,8 +4321,16 @@ ...@@ -4285,8 +4321,16 @@
# #
# #
#" #"
[(set_attr "isa" "base,noavx,avx,noavx,avx,noavx,noavx,avx,base,base,base") [(set_attr "isa" "*,noavx,avx,noavx,avx,noavx,noavx,avx,*,*,*")
(set_attr "type" "ssemov,ssemov,ssemov,ssemov,ssemov,sselog,ssemov,ssemov,ssemov,fmov,imov") (set (attr "type")
(cond [(eq_attr "alternative" "5")
(const_string "sselog")
(eq_attr "alternative" "9")
(const_string "fmov")
(eq_attr "alternative" "10")
(const_string "imov")
]
(const_string "ssemov")))
(set_attr "prefix_data16" "*,1,*,*,*,*,1,*,*,*,*") (set_attr "prefix_data16" "*,1,*,*,*,*,1,*,*,*,*")
(set_attr "length_immediate" "*,*,*,*,*,1,*,*,*,*,*") (set_attr "length_immediate" "*,*,*,*,*,1,*,*,*,*,*")
(set_attr "prefix" "maybe_vex,orig,vex,orig,vex,orig,orig,vex,*,*,*") (set_attr "prefix" "maybe_vex,orig,vex,orig,vex,orig,orig,vex,*,*,*")
...@@ -4301,36 +4345,6 @@ ...@@ -4301,36 +4345,6 @@
[(set (match_dup 0) (match_dup 1))] [(set (match_dup 0) (match_dup 1))]
"operands[0] = adjust_address (operands[0], DFmode, 8);") "operands[0] = adjust_address (operands[0], DFmode, 8);")
;; Not sure these two are ever used, but it doesn't hurt to have
;; them. -aoliva
(define_insn "*vec_extractv2df_1_sse"
[(set (match_operand:DF 0 "nonimmediate_operand" "=m,x,x")
(vec_select:DF
(match_operand:V2DF 1 "nonimmediate_operand" "x,x,o")
(parallel [(const_int 1)])))]
"!TARGET_SSE2 && TARGET_SSE
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
movhps\t{%1, %0|%0, %1}
movhlps\t{%1, %0|%0, %1}
movlps\t{%H1, %0|%0, %H1}"
[(set_attr "type" "ssemov")
(set_attr "mode" "V2SF,V4SF,V2SF")])
(define_insn "*vec_extractv2df_0_sse"
[(set (match_operand:DF 0 "nonimmediate_operand" "=m,x,x")
(vec_select:DF
(match_operand:V2DF 1 "nonimmediate_operand" "x,x,m")
(parallel [(const_int 0)])))]
"!TARGET_SSE2 && TARGET_SSE
&& !(MEM_P (operands[0]) && MEM_P (operands[1]))"
"@
movlps\t{%1, %0|%0, %1}
movaps\t{%1, %0|%0, %1}
movlps\t{%1, %0|%0, %1}"
[(set_attr "type" "ssemov")
(set_attr "mode" "V2SF,V4SF,V2SF")])
(define_insn "sse2_movsd" (define_insn "sse2_movsd"
[(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,x,x,m,x,x,x,o") [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,x,x,m,x,x,x,o")
(vec_merge:V2DF (vec_merge:V2DF
...@@ -4348,8 +4362,12 @@ ...@@ -4348,8 +4362,12 @@
movhps\t{%H1, %0|%0, %H1} movhps\t{%H1, %0|%0, %H1}
vmovhps\t{%H1, %2, %0|%0, %2, %H1} vmovhps\t{%H1, %2, %0|%0, %2, %H1}
%vmovhps\t{%1, %H0|%H0, %1}" %vmovhps\t{%1, %H0|%H0, %1}"
[(set_attr "isa" "noavx,avx,noavx,avx,base,noavx,noavx,avx,base") [(set_attr "isa" "noavx,avx,noavx,avx,*,noavx,noavx,avx,*")
(set_attr "type" "ssemov,ssemov,ssemov,ssemov,ssemov,sselog,ssemov,ssemov,ssemov") (set (attr "type")
(if_then_else
(eq_attr "alternative" "5")
(const_string "sselog")
(const_string "ssemov")))
(set (attr "prefix_data16") (set (attr "prefix_data16")
(if_then_else (if_then_else
(and (eq_attr "alternative" "2,4") (and (eq_attr "alternative" "2,4")
...@@ -4404,8 +4422,12 @@ ...@@ -4404,8 +4422,12 @@
%vmovsd\t{%1, %0|%0, %1} %vmovsd\t{%1, %0|%0, %1}
movlhps\t{%2, %0|%0, %2} movlhps\t{%2, %0|%0, %2}
movhps\t{%2, %0|%0, %2}" movhps\t{%2, %0|%0, %2}"
[(set_attr "isa" "noavx,avx,noavx,avx,base,noavx,noavx") [(set_attr "isa" "noavx,avx,noavx,avx,*,noavx,noavx")
(set_attr "type" "sselog,sselog,ssemov,ssemov,ssemov,ssemov,ssemov") (set (attr "type")
(if_then_else
(eq_attr "alternative" "0,1")
(const_string "sselog")
(const_string "ssemov")))
(set_attr "prefix_data16" "*,*,1,*,*,*,*") (set_attr "prefix_data16" "*,*,1,*,*,*,*")
(set_attr "prefix" "orig,vex,orig,vex,maybe_vex,orig,orig") (set_attr "prefix" "orig,vex,orig,vex,maybe_vex,orig,orig")
(set_attr "mode" "V2DF,V2DF,V1DF,V1DF,DF,V4SF,V2SF")]) (set_attr "mode" "V2DF,V2DF,V1DF,V1DF,DF,V4SF,V2SF")])
...@@ -6305,7 +6327,7 @@ ...@@ -6305,7 +6327,7 @@
movss\t{%2, %0|%0, %2} movss\t{%2, %0|%0, %2}
movss\t{%2, %0|%0, %2} movss\t{%2, %0|%0, %2}
vmovss\t{%2, %1, %0|%0, %1, %2}" vmovss\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "isa" "base,base,noavx,noavx,avx") [(set_attr "isa" "*,*,noavx,noavx,avx")
(set_attr "type" "ssemov") (set_attr "type" "ssemov")
(set_attr "prefix" "maybe_vex,maybe_vex,orig,orig,vex") (set_attr "prefix" "maybe_vex,maybe_vex,orig,orig,vex")
(set_attr "mode" "TI,TI,V4SF,SF,SF")]) (set_attr "mode" "TI,TI,V4SF,SF,SF")])
...@@ -6393,7 +6415,7 @@ ...@@ -6393,7 +6415,7 @@
vpsrldq\t{$8, %1, %0|%0, %1, 8} vpsrldq\t{$8, %1, %0|%0, %1, 8}
%vmovq\t{%H1, %0|%0, %H1} %vmovq\t{%H1, %0|%0, %H1}
mov{q}\t{%H1, %0|%0, %H1}" mov{q}\t{%H1, %0|%0, %H1}"
[(set_attr "isa" "base,noavx,avx,base,base") [(set_attr "isa" "*,noavx,avx,*,*")
(set_attr "type" "ssemov,sseishft1,sseishft1,ssemov,imov") (set_attr "type" "ssemov,sseishft1,sseishft1,ssemov,imov")
(set_attr "length_immediate" "*,1,1,*,*") (set_attr "length_immediate" "*,1,1,*,*")
(set_attr "memory" "*,none,none,*,*") (set_attr "memory" "*,none,none,*,*")
...@@ -6414,7 +6436,7 @@ ...@@ -6414,7 +6436,7 @@
%vmovq\t{%H1, %0|%0, %H1} %vmovq\t{%H1, %0|%0, %H1}
movhlps\t{%1, %0|%0, %1} movhlps\t{%1, %0|%0, %1}
movlps\t{%H1, %0|%0, %H1}" movlps\t{%H1, %0|%0, %H1}"
[(set_attr "isa" "base,noavx,avx,base,noavx,noavx") [(set_attr "isa" "*,noavx,avx,*,noavx,noavx")
(set_attr "type" "ssemov,sseishft1,sseishft1,ssemov,ssemov,ssemov") (set_attr "type" "ssemov,sseishft1,sseishft1,ssemov,ssemov,ssemov")
(set_attr "length_immediate" "*,1,1,*,*,*") (set_attr "length_immediate" "*,1,1,*,*,*")
(set_attr "memory" "*,none,none,*,*,*") (set_attr "memory" "*,none,none,*,*,*")
...@@ -6456,7 +6478,7 @@ ...@@ -6456,7 +6478,7 @@
punpcklqdq\t%0, %0 punpcklqdq\t%0, %0
vpunpcklqdq\t{%d1, %0|%0, %d1} vpunpcklqdq\t{%d1, %0|%0, %d1}
%vmovddup\t{%1, %0|%0, %1}" %vmovddup\t{%1, %0|%0, %1}"
[(set_attr "isa" "noavx,avx,base") [(set_attr "isa" "noavx,avx,*")
(set_attr "type" "sselog1") (set_attr "type" "sselog1")
(set_attr "prefix" "orig,vex,maybe_vex") (set_attr "prefix" "orig,vex,maybe_vex")
(set_attr "mode" "TI,TI,DF")]) (set_attr "mode" "TI,TI,DF")])
...@@ -6486,7 +6508,7 @@ ...@@ -6486,7 +6508,7 @@
%vmovd\t{%1, %0|%0, %1} %vmovd\t{%1, %0|%0, %1}
punpckldq\t{%2, %0|%0, %2} punpckldq\t{%2, %0|%0, %2}
movd\t{%1, %0|%0, %1}" movd\t{%1, %0|%0, %1}"
[(set_attr "isa" "noavx,avx,noavx,avx,base,base,base") [(set_attr "isa" "noavx,avx,noavx,avx,*,*,*")
(set_attr "type" "sselog,sselog,sselog,sselog,ssemov,mmxcvt,mmxmov") (set_attr "type" "sselog,sselog,sselog,sselog,ssemov,mmxcvt,mmxmov")
(set_attr "prefix_extra" "1,1,*,*,*,*,*") (set_attr "prefix_extra" "1,1,*,*,*,*,*")
(set_attr "length_immediate" "1,1,*,*,*,*,*") (set_attr "length_immediate" "1,1,*,*,*,*,*")
...@@ -6561,7 +6583,7 @@ ...@@ -6561,7 +6583,7 @@
vpunpcklqdq\t{%2, %1, %0|%0, %1, %2} vpunpcklqdq\t{%2, %1, %0|%0, %1, %2}
movhps\t{%2, %0|%0, %2} movhps\t{%2, %0|%0, %2}
vmovhps\t{%2, %1, %0|%0, %1, %2}" vmovhps\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "isa" "noavx,avx,base,base,base,noavx,avx,noavx,avx") [(set_attr "isa" "noavx,avx,*,*,*,noavx,avx,noavx,avx")
(set (attr "type") (set (attr "type")
(if_then_else (if_then_else
(eq_attr "alternative" "0,1,5,6") (eq_attr "alternative" "0,1,5,6")
...@@ -6592,7 +6614,7 @@ ...@@ -6592,7 +6614,7 @@
movlhps\t{%2, %0|%0, %2} movlhps\t{%2, %0|%0, %2}
movhps\t{%2, %0|%0, %2} movhps\t{%2, %0|%0, %2}
vmovhps\t{%2, %1, %0|%0, %1, %2}" vmovhps\t{%2, %1, %0|%0, %1, %2}"
[(set_attr "isa" "base,base,noavx,avx,noavx,noavx,avx") [(set_attr "isa" "*,*,noavx,avx,noavx,noavx,avx")
(set_attr "type" "ssemov,ssemov,sselog,sselog,ssemov,ssemov,ssemov") (set_attr "type" "ssemov,ssemov,sselog,sselog,ssemov,ssemov,ssemov")
(set_attr "prefix" "maybe_vex,orig,orig,vex,orig,orig,vex") (set_attr "prefix" "maybe_vex,orig,orig,vex,orig,orig,vex")
(set_attr "mode" "TI,TI,TI,TI,V4SF,V2SF,V2SF")]) (set_attr "mode" "TI,TI,TI,TI,V4SF,V2SF,V2SF")])
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment