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:
parent
35d177a2f8
commit
f877011111
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user