Lines Matching full:src2
372 (ins To.RC:$src1, From.RC:$src2, u8imm:$src3),
374 "$src3, $src2, $src1", "$src1, $src2, $src3",
376 (From.VT From.RC:$src2),
379 (From.VT From.RC:$src2),
384 (ins To.RC:$src1, From.MemOp:$src2, u8imm:$src3),
386 "$src3, $src2, $src1", "$src1, $src2, $src3",
388 (From.VT (From.LdFrag addr:$src2)),
391 (From.VT (From.LdFrag addr:$src2)),
410 (To.VT To.RC:$src1), (From.VT From.RC:$src2), (iPTR imm)),
412 To.RC:$src1, From.RC:$src2,
417 (From.VT (From.LdFrag addr:$src2)),
420 To.RC:$src1, addr:$src2,
529 (From.VT From.RC:$src2),
533 Cast.RC:$src0, Cast.KRCWM:$mask, To.RC:$src1, From.RC:$src2,
541 (From.LdFrag addr:$src2))),
545 Cast.RC:$src0, Cast.KRCWM:$mask, To.RC:$src1, addr:$src2,
552 (From.VT From.RC:$src2),
556 Cast.KRCWM:$mask, To.RC:$src1, From.RC:$src2,
562 (From.VT (From.LdFrag addr:$src2)),
566 Cast.KRCWM:$mask, To.RC:$src1, addr:$src2,
653 (ins VR128X:$src1, VR128X:$src2, u8imm:$src3),
654 "vinsertps\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
655 [(set VR128X:$dst, (X86insertps VR128X:$src1, VR128X:$src2, timm:$src3))]>,
658 (ins VR128X:$src1, f32mem:$src2, u8imm:$src3),
659 "vinsertps\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
661 (v4f32 (scalar_to_vector (loadf32 addr:$src2))),
1002 (ins VR128X:$src1, u8imm:$src2),
1003 "vextractps\t{$src2, $src1, $dst|$dst, $src1, $src2}",
1004 [(set GR32orGR64:$dst, (extractelt (bc_v4i32 (v4f32 VR128X:$src1)), imm:$src2))]>,
1008 (ins f32mem:$dst, VR128X:$src1, u8imm:$src2),
1009 "vextractps\t{$src2, $src1, $dst|$dst, $src1, $src2}",
1010 [(store (extractelt (bc_v4i32 (v4f32 VR128X:$src1)), imm:$src2),
1616 (ins _.RC:$src2, _.RC:$src3),
1617 OpcodeStr, "$src3, $src2", "$src2, $src3",
1618 (_.VT (X86VPermt2 _.RC:$src2, IdxVT.RC:$src1, _.RC:$src3)), 1>,
1623 (ins _.RC:$src2, _.MemOp:$src3),
1624 OpcodeStr, "$src3, $src2", "$src2, $src3",
1625 (_.VT (X86VPermt2 _.RC:$src2, IdxVT.RC:$src1,
1637 (ins _.RC:$src2, _.ScalarMemOp:$src3),
1638 OpcodeStr, !strconcat("${src3}", _.BroadcastStr,", $src2"),
1639 !strconcat("$src2, ${src3}", _.BroadcastStr ),
1640 (_.VT (X86VPermt2 _.RC:$src2,
1703 (X86VPermt2 (_.VT _.RC:$src2),
1709 _.RC:$src2, _.RC:$src3)>;
1711 (X86VPermt2 _.RC:$src2,
1717 _.RC:$src2, addr:$src3)>;
1719 (X86VPermt2 _.RC:$src2,
1724 _.RC:$src2, addr:$src3)>;
1738 (ins IdxVT.RC:$src2, _.RC:$src3),
1739 OpcodeStr, "$src3, $src2", "$src2, $src3",
1740 (_.VT (X86VPermt2 _.RC:$src1, IdxVT.RC:$src2, _.RC:$src3)), 1>,
1744 (ins IdxVT.RC:$src2, _.MemOp:$src3),
1745 OpcodeStr, "$src3, $src2", "$src2, $src3",
1746 (_.VT (X86VPermt2 _.RC:$src1, IdxVT.RC:$src2,
1756 (ins IdxVT.RC:$src2, _.ScalarMemOp:$src3),
1757 OpcodeStr, !strconcat("${src3}", _.BroadcastStr,", $src2"),
1758 !strconcat("$src2, ${src3}", _.BroadcastStr ),
1760 IdxVT.RC:$src2,(_.VT (_.BroadcastLdFrag addr:$src3)))), 1>,
1823 (ins _.RC:$src1, _.RC:$src2),
1825 "\t{$src2, $src1, ${dst}|${dst}, $src1, $src2}"), []>,
1828 (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2),
1830 "\t{$src2, $src1, ${dst} {${mask}}|${dst} {${mask}}, $src1, $src2}"),
1833 (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2),
1835 "\t{$src2, $src1, ${dst} {${mask}} {z}|${dst} {${mask}} {z}, $src1, $src2}"),
1839 (ins _.RC:$src1, _.MemOp:$src2),
1841 "\t{$src2, $src1, ${dst}|${dst}, $src1, $src2}"),
1845 (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2),
1847 "\t{$src2, $src1, ${dst} {${mask}}|${dst} {${mask}}, $src1, $src2}"),
1851 (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2),
1853 "\t{$src2, $src1, ${dst} {${mask}} {z}|${dst} {${mask}} {z}, $src1, $src2}"),
1863 (ins _.KRCWM:$mask, _.RC:$src1, _.ScalarMemOp:$src2),
1865 "\t{${src2}", _.BroadcastStr, ", $src1, $dst {${mask}}|",
1866 "$dst {${mask}}, $src1, ${src2}", _.BroadcastStr, "}"), []>,
1871 (ins _.KRCWM:$mask, _.RC:$src1, _.ScalarMemOp:$src2),
1873 "\t{${src2}", _.BroadcastStr, ", $src1, $dst {${mask}} {z}|",
1874 "$dst {${mask}} {z}, $src1, ${src2}", _.BroadcastStr, "}"), []>,
1879 (ins _.RC:$src1, _.ScalarMemOp:$src2),
1881 "\t{${src2}", _.BroadcastStr, ", $src1, $dst|",
1882 "$dst, $src1, ${src2}", _.BroadcastStr, "}"), []>,
1942 (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
1944 "$cc, $src2, $src1", "$src1, $src2, $cc",
1945 (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2), timm:$cc),
1946 (OpNode_su (_.VT _.RC:$src1), (_.VT _.RC:$src2), timm:$cc)>,
1951 (ins _.RC:$src1, _.IntScalarMemOp:$src2, u8imm:$cc),
1953 "$cc, $src2, $src1", "$src1, $src2, $cc",
1954 (OpNode (_.VT _.RC:$src1), (_.ScalarIntMemFrags addr:$src2),
1956 … (OpNode_su (_.VT _.RC:$src1), (_.ScalarIntMemFrags addr:$src2),
1963 (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
1965 "$cc, {sae}, $src2, $src1","$src1, $src2, {sae}, $cc",
1966 (OpNodeSAE (_.VT _.RC:$src1), (_.VT _.RC:$src2),
1968 (OpNodeSAE_su (_.VT _.RC:$src1), (_.VT _.RC:$src2),
1975 (outs _.KRC:$dst), (ins _.FRC:$src1, _.FRC:$src2, u8imm:$cc),
1977 "\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}"),
1979 _.FRC:$src2,
1984 (ins _.FRC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
1986 "\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}"),
1988 (_.ScalarLdFrag addr:$src2),
2015 (outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2),
2016 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
2020 (outs _.KRC:$dst), (ins _.RC:$src1, _.MemOp:$src2),
2021 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
2025 (outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2),
2026 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst {${mask}}|",
2027 "$dst {${mask}}, $src1, $src2}"),
2031 (outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2),
2032 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst {${mask}}|",
2033 "$dst {${mask}}, $src1, $src2}"),
2043 (outs _.KRC:$dst), (ins _.RC:$src1, _.ScalarMemOp:$src2),
2044 !strconcat(OpcodeStr, "\t{${src2}", _.BroadcastStr, ", $src1, $dst",
2045 "|$dst, $src1, ${src2}", _.BroadcastStr, "}"),
2049 _.ScalarMemOp:$src2),
2051 "\t{${src2}", _.BroadcastStr, ", $src1, $dst {${mask}}|",
2052 "$dst {${mask}}, $src1, ${src2}", _.BroadcastStr, "}"),
2133 (outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2135 "\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}"),
2137 (_.VT _.RC:$src2),
2141 (outs _.KRC:$dst), (ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
2143 "\t{$cc, $src2, $src1, $dst|$dst, $src1, $src2, $cc}"),
2147 (_.VT (_.LdFrag addr:$src2)),
2152 (outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2,
2155 "\t{$cc, $src2, $src1, $dst {${mask}}|",
2156 "$dst {${mask}}, $src1, $src2, $cc}"),
2159 (_.VT _.RC:$src2),
2163 (outs _.KRC:$dst), (ins _.KRCWM:$mask, _.RC:$src1, _.MemOp:$src2,
2166 "\t{$cc, $src2, $src1, $dst {${mask}}|",
2167 "$dst {${mask}}, $src1, $src2, $cc}"),
2172 (_.VT (_.LdFrag addr:$src2)),
2176 def : Pat<(_.KVT (Frag:$cc (_.LdFrag addr:$src2),
2179 _.RC:$src1, addr:$src2, (X86pcmpm_imm_commute $cc))>;
2182 (_.KVT (Frag_su:$cc (_.LdFrag addr:$src2),
2185 _.KRCWM:$mask, _.RC:$src1, addr:$src2,
2194 (outs _.KRC:$dst), (ins _.RC:$src1, _.ScalarMemOp:$src2,
2197 "\t{$cc, ${src2}", _.BroadcastStr, ", $src1, $dst|",
2198 "$dst, $src1, ${src2}", _.BroadcastStr, ", $cc}"),
2201 (_.BroadcastLdFrag addr:$src2),
2206 _.ScalarMemOp:$src2, u8imm:$cc),
2208 "\t{$cc, ${src2}", _.BroadcastStr, ", $src1, $dst {${mask}}|",
2209 "$dst {${mask}}, $src1, ${src2}", _.BroadcastStr, ", $cc}"),
2213 (_.BroadcastLdFrag addr:$src2),
2217 def : Pat<(_.KVT (Frag:$cc (_.BroadcastLdFrag addr:$src2),
2220 _.RC:$src1, addr:$src2, (X86pcmpm_imm_commute $cc))>;
2223 (_.KVT (Frag_su:$cc (_.BroadcastLdFrag addr:$src2),
2226 _.KRCWM:$mask, _.RC:$src1, addr:$src2,
2293 (outs _.KRC:$dst), (ins _.RC:$src1, _.RC:$src2,u8imm:$cc),
2295 "$cc, $src2, $src1", "$src1, $src2, $cc",
2296 (X86any_cmpm (_.VT _.RC:$src1), (_.VT _.RC:$src2), timm:$cc),
2297 (X86cmpm_su (_.VT _.RC:$src1), (_.VT _.RC:$src2), timm:$cc),
2301 (outs _.KRC:$dst),(ins _.RC:$src1, _.MemOp:$src2, u8imm:$cc),
2303 "$cc, $src2, $src1", "$src1, $src2, $cc",
2304 (X86any_cmpm (_.VT _.RC:$src1), (_.VT (_.LdFrag addr:$src2)),
2306 (X86cmpm_su (_.VT _.RC:$src1), (_.VT (_.LdFrag addr:$src2)),
2312 (ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$cc),
2314 "$cc, ${src2}"#_.BroadcastStr#", $src1",
2315 "$src1, ${src2}"#_.BroadcastStr#", $cc",
2317 (_.VT (_.BroadcastLdFrag addr:$src2)),
2320 (_.VT (_.BroadcastLdFrag addr:$src2)),
2326 def : Pat<(X86any_cmpm (_.LdFrag addr:$src2), (_.VT _.RC:$src1),
2328 (!cast<Instruction>(Name#_.ZSuffix#"rmi") _.RC:$src1, addr:$src2,
2331 def : Pat<(and _.KRCWM:$mask, (X86cmpm_su (_.LdFrag addr:$src2),
2335 _.RC:$src1, addr:$src2,
2338 def : Pat<(X86any_cmpm (_.BroadcastLdFrag addr:$src2),
2340 (!cast<Instruction>(Name#_.ZSuffix#"rmbi") _.RC:$src1, addr:$src2,
2343 def : Pat<(and _.KRCWM:$mask, (X86cmpm_su (_.BroadcastLdFrag addr:$src2),
2347 _.RC:$src1, addr:$src2,
2351 def : Pat<(X86cmpmm (_.VT _.RC:$src1), (_.VT _.RC:$src2), timm:$cc,
2353 (!cast<Instruction>(Name#_.ZSuffix#"rri") _.RC:$src1, _.RC:$src2, timm:$cc)>;
2355 def : Pat<(X86cmpmm (_.VT _.RC:$src1), (_.VT _.RC:$src2), timm:$cc, _.KRCWM:$mask),
2357 _.RC:$src2, timm:$cc)>;
2359 def : Pat<(X86cmpmm (_.VT _.RC:$src1), (_.VT (_.LdFrag addr:$src2)), timm:$cc,
2361 (!cast<Instruction>(Name#_.ZSuffix#"rmi") _.RC:$src1, addr:$src2, timm:$cc)>;
2363 def : Pat<(X86cmpmm (_.VT _.RC:$src1), (_.VT (_.LdFrag addr:$src2)), timm:$cc,
2366 addr:$src2, timm:$cc)>;
2368 def : Pat<(X86cmpmm (_.VT _.RC:$src1), (_.VT (_.BroadcastLdFrag addr:$src2)), timm:$cc,
2370 (!cast<Instruction>(Name#_.ZSuffix#"rmbi") _.RC:$src1, addr:$src2, timm:$cc)>;
2372 def : Pat<(X86cmpmm (_.VT _.RC:$src1), (_.VT (_.BroadcastLdFrag addr:$src2)), timm:$cc,
2375 addr:$src2, timm:$cc)>;
2378 def : Pat<(X86cmpmm (_.VT (_.LdFrag addr:$src2)), (_.VT _.RC:$src1), timm:$cc,
2380 (!cast<Instruction>(Name#_.ZSuffix#"rmi") _.RC:$src1, addr:$src2,
2383 def : Pat<(X86cmpmm (_.VT (_.LdFrag addr:$src2)), (_.VT _.RC:$src1), timm:$cc,
2386 _.RC:$src1, addr:$src2,
2389 def : Pat<(X86cmpmm (_.VT (_.BroadcastLdFrag addr:$src2)), (_.VT _.RC:$src1), timm:$cc,
2391 (!cast<Instruction>(Name#_.ZSuffix#"rmbi") _.RC:$src1, addr:$src2,
2394 def : Pat<(X86cmpmm (_.VT (_.BroadcastLdFrag addr:$src2)), (_.VT _.RC:$src1), timm:$cc,
2397 _.RC:$src1, addr:$src2,
2405 (ins _.RC:$src1, _.RC:$src2, u8imm:$cc),
2406 (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2, u8imm:$cc),
2408 "$cc, {sae}, $src2, $src1",
2409 "$src1, $src2, {sae}, $cc",
2411 (_.VT _.RC:$src2), timm:$cc, (_.KVT immAllOnesV)))],
2413 (_.VT _.RC:$src2), timm:$cc, _.KRCWM:$mask))]>,
2439 def : Pat<(v1i1 (X86cmpms (loadf64 addr:$src2), FR64X:$src1, timm:$cc)),
2440 (VCMPSDZrmi FR64X:$src1, addr:$src2, (X86cmpm_imm_commute timm:$cc))>;
2442 def : Pat<(v1i1 (X86cmpms (loadf32 addr:$src2), FR32X:$src1, timm:$cc)),
2443 (VCMPSSZrmi FR32X:$src1, addr:$src2, (X86cmpm_imm_commute timm:$cc))>;
2447 def : Pat<(v1i1 (X86cmpms (loadf16 addr:$src2), FR16X:$src1, timm:$cc)),
2448 (VCMPSHZrmi FR16X:$src1, addr:$src2, (X86cmpm_imm_commute timm:$cc))>;
2461 (ins _.RC:$src1, i32u8imm:$src2),
2462 OpcodeStr#_.Suffix#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
2464 (i32 timm:$src2)))]>,
2467 (ins _.KRCWM:$mask, _.RC:$src1, i32u8imm:$src2),
2469 "\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
2472 (i32 timm:$src2))))]>,
2475 (ins _.IntScalarMemOp:$src1, i32u8imm:$src2),
2477 "\t{$src2, $src1, $dst|$dst, $src1, $src2}",
2480 (i32 timm:$src2)))]>,
2483 (ins _.KRCWM:$mask, _.IntScalarMemOp:$src1, i32u8imm:$src2),
2485 "\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
2488 (i32 timm:$src2))))]>,
2501 (ins _.RC:$src1, i32u8imm:$src2),
2502 OpcodeStr#_.Suffix#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
2504 (i32 timm:$src2)))]>,
2507 (ins _.KRCWM:$mask, _.RC:$src1, i32u8imm:$src2),
2509 "\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
2512 (i32 timm:$src2))))]>,
2515 (ins _.MemOp:$src1, i32u8imm:$src2),
2517 "\t{$src2, $src1, $dst|$dst, $src1, $src2}",
2520 (i32 timm:$src2)))]>,
2523 (ins _.KRCWM:$mask, _.MemOp:$src1, i32u8imm:$src2),
2525 "\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
2528 (i32 timm:$src2))))]>,
2531 (ins _.ScalarMemOp:$src1, i32u8imm:$src2),
2532 OpcodeStr#_.Suffix#"\t{$src2, ${src1}"#
2534 #_.BroadcastStr#", $src2}",
2537 (i32 timm:$src2)))]>,
2540 (ins _.KRCWM:$mask, _.ScalarMemOp:$src1, i32u8imm:$src2),
2541 OpcodeStr#_.Suffix#"\t{$src2, ${src1}"#
2543 _.BroadcastStr#", $src2}",
2546 (i32 timm:$src2))))]>,
2553 "\t{$src2, $src1, $dst|$dst, $src1, $src2}",
2555 _.KRC:$dst, _.RC:$src1, i32u8imm:$src2), 0, "att">;
2557 "\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
2559 _.KRC:$dst, _.KRCWM:$mask, _.RC:$src1, i32u8imm:$src2), 0, "att">;
2561 "\t{$src2, ${src1}"#_.BroadcastStr#", $dst|$dst, ${src1}"#
2562 _.BroadcastStr#", $src2}",
2564 _.KRC:$dst, _.ScalarMemOp:$src1, i32u8imm:$src2), 0, "att">;
2566 "\t{$src2, ${src1}"#_.BroadcastStr#", $dst {${mask}}|"
2567 "$dst {${mask}}, ${src1}"#_.BroadcastStr#", $src2}",
2569 _.KRC:$dst, _.KRCWM:$mask, _.ScalarMemOp:$src1, i32u8imm:$src2), 0, "att">;
2826 def rr : I<opc, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src1, KRC:$src2),
2828 "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
2829 [(set KRC:$dst, (OpNode KRC:$src1, KRC:$src2))]>,
2860 def : Pat<(VOpNode VK8:$src1, VK8:$src2),
2863 (COPY_TO_REGCLASS VK8:$src2, VK16)), VK8)>;
2866 def : Pat<(VOpNode VK1:$src1, VK1:$src2),
2869 (COPY_TO_REGCLASS VK1:$src2, VK16)), VK1)>;
2870 def : Pat<(VOpNode VK2:$src1, VK2:$src2),
2873 (COPY_TO_REGCLASS VK2:$src2, VK16)), VK2)>;
2874 def : Pat<(VOpNode VK4:$src1, VK4:$src2),
2877 (COPY_TO_REGCLASS VK4:$src2, VK16)), VK4)>;
2893 (ins Src.KRC:$src1, Src.KRC:$src2),
2894 "kunpck"#Suffix#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
2897 def : Pat<(Dst.KVT (concat_vectors Src.KRC:$src1, Src.KRC:$src2)),
2898 (!cast<Instruction>(NAME#rr) Src.KRC:$src2, Src.KRC:$src1)>;
2911 def rr : I<opc, MRMSrcReg, (outs), (ins KRC:$src1, KRC:$src2),
2912 !strconcat(OpcodeStr, "\t{$src2, $src1|$src1, $src2}"),
2913 [(set EFLAGS, (OpNode KRC:$src1, KRC:$src2))]>,
2969 (Narrow.VT Narrow.RC:$src2), cond)),
2973 (Wide.VT (INSERT_SUBREG (IMPLICIT_DEF), Narrow.RC:$src2, Narrow.SubRegIdx)),
2978 (Narrow.VT Narrow.RC:$src2),
2983 (Wide.VT (INSERT_SUBREG (IMPLICIT_DEF), Narrow.RC:$src2, Narrow.SubRegIdx)),
2993 (Narrow.BroadcastLdFrag addr:$src2), cond)),
2997 addr:$src2, (X86pcmpm_imm $cc)), Narrow.KRC)>;
3002 (Narrow.BroadcastLdFrag addr:$src2),
3007 addr:$src2, (X86pcmpm_imm $cc)), Narrow.KRC)>;
3010 def : Pat<(Narrow.KVT (Frag:$cc (Narrow.BroadcastLdFrag addr:$src2),
3016 addr:$src2, (X86pcmpm_imm_commute $cc)), Narrow.KRC)>;
3020 (Frag_su:$cc (Narrow.BroadcastLdFrag addr:$src2),
3026 addr:$src2, (X86pcmpm_imm_commute $cc)), Narrow.KRC)>;
3034 (Narrow.VT Narrow.RC:$src2), timm:$cc)),
3038 (Wide.VT (INSERT_SUBREG (IMPLICIT_DEF), Narrow.RC:$src2, Narrow.SubRegIdx)),
3043 (Narrow.VT Narrow.RC:$src2), timm:$cc))),
3047 (Wide.VT (INSERT_SUBREG (IMPLICIT_DEF), Narrow.RC:$src2, Narrow.SubRegIdx)),
3052 (Narrow.VT (Narrow.BroadcastLdFrag addr:$src2)), timm:$cc)),
3056 addr:$src2, timm:$cc), Narrow.KRC)>;
3060 (Narrow.VT (Narrow.BroadcastLdFrag addr:$src2)), timm:$cc))),
3064 addr:$src2, timm:$cc), Narrow.KRC)>;
3067 def : Pat<(Narrow.KVT (X86cmpm (Narrow.VT (Narrow.BroadcastLdFrag addr:$src2)),
3072 addr:$src2, (X86cmpm_imm_commute timm:$cc)), Narrow.KRC)>;
3075 (X86cmpm_su (Narrow.VT (Narrow.BroadcastLdFrag addr:$src2)),
3080 addr:$src2, (X86cmpm_imm_commute timm:$cc)), Narrow.KRC)>;
3901 (ins _.RC:$src1, _.RC:$src2),
3902 !strconcat(asm, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
3903 [(set _.RC:$dst, (_.VT (OpNode _.RC:$src1, _.RC:$src2)))],
3907 (ins _.KRCWM:$mask, _.RC:$src1, _.RC:$src2),
3908 !strconcat(asm, "\t{$src2, $src1, $dst {${mask}} {z}|",
3909 "$dst {${mask}} {z}, $src1, $src2}"),
3911 (_.VT (OpNode _.RC:$src1, _.RC:$src2)),
3916 (ins _.RC:$src0, _.KRCWM:$mask, _.RC:$src1, _.RC:$src2),
3917 !strconcat(asm, "\t{$src2, $src1, $dst {${mask}}|",
3918 "$dst {${mask}}, $src1, $src2}"),
3920 (_.VT (OpNode _.RC:$src1, _.RC:$src2)),
3977 (_.EltVT _.FRC:$src2))))))),
3979 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, _.RC)),
4173 def : Pat<(f16 (X86selects VK1WM:$mask, (f16 FR16X:$src1), (f16 FR16X:$src2))),
4175 (v8f16 (COPY_TO_REGCLASS FR16X:$src2, VR128X)),
4241 def : Pat<(f32 (X86selects VK1WM:$mask, (f32 FR32X:$src1), (f32 FR32X:$src2))),
4243 (v4f32 (COPY_TO_REGCLASS FR32X:$src2, VR128X)),
4259 def : Pat<(f64 (X86selects VK1WM:$mask, (f64 FR64X:$src1), (f64 FR64X:$src2))),
4261 (v2f64 (COPY_TO_REGCLASS FR64X:$src2, VR128X)),
4278 def : Pat<(v4f32 (X86selects VK1WM:$mask, (v4f32 VR128X:$src1), (v4f32 VR128X:$src2))),
4279 (VMOVSSZrrk VR128X:$src2, VK1WM:$mask, VR128X:$src1, VR128X:$src1)>;
4280 def : Pat<(v2f64 (X86selects VK1WM:$mask, (v2f64 VR128X:$src1), (v2f64 VR128X:$src2))),
4281 (VMOVSDZrrk VR128X:$src2, VK1WM:$mask, VR128X:$src1, VR128X:$src1)>;
4291 (ins VR128X:$src1, VR128X:$src2),
4292 "vmovsh\t{$src2, $src1, $dst|$dst, $src1, $src2}",
4299 VR128X:$src1, VR128X:$src2),
4300 "vmovsh\t{$src2, $src1, $dst {${mask}}|"#
4301 "$dst {${mask}}, $src1, $src2}",
4306 (ins f16x_info.KRCWM:$mask, VR128X:$src1, VR128X:$src2),
4307 "vmovsh\t{$src2, $src1, $dst {${mask}} {z}|"#
4308 "$dst {${mask}} {z}, $src1, $src2}",
4313 (ins VR128X:$src1, VR128X:$src2),
4314 "vmovss\t{$src2, $src1, $dst|$dst, $src1, $src2}",
4321 VR128X:$src1, VR128X:$src2),
4322 "vmovss\t{$src2, $src1, $dst {${mask}}|"#
4323 "$dst {${mask}}, $src1, $src2}",
4328 (ins f32x_info.KRCWM:$mask, VR128X:$src1, VR128X:$src2),
4329 "vmovss\t{$src2, $src1, $dst {${mask}} {z}|"#
4330 "$dst {${mask}} {z}, $src1, $src2}",
4335 (ins VR128X:$src1, VR128X:$src2),
4336 "vmovsd\t{$src2, $src1, $dst|$dst, $src1, $src2}",
4343 VR128X:$src1, VR128X:$src2),
4344 "vmovsd\t{$src2, $src1, $dst {${mask}}|"#
4345 "$dst {${mask}}, $src1, $src2}",
4351 VR128X:$src2),
4352 "vmovsd\t{$src2, $src1, $dst {${mask}} {z}|"#
4353 "$dst {${mask}} {z}, $src1, $src2}",
4358 def : InstAlias<"vmovsh.s\t{$src2, $src1, $dst|$dst, $src1, $src2}",
4359 (VMOVSHZrr_REV VR128X:$dst, VR128X:$src1, VR128X:$src2), 0>;
4360 def : InstAlias<"vmovsh.s\t{$src2, $src1, $dst {${mask}}|"#
4361 "$dst {${mask}}, $src1, $src2}",
4363 VR128X:$src1, VR128X:$src2), 0>;
4364 def : InstAlias<"vmovsh.s\t{$src2, $src1, $dst {${mask}} {z}|"#
4365 "$dst {${mask}} {z}, $src1, $src2}",
4367 VR128X:$src1, VR128X:$src2), 0>;
4368 def : InstAlias<"vmovss.s\t{$src2, $src1, $dst|$dst, $src1, $src2}",
4369 (VMOVSSZrr_REV VR128X:$dst, VR128X:$src1, VR128X:$src2), 0>;
4370 def : InstAlias<"vmovss.s\t{$src2, $src1, $dst {${mask}}|"#
4371 "$dst {${mask}}, $src1, $src2}",
4373 VR128X:$src1, VR128X:$src2), 0>;
4374 def : InstAlias<"vmovss.s\t{$src2, $src1, $dst {${mask}} {z}|"#
4375 "$dst {${mask}} {z}, $src1, $src2}",
4377 VR128X:$src1, VR128X:$src2), 0>;
4378 def : InstAlias<"vmovsd.s\t{$src2, $src1, $dst|$dst, $src1, $src2}",
4379 (VMOVSDZrr_REV VR128X:$dst, VR128X:$src1, VR128X:$src2), 0>;
4380 def : InstAlias<"vmovsd.s\t{$src2, $src1, $dst {${mask}}|"#
4381 "$dst {${mask}}, $src1, $src2}",
4383 VR128X:$src1, VR128X:$src2), 0>;
4384 def : InstAlias<"vmovsd.s\t{$src2, $src1, $dst {${mask}} {z}|"#
4385 "$dst {${mask}} {z}, $src1, $src2}",
4387 VR128X:$src1, VR128X:$src2), 0>;
4669 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
4670 "$src2, $src1", "$src1, $src2",
4671 (_.VT (OpNode _.RC:$src1, _.RC:$src2)),
4676 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
4677 "$src2, $src1", "$src1, $src2",
4678 (_.VT (OpNode _.RC:$src1, (_.LdFrag addr:$src2)))>,
4688 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr,
4689 "${src2}"#_.BroadcastStr#", $src1",
4690 "$src1, ${src2}"#_.BroadcastStr,
4692 (_.BroadcastLdFrag addr:$src2)))>,
4797 (ins _Src.RC:$src1, _Src.RC:$src2), OpcodeStr,
4798 "$src2, $src1","$src1, $src2",
4801 (_Src.VT _Src.RC:$src2))),
4805 (ins _Src.RC:$src1, _Src.MemOp:$src2), OpcodeStr,
4806 "$src2, $src1", "$src1, $src2",
4808 (_Src.LdFrag addr:$src2)))>,
4813 (ins _Src.RC:$src1, _Brdct.ScalarMemOp:$src2),
4815 "${src2}"#_Brdct.BroadcastStr#", $src1",
4816 "$src1, ${src2}"#_Brdct.BroadcastStr,
4818 (_Brdct.VT (_Brdct.BroadcastLdFrag addr:$src2)))))>,
4884 (ins _Src.RC:$src1, _Src.ScalarMemOp:$src2),
4886 "${src2}"#_Src.BroadcastStr#", $src1",
4887 "$src1, ${src2}"#_Src.BroadcastStr,
4889 (_Src.VT (_Src.BroadcastLdFrag addr:$src2)))))>,
4899 (ins _Src.RC:$src1, _Src.RC:$src2), OpcodeStr,
4900 "$src2, $src1","$src1, $src2",
4903 (_Src.VT _Src.RC:$src2))),
4907 (ins _Src.RC:$src1, _Src.MemOp:$src2), OpcodeStr,
4908 "$src2, $src1", "$src1, $src2",
4910 (_Src.LdFrag addr:$src2)))>,
5015 def : Pat<(v4i64 (mul (v4i64 VR256X:$src1), (v4i64 VR256X:$src2))),
5019 (INSERT_SUBREG (v8i64 (IMPLICIT_DEF)), VR256X:$src2, sub_ymm)),
5021 def : Pat<(v4i64 (mul (v4i64 VR256X:$src1), (v4i64 (X86VBroadcastld64 addr:$src2)))),
5025 addr:$src2),
5028 def : Pat<(v2i64 (mul (v2i64 VR128X:$src1), (v2i64 VR128X:$src2))),
5032 (INSERT_SUBREG (v8i64 (IMPLICIT_DEF)), VR128X:$src2, sub_xmm)),
5034 def : Pat<(v2i64 (mul (v2i64 VR128X:$src1), (v2i64 (X86VBroadcastld64 addr:$src2)))),
5038 addr:$src2),
5043 def : Pat<(v4i64 (OpNode VR256X:$src1, VR256X:$src2)),
5047 (INSERT_SUBREG (v8i64 (IMPLICIT_DEF)), VR256X:$src2, sub_ymm)),
5049 def : Pat<(v4i64 (OpNode (v4i64 VR256X:$src1), (v4i64 (X86VBroadcastld64 addr:$src2)))),
5053 addr:$src2),
5056 def : Pat<(v2i64 (OpNode VR128X:$src1, VR128X:$src2)),
5060 (INSERT_SUBREG (v8i64 (IMPLICIT_DEF)), VR128X:$src2, sub_xmm)),
5062 def : Pat<(v2i64 (OpNode (v2i64 VR128X:$src1), (v2i64 (X86VBroadcastld64 addr:$src2)))),
5066 addr:$src2),
5091 def : Pat<(v16i8 (and VR128X:$src1, VR128X:$src2)),
5092 (VPANDQZ128rr VR128X:$src1, VR128X:$src2)>;
5093 def : Pat<(v8i16 (and VR128X:$src1, VR128X:$src2)),
5094 (VPANDQZ128rr VR128X:$src1, VR128X:$src2)>;
5096 def : Pat<(v16i8 (or VR128X:$src1, VR128X:$src2)),
5097 (VPORQZ128rr VR128X:$src1, VR128X:$src2)>;
5098 def : Pat<(v8i16 (or VR128X:$src1, VR128X:$src2)),
5099 (VPORQZ128rr VR128X:$src1, VR128X:$src2)>;
5101 def : Pat<(v16i8 (xor VR128X:$src1, VR128X:$src2)),
5102 (VPXORQZ128rr VR128X:$src1, VR128X:$src2)>;
5103 def : Pat<(v8i16 (xor VR128X:$src1, VR128X:$src2)),
5104 (VPXORQZ128rr VR128X:$src1, VR128X:$src2)>;
5106 def : Pat<(v16i8 (X86andnp VR128X:$src1, VR128X:$src2)),
5107 (VPANDNQZ128rr VR128X:$src1, VR128X:$src2)>;
5108 def : Pat<(v8i16 (X86andnp VR128X:$src1, VR128X:$src2)),
5109 (VPANDNQZ128rr VR128X:$src1, VR128X:$src2)>;
5111 def : Pat<(and VR128X:$src1, (loadv16i8 addr:$src2)),
5112 (VPANDQZ128rm VR128X:$src1, addr:$src2)>;
5113 def : Pat<(and VR128X:$src1, (loadv8i16 addr:$src2)),
5114 (VPANDQZ128rm VR128X:$src1, addr:$src2)>;
5116 def : Pat<(or VR128X:$src1, (loadv16i8 addr:$src2)),
5117 (VPORQZ128rm VR128X:$src1, addr:$src2)>;
5118 def : Pat<(or VR128X:$src1, (loadv8i16 addr:$src2)),
5119 (VPORQZ128rm VR128X:$src1, addr:$src2)>;
5121 def : Pat<(xor VR128X:$src1, (loadv16i8 addr:$src2)),
5122 (VPXORQZ128rm VR128X:$src1, addr:$src2)>;
5123 def : Pat<(xor VR128X:$src1, (loadv8i16 addr:$src2)),
5124 (VPXORQZ128rm VR128X:$src1, addr:$src2)>;
5126 def : Pat<(X86andnp VR128X:$src1, (loadv16i8 addr:$src2)),
5127 (VPANDNQZ128rm VR128X:$src1, addr:$src2)>;
5128 def : Pat<(X86andnp VR128X:$src1, (loadv8i16 addr:$src2)),
5129 (VPANDNQZ128rm VR128X:$src1, addr:$src2)>;
5131 def : Pat<(v32i8 (and VR256X:$src1, VR256X:$src2)),
5132 (VPANDQZ256rr VR256X:$src1, VR256X:$src2)>;
5133 def : Pat<(v16i16 (and VR256X:$src1, VR256X:$src2)),
5134 (VPANDQZ256rr VR256X:$src1, VR256X:$src2)>;
5136 def : Pat<(v32i8 (or VR256X:$src1, VR256X:$src2)),
5137 (VPORQZ256rr VR256X:$src1, VR256X:$src2)>;
5138 def : Pat<(v16i16 (or VR256X:$src1, VR256X:$src2)),
5139 (VPORQZ256rr VR256X:$src1, VR256X:$src2)>;
5141 def : Pat<(v32i8 (xor VR256X:$src1, VR256X:$src2)),
5142 (VPXORQZ256rr VR256X:$src1, VR256X:$src2)>;
5143 def : Pat<(v16i16 (xor VR256X:$src1, VR256X:$src2)),
5144 (VPXORQZ256rr VR256X:$src1, VR256X:$src2)>;
5146 def : Pat<(v32i8 (X86andnp VR256X:$src1, VR256X:$src2)),
5147 (VPANDNQZ256rr VR256X:$src1, VR256X:$src2)>;
5148 def : Pat<(v16i16 (X86andnp VR256X:$src1, VR256X:$src2)),
5149 (VPANDNQZ256rr VR256X:$src1, VR256X:$src2)>;
5151 def : Pat<(and VR256X:$src1, (loadv32i8 addr:$src2)),
5152 (VPANDQZ256rm VR256X:$src1, addr:$src2)>;
5153 def : Pat<(and VR256X:$src1, (loadv16i16 addr:$src2)),
5154 (VPANDQZ256rm VR256X:$src1, addr:$src2)>;
5156 def : Pat<(or VR256X:$src1, (loadv32i8 addr:$src2)),
5157 (VPORQZ256rm VR256X:$src1, addr:$src2)>;
5158 def : Pat<(or VR256X:$src1, (loadv16i16 addr:$src2)),
5159 (VPORQZ256rm VR256X:$src1, addr:$src2)>;
5161 def : Pat<(xor VR256X:$src1, (loadv32i8 addr:$src2)),
5162 (VPXORQZ256rm VR256X:$src1, addr:$src2)>;
5163 def : Pat<(xor VR256X:$src1, (loadv16i16 addr:$src2)),
5164 (VPXORQZ256rm VR256X:$src1, addr:$src2)>;
5166 def : Pat<(X86andnp VR256X:$src1, (loadv32i8 addr:$src2)),
5167 (VPANDNQZ256rm VR256X:$src1, addr:$src2)>;
5168 def : Pat<(X86andnp VR256X:$src1, (loadv16i16 addr:$src2)),
5169 (VPANDNQZ256rm VR256X:$src1, addr:$src2)>;
5173 def : Pat<(v64i8 (and VR512:$src1, VR512:$src2)),
5174 (VPANDQZrr VR512:$src1, VR512:$src2)>;
5175 def : Pat<(v32i16 (and VR512:$src1, VR512:$src2)),
5176 (VPANDQZrr VR512:$src1, VR512:$src2)>;
5178 def : Pat<(v64i8 (or VR512:$src1, VR512:$src2)),
5179 (VPORQZrr VR512:$src1, VR512:$src2)>;
5180 def : Pat<(v32i16 (or VR512:$src1, VR512:$src2)),
5181 (VPORQZrr VR512:$src1, VR512:$src2)>;
5183 def : Pat<(v64i8 (xor VR512:$src1, VR512:$src2)),
5184 (VPXORQZrr VR512:$src1, VR512:$src2)>;
5185 def : Pat<(v32i16 (xor VR512:$src1, VR512:$src2)),
5186 (VPXORQZrr VR512:$src1, VR512:$src2)>;
5188 def : Pat<(v64i8 (X86andnp VR512:$src1, VR512:$src2)),
5189 (VPANDNQZrr VR512:$src1, VR512:$src2)>;
5190 def : Pat<(v32i16 (X86andnp VR512:$src1, VR512:$src2)),
5191 (VPANDNQZrr VR512:$src1, VR512:$src2)>;
5193 def : Pat<(and VR512:$src1, (loadv64i8 addr:$src2)),
5194 (VPANDQZrm VR512:$src1, addr:$src2)>;
5195 def : Pat<(and VR512:$src1, (loadv32i16 addr:$src2)),
5196 (VPANDQZrm VR512:$src1, addr:$src2)>;
5198 def : Pat<(or VR512:$src1, (loadv64i8 addr:$src2)),
5199 (VPORQZrm VR512:$src1, addr:$src2)>;
5200 def : Pat<(or VR512:$src1, (loadv32i16 addr:$src2)),
5201 (VPORQZrm VR512:$src1, addr:$src2)>;
5203 def : Pat<(xor VR512:$src1, (loadv64i8 addr:$src2)),
5204 (VPXORQZrm VR512:$src1, addr:$src2)>;
5205 def : Pat<(xor VR512:$src1, (loadv32i16 addr:$src2)),
5206 (VPXORQZrm VR512:$src1, addr:$src2)>;
5208 def : Pat<(X86andnp VR512:$src1, (loadv64i8 addr:$src2)),
5209 (VPANDNQZrm VR512:$src1, addr:$src2)>;
5210 def : Pat<(X86andnp VR512:$src1, (loadv32i16 addr:$src2)),
5211 (VPANDNQZrm VR512:$src1, addr:$src2)>;
5220 (bitconvert (IntInfo.VT (OpNode _.RC:$src1, _.RC:$src2))),
5223 _.RC:$src1, _.RC:$src2)>;
5226 (bitconvert (IntInfo.VT (OpNode _.RC:$src1, _.RC:$src2))),
5229 _.RC:$src2)>;
5234 (load addr:$src2)))),
5237 _.RC:$src1, addr:$src2)>;
5240 (load addr:$src2)))),
5243 addr:$src2)>;
5253 (IntInfo.VT (IntInfo.BroadcastLdFrag addr:$src2))))),
5256 _.RC:$src1, addr:$src2)>;
5260 (IntInfo.VT (IntInfo.BroadcastLdFrag addr:$src2))))),
5263 _.RC:$src1, addr:$src2)>;
5355 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
5356 "$src2, $src1", "$src1, $src2",
5357 (_.VT (VecNode _.RC:$src1, _.RC:$src2))>,
5361 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
5362 "$src2, $src1", "$src1, $src2",
5364 (_.ScalarIntMemFrags addr:$src2)))>,
5368 (ins _.FRC:$src1, _.FRC:$src2),
5369 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
5370 [(set _.FRC:$dst, (OpNode _.FRC:$src1, _.FRC:$src2))]>,
5375 (ins _.FRC:$src1, _.ScalarMemOp:$src2),
5376 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
5378 (_.ScalarLdFrag addr:$src2)))]>,
5388 (ins _.RC:$src1, _.RC:$src2, AVX512RC:$rc), OpcodeStr,
5389 "$rc, $src2, $src1", "$src1, $src2, $rc",
5390 (VecNode (_.VT _.RC:$src1), (_.VT _.RC:$src2),
5399 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
5400 "$src2, $src1", "$src1, $src2",
5401 (_.VT (VecNode _.RC:$src1, _.RC:$src2))>,
5405 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
5406 "$src2, $src1", "$src1, $src2",
5408 (_.ScalarIntMemFrags addr:$src2)))>,
5414 (ins _.FRC:$src1, _.FRC:$src2),
5415 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
5416 [(set _.FRC:$dst, (OpNode _.FRC:$src1, _.FRC:$src2))]>,
5421 (ins _.FRC:$src1, _.ScalarMemOp:$src2),
5422 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
5424 (_.ScalarLdFrag addr:$src2)))]>,
5430 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
5431 "{sae}, $src2, $src1", "$src1, $src2, {sae}",
5432 (SaeNode (_.VT _.RC:$src1), (_.VT _.RC:$src2))>,
5493 (ins _.FRC:$src1, _.FRC:$src2),
5494 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
5495 [(set _.FRC:$dst, (OpNode _.FRC:$src1, _.FRC:$src2))]>,
5500 (ins _.FRC:$src1, _.ScalarMemOp:$src2),
5501 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
5503 (_.ScalarLdFrag addr:$src2)))]>,
5544 (ins _.RC:$src1, _.RC:$src2), OpcodeStr#suffix,
5545 "$src2, $src1", "$src1, $src2",
5546 (_.VT (OpNode _.RC:$src1, _.RC:$src2)),
5547 (_.VT (MaskOpNode _.RC:$src1, _.RC:$src2)), ClobberConstraint,
5551 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr#suffix,
5552 "$src2, $src1", "$src1, $src2",
5553 (OpNode _.RC:$src1, (_.LdFrag addr:$src2)),
5554 (MaskOpNode _.RC:$src1, (_.LdFrag addr:$src2)),
5557 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr#suffix,
5558 "${src2}"#_.BroadcastStr#", $src1",
5559 "$src1, ${src2}"#_.BroadcastStr,
5560 (OpNode _.RC:$src1, (_.VT (_.BroadcastLdFrag addr:$src2))),
5561 (MaskOpNode _.RC:$src1, (_.VT (_.BroadcastLdFrag addr:$src2))),
5574 (ins _.RC:$src1, _.RC:$src2, AVX512RC:$rc), OpcodeStr#suffix,
5575 "$rc, $src2, $src1", "$src1, $src2, $rc",
5576 (_.VT (OpNodeRnd _.RC:$src1, _.RC:$src2, (i32 timm:$rc))),
5586 (ins _.RC:$src1, _.RC:$src2), OpcodeStr#_.Suffix,
5587 "{sae}, $src2, $src1", "$src1, $src2, {sae}",
5588 (_.VT (OpNodeSAE _.RC:$src1, _.RC:$src2))>,
5723 (ins _.RC:$src1, _.RC:$src2), OpcodeStr#_.Suffix,
5724 "$src2, $src1", "$src1, $src2",
5725 (_.VT (OpNode _.RC:$src1, _.RC:$src2))>,
5728 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr#_.Suffix,
5729 "$src2, $src1", "$src1, $src2",
5730 (OpNode _.RC:$src1, (_.LdFrag addr:$src2))>,
5733 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr#_.Suffix,
5734 "${src2}"#_.BroadcastStr#", $src1",
5735 "$src1, ${src2}"#_.BroadcastStr,
5736 (OpNode _.RC:$src1, (_.VT (_.BroadcastLdFrag addr:$src2)))>,
5745 (ins _.RC:$src1, _.RC:$src2), OpcodeStr#_.Suffix,
5746 "$src2, $src1", "$src1, $src2",
5747 (_.VT (OpNode _.RC:$src1, _.RC:$src2))>,
5750 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr#_.Suffix,
5751 "$src2, $src1", "$src1, $src2",
5752 (OpNode _.RC:$src1, (_.ScalarIntMemFrags addr:$src2))>,
5813 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
5814 "$src2, $src1", "$src1, $src2",
5819 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
5820 "$src2, $src1", "$src1, $src2",
5831 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr,
5832 "${src2}"#_.BroadcastStr#", $src1",
5833 "$src1, ${src2}"#_.BroadcastStr,
5902 (ins _.RC:$src1, u8imm:$src2), OpcodeStr,
5903 "$src2, $src1", "$src1, $src2",
5904 (_.VT (OpNode _.RC:$src1, (i8 timm:$src2)))>,
5907 (ins _.MemOp:$src1, u8imm:$src2), OpcodeStr,
5908 "$src2, $src1", "$src1, $src2",
5910 (i8 timm:$src2)))>,
5920 (ins _.ScalarMemOp:$src1, u8imm:$src2), OpcodeStr,
5921 "$src2, ${src1}"#_.BroadcastStr, "${src1}"#_.BroadcastStr#", $src2",
5922 (_.VT (OpNode (_.BroadcastLdFrag addr:$src1), (i8 timm:$src2)))>,
5929 // src2 is always 128-bit
5932 (ins _.RC:$src1, VR128X:$src2), OpcodeStr,
5933 "$src2, $src1", "$src1, $src2",
5934 (_.VT (OpNode _.RC:$src1, (SrcVT VR128X:$src2)))>,
5937 (ins _.RC:$src1, i128mem:$src2), OpcodeStr,
5938 "$src2, $src1", "$src1, $src2",
5939 (_.VT (OpNode _.RC:$src1, (SrcVT (load addr:$src2))))>,
6048 def : Pat<(v4i64 (X86vsra (v4i64 VR256X:$src1), (v2i64 VR128X:$src2))),
6052 VR128X:$src2)), sub_ymm)>;
6054 def : Pat<(v2i64 (X86vsra (v2i64 VR128X:$src1), (v2i64 VR128X:$src2))),
6058 VR128X:$src2)), sub_xmm)>;
6060 def : Pat<(v4i64 (X86vsrai (v4i64 VR256X:$src1), (i8 timm:$src2))),
6064 timm:$src2)), sub_ymm)>;
6066 def : Pat<(v2i64 (X86vsrai (v2i64 VR128X:$src1), (i8 timm:$src2))),
6070 timm:$src2)), sub_xmm)>;
6081 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
6082 "$src2, $src1", "$src1, $src2",
6083 (_.VT (OpNode _.RC:$src1, (_.VT _.RC:$src2)))>,
6086 (ins _.RC:$src1, _.MemOp:$src2), OpcodeStr,
6087 "$src2, $src1", "$src1, $src2",
6089 (_.VT (_.LdFrag addr:$src2))))>,
6099 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr,
6100 "${src2}"#_.BroadcastStr#", $src1",
6101 "$src1, ${src2}"#_.BroadcastStr,
6102 (_.VT (OpNode _.RC:$src1, (_.VT (_.BroadcastLdFrag addr:$src2))))>,
6134 (_.info256.VT _.info256.RC:$src2))),
6138 (INSERT_SUBREG (_.info512.VT (IMPLICIT_DEF)), VR256X:$src2, sub_ymm)),
6142 (_.info128.VT _.info128.RC:$src2))),
6146 (INSERT_SUBREG (_.info512.VT (IMPLICIT_DEF)), VR128X:$src2, sub_xmm)),
6184 def : Pat<(v2i64 (rotl (v2i64 VR128X:$src1), (v2i64 VR128X:$src2))),
6188 (v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src2, sub_xmm)))),
6190 def : Pat<(v4i64 (rotl (v4i64 VR256X:$src1), (v4i64 VR256X:$src2))),
6194 (v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src2, sub_ymm)))),
6197 def : Pat<(v4i32 (rotl (v4i32 VR128X:$src1), (v4i32 VR128X:$src2))),
6201 (v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src2, sub_xmm)))),
6203 def : Pat<(v8i32 (rotl (v8i32 VR256X:$src1), (v8i32 VR256X:$src2))),
6207 (v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src2, sub_ymm)))),
6210 def : Pat<(v2i64 (X86vrotli (v2i64 VR128X:$src1), (i8 timm:$src2))),
6214 timm:$src2)), sub_xmm)>;
6215 def : Pat<(v4i64 (X86vrotli (v4i64 VR256X:$src1), (i8 timm:$src2))),
6219 timm:$src2)), sub_ymm)>;
6221 def : Pat<(v4i32 (X86vrotli (v4i32 VR128X:$src1), (i8 timm:$src2))),
6225 timm:$src2)), sub_xmm)>;
6226 def : Pat<(v8i32 (X86vrotli (v8i32 VR256X:$src1), (i8 timm:$src2))),
6230 timm:$src2)), sub_ymm)>;
6235 def : Pat<(v2i64 (rotr (v2i64 VR128X:$src1), (v2i64 VR128X:$src2))),
6239 (v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src2, sub_xmm)))),
6241 def : Pat<(v4i64 (rotr (v4i64 VR256X:$src1), (v4i64 VR256X:$src2))),
6245 (v8i64 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src2, sub_ymm)))),
6248 def : Pat<(v4i32 (rotr (v4i32 VR128X:$src1), (v4i32 VR128X:$src2))),
6252 (v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR128X:$src2, sub_xmm)))),
6254 def : Pat<(v8i32 (rotr (v8i32 VR256X:$src1), (v8i32 VR256X:$src2))),
6258 (v16i32 (INSERT_SUBREG (IMPLICIT_DEF), VR256X:$src2, sub_ymm)))),
6261 def : Pat<(v2i64 (X86vrotri (v2i64 VR128X:$src1), (i8 timm:$src2))),
6265 timm:$src2)), sub_xmm)>;
6266 def : Pat<(v4i64 (X86vrotri (v4i64 VR256X:$src1), (i8 timm:$src2))),
6270 timm:$src2)), sub_ymm)>;
6272 def : Pat<(v4i32 (X86vrotri (v4i32 VR128X:$src1), (i8 timm:$src2))),
6276 timm:$src2)), sub_xmm)>;
6277 def : Pat<(v8i32 (X86vrotri (v8i32 VR256X:$src1), (i8 timm:$src2))),
6281 timm:$src2)), sub_ymm)>;
6357 (ins _.RC:$src1, Ctrl.RC:$src2), OpcodeStr,
6358 "$src2, $src1", "$src1, $src2",
6360 (Ctrl.VT Ctrl.RC:$src2)))>,
6363 (ins _.RC:$src1, Ctrl.MemOp:$src2), OpcodeStr,
6364 "$src2, $src1", "$src1, $src2",
6367 (Ctrl.VT (Ctrl.LdFrag addr:$src2))))>,
6371 (ins _.RC:$src1, _.ScalarMemOp:$src2), OpcodeStr,
6372 "${src2}"#_.BroadcastStr#", $src1",
6373 "$src1, ${src2}"#_.BroadcastStr,
6376 (Ctrl.VT (Ctrl.BroadcastLdFrag addr:$src2))))>,
6453 (ins VR128X:$src1, VR128X:$src2),
6454 "vmovlhps\t{$src2, $src1, $dst|$dst, $src1, $src2}",
6455 [(set VR128X:$dst, (v4f32 (X86Movlhps VR128X:$src1, VR128X:$src2)))]>,
6459 (ins VR128X:$src1, VR128X:$src2),
6460 "vmovhlps\t{$src2, $src1, $dst|$dst, $src1, $src2}",
6461 [(set VR128X:$dst, (v4f32 (X86Movhlps VR128X:$src1, VR128X:$src2)))]>,
6474 (ins _.RC:$src1, f64mem:$src2),
6476 "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
6480 (v2f64 (scalar_to_vector (loadf64 addr:$src2)))))))]>,
6497 def : Pat<(v2f64 (X86Unpckl VR128X:$src1, (X86vzload64 addr:$src2))),
6498 (VMOVHPDZ128rm VR128X:$src1, addr:$src2)>;
6501 def : Pat<(v2f64 (X86Movsd VR128X:$src1, (X86vzload64 addr:$src2))),
6502 (VMOVLPDZ128rm VR128X:$src1, addr:$src2)>;
6548 (ins _.RC:$src2, _.RC:$src3),
6549 OpcodeStr, "$src3, $src2", "$src2, $src3",
6550 (_.VT (OpNode _.RC:$src2, _.RC:$src1, _.RC:$src3)),
6551 (_.VT (MaskOpNode _.RC:$src2, _.RC:$src1, _.RC:$src3)), 1, 1>,
6555 (ins _.RC:$src2, _.MemOp:$src3),
6556 OpcodeStr, "$src3, $src2", "$src2, $src3",
6557 (_.VT (OpNode _.RC:$src2, _.RC:$src1, (_.LdFrag addr:$src3))),
6558 (_.VT (MaskOpNode _.RC:$src2, _.RC:$src1, (_.LdFrag addr:$src3))), 1, 0>,
6563 (ins _.RC:$src2, _.ScalarMemOp:$src3),
6564 OpcodeStr, !strconcat("${src3}", _.BroadcastStr,", $src2"),
6565 !strconcat("$src2, ${src3}", _.BroadcastStr ),
6566 (OpNode _.RC:$src2,
6568 (MaskOpNode _.RC:$src2,
6581 (ins _.RC:$src2, _.RC:$src3, AVX512RC:$rc),
6582 OpcodeStr, "$rc, $src3, $src2", "$src2, $src3, $rc",
6583 (_.VT ( OpNode _.RC:$src2, _.RC:$src1, _.RC:$src3, (i32 timm:$rc))),
6584 (_.VT ( OpNode _.RC:$src2, _.RC:$src1, _.RC:$src3, (i32 timm:$rc))), 1, 1>,
6643 (ins _.RC:$src2, _.RC:$src3),
6644 OpcodeStr, "$src3, $src2", "$src2, $src3",
6646 (_.VT (MaskOpNode _.RC:$src2, _.RC:$src3, _.RC:$src1)), 1, 1>,
6650 (ins _.RC:$src2, _.MemOp:$src3),
6651 OpcodeStr, "$src3, $src2", "$src2, $src3",
6652 (_.VT (OpNode _.RC:$src2, (_.LdFrag addr:$src3), _.RC:$src1)),
6653 (_.VT (MaskOpNode _.RC:$src2, (_.LdFrag addr:$src3), _.RC:$src1)), 1, 0>,
6658 (ins _.RC:$src2, _.ScalarMemOp:$src3),
6659 OpcodeStr, "${src3}"#_.BroadcastStr#", $src2",
6660 "$src2, ${src3}"#_.BroadcastStr,
6661 (_.VT (OpNode _.RC:$src2,
6664 (_.VT (MaskOpNode _.RC:$src2,
6678 (ins _.RC:$src2, _.RC:$src3, AVX512RC:$rc),
6679 OpcodeStr, "$rc, $src3, $src2", "$src2, $src3, $rc",
6681 (_.VT (OpNode _.RC:$src2, _.RC:$src3, _.RC:$src1, (i32 timm:$rc))),
6739 (ins _.RC:$src2, _.RC:$src3),
6740 OpcodeStr, "$src3, $src2", "$src2, $src3",
6742 (_.VT (MaskOpNode _.RC:$src1, _.RC:$src3, _.RC:$src2)), 1, 1>,
6748 (ins _.RC:$src2, _.MemOp:$src3),
6749 OpcodeStr, "$src3, $src2", "$src2, $src3",
6750 (_.VT (OpNode (_.LdFrag addr:$src3), _.RC:$src1, _.RC:$src2)),
6751 (_.VT (MaskOpNode (_.LdFrag addr:$src3), _.RC:$src1, _.RC:$src2)), 1, 0>,
6758 (ins _.RC:$src2, _.ScalarMemOp:$src3),
6759 OpcodeStr, "${src3}"#_.BroadcastStr#", $src2",
6760 "$src2, ${src3}"#_.BroadcastStr,
6762 _.RC:$src1, _.RC:$src2)),
6764 _.RC:$src1, _.RC:$src2)), 1, 0>,
6776 (ins _.RC:$src2, _.RC:$src3, AVX512RC:$rc),
6777 OpcodeStr, "$rc, $src3, $src2", "$src2, $src3, $rc",
6779 (_.VT (OpNode _.RC:$src1, _.RC:$src3, _.RC:$src2, (i32 timm:$rc))),
6836 (ins _.RC:$src2, _.RC:$src3), OpcodeStr,
6837 "$src3, $src2", "$src2, $src3", (null_frag), 1, 1>,
6842 (ins _.RC:$src2, _.IntScalarMemOp:$src3), OpcodeStr,
6843 "$src3, $src2", "$src2, $src3", (null_frag), 1, 1>,
6849 (ins _.RC:$src2, _.RC:$src3, AVX512RC:$rc),
6850 OpcodeStr, "$rc, $src3, $src2", "$src2, $src3, $rc", (null_frag), 1, 1>,
6855 (ins _.FRC:$src1, _.FRC:$src2, _.FRC:$src3),
6857 "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
6860 (ins _.FRC:$src1, _.FRC:$src2, _.ScalarMemOp:$src3),
6862 "\t{$src3, $src2, $dst|$dst, $src2, $src3}"),
6868 (ins _.FRC:$src1, _.FRC:$src2, _.FRC:$src3, AVX512RC:$rc),
6870 "\t{$rc, $src3, $src2, $dst|$dst, $src2, $src3, $rc}"),
6884 (set _.FRC:$dst, (_.EltVT (OpNode _.FRC:$src2, _.FRC:$src1,
6886 (set _.FRC:$dst, (_.EltVT (OpNode _.FRC:$src2, _.FRC:$src1,
6888 (set _.FRC:$dst, (_.EltVT (OpNodeRnd _.FRC:$src2, _.FRC:$src1,
6892 (set _.FRC:$dst, (_.EltVT (OpNode _.FRC:$src2, _.FRC:$src3,
6894 (set _.FRC:$dst, (_.EltVT (OpNode _.FRC:$src2,
6896 (set _.FRC:$dst, (_.EltVT (OpNodeRnd _.FRC:$src2, _.FRC:$src3,
6903 _.FRC:$src2))),
6905 _.FRC:$src1, _.FRC:$src2))),
6907 _.FRC:$src2, (i32 timm:$rc)))), 1>;
6940 (Op _.FRC:$src2,
6944 VR128X:$src1, (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
6948 (Op _.FRC:$src2, _.FRC:$src3,
6951 VR128X:$src1, (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
6955 (Op _.FRC:$src2,
6959 VR128X:$src1, (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
6964 (_.ScalarLdFrag addr:$src3), _.FRC:$src2))))),
6966 VR128X:$src1, (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
6970 (Op _.FRC:$src2, (_.ScalarLdFrag addr:$src3),
6973 VR128X:$src1, (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
6978 (MaskedOp _.FRC:$src2,
6984 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
6989 (MaskedOp _.FRC:$src2,
6995 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)), addr:$src3)>;
7000 (_.ScalarLdFrag addr:$src3), _.FRC:$src2),
7004 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)), addr:$src3)>;
7008 (MaskedOp _.FRC:$src2, _.FRC:$src3,
7013 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
7018 (MaskedOp _.FRC:$src2, (_.ScalarLdFrag addr:$src3),
7023 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)), addr:$src3)>;
7027 (MaskedOp _.FRC:$src2,
7033 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
7038 (MaskedOp _.FRC:$src2, _.FRC:$src3,
7043 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
7048 (MaskedOp _.FRC:$src2,
7054 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)), addr:$src3)>;
7059 _.FRC:$src2, (_.ScalarLdFrag addr:$src3)),
7063 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)), addr:$src3)>;
7067 (MaskedOp _.FRC:$src2, (_.ScalarLdFrag addr:$src3),
7072 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)), addr:$src3)>;
7076 (RndOp _.FRC:$src2,
7080 VR128X:$src1, (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
7084 (RndOp _.FRC:$src2, _.FRC:$src3,
7088 VR128X:$src1, (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
7093 (RndOp _.FRC:$src2,
7099 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
7104 (RndOp _.FRC:$src2, _.FRC:$src3,
7110 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
7115 (RndOp _.FRC:$src2,
7121 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
7126 (RndOp _.FRC:$src2, _.FRC:$src3,
7132 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)),
7173 (ins _.RC:$src2, _.RC:$src3),
7174 OpcodeStr, "$src3, $src2", "$src2, $src3",
7175 (_.VT (OpNode _.RC:$src2, _.RC:$src3, _.RC:$src1)), 1, 1>,
7179 (ins _.RC:$src2, _.MemOp:$src3),
7180 OpcodeStr, "$src3, $src2", "$src2, $src3",
7181 (_.VT (OpNode _.RC:$src2, (_.LdFrag addr:$src3), _.RC:$src1))>,
7186 (ins _.RC:$src2, _.ScalarMemOp:$src3),
7187 OpcodeStr, !strconcat("${src3}", _.BroadcastStr,", $src2"),
7188 !strconcat("$src2, ${src3}", _.BroadcastStr ),
7189 (OpNode _.RC:$src2,
7242 (ins DstVT.RC:$src1, SrcRC:$src2),
7243 !strconcat(asm,"\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
7245 (OpNode (DstVT.VT DstVT.RC:$src1), SrcRC:$src2))]>,
7249 (ins DstVT.RC:$src1, x86memop:$src2),
7250 asm#"{"#mem#"}\t{$src2, $src1, $dst|$dst, $src1, $src2}",
7253 (ld_frag addr:$src2)))]>,
7256 def : InstAlias<"v"#asm#mem#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
7258 DstVT.RC:$src1, SrcRC:$src2), 0, "att">;
7267 (ins DstVT.RC:$src1, SrcRC:$src2, AVX512RC:$rc),
7269 "\t{$src2, $rc, $src1, $dst|$dst, $src1, $rc, $src2}"),
7272 SrcRC:$src2,
7275 def : InstAlias<"v"#asm#mem#"\t{$src2, $rc, $src1, $dst|$dst, $src1, $rc, $src2}",
7277 DstVT.RC:$src1, SrcRC:$src2, AVX512RC:$rc), 0, "att">;
7629 (ins _.RC:$src1, _Src.RC:$src2), OpcodeStr,
7630 "$src2, $src1", "$src1, $src2",
7632 (_Src.VT _Src.RC:$src2)))>,
7635 (ins _.RC:$src1, _Src.IntScalarMemOp:$src2), OpcodeStr,
7636 "$src2, $src1", "$src1, $src2",
7638 (_Src.ScalarIntMemFrags addr:$src2)))>,
7644 (ins _.FRC:$src1, _Src.FRC:$src2),
7645 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
7649 (ins _.FRC:$src1, _Src.ScalarMemOp:$src2),
7650 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
7661 (ins _.RC:$src1, _Src.RC:$src2), OpcodeStr,
7662 "{sae}, $src2, $src1", "$src1, $src2, {sae}",
7664 (_Src.VT _Src.RC:$src2)))>,
7674 (ins _.RC:$src1, _Src.RC:$src2, AVX512RC:$rc), OpcodeStr,
7675 "$rc, $src2, $src1", "$src1, $src2, $rc",
7677 (_Src.VT _Src.RC:$src2), (i32 timm:$rc)))>,
8976 (ins _src.RC:$src1, i32u8imm:$src2),
8977 "vcvtps2ph\t{$src2, $src1, $dst|$dst, $src1, $src2}",
8979 (X86any_cvtps2ph (_src.VT _src.RC:$src1), (i32 timm:$src2)))]>,
8983 (ins _dest.RC:$src0, _src.KRCWM:$mask, _src.RC:$src1, i32u8imm:$src2),
8984 "vcvtps2ph\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}",
8986 (X86mcvtps2ph (_src.VT _src.RC:$src1), (i32 timm:$src2),
8990 (ins _src.KRCWM:$mask, _src.RC:$src1, i32u8imm:$src2),
8991 "vcvtps2ph\t{$src2, $src1, $dst {${mask}} {z}|$dst {${mask}} {z}, $src1, $src2}",
8993 (X86mcvtps2ph (_src.VT _src.RC:$src1), (i32 timm:$src2),
8998 (ins x86memop:$dst, _src.RC:$src1, i32u8imm:$src2),
8999 "vcvtps2ph\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
9002 (ins x86memop:$dst, _dest.KRCWM:$mask, _src.RC:$src1, i32u8imm:$src2),
9003 "vcvtps2ph\t{$src2, $src1, $dst {${mask}}|$dst {${mask}}, $src1, $src2}", []>,
9013 (ins _src.RC:$src1, i32u8imm:$src2),
9014 "vcvtps2ph\t{$src2, {sae}, $src1, $dst|$dst, $src1, {sae}, $src2}",
9016 (X86cvtps2phSAE (_src.VT _src.RC:$src1), (i32 timm:$src2)))]>,
9020 (ins _dest.RC:$src0, _src.KRCWM:$mask, _src.RC:$src1, i32u8imm:$src2),
9021 … "vcvtps2ph\t{$src2, {sae}, $src1, $dst {${mask}}|$dst {${mask}}, $src1, {sae}, $src2}",
9023 (X86mcvtps2phSAE (_src.VT _src.RC:$src1), (i32 timm:$src2),
9027 (ins _src.KRCWM:$mask, _src.RC:$src1, i32u8imm:$src2),
9028 … "vcvtps2ph\t{$src2, {sae}, $src1, $dst {${mask}} {z}|$dst {${mask}} {z}, $src1, {sae}, $src2}",
9030 (X86mcvtps2phSAE (_src.VT _src.RC:$src1), (i32 timm:$src2),
9042 def : Pat<(store (v16i16 (X86any_cvtps2ph VR512:$src1, timm:$src2)), addr:$dst),
9043 (VCVTPS2PHZmr addr:$dst, VR512:$src1, timm:$src2)>;
9055 (bc_v2f64 (v8i16 (X86any_cvtps2ph VR128X:$src1, timm:$src2))),
9057 (VCVTPS2PHZ128mr addr:$dst, VR128X:$src1, timm:$src2)>;
9059 (bc_v2i64 (v8i16 (X86any_cvtps2ph VR128X:$src1, timm:$src2))),
9061 (VCVTPS2PHZ128mr addr:$dst, VR128X:$src1, timm:$src2)>;
9062 def : Pat<(store (v8i16 (X86any_cvtps2ph VR256X:$src1, timm:$src2)), addr:$dst),
9063 (VCVTPS2PHZ256mr addr:$dst, VR256X:$src1, timm:$src2)>;
9071 def rrb: AVX512<opc, MRMSrcReg, (outs), (ins _.RC:$src1, _.RC:$src2),
9072 !strconcat(OpcodeStr, "\t{{sae}, $src2, $src1|$src1, $src2, {sae}}"), []>,
9147 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
9148 "$src2, $src1", "$src1, $src2",
9149 (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2))>,
9152 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
9153 "$src2, $src1", "$src1, $src2",
9155 (_.ScalarIntMemFrags addr:$src2))>, EVEX, VVVV, VEX_LIG,
9249 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
9250 "$src2, $src1", "$src1, $src2",
9251 (OpNode (_.VT _.RC:$src1), (_.VT _.RC:$src2))>,
9255 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
9256 "{sae}, $src2, $src1", "$src1, $src2, {sae}",
9257 (OpNodeSAE (_.VT _.RC:$src1), (_.VT _.RC:$src2))>,
9261 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
9262 "$src2, $src1", "$src1, $src2",
9263 (OpNode (_.VT _.RC:$src1), (_.ScalarIntMemFrags addr:$src2))>,
9272 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
9273 "$src2, $src1", "$src1, $src2",
9276 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
9277 "{sae}, $src2, $src1", "$src1, $src2, {sae}",
9281 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
9282 "$src2, $src1", "$src1, $src2",
9532 (ins _.RC:$src1, _.RC:$src2), OpcodeStr,
9533 "$src2, $src1", "$src1, $src2",
9535 (_.VT _.RC:$src2))>,
9538 (ins _.RC:$src1, _.IntScalarMemOp:$src2), OpcodeStr,
9539 "$src2, $src1", "$src1, $src2",
9541 (_.ScalarIntMemFrags addr:$src2))>,
9545 (ins _.RC:$src1, _.RC:$src2, AVX512RC:$rc), OpcodeStr,
9546 "$rc, $src2, $src1", "$src1, $src2, $rc",
9548 (_.VT _.RC:$src2),
9554 (ins _.FRC:$src1, _.FRC:$src2),
9555 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
9559 (ins _.FRC:$src1, _.ScalarMemOp:$src2),
9560 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
9597 (ins _.RC:$src1, _.RC:$src2, i32u8imm:$src3), OpcodeStr,
9598 "$src3, $src2, $src1", "$src1, $src2, $src3",
9599 (_.VT (X86RndScales (_.VT _.RC:$src1), (_.VT _.RC:$src2),
9605 (ins _.RC:$src1, _.RC:$src2, i32u8imm:$src3), OpcodeStr,
9606 "$src3, {sae}, $src2, $src1", "$src1, $src2, {sae}, $src3",
9607 (_.VT (X86RndScalesSAE (_.VT _.RC:$src1), (_.VT _.RC:$src2),
9612 (ins _.RC:$src1, _.IntScalarMemOp:$src2, i32u8imm:$src3),
9614 "$src3, $src2, $src1", "$src1, $src2, $src3",
9616 (_.ScalarIntMemFrags addr:$src2), (i32 timm:$src3)))>,
9621 (ins _.FRC:$src1, _.FRC:$src2, i32u8imm:$src3),
9622 OpcodeStr#"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
9627 (ins _.FRC:$src1, _.ScalarMemOp:$src2, i32u8imm:$src3),
9628 OpcodeStr#"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
9634 def : Pat<(X86any_VRndScale _.FRC:$src1, timm:$src2),
9636 _.FRC:$src1, timm:$src2))>;
9640 def : Pat<(X86any_VRndScale (_.ScalarLdFrag addr:$src1), timm:$src2),
9642 addr:$src1, timm:$src2))>;
9667 (OpNode (extractelt _.VT:$src2, (iPTR 0))),
9670 _.VT:$dst, OutMask, _.VT:$src2, _.VT:$src1)>;
9673 (OpNode (extractelt _.VT:$src2, (iPTR 0))),
9676 OutMask, _.VT:$src2, _.VT:$src1)>;
10261 (ins _.RC:$src1, MaskRC:$mask, memop:$src2),
10263 "\t{$src2, ${dst} {${mask}}|${dst} {${mask}}, $src2}"),
10649 (ins _.RC:$src1, i32u8imm:$src2),
10650 OpcodeStr#_.Suffix, "$src2, $src1", "$src1, $src2",
10651 (OpNode (_.VT _.RC:$src1), (i32 timm:$src2)),
10652 (MaskOpNode (_.VT _.RC:$src1), (i32 timm:$src2))>,
10655 (ins _.MemOp:$src1, i32u8imm:$src2),
10656 OpcodeStr#_.Suffix, "$src2, $src1", "$src1, $src2",
10658 (i32 timm:$src2)),
10660 (i32 timm:$src2))>,
10663 (ins _.ScalarMemOp:$src1, i32u8imm:$src2),
10664 OpcodeStr#_.Suffix, "$src2, ${src1}"#_.BroadcastStr,
10665 "${src1}"#_.BroadcastStr#", $src2",
10667 (i32 timm:$src2)),
10669 (i32 timm:$src2))>, EVEX_B,
10680 (ins _.RC:$src1, i32u8imm:$src2),
10681 OpcodeStr#_.Suffix, "$src2, {sae}, $src1",
10682 "$src1, {sae}, $src2",
10684 (i32 timm:$src2))>,
10714 (ins _.RC:$src1, _.RC:$src2, i32u8imm:$src3),
10715 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10717 (_.VT _.RC:$src2),
10721 (ins _.RC:$src1, _.MemOp:$src2, i32u8imm:$src3),
10722 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10724 (_.VT (bitconvert (_.LdFrag addr:$src2))),
10728 (ins _.RC:$src1, _.ScalarMemOp:$src2, i32u8imm:$src3),
10729 OpcodeStr, "$src3, ${src2}"#_.BroadcastStr#", $src1",
10730 "$src1, ${src2}"#_.BroadcastStr#", $src3",
10732 (_.VT (_.BroadcastLdFrag addr:$src2)),
10745 (ins SrcInfo.RC:$src1, SrcInfo.RC:$src2, u8imm:$src3),
10746 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10748 (SrcInfo.VT SrcInfo.RC:$src2),
10752 (ins SrcInfo.RC:$src1, SrcInfo.MemOp:$src2, u8imm:$src3),
10753 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10756 (SrcInfo.LdFrag addr:$src2))),
10771 (ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$src3),
10772 OpcodeStr, "$src3, ${src2}"#_.BroadcastStr#", $src1",
10773 "$src1, ${src2}"#_.BroadcastStr#", $src3",
10775 (_.VT (_.BroadcastLdFrag addr:$src2)),
10786 (ins _.RC:$src1, _.RC:$src2, i32u8imm:$src3),
10787 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10789 (_.VT _.RC:$src2),
10793 (ins _.RC:$src1, _.IntScalarMemOp:$src2, i32u8imm:$src3),
10794 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10796 (_.ScalarIntMemFrags addr:$src2),
10808 (ins _.RC:$src1, _.RC:$src2, i32u8imm:$src3),
10809 OpcodeStr, "$src3, {sae}, $src2, $src1",
10810 "$src1, $src2, {sae}, $src3",
10812 (_.VT _.RC:$src2),
10822 (ins _.RC:$src1, _.RC:$src2, i32u8imm:$src3),
10823 OpcodeStr, "$src3, {sae}, $src2, $src1",
10824 "$src1, $src2, {sae}, $src3",
10826 (_.VT _.RC:$src2),
10954 (ins _.RC:$src1, _.RC:$src2, u8imm:$src3),
10955 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10957 (CastInfo.VT (X86Shuf128 _.RC:$src1, _.RC:$src2,
10961 (ins _.RC:$src1, _.MemOp:$src2, u8imm:$src3),
10962 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
10966 (CastInfo.LdFrag addr:$src2),
10970 (ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$src3),
10971 OpcodeStr, "$src3, ${src2}"#_.BroadcastStr#", $src1",
10972 "$src1, ${src2}"#_.BroadcastStr#", $src3",
10977 (_.BroadcastLdFrag addr:$src2),
11008 (ins _.RC:$src1, _.RC:$src2, u8imm:$src3),
11009 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
11010 (_.VT (X86VAlign _.RC:$src1, _.RC:$src2, (i8 timm:$src3)))>,
11013 (ins _.RC:$src1, _.MemOp:$src2, u8imm:$src3),
11014 OpcodeStr, "$src3, $src2, $src1", "$src1, $src2, $src3",
11016 (bitconvert (_.LdFrag addr:$src2)),
11021 (ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$src3),
11022 OpcodeStr, "$src3, ${src2}"#_.BroadcastStr#", $src1",
11023 "$src1, ${src2}"#_.BroadcastStr#", $src3",
11025 (_.VT (_.BroadcastLdFrag addr:$src2)),
11073 (From.VT (OpNode From.RC:$src1, From.RC:$src2,
11077 To.RC:$src1, To.RC:$src2,
11082 (From.VT (OpNode From.RC:$src1, From.RC:$src2,
11086 To.RC:$src1, To.RC:$src2,
11092 (From.LdFrag addr:$src2),
11096 To.RC:$src1, addr:$src2,
11102 (From.LdFrag addr:$src2),
11106 To.RC:$src1, addr:$src2,
11116 (bitconvert (To.VT (To.BroadcastLdFrag addr:$src2))),
11118 (!cast<Instruction>(OpcodeStr#"rmbi") To.RC:$src1, addr:$src2,
11125 (To.VT (To.BroadcastLdFrag addr:$src2))),
11129 To.RC:$src1, addr:$src2,
11136 (To.VT (To.BroadcastLdFrag addr:$src2))),
11140 To.RC:$src1, addr:$src2,
11427 (ins _.ScalarMemOp:$dst, _.RC:$src1, u8imm:$src2),
11428 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
11429 [(store (_.EltVT (trunc (OpNode (_.VT _.RC:$src1), timm:$src2))),
11437 (ins _.RC:$src1, u8imm:$src2),
11438 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
11440 (X86pextrb (_.VT _.RC:$src1), timm:$src2))]>,
11450 (ins _.RC:$src1, u8imm:$src2),
11451 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
11453 (X86pextrw (_.VT _.RC:$src1), timm:$src2))]>,
11458 (ins _.RC:$src1, u8imm:$src2),
11459 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}", []>,
11470 (ins _.RC:$src1, u8imm:$src2),
11471 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
11473 (extractelt (_.VT _.RC:$src1), imm:$src2))]>,
11477 (ins _.ScalarMemOp:$dst, _.RC:$src1, u8imm:$src2),
11478 OpcodeStr#"\t{$src2, $src1, $dst|$dst, $src1, $src2}",
11480 imm:$src2),addr:$dst)]>,
11495 (ins _.RC:$src1, _.ScalarMemOp:$src2, u8imm:$src3),
11496 OpcodeStr#"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
11498 (_.VT (OpNode _.RC:$src1, (LdFrag addr:$src2), immoperator:$src3)))]>,
11506 (ins _.RC:$src1, GR32orGR64:$src2, u8imm:$src3),
11507 OpcodeStr#"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
11509 (OpNode _.RC:$src1, GR32orGR64:$src2, timm:$src3))]>, EVEX, VVVV,
11520 (ins _.RC:$src1, GRC:$src2, u8imm:$src3),
11521 OpcodeStr#"\t{$src3, $src2, $src1, $dst|$dst, $src1, $src2, $src3}",
11523 (_.VT (insertelt _.RC:$src1, GRC:$src2, imm:$src3)))]>,
11540 (i32 (anyext (i8 (bitconvert v8i1:$src2)))),
11542 (VPINSRBrr VR128:$src1, (i32 (COPY_TO_REGCLASS VK8:$src2, GR32)),
11547 def : Pat<(X86pinsrb VR128:$src1, (i32 (anyext (i8 GR8:$src2))), timm:$src3),
11549 GR8:$src2, sub_8bit), timm:$src3)>;
11551 (i32 (anyext (i8 (bitconvert v8i1:$src2)))),
11553 (VPINSRBZrr VR128:$src1, (i32 (COPY_TO_REGCLASS VK8:$src2, GR32)),
11587 (outs _.RC:$dst), (ins _.RC:$src1, u8imm:$src2),
11588 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
11589 [(set _.RC:$dst,(_.VT (OpNode _.RC:$src1, (i8 timm:$src2))))]>,
11592 (outs _.RC:$dst), (ins _.MemOp:$src1, u8imm:$src2),
11593 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
11596 (i8 timm:$src2))))]>,
11625 (outs _dst.RC:$dst), (ins _src.RC:$src1, _src.RC:$src2),
11626 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
11629 (_src.VT _src.RC:$src2))))]>,
11632 (outs _dst.RC:$dst), (ins _src.RC:$src1, _src.MemOp:$src2),
11633 !strconcat(OpcodeStr, "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
11637 (_src.LdFrag addr:$src2))))))]>,
11725 (ins _.RC:$src2, _.RC:$src3, u8imm:$src4),
11726 OpcodeStr, "$src4, $src3, $src2", "$src2, $src3, $src4",
11728 (_.VT _.RC:$src2),
11733 (ins _.RC:$src2, _.MemOp:$src3, u8imm:$src4),
11734 OpcodeStr, "$src4, $src3, $src2", "$src2, $src3, $src4",
11736 (_.VT _.RC:$src2),
11742 (ins _.RC:$src2, _.ScalarMemOp:$src3, u8imm:$src4),
11743 OpcodeStr, "$src4, ${src3}"#_.BroadcastStr#", $src2",
11744 "$src2, ${src3}"#_.BroadcastStr#", $src4",
11746 (_.VT _.RC:$src2),
11755 (OpNode _.RC:$src3, _.RC:$src2, _.RC:$src1, (i8 timm:$src4)),
11758 _.RC:$src2, _.RC:$src3, (VPTERNLOG321_imm8 timm:$src4))>;
11760 (OpNode _.RC:$src2, _.RC:$src1, _.RC:$src3, (i8 timm:$src4)),
11763 _.RC:$src2, _.RC:$src3, (VPTERNLOG213_imm8 timm:$src4))>;
11769 _.RC:$src2, _.RC:$src1, (i8 timm:$src4)),
11772 _.RC:$src2, addr:$src3, (VPTERNLOG321_imm8 timm:$src4))>;
11775 _.RC:$src2, (i8 timm:$src4)),
11778 _.RC:$src2, addr:$src3, (VPTERNLOG132_imm8 timm:$src4))>;
11784 _.RC:$src2, (i8 timm:$src4)),
11787 _.RC:$src2, addr:$src3, (VPTERNLOG132_imm8 timm:$src4))>;
11790 _.RC:$src2, _.RC:$src1, (i8 timm:$src4)),
11793 _.RC:$src2, addr:$src3, (VPTERNLOG321_imm8 timm:$src4))>;
11795 (OpNode _.RC:$src2, _.RC:$src1,
11799 _.RC:$src2, addr:$src3, (VPTERNLOG213_imm8 timm:$src4))>;
11801 (OpNode _.RC:$src2, (bitconvert (_.LdFrag addr:$src3)),
11805 _.RC:$src2, addr:$src3, (VPTERNLOG231_imm8 timm:$src4))>;
11808 _.RC:$src1, _.RC:$src2, (i8 timm:$src4)),
11811 _.RC:$src2, addr:$src3, (VPTERNLOG312_imm8 timm:$src4))>;
11817 _.RC:$src2, _.RC:$src1, (i8 timm:$src4)),
11820 _.KRCWM:$mask, _.RC:$src2, addr:$src3,
11825 _.RC:$src2, (i8 timm:$src4)),
11828 _.KRCWM:$mask, _.RC:$src2, addr:$src3,
11835 _.RC:$src2, (i8 timm:$src4)),
11838 _.RC:$src2, addr:$src3, (VPTERNLOG132_imm8 timm:$src4))>;
11841 _.RC:$src2, _.RC:$src1, (i8 timm:$src4)),
11844 _.RC:$src2, addr:$src3, (VPTERNLOG321_imm8 timm:$src4))>;
11846 (OpNode _.RC:$src2, _.RC:$src1,
11850 _.RC:$src2, addr:$src3, (VPTERNLOG213_imm8 timm:$src4))>;
11852 (OpNode _.RC:$src2,
11857 _.RC:$src2, addr:$src3, (VPTERNLOG231_imm8 timm:$src4))>;
11860 _.RC:$src1, _.RC:$src2, (i8 timm:$src4)),
11863 _.RC:$src2, addr:$src3, (VPTERNLOG312_imm8 timm:$src4))>;
11991 (ins _.RC:$src2, _.RC:$src3, i32u8imm:$src4),
11992 OpcodeStr#_.Suffix, "$src4, $src3, $src2", "$src2, $src3, $src4",
11994 (_.VT _.RC:$src2),
11998 (ins _.RC:$src2, _.MemOp:$src3, i32u8imm:$src4),
11999 OpcodeStr#_.Suffix, "$src4, $src3, $src2", "$src2, $src3, $src4",
12001 (_.VT _.RC:$src2),
12006 (ins _.RC:$src2, _.ScalarMemOp:$src3, i32u8imm:$src4),
12007 OpcodeStr#_.Suffix, "$src4, ${src3}"#_.BroadcastStr#", $src2",
12008 "$src2, ${src3}"#_.BroadcastStr#", $src4",
12010 (_.VT _.RC:$src2),
12023 (ins _.RC:$src2, _.RC:$src3, i32u8imm:$src4),
12024 OpcodeStr#_.Suffix, "$src4, {sae}, $src3, $src2",
12025 "$src2, $src3, {sae}, $src4",
12027 (_.VT _.RC:$src2),
12040 (ins _.RC:$src2, _.RC:$src3, i32u8imm:$src4),
12041 OpcodeStr#_.Suffix, "$src4, $src3, $src2", "$src2, $src3, $src4",
12043 (_.VT _.RC:$src2),
12048 (ins _.RC:$src2, _.RC:$src3, i32u8imm:$src4),
12049 OpcodeStr#_.Suffix, "$src4, {sae}, $src3, $src2",
12050 "$src2, $src3, {sae}, $src4",
12052 (_.VT _.RC:$src2),
12057 (ins _.RC:$src2, _.ScalarMemOp:$src3, i32u8imm:$src4),
12058 OpcodeStr#_.Suffix, "$src4, $src3, $src2", "$src2, $src3, $src4",
12060 (_.VT _.RC:$src2),
12163 _.FRC:$src2),
12168 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)))>;
12174 (_.ScalarLdFrag addr:$src2)),
12178 VK1WM:$mask, _.VT:$src1, addr:$src2)>;
12186 _.FRC:$src2), (_.EltVT ZeroFP)))),
12189 (_.VT (COPY_TO_REGCLASS _.FRC:$src2, VR128X)))>;
12195 (_.ScalarLdFrag addr:$src2)), (_.EltVT ZeroFP)))),
12196 (!cast<I>("V"#OpcPrefix#"Zrm_Intkz") VK1WM:$mask, _.VT:$src1, addr:$src2)>;
12286 (ins VTI.RC:$src2, VTI.RC:$src3), OpStr,
12287 "$src3, $src2", "$src2, $src3",
12288 (VTI.VT (OpNode VTI.RC:$src1, VTI.RC:$src2, VTI.RC:$src3))>,
12291 (ins VTI.RC:$src2, VTI.MemOp:$src3), OpStr,
12292 "$src3, $src2", "$src2, $src3",
12293 (VTI.VT (OpNode VTI.RC:$src1, VTI.RC:$src2,
12306 (ins VTI.RC:$src2, VTI.ScalarMemOp:$src3), OpStr,
12307 "${src3}"#VTI.BroadcastStr#", $src2",
12308 "$src2, ${src3}"#VTI.BroadcastStr,
12309 (OpNode VTI.RC:$src1, VTI.RC:$src2,
12388 (ins VTI.RC:$src2, VTI.RC:$src3), OpStr,
12389 "$src3, $src2", "$src2, $src3",
12391 VTI.RC:$src2, VTI.RC:$src3)),
12395 (ins VTI.RC:$src2, VTI.MemOp:$src3), OpStr,
12396 "$src3, $src2", "$src2, $src3",
12397 (VTI.VT (OpNode VTI.RC:$src1, VTI.RC:$src2,
12403 (ins VTI.RC:$src2, VTI.ScalarMemOp:$src3),
12404 OpStr, "${src3}"#VTI.BroadcastStr#", $src2",
12405 "$src2, ${src3}"#VTI.BroadcastStr,
12406 (OpNode VTI.RC:$src1, VTI.RC:$src2,
12436 (X86vpmaddwd_su VR512:$src2, VR512:$src3))),
12437 (VPDPWSSDZr VR512:$src1, VR512:$src2, VR512:$src3)>;
12439 (X86vpmaddwd_su VR512:$src2, (load addr:$src3)))),
12440 (VPDPWSSDZm VR512:$src1, VR512:$src2, addr:$src3)>;
12444 (X86vpmaddwd_su VR256X:$src2, VR256X:$src3))),
12445 (VPDPWSSDZ256r VR256X:$src1, VR256X:$src2, VR256X:$src3)>;
12447 (X86vpmaddwd_su VR256X:$src2, (load addr:$src3)))),
12448 (VPDPWSSDZ256m VR256X:$src1, VR256X:$src2, addr:$src3)>;
12450 (X86vpmaddwd_su VR128X:$src2, VR128X:$src3))),
12451 (VPDPWSSDZ128r VR128X:$src1, VR128X:$src2, VR128X:$src3)>;
12453 (X86vpmaddwd_su VR128X:$src2, (load addr:$src3)))),
12454 (VPDPWSSDZ128m VR128X:$src1, VR128X:$src2, addr:$src3)>;
12472 (ins VTI.RC:$src1, VTI.RC:$src2),
12474 "$src2, $src1", "$src1, $src2",
12476 (VTI.VT VTI.RC:$src2)),
12478 (VTI.VT VTI.RC:$src2))>, EVEX, VVVV, T8, PD,
12481 (ins VTI.RC:$src1, VTI.MemOp:$src2),
12483 "$src2, $src1", "$src1, $src2",
12485 (VTI.VT (VTI.LdFrag addr:$src2))),
12487 (VTI.VT (VTI.LdFrag addr:$src2)))>,
12531 (ins VTI.RC:$src1, BcstVTI.ScalarMemOp:$src2, u8imm:$src3),
12532 OpStr, "$src3, ${src2}"#BcstVTI.BroadcastStr#", $src1",
12533 "$src1, ${src2}"#BcstVTI.BroadcastStr#", $src3",
12535 (bitconvert (BcstVTI.VT (X86VBroadcastld64 addr:$src2))),
12568 (outs VR512:$dst), (ins VR512:$src2, f128mem:$src3),
12569 "v4fmaddps", "$src3, $src2", "$src2, $src3",
12574 (outs VR512:$dst), (ins VR512:$src2, f128mem:$src3),
12575 "v4fnmaddps", "$src3, $src2", "$src2, $src3",
12580 (outs VR128X:$dst), (ins VR128X:$src2, f128mem:$src3),
12581 "v4fmaddss", "$src3, $src2", "$src2, $src3",
12586 (outs VR128X:$dst), (ins VR128X:$src2, f128mem:$src3),
12587 "v4fnmaddss", "$src3, $src2", "$src2, $src3",
12599 (outs VR512:$dst), (ins VR512:$src2, f128mem:$src3),
12600 "vp4dpwssd", "$src3, $src2", "$src2, $src3",
12605 (outs VR512:$dst), (ins VR512:$src2, f128mem:$src3),
12606 "vp4dpwssds", "$src3, $src2", "$src2, $src3",
12625 (ins _.RC:$src1, _.RC:$src2),
12627 "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
12629 _.RC:$src1, (_.VT _.RC:$src2)))]>,
12634 (ins _.RC:$src1, _.MemOp:$src2),
12636 "\t{$src2, $src1, $dst|$dst, $src1, $src2}"),
12638 _.RC:$src1, (_.VT (bitconvert (_.LdFrag addr:$src2)))))]>,
12644 (ins _.RC:$src1, _.ScalarMemOp:$src2),
12645 !strconcat("vp2intersect", _.Suffix, "\t{${src2}", _.BroadcastStr,
12646 ", $src1, $dst|$dst, $src1, ${src2}", _.BroadcastStr ,"}"),
12648 _.RC:$src1, (_.VT (_.BroadcastLdFrag addr:$src2))))]>,
12813 (ins src_v.RC:$src2, src_v.RC:$src3),
12814 OpcodeStr, "$src3, $src2", "$src2, $src3",
12815 (_.VT (OpNode _.RC:$src1, src_v.RC:$src2, src_v.RC:$src3))>,
12819 (ins src_v.RC:$src2, src_v.MemOp:$src3),
12820 OpcodeStr, "$src3, $src2", "$src2, $src3",
12821 (_.VT (OpNode _.RC:$src1, src_v.RC:$src2,
12827 (ins src_v.RC:$src2, f32mem:$src3),
12829 !strconcat("${src3}", _.BroadcastStr,", $src2"),
12830 !strconcat("$src2, ${src3}", _.BroadcastStr),
13458 (ins _.RC:$src2, _.RC:$src3),
13459 OpcodeStr, "$src3, $src2", "$src2, $src3",
13460 (_.VT (OpNode _.RC:$src2, _.RC:$src3, _.RC:$src1)), IsCommutable>, EVEX, VVVV;
13463 (ins _.RC:$src2, _.MemOp:$src3),
13464 OpcodeStr, "$src3, $src2", "$src2, $src3",
13465 (_.VT (OpNode _.RC:$src2, (_.LdFrag addr:$src3), _.RC:$src1))>, EVEX, VVVV;
13468 (ins _.RC:$src2, _.ScalarMemOp:$src3),
13469 …OpcodeStr, !strconcat("${src3}", _.BroadcastStr,", $src2"), !strconcat("$src2, ${src3}", _.Broadca…
13470 …(_.VT (OpNode _.RC:$src2, (_.VT (_.BroadcastLdFrag addr:$src3)), _.RC:$src1))>, EVEX_B, EVEX, VVVV;
13478 (ins _.RC:$src2, _.RC:$src3, AVX512RC:$rc),
13479 OpcodeStr, "$rc, $src3, $src2", "$src2, $src3, $rc",
13480 (_.VT (OpNode _.RC:$src2, _.RC:$src3, _.RC:$src1, (i32 timm:$rc)))>,
13531 (ins VR128X:$src2, VR128X:$src3), OpcodeStr,
13532 "$src3, $src2", "$src2, $src3",
13533 (v4f32 (OpNode VR128X:$src2, VR128X:$src3, VR128X:$src1)), IsCommutable>,
13536 (ins VR128X:$src2, ssmem:$src3), OpcodeStr,
13537 "$src3, $src2", "$src2, $src3",
13538 (v4f32 (OpNode VR128X:$src2, (sse_load_f32 addr:$src3), VR128X:$src1))>,
13541 (ins VR128X:$src2, VR128X:$src3, AVX512RC:$rc), OpcodeStr,
13542 "$rc, $src3, $src2", "$src2, $src3, $rc",
13543 … (v4f32 (OpNodeRnd VR128X:$src2, VR128X:$src3, VR128X:$src1, (i32 timm:$rc)))>,
13552 (ins VR128X:$src1, VR128X:$src2), OpcodeStr,
13553 "$src2, $src1", "$src1, $src2",
13554 (v4f32 (OpNode VR128X:$src1, VR128X:$src2)),
13558 (ins VR128X:$src1, ssmem:$src2), OpcodeStr,
13559 "$src2, $src1", "$src1, $src2",
13560 (v4f32 (OpNode VR128X:$src1, (sse_load_f32 addr:$src2))),
13564 (ins VR128X:$src1, VR128X:$src2, AVX512RC:$rc), OpcodeStr,
13565 "$rc, $src2, $src1", "$src1, $src2, $rc",
13566 (OpNodeRnd (v4f32 VR128X:$src1), (v4f32 VR128X:$src2), (i32 timm:$rc)),