2
0
mirror of git://gcc.gnu.org/git/gcc.git synced 2025-04-13 16:41:19 +08:00

sse.md (vec_extractv2df_1_sse): New.

* config/i386/sse.md (vec_extractv2df_1_sse): New.
(vec_extractv2df_0_sse): New.

From-SVN: r111342
This commit is contained in:
Alexandre Oliva 2006-02-21 19:24:48 +00:00 committed by Alexandre Oliva
parent 35d177a2f8
commit f877011111
2 changed files with 35 additions and 0 deletions
gcc
ChangeLog
config/i386

@ -1,3 +1,8 @@
2006-02-21 Alexandre Oliva <aoliva@redhat.com>
* config/i386/sse.md (vec_extractv2df_1_sse): New.
(vec_extractv2df_0_sse): New.
2006-02-21 Alexandre Oliva <aoliva@redhat.com>
* defaults.h (CFA_FRAME_BASE_OFFSET): Define.

@ -2289,6 +2289,36 @@
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"
[(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,x,m,x,x,o")
(vec_merge:V2DF