Deleted Added
full compact
sse.md (237021) sse.md (251212)
1;; GCC machine description for SSE instructions
1;; GCC machine description for SSE instructions
2;; Copyright (C) 2005, 2006
2;; Copyright (C) 2005, 2006, 2007
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
9;; the Free Software Foundation; either version 2, or (at your option)
10;; any later version.

--- 904 unchanged lines hidden (view full) ---

915 (vec_duplicate:V4SF
916 (float:SF (match_operand:SI 2 "nonimmediate_operand" "r,m")))
917 (match_operand:V4SF 1 "register_operand" "0,0")
918 (const_int 1)))]
919 "TARGET_SSE"
920 "cvtsi2ss\t{%2, %0|%0, %2}"
921 [(set_attr "type" "sseicvt")
922 (set_attr "athlon_decode" "vector,double")
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
9;; the Free Software Foundation; either version 2, or (at your option)
10;; any later version.

--- 904 unchanged lines hidden (view full) ---

915 (vec_duplicate:V4SF
916 (float:SF (match_operand:SI 2 "nonimmediate_operand" "r,m")))
917 (match_operand:V4SF 1 "register_operand" "0,0")
918 (const_int 1)))]
919 "TARGET_SSE"
920 "cvtsi2ss\t{%2, %0|%0, %2}"
921 [(set_attr "type" "sseicvt")
922 (set_attr "athlon_decode" "vector,double")
923 (set_attr "amdfam10_decode" "vector,double")
923 (set_attr "mode" "SF")])
924
925(define_insn "sse_cvtsi2ssq"
926 [(set (match_operand:V4SF 0 "register_operand" "=x,x")
927 (vec_merge:V4SF
928 (vec_duplicate:V4SF
929 (float:SF (match_operand:DI 2 "nonimmediate_operand" "r,rm")))
930 (match_operand:V4SF 1 "register_operand" "0,0")
931 (const_int 1)))]
932 "TARGET_SSE && TARGET_64BIT"
933 "cvtsi2ssq\t{%2, %0|%0, %2}"
934 [(set_attr "type" "sseicvt")
935 (set_attr "athlon_decode" "vector,double")
924 (set_attr "mode" "SF")])
925
926(define_insn "sse_cvtsi2ssq"
927 [(set (match_operand:V4SF 0 "register_operand" "=x,x")
928 (vec_merge:V4SF
929 (vec_duplicate:V4SF
930 (float:SF (match_operand:DI 2 "nonimmediate_operand" "r,rm")))
931 (match_operand:V4SF 1 "register_operand" "0,0")
932 (const_int 1)))]
933 "TARGET_SSE && TARGET_64BIT"
934 "cvtsi2ssq\t{%2, %0|%0, %2}"
935 [(set_attr "type" "sseicvt")
936 (set_attr "athlon_decode" "vector,double")
937 (set_attr "amdfam10_decode" "vector,double")
936 (set_attr "mode" "SF")])
937
938(define_insn "sse_cvtss2si"
939 [(set (match_operand:SI 0 "register_operand" "=r,r")
940 (unspec:SI
941 [(vec_select:SF
942 (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
943 (parallel [(const_int 0)]))]
944 UNSPEC_FIX_NOTRUNC))]
945 "TARGET_SSE"
946 "cvtss2si\t{%1, %0|%0, %1}"
947 [(set_attr "type" "sseicvt")
948 (set_attr "athlon_decode" "double,vector")
938 (set_attr "mode" "SF")])
939
940(define_insn "sse_cvtss2si"
941 [(set (match_operand:SI 0 "register_operand" "=r,r")
942 (unspec:SI
943 [(vec_select:SF
944 (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
945 (parallel [(const_int 0)]))]
946 UNSPEC_FIX_NOTRUNC))]
947 "TARGET_SSE"
948 "cvtss2si\t{%1, %0|%0, %1}"
949 [(set_attr "type" "sseicvt")
950 (set_attr "athlon_decode" "double,vector")
951 (set_attr "amdfam10_decode" "double,double")
949 (set_attr "mode" "SI")])
950
951(define_insn "sse_cvtss2siq"
952 [(set (match_operand:DI 0 "register_operand" "=r,r")
953 (unspec:DI
954 [(vec_select:SF
955 (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
956 (parallel [(const_int 0)]))]
957 UNSPEC_FIX_NOTRUNC))]
958 "TARGET_SSE && TARGET_64BIT"
959 "cvtss2siq\t{%1, %0|%0, %1}"
960 [(set_attr "type" "sseicvt")
961 (set_attr "athlon_decode" "double,vector")
952 (set_attr "mode" "SI")])
953
954(define_insn "sse_cvtss2siq"
955 [(set (match_operand:DI 0 "register_operand" "=r,r")
956 (unspec:DI
957 [(vec_select:SF
958 (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
959 (parallel [(const_int 0)]))]
960 UNSPEC_FIX_NOTRUNC))]
961 "TARGET_SSE && TARGET_64BIT"
962 "cvtss2siq\t{%1, %0|%0, %1}"
963 [(set_attr "type" "sseicvt")
964 (set_attr "athlon_decode" "double,vector")
965 (set_attr "amdfam10_decode" "double,double")
962 (set_attr "mode" "DI")])
963
964(define_insn "sse_cvttss2si"
965 [(set (match_operand:SI 0 "register_operand" "=r,r")
966 (fix:SI
967 (vec_select:SF
968 (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
969 (parallel [(const_int 0)]))))]
970 "TARGET_SSE"
971 "cvttss2si\t{%1, %0|%0, %1}"
972 [(set_attr "type" "sseicvt")
973 (set_attr "athlon_decode" "double,vector")
966 (set_attr "mode" "DI")])
967
968(define_insn "sse_cvttss2si"
969 [(set (match_operand:SI 0 "register_operand" "=r,r")
970 (fix:SI
971 (vec_select:SF
972 (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
973 (parallel [(const_int 0)]))))]
974 "TARGET_SSE"
975 "cvttss2si\t{%1, %0|%0, %1}"
976 [(set_attr "type" "sseicvt")
977 (set_attr "athlon_decode" "double,vector")
978 (set_attr "amdfam10_decode" "double,double")
974 (set_attr "mode" "SI")])
975
976(define_insn "sse_cvttss2siq"
977 [(set (match_operand:DI 0 "register_operand" "=r,r")
978 (fix:DI
979 (vec_select:SF
980 (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
981 (parallel [(const_int 0)]))))]
982 "TARGET_SSE && TARGET_64BIT"
983 "cvttss2siq\t{%1, %0|%0, %1}"
984 [(set_attr "type" "sseicvt")
985 (set_attr "athlon_decode" "double,vector")
979 (set_attr "mode" "SI")])
980
981(define_insn "sse_cvttss2siq"
982 [(set (match_operand:DI 0 "register_operand" "=r,r")
983 (fix:DI
984 (vec_select:SF
985 (match_operand:V4SF 1 "nonimmediate_operand" "x,m")
986 (parallel [(const_int 0)]))))]
987 "TARGET_SSE && TARGET_64BIT"
988 "cvttss2siq\t{%1, %0|%0, %1}"
989 [(set_attr "type" "sseicvt")
990 (set_attr "athlon_decode" "double,vector")
991 (set_attr "amdfam10_decode" "double,double")
986 (set_attr "mode" "DI")])
987
988(define_insn "sse2_cvtdq2ps"
989 [(set (match_operand:V4SF 0 "register_operand" "=x")
990 (float:V4SF (match_operand:V4SI 1 "nonimmediate_operand" "xm")))]
991 "TARGET_SSE2"
992 "cvtdq2ps\t{%1, %0|%0, %1}"
993 [(set_attr "type" "ssecvt")

--- 853 unchanged lines hidden (view full) ---

1847 (vec_duplicate:V2DF
1848 (float:DF (match_operand:SI 2 "nonimmediate_operand" "r,m")))
1849 (match_operand:V2DF 1 "register_operand" "0,0")
1850 (const_int 1)))]
1851 "TARGET_SSE2"
1852 "cvtsi2sd\t{%2, %0|%0, %2}"
1853 [(set_attr "type" "sseicvt")
1854 (set_attr "mode" "DF")
992 (set_attr "mode" "DI")])
993
994(define_insn "sse2_cvtdq2ps"
995 [(set (match_operand:V4SF 0 "register_operand" "=x")
996 (float:V4SF (match_operand:V4SI 1 "nonimmediate_operand" "xm")))]
997 "TARGET_SSE2"
998 "cvtdq2ps\t{%1, %0|%0, %1}"
999 [(set_attr "type" "ssecvt")

--- 853 unchanged lines hidden (view full) ---

1853 (vec_duplicate:V2DF
1854 (float:DF (match_operand:SI 2 "nonimmediate_operand" "r,m")))
1855 (match_operand:V2DF 1 "register_operand" "0,0")
1856 (const_int 1)))]
1857 "TARGET_SSE2"
1858 "cvtsi2sd\t{%2, %0|%0, %2}"
1859 [(set_attr "type" "sseicvt")
1860 (set_attr "mode" "DF")
1855 (set_attr "athlon_decode" "double,direct")])
1861 (set_attr "athlon_decode" "double,direct")
1862 (set_attr "amdfam10_decode" "vector,double")])
1856
1857(define_insn "sse2_cvtsi2sdq"
1858 [(set (match_operand:V2DF 0 "register_operand" "=x,x")
1859 (vec_merge:V2DF
1860 (vec_duplicate:V2DF
1861 (float:DF (match_operand:DI 2 "nonimmediate_operand" "r,m")))
1862 (match_operand:V2DF 1 "register_operand" "0,0")
1863 (const_int 1)))]
1864 "TARGET_SSE2 && TARGET_64BIT"
1865 "cvtsi2sdq\t{%2, %0|%0, %2}"
1866 [(set_attr "type" "sseicvt")
1867 (set_attr "mode" "DF")
1863
1864(define_insn "sse2_cvtsi2sdq"
1865 [(set (match_operand:V2DF 0 "register_operand" "=x,x")
1866 (vec_merge:V2DF
1867 (vec_duplicate:V2DF
1868 (float:DF (match_operand:DI 2 "nonimmediate_operand" "r,m")))
1869 (match_operand:V2DF 1 "register_operand" "0,0")
1870 (const_int 1)))]
1871 "TARGET_SSE2 && TARGET_64BIT"
1872 "cvtsi2sdq\t{%2, %0|%0, %2}"
1873 [(set_attr "type" "sseicvt")
1874 (set_attr "mode" "DF")
1868 (set_attr "athlon_decode" "double,direct")])
1875 (set_attr "athlon_decode" "double,direct")
1876 (set_attr "amdfam10_decode" "vector,double")])
1869
1870(define_insn "sse2_cvtsd2si"
1871 [(set (match_operand:SI 0 "register_operand" "=r,r")
1872 (unspec:SI
1873 [(vec_select:DF
1874 (match_operand:V2DF 1 "nonimmediate_operand" "x,m")
1875 (parallel [(const_int 0)]))]
1876 UNSPEC_FIX_NOTRUNC))]
1877 "TARGET_SSE2"
1878 "cvtsd2si\t{%1, %0|%0, %1}"
1879 [(set_attr "type" "sseicvt")
1880 (set_attr "athlon_decode" "double,vector")
1877
1878(define_insn "sse2_cvtsd2si"
1879 [(set (match_operand:SI 0 "register_operand" "=r,r")
1880 (unspec:SI
1881 [(vec_select:DF
1882 (match_operand:V2DF 1 "nonimmediate_operand" "x,m")
1883 (parallel [(const_int 0)]))]
1884 UNSPEC_FIX_NOTRUNC))]
1885 "TARGET_SSE2"
1886 "cvtsd2si\t{%1, %0|%0, %1}"
1887 [(set_attr "type" "sseicvt")
1888 (set_attr "athlon_decode" "double,vector")
1889 (set_attr "amdfam10_decode" "double,double")
1881 (set_attr "mode" "SI")])
1882
1883(define_insn "sse2_cvtsd2siq"
1884 [(set (match_operand:DI 0 "register_operand" "=r,r")
1885 (unspec:DI
1886 [(vec_select:DF
1887 (match_operand:V2DF 1 "nonimmediate_operand" "x,m")
1888 (parallel [(const_int 0)]))]
1889 UNSPEC_FIX_NOTRUNC))]
1890 "TARGET_SSE2 && TARGET_64BIT"
1891 "cvtsd2siq\t{%1, %0|%0, %1}"
1892 [(set_attr "type" "sseicvt")
1893 (set_attr "athlon_decode" "double,vector")
1890 (set_attr "mode" "SI")])
1891
1892(define_insn "sse2_cvtsd2siq"
1893 [(set (match_operand:DI 0 "register_operand" "=r,r")
1894 (unspec:DI
1895 [(vec_select:DF
1896 (match_operand:V2DF 1 "nonimmediate_operand" "x,m")
1897 (parallel [(const_int 0)]))]
1898 UNSPEC_FIX_NOTRUNC))]
1899 "TARGET_SSE2 && TARGET_64BIT"
1900 "cvtsd2siq\t{%1, %0|%0, %1}"
1901 [(set_attr "type" "sseicvt")
1902 (set_attr "athlon_decode" "double,vector")
1903 (set_attr "amdfam10_decode" "double,double")
1894 (set_attr "mode" "DI")])
1895
1896(define_insn "sse2_cvttsd2si"
1897 [(set (match_operand:SI 0 "register_operand" "=r,r")
1898 (fix:SI
1899 (vec_select:DF
1900 (match_operand:V2DF 1 "nonimmediate_operand" "x,m")
1901 (parallel [(const_int 0)]))))]
1902 "TARGET_SSE2"
1903 "cvttsd2si\t{%1, %0|%0, %1}"
1904 [(set_attr "type" "sseicvt")
1905 (set_attr "mode" "SI")
1904 (set_attr "mode" "DI")])
1905
1906(define_insn "sse2_cvttsd2si"
1907 [(set (match_operand:SI 0 "register_operand" "=r,r")
1908 (fix:SI
1909 (vec_select:DF
1910 (match_operand:V2DF 1 "nonimmediate_operand" "x,m")
1911 (parallel [(const_int 0)]))))]
1912 "TARGET_SSE2"
1913 "cvttsd2si\t{%1, %0|%0, %1}"
1914 [(set_attr "type" "sseicvt")
1915 (set_attr "mode" "SI")
1906 (set_attr "athlon_decode" "double,vector")])
1916 (set_attr "athlon_decode" "double,vector")
1917 (set_attr "amdfam10_decode" "double,double")])
1907
1908(define_insn "sse2_cvttsd2siq"
1909 [(set (match_operand:DI 0 "register_operand" "=r,r")
1910 (fix:DI
1911 (vec_select:DF
1912 (match_operand:V2DF 1 "nonimmediate_operand" "x,m")
1913 (parallel [(const_int 0)]))))]
1914 "TARGET_SSE2 && TARGET_64BIT"
1915 "cvttsd2siq\t{%1, %0|%0, %1}"
1916 [(set_attr "type" "sseicvt")
1917 (set_attr "mode" "DI")
1918
1919(define_insn "sse2_cvttsd2siq"
1920 [(set (match_operand:DI 0 "register_operand" "=r,r")
1921 (fix:DI
1922 (vec_select:DF
1923 (match_operand:V2DF 1 "nonimmediate_operand" "x,m")
1924 (parallel [(const_int 0)]))))]
1925 "TARGET_SSE2 && TARGET_64BIT"
1926 "cvttsd2siq\t{%1, %0|%0, %1}"
1927 [(set_attr "type" "sseicvt")
1928 (set_attr "mode" "DI")
1918 (set_attr "athlon_decode" "double,vector")])
1929 (set_attr "athlon_decode" "double,vector")
1930 (set_attr "amdfam10_decode" "double,double")])
1919
1920(define_insn "sse2_cvtdq2pd"
1921 [(set (match_operand:V2DF 0 "register_operand" "=x")
1922 (float:V2DF
1923 (vec_select:V2SI
1924 (match_operand:V4SI 1 "nonimmediate_operand" "xm")
1925 (parallel [(const_int 0) (const_int 1)]))))]
1926 "TARGET_SSE2"

--- 14 unchanged lines hidden (view full) ---

1941 [(set (match_operand:V4SI 0 "register_operand" "=x")
1942 (vec_concat:V4SI
1943 (unspec:V2SI [(match_operand:V2DF 1 "nonimmediate_operand" "xm")]
1944 UNSPEC_FIX_NOTRUNC)
1945 (match_operand:V2SI 2 "const0_operand" "")))]
1946 "TARGET_SSE2"
1947 "cvtpd2dq\t{%1, %0|%0, %1}"
1948 [(set_attr "type" "ssecvt")
1931
1932(define_insn "sse2_cvtdq2pd"
1933 [(set (match_operand:V2DF 0 "register_operand" "=x")
1934 (float:V2DF
1935 (vec_select:V2SI
1936 (match_operand:V4SI 1 "nonimmediate_operand" "xm")
1937 (parallel [(const_int 0) (const_int 1)]))))]
1938 "TARGET_SSE2"

--- 14 unchanged lines hidden (view full) ---

1953 [(set (match_operand:V4SI 0 "register_operand" "=x")
1954 (vec_concat:V4SI
1955 (unspec:V2SI [(match_operand:V2DF 1 "nonimmediate_operand" "xm")]
1956 UNSPEC_FIX_NOTRUNC)
1957 (match_operand:V2SI 2 "const0_operand" "")))]
1958 "TARGET_SSE2"
1959 "cvtpd2dq\t{%1, %0|%0, %1}"
1960 [(set_attr "type" "ssecvt")
1949 (set_attr "mode" "TI")])
1961 (set_attr "mode" "TI")
1962 (set_attr "amdfam10_decode" "double")])
1950
1951(define_expand "sse2_cvttpd2dq"
1952 [(set (match_operand:V4SI 0 "register_operand" "")
1953 (vec_concat:V4SI
1954 (fix:V2SI (match_operand:V2DF 1 "nonimmediate_operand" ""))
1955 (match_dup 2)))]
1956 "TARGET_SSE2"
1957 "operands[2] = CONST0_RTX (V2SImode);")
1958
1959(define_insn "*sse2_cvttpd2dq"
1960 [(set (match_operand:V4SI 0 "register_operand" "=x")
1961 (vec_concat:V4SI
1962 (fix:V2SI (match_operand:V2DF 1 "nonimmediate_operand" "xm"))
1963 (match_operand:V2SI 2 "const0_operand" "")))]
1964 "TARGET_SSE2"
1965 "cvttpd2dq\t{%1, %0|%0, %1}"
1966 [(set_attr "type" "ssecvt")
1963
1964(define_expand "sse2_cvttpd2dq"
1965 [(set (match_operand:V4SI 0 "register_operand" "")
1966 (vec_concat:V4SI
1967 (fix:V2SI (match_operand:V2DF 1 "nonimmediate_operand" ""))
1968 (match_dup 2)))]
1969 "TARGET_SSE2"
1970 "operands[2] = CONST0_RTX (V2SImode);")
1971
1972(define_insn "*sse2_cvttpd2dq"
1973 [(set (match_operand:V4SI 0 "register_operand" "=x")
1974 (vec_concat:V4SI
1975 (fix:V2SI (match_operand:V2DF 1 "nonimmediate_operand" "xm"))
1976 (match_operand:V2SI 2 "const0_operand" "")))]
1977 "TARGET_SSE2"
1978 "cvttpd2dq\t{%1, %0|%0, %1}"
1979 [(set_attr "type" "ssecvt")
1967 (set_attr "mode" "TI")])
1980 (set_attr "mode" "TI")
1981 (set_attr "amdfam10_decode" "double")])
1968
1969(define_insn "sse2_cvtsd2ss"
1970 [(set (match_operand:V4SF 0 "register_operand" "=x,x")
1971 (vec_merge:V4SF
1972 (vec_duplicate:V4SF
1973 (float_truncate:V2SF
1974 (match_operand:V2DF 2 "nonimmediate_operand" "x,m")))
1975 (match_operand:V4SF 1 "register_operand" "0,0")
1976 (const_int 1)))]
1977 "TARGET_SSE2"
1978 "cvtsd2ss\t{%2, %0|%0, %2}"
1979 [(set_attr "type" "ssecvt")
1980 (set_attr "athlon_decode" "vector,double")
1982
1983(define_insn "sse2_cvtsd2ss"
1984 [(set (match_operand:V4SF 0 "register_operand" "=x,x")
1985 (vec_merge:V4SF
1986 (vec_duplicate:V4SF
1987 (float_truncate:V2SF
1988 (match_operand:V2DF 2 "nonimmediate_operand" "x,m")))
1989 (match_operand:V4SF 1 "register_operand" "0,0")
1990 (const_int 1)))]
1991 "TARGET_SSE2"
1992 "cvtsd2ss\t{%2, %0|%0, %2}"
1993 [(set_attr "type" "ssecvt")
1994 (set_attr "athlon_decode" "vector,double")
1995 (set_attr "amdfam10_decode" "vector,double")
1981 (set_attr "mode" "SF")])
1982
1983(define_insn "sse2_cvtss2sd"
1996 (set_attr "mode" "SF")])
1997
1998(define_insn "sse2_cvtss2sd"
1984 [(set (match_operand:V2DF 0 "register_operand" "=x")
1999 [(set (match_operand:V2DF 0 "register_operand" "=x,x")
1985 (vec_merge:V2DF
1986 (float_extend:V2DF
1987 (vec_select:V2SF
2000 (vec_merge:V2DF
2001 (float_extend:V2DF
2002 (vec_select:V2SF
1988 (match_operand:V4SF 2 "nonimmediate_operand" "xm")
2003 (match_operand:V4SF 2 "nonimmediate_operand" "x,m")
1989 (parallel [(const_int 0) (const_int 1)])))
2004 (parallel [(const_int 0) (const_int 1)])))
1990 (match_operand:V2DF 1 "register_operand" "0")
2005 (match_operand:V2DF 1 "register_operand" "0,0")
1991 (const_int 1)))]
1992 "TARGET_SSE2"
1993 "cvtss2sd\t{%2, %0|%0, %2}"
1994 [(set_attr "type" "ssecvt")
2006 (const_int 1)))]
2007 "TARGET_SSE2"
2008 "cvtss2sd\t{%2, %0|%0, %2}"
2009 [(set_attr "type" "ssecvt")
2010 (set_attr "amdfam10_decode" "vector,double")
1995 (set_attr "mode" "DF")])
1996
1997(define_expand "sse2_cvtpd2ps"
1998 [(set (match_operand:V4SF 0 "register_operand" "")
1999 (vec_concat:V4SF
2000 (float_truncate:V2SF
2001 (match_operand:V2DF 1 "nonimmediate_operand" "xm"))
2002 (match_dup 2)))]

--- 4 unchanged lines hidden (view full) ---

2007 [(set (match_operand:V4SF 0 "register_operand" "=x")
2008 (vec_concat:V4SF
2009 (float_truncate:V2SF
2010 (match_operand:V2DF 1 "nonimmediate_operand" "xm"))
2011 (match_operand:V2SF 2 "const0_operand" "")))]
2012 "TARGET_SSE2"
2013 "cvtpd2ps\t{%1, %0|%0, %1}"
2014 [(set_attr "type" "ssecvt")
2011 (set_attr "mode" "DF")])
2012
2013(define_expand "sse2_cvtpd2ps"
2014 [(set (match_operand:V4SF 0 "register_operand" "")
2015 (vec_concat:V4SF
2016 (float_truncate:V2SF
2017 (match_operand:V2DF 1 "nonimmediate_operand" "xm"))
2018 (match_dup 2)))]

--- 4 unchanged lines hidden (view full) ---

2023 [(set (match_operand:V4SF 0 "register_operand" "=x")
2024 (vec_concat:V4SF
2025 (float_truncate:V2SF
2026 (match_operand:V2DF 1 "nonimmediate_operand" "xm"))
2027 (match_operand:V2SF 2 "const0_operand" "")))]
2028 "TARGET_SSE2"
2029 "cvtpd2ps\t{%1, %0|%0, %1}"
2030 [(set_attr "type" "ssecvt")
2015 (set_attr "mode" "V4SF")])
2031 (set_attr "mode" "V4SF")
2032 (set_attr "amdfam10_decode" "double")])
2016
2017(define_insn "sse2_cvtps2pd"
2018 [(set (match_operand:V2DF 0 "register_operand" "=x")
2019 (float_extend:V2DF
2020 (vec_select:V2SF
2021 (match_operand:V4SF 1 "nonimmediate_operand" "xm")
2022 (parallel [(const_int 0) (const_int 1)]))))]
2023 "TARGET_SSE2"
2024 "cvtps2pd\t{%1, %0|%0, %1}"
2025 [(set_attr "type" "ssecvt")
2033
2034(define_insn "sse2_cvtps2pd"
2035 [(set (match_operand:V2DF 0 "register_operand" "=x")
2036 (float_extend:V2DF
2037 (vec_select:V2SF
2038 (match_operand:V4SF 1 "nonimmediate_operand" "xm")
2039 (parallel [(const_int 0) (const_int 1)]))))]
2040 "TARGET_SSE2"
2041 "cvtps2pd\t{%1, %0|%0, %1}"
2042 [(set_attr "type" "ssecvt")
2026 (set_attr "mode" "V2DF")])
2043 (set_attr "mode" "V2DF")
2044 (set_attr "amdfam10_decode" "direct")])
2027
2028;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2029;;
2030;; Parallel double-precision floating point element swizzling
2031;;
2032;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2033
2034(define_insn "sse2_unpckhpd"

--- 2484 unchanged lines hidden (view full) ---

4519
4520(define_insn "abs<mode>2"
4521 [(set (match_operand:MMXMODEI 0 "register_operand" "=y")
4522 (abs:MMXMODEI (match_operand:MMXMODEI 1 "nonimmediate_operand" "ym")))]
4523 "TARGET_SSSE3"
4524 "pabs<mmxvecsize>\t{%1, %0|%0, %1}";
4525 [(set_attr "type" "sselog1")
4526 (set_attr "mode" "DI")])
2045
2046;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2047;;
2048;; Parallel double-precision floating point element swizzling
2049;;
2050;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2051
2052(define_insn "sse2_unpckhpd"

--- 2484 unchanged lines hidden (view full) ---

4537
4538(define_insn "abs<mode>2"
4539 [(set (match_operand:MMXMODEI 0 "register_operand" "=y")
4540 (abs:MMXMODEI (match_operand:MMXMODEI 1 "nonimmediate_operand" "ym")))]
4541 "TARGET_SSSE3"
4542 "pabs<mmxvecsize>\t{%1, %0|%0, %1}";
4543 [(set_attr "type" "sselog1")
4544 (set_attr "mode" "DI")])
4545
4546;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4547;;
4548;; AMD SSE4A instructions
4549;;
4550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4551
4552(define_insn "sse4a_vmmovntv2df"
4553 [(set (match_operand:DF 0 "memory_operand" "=m")
4554 (unspec:DF [(vec_select:DF
4555 (match_operand:V2DF 1 "register_operand" "x")
4556 (parallel [(const_int 0)]))]
4557 UNSPEC_MOVNT))]
4558 "TARGET_SSE4A"
4559 "movntsd\t{%1, %0|%0, %1}"
4560 [(set_attr "type" "ssemov")
4561 (set_attr "mode" "DF")])
4562
4563(define_insn "sse4a_movntdf"
4564 [(set (match_operand:DF 0 "memory_operand" "=m")
4565 (unspec:DF [(match_operand:DF 1 "register_operand" "x")]
4566 UNSPEC_MOVNT))]
4567 "TARGET_SSE4A"
4568 "movntsd\t{%1, %0|%0, %1}"
4569 [(set_attr "type" "ssemov")
4570 (set_attr "mode" "DF")])
4571
4572(define_insn "sse4a_vmmovntv4sf"
4573 [(set (match_operand:SF 0 "memory_operand" "=m")
4574 (unspec:SF [(vec_select:SF
4575 (match_operand:V4SF 1 "register_operand" "x")
4576 (parallel [(const_int 0)]))]
4577 UNSPEC_MOVNT))]
4578 "TARGET_SSE4A"
4579 "movntss\t{%1, %0|%0, %1}"
4580 [(set_attr "type" "ssemov")
4581 (set_attr "mode" "SF")])
4582
4583(define_insn "sse4a_movntsf"
4584 [(set (match_operand:SF 0 "memory_operand" "=m")
4585 (unspec:SF [(match_operand:SF 1 "register_operand" "x")]
4586 UNSPEC_MOVNT))]
4587 "TARGET_SSE4A"
4588 "movntss\t{%1, %0|%0, %1}"
4589 [(set_attr "type" "ssemov")
4590 (set_attr "mode" "SF")])
4591
4592(define_insn "sse4a_extrqi"
4593 [(set (match_operand:V2DI 0 "register_operand" "=x")
4594 (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0")
4595 (match_operand 2 "const_int_operand" "")
4596 (match_operand 3 "const_int_operand" "")]
4597 UNSPEC_EXTRQI))]
4598 "TARGET_SSE4A"
4599 "extrq\t{%3, %2, %0|%0, %2, %3}"
4600 [(set_attr "type" "sse")
4601 (set_attr "mode" "TI")])
4602
4603(define_insn "sse4a_extrq"
4604 [(set (match_operand:V2DI 0 "register_operand" "=x")
4605 (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0")
4606 (match_operand:V16QI 2 "register_operand" "x")]
4607 UNSPEC_EXTRQ))]
4608 "TARGET_SSE4A"
4609 "extrq\t{%2, %0|%0, %2}"
4610 [(set_attr "type" "sse")
4611 (set_attr "mode" "TI")])
4612
4613(define_insn "sse4a_insertqi"
4614 [(set (match_operand:V2DI 0 "register_operand" "=x")
4615 (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0")
4616 (match_operand:V2DI 2 "register_operand" "x")
4617 (match_operand 3 "const_int_operand" "")
4618 (match_operand 4 "const_int_operand" "")]
4619 UNSPEC_INSERTQI))]
4620 "TARGET_SSE4A"
4621 "insertq\t{%4, %3, %2, %0|%0, %2, %3, %4}"
4622 [(set_attr "type" "sseins")
4623 (set_attr "mode" "TI")])
4624
4625(define_insn "sse4a_insertq"
4626 [(set (match_operand:V2DI 0 "register_operand" "=x")
4627 (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0")
4628 (match_operand:V2DI 2 "register_operand" "x")]
4629 UNSPEC_INSERTQ))]
4630 "TARGET_SSE4A"
4631 "insertq\t{%2, %0|%0, %2}"
4632 [(set_attr "type" "sseins")
4633 (set_attr "mode" "TI")])