Lines Matching refs:Pat

962 def : Pat<(v4i32 (vnot_ppc v4i32:$A)),
965 def : Pat<(v2f64 (scalar_to_vector f64:$A)),
968 def : Pat<(f64 (extractelt v2f64:$S, 0)),
970 def : Pat<(f64 (extractelt v2f64:$S, 1)),
975 def : Pat<(v2f64 (scalar_to_vector f64:$A)),
979 def : Pat<(f64 (extractelt v2f64:$S, 0)),
981 def : Pat<(f64 (extractelt v2f64:$S, 1)),
986 def : Pat<(fma (fneg f64:$A), f64:$C, f64:$B),
988 def : Pat<(fma f64:$A, (fneg f64:$C), f64:$B),
991 def : Pat<(fma (fneg v2f64:$A), v2f64:$C, v2f64:$B),
993 def : Pat<(fma v2f64:$A, (fneg v2f64:$C), v2f64:$B),
996 def : Pat<(fma (fneg v4f32:$A), v4f32:$C, v4f32:$B),
998 def : Pat<(fma v4f32:$A, (fneg v4f32:$C), v4f32:$B),
1001 def : Pat<(v2f64 (bitconvert v4f32:$A)),
1003 def : Pat<(v2f64 (bitconvert v4i32:$A)),
1005 def : Pat<(v2f64 (bitconvert v8i16:$A)),
1007 def : Pat<(v2f64 (bitconvert v16i8:$A)),
1010 def : Pat<(v4f32 (bitconvert v2f64:$A)),
1012 def : Pat<(v4i32 (bitconvert v2f64:$A)),
1014 def : Pat<(v8i16 (bitconvert v2f64:$A)),
1016 def : Pat<(v16i8 (bitconvert v2f64:$A)),
1019 def : Pat<(v2i64 (bitconvert v4f32:$A)),
1021 def : Pat<(v2i64 (bitconvert v4i32:$A)),
1023 def : Pat<(v2i64 (bitconvert v8i16:$A)),
1025 def : Pat<(v2i64 (bitconvert v16i8:$A)),
1028 def : Pat<(v4f32 (bitconvert v2i64:$A)),
1030 def : Pat<(v4i32 (bitconvert v2i64:$A)),
1032 def : Pat<(v8i16 (bitconvert v2i64:$A)),
1034 def : Pat<(v16i8 (bitconvert v2i64:$A)),
1037 def : Pat<(v2f64 (bitconvert v2i64:$A)),
1039 def : Pat<(v2i64 (bitconvert v2f64:$A)),
1042 def : Pat<(v2f64 (bitconvert v1i128:$A)),
1044 def : Pat<(v1i128 (bitconvert v2f64:$A)),
1047 def : Pat<(v2i64 (bitconvert f128:$A)),
1049 def : Pat<(v4i32 (bitconvert f128:$A)),
1051 def : Pat<(v8i16 (bitconvert f128:$A)),
1053 def : Pat<(v16i8 (bitconvert f128:$A)),
1056 def : Pat<(v2f64 (PPCsvec2fp v4i32:$C, 0)),
1058 def : Pat<(v2f64 (PPCsvec2fp v4i32:$C, 1)),
1061 def : Pat<(v2f64 (PPCuvec2fp v4i32:$C, 0)),
1063 def : Pat<(v2f64 (PPCuvec2fp v4i32:$C, 1)),
1068 def : Pat<(v2f64 (PPClxvd2x xoaddr:$src)), (LXVD2X xoaddr:$src)>;
1071 def : Pat<(int_ppc_vsx_stxvd2x v2f64:$rS, xoaddr:$dst),
1073 def : Pat<(PPCstxvd2x v2f64:$rS, xoaddr:$dst), (STXVD2X $rS, xoaddr:$dst)>;
1076 def : Pat<(v2f64 (load xoaddr:$src)), (LXVD2X xoaddr:$src)>;
1077 def : Pat<(v2i64 (load xoaddr:$src)), (LXVD2X xoaddr:$src)>;
1078 def : Pat<(v4i32 (load xoaddr:$src)), (LXVW4X xoaddr:$src)>;
1079 def : Pat<(v4i32 (int_ppc_vsx_lxvw4x xoaddr:$src)), (LXVW4X xoaddr:$src)>;
1080 def : Pat<(store v2f64:$rS, xoaddr:$dst), (STXVD2X $rS, xoaddr:$dst)>;
1081 def : Pat<(store v2i64:$rS, xoaddr:$dst), (STXVD2X $rS, xoaddr:$dst)>;
1082 def : Pat<(store v4i32:$XT, xoaddr:$dst), (STXVW4X $XT, xoaddr:$dst)>;
1083 def : Pat<(int_ppc_vsx_stxvw4x v4i32:$rS, xoaddr:$dst),
1088 def : Pat<(v2f64 (PPCxxswapd v2f64:$src)), (XXPERMDI $src, $src, 2)>;
1089 def : Pat<(v2i64 (PPCxxswapd v2i64:$src)), (XXPERMDI $src, $src, 2)>;
1090 def : Pat<(v4f32 (PPCxxswapd v4f32:$src)), (XXPERMDI $src, $src, 2)>;
1091 def : Pat<(v4i32 (PPCxxswapd v4i32:$src)), (XXPERMDI $src, $src, 2)>;
1092 def : Pat<(v2f64 (PPCswapNoChain v2f64:$src)), (XXPERMDI $src, $src, 2)>;
1096 def : Pat<(v4i32 (PPCvecshl v4i32:$src, v4i32:$src, 2)), (XXPERMDI $src, $src, 2)>;
1099 def : Pat<(v2f64 (selectcc i1:$lhs, i1:$rhs, v2f64:$tval, v2f64:$fval, SETLT)),
1101 def : Pat<(v2f64 (selectcc i1:$lhs, i1:$rhs, v2f64:$tval, v2f64:$fval, SETULT)),
1103 def : Pat<(v2f64 (selectcc i1:$lhs, i1:$rhs, v2f64:$tval, v2f64:$fval, SETLE)),
1105 def : Pat<(v2f64 (selectcc i1:$lhs, i1:$rhs, v2f64:$tval, v2f64:$fval, SETULE)),
1107 def : Pat<(v2f64 (selectcc i1:$lhs, i1:$rhs, v2f64:$tval, v2f64:$fval, SETEQ)),
1109 def : Pat<(v2f64 (selectcc i1:$lhs, i1:$rhs, v2f64:$tval, v2f64:$fval, SETGE)),
1111 def : Pat<(v2f64 (selectcc i1:$lhs, i1:$rhs, v2f64:$tval, v2f64:$fval, SETUGE)),
1113 def : Pat<(v2f64 (selectcc i1:$lhs, i1:$rhs, v2f64:$tval, v2f64:$fval, SETGT)),
1115 def : Pat<(v2f64 (selectcc i1:$lhs, i1:$rhs, v2f64:$tval, v2f64:$fval, SETUGT)),
1117 def : Pat<(v2f64 (selectcc i1:$lhs, i1:$rhs, v2f64:$tval, v2f64:$fval, SETNE)),
1120 def : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETLT)),
1122 def : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETULT)),
1124 def : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETLE)),
1126 def : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETULE)),
1128 def : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETEQ)),
1130 def : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETGE)),
1132 def : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETUGE)),
1134 def : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETGT)),
1136 def : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETUGT)),
1138 def : Pat<(f64 (selectcc i1:$lhs, i1:$rhs, f64:$tval, f64:$fval, SETNE)),
1142 def : Pat<(int_ppc_vsx_xvdivsp v4f32:$A, v4f32:$B),
1144 def : Pat<(int_ppc_vsx_xvdivdp v2f64:$A, v2f64:$B),
1148 def : Pat<(int_ppc_vsx_xvresp v4f32:$A),
1150 def : Pat<(int_ppc_vsx_xvredp v2f64:$A),
1154 def : Pat<(int_ppc_vsx_xvrsqrtesp v4f32:$A),
1156 def : Pat<(int_ppc_vsx_xvrsqrtedp v2f64:$A),
1160 def : Pat<(v16i8 (vselect v16i8:$vA, v16i8:$vB, v16i8:$vC)),
1165 def : Pat<(v8i16 (vselect v8i16:$vA, v8i16:$vB, v8i16:$vC)),
1170 def : Pat<(vselect v4i32:$vA, v4i32:$vB, v4i32:$vC),
1172 def : Pat<(vselect v2i64:$vA, v2i64:$vB, v2i64:$vC),
1174 def : Pat<(vselect v4i32:$vA, v4f32:$vB, v4f32:$vC),
1176 def : Pat<(vselect v2i64:$vA, v2f64:$vB, v2f64:$vC),
1180 def : Pat<(f64 (PPCfcfid (PPCmtvsra (i64 (vector_extract v2i64:$S, 0))))),
1182 def : Pat<(f64 (PPCfcfid (PPCmtvsra (i64 (vector_extract v2i64:$S, 1))))),
1184 def : Pat<(f64 (PPCfcfidu (PPCmtvsra (i64 (vector_extract v2i64:$S, 0))))),
1186 def : Pat<(f64 (PPCfcfidu (PPCmtvsra (i64 (vector_extract v2i64:$S, 1))))),
1191 def : Pat<(f64 (PPCfcfid (PPCmtvsra (i64 (vector_extract v2i64:$S, 0))))),
1193 def : Pat<(f64 (PPCfcfid (PPCmtvsra (i64 (vector_extract v2i64:$S, 1))))),
1195 def : Pat<(f64 (PPCfcfidu (PPCmtvsra (i64 (vector_extract v2i64:$S, 0))))),
1197 def : Pat<(f64 (PPCfcfidu (PPCmtvsra (i64 (vector_extract v2i64:$S, 1))))),
1263 def : Pat<(int_ppc_vsx_xxleqv v4i32:$A, v4i32:$B),
1317 def : Pat<(f64 (extloadf32 xoaddr:$src)),
1319 def : Pat<(f32 (fpround (f64 (extloadf32 xoaddr:$src)))),
1321 def : Pat<(f64 (fpextend f32:$src)),
1324 def : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETLT)),
1326 def : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETULT)),
1328 def : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETLE)),
1330 def : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETULE)),
1332 def : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETEQ)),
1334 def : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETGE)),
1336 def : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETUGE)),
1338 def : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETGT)),
1340 def : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETUGT)),
1342 def : Pat<(f32 (selectcc i1:$lhs, i1:$rhs, f32:$tval, f32:$fval, SETNE)),
1476 def : Pat<DWToSPExtractConv.El0SS1,
1478 def : Pat<DWToSPExtractConv.El1SS1,
1481 def : Pat<DWToSPExtractConv.El0US1,
1483 def : Pat<DWToSPExtractConv.El1US1,
1489 def : Pat<DWToSPExtractConv.El0SS1,
1491 def : Pat<DWToSPExtractConv.El1SS1,
1493 def : Pat<DWToSPExtractConv.El0US1,
1495 def : Pat<DWToSPExtractConv.El1US1,
1501 def : Pat<(PPCstore_scal_int_from_vsr
1504 def : Pat<(PPCstore_scal_int_from_vsr
1510 def : Pat<(PPCstore_scal_int_from_vsr
1513 def : Pat<(PPCstore_scal_int_from_vsr
1889 def : Pat<(v4f32 (scalar_to_vector f32:$A)),
1891 def : Pat<(f32 (vector_extract v4f32:$S, 0)),
1893 def : Pat<(f32 (vector_extract v4f32:$S, 1)),
1895 def : Pat<(f32 (vector_extract v4f32:$S, 2)),
1897 def : Pat<(f32 (vector_extract v4f32:$S, 3)),
1899 def : Pat<(f32 (vector_extract v4f32:$S, i64:$Idx)),
1905 def : Pat<(f64 (vector_extract v2f64:$S, i64:$Idx)),
1910 def : Pat<(v16i8 (scalar_to_vector i32:$A)),
1912 def : Pat<(v8i16 (scalar_to_vector i32:$A)),
1914 def : Pat<(v4i32 (scalar_to_vector i32:$A)),
1916 def : Pat<(v2i64 (scalar_to_vector i64:$A)),
1920 def : Pat<(i64 (vector_extract v2i64:$S, 0)),
1922 def : Pat<(i64 (vector_extract v2i64:$S, 1)),
1924 def : Pat<(i64 (vector_extract v2i64:$S, i64:$Idx)),
1929 def : Pat<(i32 (vector_extract v16i8:$S, 0)),
1931 def : Pat<(i32 (vector_extract v16i8:$S, 1)),
1933 def : Pat<(i32 (vector_extract v16i8:$S, 2)),
1935 def : Pat<(i32 (vector_extract v16i8:$S, 3)),
1937 def : Pat<(i32 (vector_extract v16i8:$S, 4)),
1939 def : Pat<(i32 (vector_extract v16i8:$S, 5)),
1941 def : Pat<(i32 (vector_extract v16i8:$S, 6)),
1943 def : Pat<(i32 (vector_extract v16i8:$S, 7)),
1945 def : Pat<(i32 (vector_extract v16i8:$S, 8)),
1947 def : Pat<(i32 (vector_extract v16i8:$S, 9)),
1949 def : Pat<(i32 (vector_extract v16i8:$S, 10)),
1951 def : Pat<(i32 (vector_extract v16i8:$S, 11)),
1953 def : Pat<(i32 (vector_extract v16i8:$S, 12)),
1955 def : Pat<(i32 (vector_extract v16i8:$S, 13)),
1957 def : Pat<(i32 (vector_extract v16i8:$S, 14)),
1959 def : Pat<(i32 (vector_extract v16i8:$S, 15)),
1961 def : Pat<(i32 (vector_extract v16i8:$S, i64:$Idx)),
1965 def : Pat<(i32 (vector_extract v8i16:$S, 0)),
1967 def : Pat<(i32 (vector_extract v8i16:$S, 1)),
1969 def : Pat<(i32 (vector_extract v8i16:$S, 2)),
1971 def : Pat<(i32 (vector_extract v8i16:$S, 3)),
1973 def : Pat<(i32 (vector_extract v8i16:$S, 4)),
1975 def : Pat<(i32 (vector_extract v8i16:$S, 5)),
1977 def : Pat<(i32 (vector_extract v8i16:$S, 6)),
1979 def : Pat<(i32 (vector_extract v8i16:$S, 7)),
1981 def : Pat<(i32 (vector_extract v8i16:$S, i64:$Idx)),
1985 def : Pat<(i32 (vector_extract v4i32:$S, 0)),
1987 def : Pat<(i32 (vector_extract v4i32:$S, 1)),
1989 def : Pat<(i32 (vector_extract v4i32:$S, 2)),
1991 def : Pat<(i32 (vector_extract v4i32:$S, 3)),
1993 def : Pat<(i32 (vector_extract v4i32:$S, i64:$Idx)),
1999 def : Pat<(v4f32 (scalar_to_vector f32:$A)),
2001 def : Pat<(f32 (vector_extract v4f32:$S, 0)),
2003 def : Pat<(f32 (vector_extract v4f32:$S, 1)),
2005 def : Pat<(f32 (vector_extract v4f32:$S, 2)),
2007 def : Pat<(f32 (vector_extract v4f32:$S, 3)),
2009 def : Pat<(f32 (vector_extract v4f32:$S, i64:$Idx)),
2015 def : Pat<(f64 (vector_extract v2f64:$S, i64:$Idx)),
2018 def : Pat<(int_ppc_vsx_stxvd2x_be v2f64:$rS, xoaddr:$dst),
2020 def : Pat<(int_ppc_vsx_stxvw4x_be v4i32:$rS, xoaddr:$dst),
2022 def : Pat<(v4i32 (int_ppc_vsx_lxvw4x_be xoaddr:$src)), (LXVW4X xoaddr:$src)>;
2023 def : Pat<(v2f64 (int_ppc_vsx_lxvd2x_be xoaddr:$src)), (LXVD2X xoaddr:$src)>;
2027 def : Pat<(i64 (anyext (i32 (vector_extract v16i8:$S, i64:$Idx)))),
2030 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, i64:$Idx)))),
2032 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 0)))),
2034 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 1)))),
2036 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 2)))),
2038 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 3)))),
2040 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 4)))),
2042 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 5)))),
2044 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 6)))),
2046 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 7)))),
2049 def : Pat<(i64 (zext (i32 (vector_extract v4i32:$S, i64:$Idx)))),
2051 def : Pat<(i64 (zext (i32 (vector_extract v4i32:$S, 0)))),
2053 def : Pat<(i64 (zext (i32 (vector_extract v4i32:$S, 1)))),
2056 def : Pat<(i64 (zext (i32 (vector_extract v4i32:$S, 2)))),
2059 def : Pat<(i64 (zext (i32 (vector_extract v4i32:$S, 3)))),
2062 def : Pat<(i64 (sext (i32 (vector_extract v4i32:$S, i64:$Idx)))),
2064 def : Pat<(i64 (sext (i32 (vector_extract v4i32:$S, 0)))),
2066 def : Pat<(i64 (sext (i32 (vector_extract v4i32:$S, 1)))),
2069 def : Pat<(i64 (sext (i32 (vector_extract v4i32:$S, 2)))),
2072 def : Pat<(i64 (sext (i32 (vector_extract v4i32:$S, 3)))),
2075 def : Pat<(i32 (vector_extract v16i8:$S, i64:$Idx)),
2077 def : Pat<(i32 (vector_extract v16i8:$S, 0)),
2079 def : Pat<(i32 (vector_extract v16i8:$S, 1)),
2081 def : Pat<(i32 (vector_extract v16i8:$S, 2)),
2083 def : Pat<(i32 (vector_extract v16i8:$S, 3)),
2085 def : Pat<(i32 (vector_extract v16i8:$S, 4)),
2087 def : Pat<(i32 (vector_extract v16i8:$S, 5)),
2089 def : Pat<(i32 (vector_extract v16i8:$S, 6)),
2091 def : Pat<(i32 (vector_extract v16i8:$S, 7)),
2093 def : Pat<(i32 (vector_extract v16i8:$S, 8)),
2095 def : Pat<(i32 (vector_extract v16i8:$S, 9)),
2097 def : Pat<(i32 (vector_extract v16i8:$S, 10)),
2099 def : Pat<(i32 (vector_extract v16i8:$S, 11)),
2101 def : Pat<(i32 (vector_extract v16i8:$S, 12)),
2103 def : Pat<(i32 (vector_extract v16i8:$S, 13)),
2105 def : Pat<(i32 (vector_extract v16i8:$S, 14)),
2107 def : Pat<(i32 (vector_extract v16i8:$S, 15)),
2110 def : Pat<(i32 (vector_extract v8i16:$S, i64:$Idx)),
2113 def : Pat<(i32 (vector_extract v8i16:$S, 0)),
2115 def : Pat<(i32 (vector_extract v8i16:$S, 1)),
2117 def : Pat<(i32 (vector_extract v8i16:$S, 2)),
2119 def : Pat<(i32 (vector_extract v8i16:$S, 3)),
2121 def : Pat<(i32 (vector_extract v8i16:$S, 4)),
2123 def : Pat<(i32 (vector_extract v8i16:$S, 5)),
2125 def : Pat<(i32 (vector_extract v8i16:$S, 6)),
2127 def : Pat<(i32 (vector_extract v8i16:$S, 6)),
2130 def : Pat<(i32 (vector_extract v4i32:$S, i64:$Idx)),
2133 def : Pat<(i32 (vector_extract v4i32:$S, 0)),
2135 def : Pat<(i32 (vector_extract v4i32:$S, 1)),
2138 def : Pat<(i32 (vector_extract v4i32:$S, 2)),
2140 def : Pat<(i32 (vector_extract v4i32:$S, 3)),
2145 def : Pat<(i64 (anyext (i32 (vector_extract v16i8:$S, i64:$Idx)))),
2148 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, i64:$Idx)))),
2150 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 0)))),
2152 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 1)))),
2154 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 2)))),
2156 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 3)))),
2158 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 4)))),
2160 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 5)))),
2162 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 6)))),
2164 def : Pat<(i64 (anyext (i32 (vector_extract v8i16:$S, 7)))),
2167 def : Pat<(i64 (zext (i32 (vector_extract v4i32:$S, i64:$Idx)))),
2169 def : Pat<(i64 (zext (i32 (vector_extract v4i32:$S, 0)))),
2173 def : Pat<(i64 (zext (i32 (vector_extract v4i32:$S, 1)))),
2176 def : Pat<(i64 (zext (i32 (vector_extract v4i32:$S, 2)))),
2178 def : Pat<(i64 (zext (i32 (vector_extract v4i32:$S, 3)))),
2181 def : Pat<(i64 (sext (i32 (vector_extract v4i32:$S, i64:$Idx)))),
2183 def : Pat<(i64 (sext (i32 (vector_extract v4i32:$S, 0)))),
2186 def : Pat<(i64 (sext (i32 (vector_extract v4i32:$S, 1)))),
2189 def : Pat<(i64 (sext (i32 (vector_extract v4i32:$S, 2)))),
2191 def : Pat<(i64 (sext (i32 (vector_extract v4i32:$S, 3)))),
2194 def : Pat<(i32 (vector_extract v16i8:$S, i64:$Idx)),
2196 def : Pat<(i32 (vector_extract v16i8:$S, 0)),
2198 def : Pat<(i32 (vector_extract v16i8:$S, 1)),
2200 def : Pat<(i32 (vector_extract v16i8:$S, 2)),
2202 def : Pat<(i32 (vector_extract v16i8:$S, 3)),
2204 def : Pat<(i32 (vector_extract v16i8:$S, 4)),
2206 def : Pat<(i32 (vector_extract v16i8:$S, 5)),
2208 def : Pat<(i32 (vector_extract v16i8:$S, 6)),
2210 def : Pat<(i32 (vector_extract v16i8:$S, 7)),
2212 def : Pat<(i32 (vector_extract v16i8:$S, 8)),
2214 def : Pat<(i32 (vector_extract v16i8:$S, 9)),
2216 def : Pat<(i32 (vector_extract v16i8:$S, 10)),
2218 def : Pat<(i32 (vector_extract v16i8:$S, 11)),
2220 def : Pat<(i32 (vector_extract v16i8:$S, 12)),
2222 def : Pat<(i32 (vector_extract v16i8:$S, 13)),
2224 def : Pat<(i32 (vector_extract v16i8:$S, 14)),
2226 def : Pat<(i32 (vector_extract v16i8:$S, 15)),
2229 def : Pat<(i32 (vector_extract v8i16:$S, i64:$Idx)),
2232 def : Pat<(i32 (vector_extract v8i16:$S, 0)),
2234 def : Pat<(i32 (vector_extract v8i16:$S, 1)),
2236 def : Pat<(i32 (vector_extract v8i16:$S, 2)),
2238 def : Pat<(i32 (vector_extract v8i16:$S, 3)),
2240 def : Pat<(i32 (vector_extract v8i16:$S, 4)),
2242 def : Pat<(i32 (vector_extract v8i16:$S, 5)),
2244 def : Pat<(i32 (vector_extract v8i16:$S, 6)),
2246 def : Pat<(i32 (vector_extract v8i16:$S, 6)),
2249 def : Pat<(i32 (vector_extract v4i32:$S, i64:$Idx)),
2252 def : Pat<(i32 (vector_extract v4i32:$S, 0)),
2255 def : Pat<(i32 (vector_extract v4i32:$S, 1)),
2257 def : Pat<(i32 (vector_extract v4i32:$S, 2)),
2259 def : Pat<(i32 (vector_extract v4i32:$S, 3)),
2265 def : Pat<(v16i8 (scalar_to_vector i32:$A)),
2267 def : Pat<(v8i16 (scalar_to_vector i32:$A)),
2269 def : Pat<(v4i32 (scalar_to_vector i32:$A)),
2271 def : Pat<(v2i64 (scalar_to_vector i64:$A)),
2274 def : Pat<(i64 (vector_extract v2i64:$S, 0)),
2276 def : Pat<(i64 (vector_extract v2i64:$S, 1)),
2278 def : Pat<(i64 (vector_extract v2i64:$S, i64:$Idx)),
2283 def : Pat<(i32 (vector_extract v16i8:$S, 0)),
2285 def : Pat<(i32 (vector_extract v16i8:$S, 1)),
2287 def : Pat<(i32 (vector_extract v16i8:$S, 2)),
2289 def : Pat<(i32 (vector_extract v16i8:$S, 3)),
2291 def : Pat<(i32 (vector_extract v16i8:$S, 4)),
2293 def : Pat<(i32 (vector_extract v16i8:$S, 5)),
2295 def : Pat<(i32 (vector_extract v16i8:$S, 6)),
2297 def : Pat<(i32 (vector_extract v16i8:$S, 7)),
2299 def : Pat<(i32 (vector_extract v16i8:$S, 8)),
2301 def : Pat<(i32 (vector_extract v16i8:$S, 9)),
2303 def : Pat<(i32 (vector_extract v16i8:$S, 10)),
2305 def : Pat<(i32 (vector_extract v16i8:$S, 11)),
2307 def : Pat<(i32 (vector_extract v16i8:$S, 12)),
2309 def : Pat<(i32 (vector_extract v16i8:$S, 13)),
2311 def : Pat<(i32 (vector_extract v16i8:$S, 14)),
2313 def : Pat<(i32 (vector_extract v16i8:$S, 15)),
2315 def : Pat<(i32 (vector_extract v16i8:$S, i64:$Idx)),
2319 def : Pat<(i32 (vector_extract v8i16:$S, 0)),
2321 def : Pat<(i32 (vector_extract v8i16:$S, 1)),
2323 def : Pat<(i32 (vector_extract v8i16:$S, 2)),
2325 def : Pat<(i32 (vector_extract v8i16:$S, 3)),
2327 def : Pat<(i32 (vector_extract v8i16:$S, 4)),
2329 def : Pat<(i32 (vector_extract v8i16:$S, 5)),
2331 def : Pat<(i32 (vector_extract v8i16:$S, 6)),
2333 def : Pat<(i32 (vector_extract v8i16:$S, 7)),
2335 def : Pat<(i32 (vector_extract v8i16:$S, i64:$Idx)),
2339 def : Pat<(i32 (vector_extract v4i32:$S, 0)),
2341 def : Pat<(i32 (vector_extract v4i32:$S, 1)),
2343 def : Pat<(i32 (vector_extract v4i32:$S, 2)),
2345 def : Pat<(i32 (vector_extract v4i32:$S, 3)),
2347 def : Pat<(i32 (vector_extract v4i32:$S, i64:$Idx)),
2354 def : Pat<(i32 (bitconvert f32:$S)),
2360 def : Pat<(f32 (bitconvert i32:$A)),
2366 def : Pat<(i64 (bitconvert f64:$S)),
2371 def : Pat<(f64 (bitconvert i64:$S)),
2376 def : Pat<(v2i64 immAllZerosV),
2554 def : Pat<(fma (fneg f128:$A), f128:$C, f128:$B), (XSNMSUBQP $B, $C, $A)>;
2555 def : Pat<(fma f128:$A, (fneg f128:$C), f128:$B), (XSNMSUBQP $B, $C, $A)>;
2611 def : Pat<(f128 (sint_to_fp i64:$src)),
2613 def : Pat<(f128 (sint_to_fp (i64 (PPCmfvsr f64:$src)))),
2615 def : Pat<(f128 (sint_to_fp (i32 (PPCmfvsr f64:$src)))),
2619 def : Pat<(f128 (uint_to_fp i64:$src)),
2621 def : Pat<(f128 (uint_to_fp (i64 (PPCmfvsr f64:$src)))),
2625 def : Pat<(f128 (sint_to_fp i32:$src)),
2627 def : Pat<(f128 (sint_to_fp (i32 (load xoaddr:$src)))),
2629 def : Pat<(f128 (uint_to_fp i32:$src)),
2631 def : Pat<(f128 (uint_to_fp (i32 (load xoaddr:$src)))),
2656 def : Pat<(v4f32 (int_ppc_vsx_xvcvhpsp v8i16:$A)),
2672 def : Pat<(f128 (fnearbyint f128:$vB)), (f128 (XSRQPI 0, $vB, 3))>;
2674 def : Pat<(f128 (fround f128:$vB)), (f128 (XSRQPI 0, $vB, 0))>;
2676 def : Pat<(f128 (ftrunc f128:$vB)), (f128 (XSRQPI 1, $vB, 1))>;
2678 def : Pat<(f128 (fceil f128:$vB)), (f128 (XSRQPI 1, $vB, 2))>;
2680 def : Pat<(f128 (ffloor f128:$vB)), (f128 (XSRQPI 1, $vB, 3))>;
2683 def : Pat<(f128 (frint f128:$vB)), (f128 (XSRQPIX 0, $vB, 3))>;
2700 def : Pat<(f128 (int_ppc_scalar_insert_exp_qp f128:$vA, i64:$vB)),
2710 def : Pat<(i64 (int_ppc_scalar_extract_expq f128:$vA)),
2753 def : Pat<(v4i32 (int_ppc_vsx_xxinsertw v4i32:$A, v2i64:$B, imm:$IMM)),
2755 def : Pat<(v2i64 (int_ppc_vsx_xxextractuw v2i64:$A, imm:$IMM)),
2810 def : Pat<(v8i16 (PPCxxreverse v8i16 :$A)),
2812 def : Pat<(v4i32 (PPCxxreverse v4i32 :$A)),
2814 def : Pat<(v2i64 (PPCxxreverse v2i64 :$A)),
2816 def : Pat<(v1i128 (PPCxxreverse v1i128 :$A)),
2932 def: Pat<(f32 (PPCfcfids (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 0)))))),
2934 def: Pat<(f32 (PPCfcfids (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 1)))))),
2936 def: Pat<(f32 (PPCfcfids (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 2)))))),
2938 def: Pat<(f32 (PPCfcfids (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 3)))))),
2940 def: Pat<(f64 (PPCfcfid (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 0)))))),
2942 def: Pat<(f64 (PPCfcfid (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 1)))))),
2944 def: Pat<(f64 (PPCfcfid (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 2)))))),
2946 def: Pat<(f64 (PPCfcfid (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 3)))))),
2951 def: Pat<(f32 (PPCfcfids (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 0)))))),
2953 def: Pat<(f32 (PPCfcfids (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 1)))))),
2955 def: Pat<(f32 (PPCfcfids (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 2)))))),
2957 def: Pat<(f32 (PPCfcfids (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 3)))))),
2959 def: Pat<(f64 (PPCfcfid (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 0)))))),
2961 def: Pat<(f64 (PPCfcfid (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 1)))))),
2963 def: Pat<(f64 (PPCfcfid (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 2)))))),
2965 def: Pat<(f64 (PPCfcfid (f64 (PPCmtvsra (i32 (extractelt v4i32:$A, 3)))))),
2971 def : Pat<(v8i16 (PPCmtvsrz i32:$A)),
2973 def : Pat<(v16i8 (PPCmtvsrz i32:$A)),
2978 def : Pat<(f32 (PPCfcfidus (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 0)))))),
2980 def : Pat<(f32 (PPCfcfidus (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 1)))))),
2982 def : Pat<(f32 (PPCfcfidus (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 2)))))),
2984 def : Pat<(f32 (PPCfcfidus (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 3)))))),
2986 def : Pat<(f64 (PPCfcfidu (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 0)))))),
2988 def : Pat<(f64 (PPCfcfidu (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 1)))))),
2990 def : Pat<(f64 (PPCfcfidu (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 2)))))),
2992 def : Pat<(f64 (PPCfcfidu (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 3)))))),
2994 def : Pat<(v4i32 (insertelt v4i32:$A, i32:$B, 0)),
2996 def : Pat<(v4i32 (insertelt v4i32:$A, i32:$B, 1)),
2998 def : Pat<(v4i32 (insertelt v4i32:$A, i32:$B, 2)),
3000 def : Pat<(v4i32 (insertelt v4i32:$A, i32:$B, 3)),
3002 def : Pat<(v4f32 (insertelt v4f32:$A, f32:$B, 0)),
3004 def : Pat<(v4f32 (insertelt v4f32:$A, f32:$B, 1)),
3006 def : Pat<(v4f32 (insertelt v4f32:$A, f32:$B, 2)),
3008 def : Pat<(v4f32 (insertelt v4f32:$A, f32:$B, 3)),
3013 def : Pat<(f32 (PPCfcfidus (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 0)))))),
3015 def : Pat<(f32 (PPCfcfidus (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 1)))))),
3017 def : Pat<(f32 (PPCfcfidus (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 2)))))),
3019 def : Pat<(f32 (PPCfcfidus (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 3)))))),
3021 def : Pat<(f64 (PPCfcfidu (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 0)))))),
3023 def : Pat<(f64 (PPCfcfidu (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 1)))))),
3025 def : Pat<(f64 (PPCfcfidu (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 2)))))),
3027 def : Pat<(f64 (PPCfcfidu (f64 (PPCmtvsrz (i32 (extractelt v4i32:$A, 3)))))),
3029 def : Pat<(v4i32 (insertelt v4i32:$A, i32:$B, 0)),
3031 def : Pat<(v4i32 (insertelt v4i32:$A, i32:$B, 1)),
3033 def : Pat<(v4i32 (insertelt v4i32:$A, i32:$B, 2)),
3035 def : Pat<(v4i32 (insertelt v4i32:$A, i32:$B, 3)),
3037 def : Pat<(v4f32 (insertelt v4f32:$A, f32:$B, 0)),
3039 def : Pat<(v4f32 (insertelt v4f32:$A, f32:$B, 1)),
3041 def : Pat<(v4f32 (insertelt v4f32:$A, f32:$B, 2)),
3043 def : Pat<(v4f32 (insertelt v4f32:$A, f32:$B, 3)),
3048 def : Pat<(v4i32 (quadwOffsetLoad iqaddr:$src)), (LXV memrix16:$src)>;
3049 def : Pat<(v4f32 (quadwOffsetLoad iqaddr:$src)), (LXV memrix16:$src)>;
3050 def : Pat<(v2i64 (quadwOffsetLoad iqaddr:$src)), (LXV memrix16:$src)>;
3051 def : Pat<(v2f64 (quadwOffsetLoad iqaddr:$src)), (LXV memrix16:$src)>;
3052 def : Pat<(f128 (quadwOffsetLoad iqaddr:$src)),
3054 def : Pat<(v4i32 (int_ppc_vsx_lxvw4x iqaddr:$src)), (LXV memrix16:$src)>;
3055 def : Pat<(v2f64 (int_ppc_vsx_lxvd2x iqaddr:$src)), (LXV memrix16:$src)>;
3057 def : Pat<(quadwOffsetStore v4f32:$rS, iqaddr:$dst), (STXV $rS, memrix16:$dst)>;
3058 def : Pat<(quadwOffsetStore v4i32:$rS, iqaddr:$dst), (STXV $rS, memrix16:$dst)>;
3059 def : Pat<(quadwOffsetStore v2f64:$rS, iqaddr:$dst), (STXV $rS, memrix16:$dst)>;
3060 def : Pat<(quadwOffsetStore f128:$rS, iqaddr:$dst),
3062 def : Pat<(quadwOffsetStore v2i64:$rS, iqaddr:$dst), (STXV $rS, memrix16:$dst)>;
3063 def : Pat<(int_ppc_vsx_stxvw4x v4i32:$rS, iqaddr:$dst),
3065 def : Pat<(int_ppc_vsx_stxvd2x v2f64:$rS, iqaddr:$dst),
3069 def : Pat<(v2f64 (nonQuadwOffsetLoad xoaddr:$src)), (LXVX xoaddr:$src)>;
3070 def : Pat<(v2i64 (nonQuadwOffsetLoad xoaddr:$src)), (LXVX xoaddr:$src)>;
3071 def : Pat<(v4f32 (nonQuadwOffsetLoad xoaddr:$src)), (LXVX xoaddr:$src)>;
3072 def : Pat<(v4i32 (nonQuadwOffsetLoad xoaddr:$src)), (LXVX xoaddr:$src)>;
3073 def : Pat<(v4i32 (int_ppc_vsx_lxvw4x xoaddr:$src)), (LXVX xoaddr:$src)>;
3074 def : Pat<(v2f64 (int_ppc_vsx_lxvd2x xoaddr:$src)), (LXVX xoaddr:$src)>;
3075 def : Pat<(f128 (nonQuadwOffsetLoad xoaddr:$src)),
3077 def : Pat<(nonQuadwOffsetStore f128:$rS, xoaddr:$dst),
3079 def : Pat<(nonQuadwOffsetStore v2f64:$rS, xoaddr:$dst),
3081 def : Pat<(nonQuadwOffsetStore v2i64:$rS, xoaddr:$dst),
3083 def : Pat<(nonQuadwOffsetStore v4f32:$rS, xoaddr:$dst),
3085 def : Pat<(nonQuadwOffsetStore v4i32:$rS, xoaddr:$dst),
3087 def : Pat<(int_ppc_vsx_stxvw4x v4i32:$rS, xoaddr:$dst),
3089 def : Pat<(int_ppc_vsx_stxvd2x v2f64:$rS, xoaddr:$dst),
3098 def : Pat<(v2i64 (scalar_to_vector (i64 (sextloadi32 xoaddr:$src)))),
3102 def : Pat<(v2i64 (scalar_to_vector (i64 (zextloadi32 xoaddr:$src)))),
3106 def : Pat<(v4i32 (scalar_to_vector (i32 (load xoaddr:$src)))),
3110 def : Pat<(v4f32 (scalar_to_vector (f32 (load xoaddr:$src)))),
3116 def : Pat<(v2i64 (scalar_to_vector (i64 (sextloadi32 xoaddr:$src)))),
3119 def : Pat<(v2i64 (scalar_to_vector (i64 (zextloadi32 xoaddr:$src)))),
3122 def : Pat<(v4i32 (scalar_to_vector (i32 (load xoaddr:$src)))),
3126 def : Pat<(v4f32 (scalar_to_vector (f32 (load xoaddr:$src)))),
3134 def : Pat<(v16i8 (scalar_to_vector ScalarLoads.Li8)),
3136 def : Pat<(v8i16 (scalar_to_vector ScalarLoads.ZELi8)),
3138 def : Pat<(v4i32 (scalar_to_vector ScalarLoads.ZELi8)),
3140 def : Pat<(v2i64 (scalar_to_vector ScalarLoads.ZELi8i64)),
3142 def : Pat<(v4i32 (scalar_to_vector ScalarLoads.SELi8)),
3144 def : Pat<(v2i64 (scalar_to_vector ScalarLoads.SELi8i64)),
3148 def : Pat<(v8i16 (scalar_to_vector ScalarLoads.Li16)),
3150 def : Pat<(v4i32 (scalar_to_vector ScalarLoads.ZELi16)),
3152 def : Pat<(v2i64 (scalar_to_vector ScalarLoads.ZELi16i64)),
3154 def : Pat<(v4i32 (scalar_to_vector ScalarLoads.SELi16)),
3156 def : Pat<(v2i64 (scalar_to_vector ScalarLoads.SELi16i64)),
3161 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 0)), xoaddr:$dst),
3163 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 1)), xoaddr:$dst),
3165 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 2)), xoaddr:$dst),
3167 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 3)), xoaddr:$dst),
3169 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 4)), xoaddr:$dst),
3171 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 5)), xoaddr:$dst),
3173 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 6)), xoaddr:$dst),
3175 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 7)), xoaddr:$dst),
3177 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 8)), xoaddr:$dst),
3179 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 9)), xoaddr:$dst),
3181 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 10)), xoaddr:$dst),
3183 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 11)), xoaddr:$dst),
3185 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 12)), xoaddr:$dst),
3187 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 13)), xoaddr:$dst),
3189 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 14)), xoaddr:$dst),
3191 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 15)), xoaddr:$dst),
3195 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 0)), xoaddr:$dst),
3197 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 1)), xoaddr:$dst),
3199 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 2)), xoaddr:$dst),
3201 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 3)), xoaddr:$dst),
3203 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 4)), xoaddr:$dst),
3205 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 5)), xoaddr:$dst),
3207 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 6)), xoaddr:$dst),
3209 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 7)), xoaddr:$dst),
3215 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 0)), xoaddr:$dst),
3217 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 1)), xoaddr:$dst),
3219 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 2)), xoaddr:$dst),
3221 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 3)), xoaddr:$dst),
3223 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 4)), xoaddr:$dst),
3225 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 5)), xoaddr:$dst),
3227 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 6)), xoaddr:$dst),
3229 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 7)), xoaddr:$dst),
3231 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 8)), xoaddr:$dst),
3233 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 9)), xoaddr:$dst),
3235 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 10)), xoaddr:$dst),
3237 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 11)), xoaddr:$dst),
3239 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 12)), xoaddr:$dst),
3241 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 13)), xoaddr:$dst),
3243 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 14)), xoaddr:$dst),
3245 def : Pat<(truncstorei8 (i32 (vector_extract v16i8:$S, 15)), xoaddr:$dst),
3249 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 0)), xoaddr:$dst),
3251 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 1)), xoaddr:$dst),
3253 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 2)), xoaddr:$dst),
3255 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 3)), xoaddr:$dst),
3257 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 4)), xoaddr:$dst),
3259 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 5)), xoaddr:$dst),
3261 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 6)), xoaddr:$dst),
3263 def : Pat<(truncstorei16 (i32 (vector_extract v8i16:$S, 7)), xoaddr:$dst),
3269 def : Pat<(f64 (PPCVexts f64:$A, 1)),
3271 def : Pat<(f64 (PPCVexts f64:$A, 2)),
3287 def : Pat<(f64 (extloadf32 ixaddr:$src)),
3289 def : Pat<(f32 (fpround (f64 (extloadf32 ixaddr:$src)))),
3297 def : Pat<(v2i64 (scalar_to_vector (i64 (load ixaddr:$src)))),
3300 def : Pat<(v2i64 (scalar_to_vector (i64 (load xaddr:$src)))),
3304 def : Pat<(v2f64 (scalar_to_vector (f64 (load ixaddr:$src)))),
3307 def : Pat<(v2f64 (scalar_to_vector (f64 (load xaddr:$src)))),
3313 def : Pat<(v2i64 (scalar_to_vector (i64 (load ixaddr:$src)))),
3315 def : Pat<(v2i64 (scalar_to_vector (i64 (load xaddr:$src)))),
3318 def : Pat<(v2f64 (scalar_to_vector (f64 (load ixaddr:$src)))),
3320 def : Pat<(v2f64 (scalar_to_vector (f64 (load xaddr:$src)))),
3328 def : Pat<(f128 (sint_to_fp (i64 (extractelt v2i64:$src, 0)))),
3330 def : Pat<(f128 (sint_to_fp (i64 (extractelt v2i64:$src, 1)))),
3333 def : Pat<(f128 (uint_to_fp (i64 (extractelt v2i64:$src, 0)))),
3335 def : Pat<(f128 (uint_to_fp (i64 (extractelt v2i64:$src, 1)))),
3340 def : Pat<(f128 (sint_to_fp (i32 (extractelt v4i32:$src, 1)))),
3343 def : Pat<(f128 (sint_to_fp (i32 (extractelt v4i32:$src, Idx)))),
3348 def : Pat<(f128 (uint_to_fp (i32 (extractelt v4i32:$src, Idx)))),
3354 def : Pat<(f128 (sint_to_fp
3361 def : Pat<(f128 (uint_to_fp
3369 def : Pat<(f128 (sint_to_fp
3374 def : Pat<(f128 (uint_to_fp
3381 def : Pat<(f128 (uint_to_fp (i32 (PPCmfvsr f64:$src)))),
3389 def : Pat<(f128 (sint_to_fp (i64 (extractelt v2i64:$src, 0)))),
3392 def : Pat<(f128 (sint_to_fp (i64 (extractelt v2i64:$src, 1)))),
3394 def : Pat<(f128 (uint_to_fp (i64 (extractelt v2i64:$src, 0)))),
3397 def : Pat<(f128 (uint_to_fp (i64 (extractelt v2i64:$src, 1)))),
3402 def : Pat<(f128 (sint_to_fp (i32 (extractelt v4i32:$src, !head(Idx))))),
3407 def : Pat<(f128 (sint_to_fp (i32 (extractelt v4i32:$src, 2)))),
3411 def : Pat<(f128 (uint_to_fp (i32 (extractelt v4i32:$src, !head(Idx))))),
3419 def : Pat<(f128 (sint_to_fp
3426 def : Pat<(f128 (uint_to_fp
3436 def : Pat<(f128 (sint_to_fp
3443 def : Pat<(f128 (uint_to_fp
3452 def : Pat<(f128 (uint_to_fp (i32 (PPCmfvsr f64:$src)))),
3458 def : Pat<(f128 (sint_to_fp (i64 (load xaddr:$src)))),
3460 def : Pat<(f128 (sint_to_fp (i64 (load ixaddr:$src)))),
3462 def : Pat<(f128 (uint_to_fp (i64 (load xaddr:$src)))),
3464 def : Pat<(f128 (uint_to_fp (i64 (load ixaddr:$src)))),
3468 def : Pat<(f128 (uint_to_fp ScalarLoads.ZELi16)),
3472 def : Pat<(f128 (uint_to_fp ScalarLoads.ZELi8)),
3476 def : Pat<(i64 (fp_to_sint f128:$src)), (i64 (MFVRD (XSCVQPSDZ $src)))>;
3477 def : Pat<(i64 (fp_to_uint f128:$src)), (i64 (MFVRD (XSCVQPUDZ $src)))>;
3478 def : Pat<(i32 (fp_to_sint f128:$src)),
3480 def : Pat<(i32 (fp_to_uint f128:$src)),
3485 def : Pat<(PPCstore_scal_int_from_vsr
3489 def : Pat<(PPCstore_scal_int_from_vsr
3493 def : Pat<(PPCstore_scal_int_from_vsr
3496 def : Pat<(PPCstore_scal_int_from_vsr
3499 def : Pat<(PPCstore_scal_int_from_vsr
3502 def : Pat<(PPCstore_scal_int_from_vsr
3505 def : Pat<(PPCstore_scal_int_from_vsr
3508 def : Pat<(PPCstore_scal_int_from_vsr
3511 def : Pat<(PPCstore_scal_int_from_vsr
3516 def : Pat<(PPCstore_scal_int_from_vsr
3520 def : Pat<(PPCstore_scal_int_from_vsr
3524 def : Pat<(PPCstore_scal_int_from_vsr
3527 def : Pat<(PPCstore_scal_int_from_vsr
3530 def : Pat<(PPCstore_scal_int_from_vsr
3533 def : Pat<(PPCstore_scal_int_from_vsr
3536 def : Pat<(PPCstore_scal_int_from_vsr
3539 def : Pat<(PPCstore_scal_int_from_vsr
3542 def : Pat<(PPCstore_scal_int_from_vsr
3547 def : Pat<(f64 (fpround f128:$src)), (f64 (XSCVQPDP $src))>;
3548 def : Pat<(f32 (fpround f128:$src)), (f32 (XSRSP (XSCVQPDPO $src)))>;
3551 def : Pat<(f128 (fpextend f32:$src)),
3558 def : Pat<(f128 (PPCbuild_fp128 i64:$rB, i64:$rA)),
3562 def : Pat<(f128 (PPCbuild_fp128 i64:$rA, i64:$rB)),
3780 def : Pat<(v4i32 (build_vector DblToInt.A, DblToInt.A,
3783 def : Pat<(v4i32 (build_vector DblToUInt.A, DblToUInt.A,
3786 def : Pat<(v2i64 (build_vector DblToLong.A, DblToLong.A)),
3789 def : Pat<(v2i64 (build_vector DblToULong.A, DblToULong.A)),
3792 def : Pat<(v4i32 (scalar_to_vector FltToIntLoad.A)),
3795 def : Pat<(v4i32 (scalar_to_vector FltToUIntLoad.A)),
3798 def : Pat<(v4f32 (build_vector f32:$A, f32:$A, f32:$A, f32:$A)),
3802 def : Pat<(v2i64 (build_vector FltToLong.A, FltToLong.A)),
3805 def : Pat<(v2i64 (build_vector FltToULong.A, FltToULong.A)),
3808 def : Pat<(v2i64 (scalar_to_vector DblToLongLoad.A)),
3810 def : Pat<(v2i64 (scalar_to_vector DblToULongLoad.A)),
3816 def : Pat<(v4i32 (scalar_to_vector DblToIntLoad.A)),
3819 def : Pat<(v4i32 (scalar_to_vector DblToUIntLoad.A)),
3822 def : Pat<(v2i64 (scalar_to_vector FltToLongLoad.A)),
3825 def : Pat<(v2i64 (scalar_to_vector FltToULongLoad.A)),
3831 def : Pat<DWToSPExtractConv.BVU,
3834 def : Pat<DWToSPExtractConv.BVS,
3841 def : Pat<(v2f64 (build_vector f64:$A, f64:$B)),
3846 def : Pat<(v4f32 (build_vector f32:$A, f32:$B, f32:$C, f32:$D)),
3848 def : Pat<(v4f32 (build_vector DblToFlt.A0, DblToFlt.A1,
3853 def : Pat<(v4i32 (build_vector DblToInt.A, DblToInt.B,
3856 def : Pat<(v4i32 (build_vector DblToUInt.A, DblToUInt.B,
3859 def : Pat<(v4i32 (build_vector ExtDbl.A0S, ExtDbl.A1S,
3862 def : Pat<(v4i32 (build_vector ExtDbl.A0U, ExtDbl.A1U,
3868 def : Pat<DWToSPExtractConv.BVU,
3871 def : Pat<DWToSPExtractConv.BVS,
3878 def : Pat<(v2f64 (build_vector f64:$A, f64:$B)),
3883 def : Pat<(v4f32 (build_vector f32:$D, f32:$C, f32:$B, f32:$A)),
3885 def : Pat<(v4f32 (build_vector DblToFlt.A0, DblToFlt.A1,
3890 def : Pat<(v4i32 (build_vector DblToInt.A, DblToInt.B,
3893 def : Pat<(v4i32 (build_vector DblToUInt.A, DblToUInt.B,
3896 def : Pat<(v4i32 (build_vector ExtDbl.A0S, ExtDbl.A1S,
3899 def : Pat<(v4i32 (build_vector ExtDbl.A0U, ExtDbl.A1U,
3908 def : Pat<(v4i32 (build_vector immSExt5NonZero:$A, immSExt5NonZero:$A,
3915 def : Pat<(v2i64 (build_vector i64:$A, i64:$B)),
3919 def : Pat<(v4i32 (build_vector i32:$A, i32:$B, i32:$C, i32:$D)),
3925 def : Pat<(v4i32 (build_vector i32:$A, i32:$A, i32:$A, i32:$A)),
3931 def : Pat<(v2i64 (build_vector i64:$A, i64:$B)),
3935 def : Pat<(v4i32 (build_vector i32:$A, i32:$B, i32:$C, i32:$D)),
3941 def : Pat<(v4i32 (build_vector i32:$A, i32:$A, i32:$A, i32:$A)),
3947 def : Pat<(v4i32 (scalar_to_vector i32:$A)),
3949 def : Pat<(v4i32 (build_vector i32:$A, i32:$A, i32:$A, i32:$A)),
3951 def : Pat<(v16i8 (build_vector immAnyExt8:$A, immAnyExt8:$A, immAnyExt8:$A,
3958 def : Pat<(v16i8 immAllOnesV),
3960 def : Pat<(v8i16 immAllOnesV),
3962 def : Pat<(v4i32 immAllOnesV),
3964 def : Pat<(v2i64 immAllOnesV),
3966 def : Pat<(v4i32 (scalar_to_vector FltToIntLoad.A)),
3968 def : Pat<(v4i32 (scalar_to_vector FltToUIntLoad.A)),
3970 def : Pat<(v4i32 (scalar_to_vector DblToIntLoadP9.A)),
3973 def : Pat<(v4i32 (scalar_to_vector DblToUIntLoadP9.A)),
3976 def : Pat<(v2i64 (scalar_to_vector FltToLongLoadP9.A)),
3980 def : Pat<(v2i64 (scalar_to_vector FltToULongLoadP9.A)),
3987 def : Pat<(i64 (extractelt v2i64:$A, 1)),
3990 def : Pat<(v2i64 (build_vector i64:$rB, i64:$rA)),
3992 def : Pat<(v4i32 (build_vector i32:$A, i32:$B, i32:$C, i32:$D)),
3999 def : Pat<(i64 (extractelt v2i64:$A, 0)),
4002 def : Pat<(v2i64 (build_vector i64:$rA, i64:$rB)),
4004 def : Pat<(v4i32 (build_vector i32:$A, i32:$B, i32:$C, i32:$D)),
4013 def : Pat<(v2i64 (build_vector WordToDWord.LE_A0, WordToDWord.LE_A1)),
4015 def : Pat<(v2i64 (build_vector HWordToDWord.LE_A0, HWordToDWord.LE_A1)),
4017 def : Pat<(v4i32 (build_vector HWordToWord.LE_A0, HWordToWord.LE_A1,
4020 def : Pat<(v4i32 (build_vector ByteToWord.LE_A0, ByteToWord.LE_A1,
4023 def : Pat<(v2i64 (build_vector ByteToDWord.LE_A0, ByteToDWord.LE_A1)),
4028 def : Pat<(v2i64 (build_vector WordToDWord.BE_A0, WordToDWord.BE_A1)),
4030 def : Pat<(v2i64 (build_vector HWordToDWord.BE_A0, HWordToDWord.BE_A1)),
4032 def : Pat<(v4i32 (build_vector HWordToWord.BE_A0, HWordToWord.BE_A1,
4035 def : Pat<(v4i32 (build_vector ByteToWord.BE_A0, ByteToWord.BE_A1,
4038 def : Pat<(v2i64 (build_vector ByteToDWord.BE_A0, ByteToDWord.BE_A1)),
4043 def: Pat<(v2i64 (PPCSExtVElems v16i8:$A)),
4045 def: Pat<(v2i64 (PPCSExtVElems v8i16:$A)),
4047 def: Pat<(v2i64 (PPCSExtVElems v4i32:$A)),
4049 def: Pat<(v4i32 (PPCSExtVElems v16i8:$A)),
4051 def: Pat<(v4i32 (PPCSExtVElems v8i16:$A)),
4060 def : Pat<(v4i32 (PPCvabsd v4i32:$A, v4i32:$B, (i32 0))),
4063 def : Pat<(v8i16 (PPCvabsd v8i16:$A, v8i16:$B, (i32 0))),
4066 def : Pat<(v16i8 (PPCvabsd v16i8:$A, v16i8:$B, (i32 0))),
4071 def : Pat<(v4i32 (PPCvabsd v4i32:$A, v4i32:$B, (i32 1))),