From f877011111f66ec5a5378cc670a41a9a6ad30f8b Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Tue, 21 Feb 2006 19:24:48 +0000 Subject: [PATCH] sse.md (vec_extractv2df_1_sse): New. * config/i386/sse.md (vec_extractv2df_1_sse): New. (vec_extractv2df_0_sse): New. From-SVN: r111342 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/sse.md | 30 ++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8f6d7aa2f5a7..1ef4b70253fb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2006-02-21 Alexandre Oliva + + * config/i386/sse.md (vec_extractv2df_1_sse): New. + (vec_extractv2df_0_sse): New. + 2006-02-21 Alexandre Oliva * defaults.h (CFA_FRAME_BASE_OFFSET): Define. diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 88c7adf081d6..50eced2ec329 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -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