sse.md (169689) | sse.md (171825) |
---|---|
1;; GCC machine description for SSE instructions 2;; Copyright (C) 2005, 2006 3;; Free Software Foundation, Inc. 4;; 5;; This file is part of GCC. 6;; 7;; GCC is free software; you can redistribute it and/or modify 8;; it under the terms of the GNU General Public License as published by --- 2041 unchanged lines hidden (view full) --- 2050(define_insn "*sse3_movddup" 2051 [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,o") 2052 (vec_select:V2DF 2053 (vec_concat:V4DF 2054 (match_operand:V2DF 1 "nonimmediate_operand" "xm,x") 2055 (match_dup 1)) 2056 (parallel [(const_int 0) 2057 (const_int 2)])))] | 1;; GCC machine description for SSE instructions 2;; Copyright (C) 2005, 2006 3;; Free Software Foundation, Inc. 4;; 5;; This file is part of GCC. 6;; 7;; GCC is free software; you can redistribute it and/or modify 8;; it under the terms of the GNU General Public License as published by --- 2041 unchanged lines hidden (view full) --- 2050(define_insn "*sse3_movddup" 2051 [(set (match_operand:V2DF 0 "nonimmediate_operand" "=x,o") 2052 (vec_select:V2DF 2053 (vec_concat:V4DF 2054 (match_operand:V2DF 1 "nonimmediate_operand" "xm,x") 2055 (match_dup 1)) 2056 (parallel [(const_int 0) 2057 (const_int 2)])))] |
2058 "TARGET_SSE3 && !(MEM_P (operands[1]) && MEM_P (operands[2]))" | 2058 "TARGET_SSE3 && !(MEM_P (operands[0]) && MEM_P (operands[1]))" |
2059 "@ 2060 movddup\t{%1, %0|%0, %1} 2061 #" | 2059 "@ 2060 movddup\t{%1, %0|%0, %1} 2061 #" |
2062 [(set_attr "type" "sselog,ssemov") | 2062 [(set_attr "type" "sselog1,ssemov") |
2063 (set_attr "mode" "V2DF")]) 2064 2065(define_split 2066 [(set (match_operand:V2DF 0 "memory_operand" "") 2067 (vec_select:V2DF 2068 (vec_concat:V4DF 2069 (match_operand:V2DF 1 "register_operand" "") 2070 (match_dup 1)) --- 1418 unchanged lines hidden (view full) --- 3489(define_insn "*vec_extractv2di_1_sse2" 3490 [(set (match_operand:DI 0 "nonimmediate_operand" "=m,x,x") 3491 (vec_select:DI 3492 (match_operand:V2DI 1 "nonimmediate_operand" "x,0,o") 3493 (parallel [(const_int 1)])))] 3494 "TARGET_SSE2 && !(MEM_P (operands[0]) && MEM_P (operands[1]))" 3495 "@ 3496 movhps\t{%1, %0|%0, %1} | 2063 (set_attr "mode" "V2DF")]) 2064 2065(define_split 2066 [(set (match_operand:V2DF 0 "memory_operand" "") 2067 (vec_select:V2DF 2068 (vec_concat:V4DF 2069 (match_operand:V2DF 1 "register_operand" "") 2070 (match_dup 1)) --- 1418 unchanged lines hidden (view full) --- 3489(define_insn "*vec_extractv2di_1_sse2" 3490 [(set (match_operand:DI 0 "nonimmediate_operand" "=m,x,x") 3491 (vec_select:DI 3492 (match_operand:V2DI 1 "nonimmediate_operand" "x,0,o") 3493 (parallel [(const_int 1)])))] 3494 "TARGET_SSE2 && !(MEM_P (operands[0]) && MEM_P (operands[1]))" 3495 "@ 3496 movhps\t{%1, %0|%0, %1} |
3497 psrldq\t{$4, %0|%0, 4} | 3497 psrldq\t{$8, %0|%0, 8} |
3498 movq\t{%H1, %0|%0, %H1}" 3499 [(set_attr "type" "ssemov,sseishft,ssemov") | 3498 movq\t{%H1, %0|%0, %H1}" 3499 [(set_attr "type" "ssemov,sseishft,ssemov") |
3500 (set_attr "memory" "*,none,*") |
|
3500 (set_attr "mode" "V2SF,TI,TI")]) 3501 3502;; Not sure this is ever used, but it doesn't hurt to have it. -aoliva 3503(define_insn "*vec_extractv2di_1_sse" 3504 [(set (match_operand:DI 0 "nonimmediate_operand" "=m,x,x") 3505 (vec_select:DI 3506 (match_operand:V2DI 1 "nonimmediate_operand" "x,x,o") 3507 (parallel [(const_int 1)])))] --- 443 unchanged lines hidden --- | 3501 (set_attr "mode" "V2SF,TI,TI")]) 3502 3503;; Not sure this is ever used, but it doesn't hurt to have it. -aoliva 3504(define_insn "*vec_extractv2di_1_sse" 3505 [(set (match_operand:DI 0 "nonimmediate_operand" "=m,x,x") 3506 (vec_select:DI 3507 (match_operand:V2DI 1 "nonimmediate_operand" "x,x,o") 3508 (parallel [(const_int 1)])))] --- 443 unchanged lines hidden --- |