[llvm] [X86][tablgen] Auto-gen broadcast tables (PR #73654)

Shengchen Kan via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 30 03:26:02 PST 2023


https://github.com/KanRobert updated https://github.com/llvm/llvm-project/pull/73654

>From f33b0c5070e3a142a1233514ef0d59bebb4abc28 Mon Sep 17 00:00:00 2001
From: Shengchen Kan <shengchen.kan at intel.com>
Date: Tue, 28 Nov 2023 22:56:08 +0800
Subject: [PATCH 1/3] [X86][tablgen] Auto-gen broadcast tables

---
 .../include/llvm/Support/X86FoldTablesUtils.h |   7 +-
 llvm/lib/Target/X86/X86InstrFoldTables.cpp    | 296 +-----------------
 llvm/utils/TableGen/X86FoldTablesEmitter.cpp  | 164 +++++++++-
 3 files changed, 159 insertions(+), 308 deletions(-)

diff --git a/llvm/include/llvm/Support/X86FoldTablesUtils.h b/llvm/include/llvm/Support/X86FoldTablesUtils.h
index 1cce9cdaf65f8d6..ed244febc38d3a5 100644
--- a/llvm/include/llvm/Support/X86FoldTablesUtils.h
+++ b/llvm/include/llvm/Support/X86FoldTablesUtils.h
@@ -44,15 +44,16 @@ enum {
   TB_ALIGN_MASK = 0x7 << TB_ALIGN_SHIFT,
 
   // Broadcast type.
-  // (stored in bits 12 - 13)
+  // (stored in bits 12 - 14)
   TB_BCAST_TYPE_SHIFT = TB_ALIGN_SHIFT + 3,
   TB_BCAST_D = 0 << TB_BCAST_TYPE_SHIFT,
   TB_BCAST_Q = 1 << TB_BCAST_TYPE_SHIFT,
   TB_BCAST_SS = 2 << TB_BCAST_TYPE_SHIFT,
   TB_BCAST_SD = 3 << TB_BCAST_TYPE_SHIFT,
-  TB_BCAST_MASK = 0x3 << TB_BCAST_TYPE_SHIFT,
+  TB_BCAST_SH = 4 << TB_BCAST_TYPE_SHIFT,
+  TB_BCAST_MASK = 0x7 << TB_BCAST_TYPE_SHIFT,
 
-  // Unused bits 14-15
+  // Unused bits 15-16
 };
 } // namespace llvm
 #endif // LLVM_SUPPORT_X86FOLDTABLESUTILS_H
diff --git a/llvm/lib/Target/X86/X86InstrFoldTables.cpp b/llvm/lib/Target/X86/X86InstrFoldTables.cpp
index 7a3611b90da9895..c44d77460f27df3 100644
--- a/llvm/lib/Target/X86/X86InstrFoldTables.cpp
+++ b/llvm/lib/Target/X86/X86InstrFoldTables.cpp
@@ -23,300 +23,6 @@ using namespace llvm;
 // are currently emitted in X86GenInstrInfo.inc in alphabetical order. Which
 // makes sorting these tables a simple matter of alphabetizing the table.
 #include "X86GenFoldTables.inc"
-static const X86FoldTableEntry BroadcastTable2[] = {
-  { X86::VADDPDZ128rr,   X86::VADDPDZ128rmb,   TB_BCAST_SD },
-  { X86::VADDPDZ256rr,   X86::VADDPDZ256rmb,   TB_BCAST_SD },
-  { X86::VADDPDZrr,      X86::VADDPDZrmb,      TB_BCAST_SD },
-  { X86::VADDPSZ128rr,   X86::VADDPSZ128rmb,   TB_BCAST_SS },
-  { X86::VADDPSZ256rr,   X86::VADDPSZ256rmb,   TB_BCAST_SS },
-  { X86::VADDPSZrr,      X86::VADDPSZrmb,      TB_BCAST_SS },
-  { X86::VANDNPDZ128rr,  X86::VANDNPDZ128rmb,  TB_BCAST_SD },
-  { X86::VANDNPDZ256rr,  X86::VANDNPDZ256rmb,  TB_BCAST_SD },
-  { X86::VANDNPDZrr,     X86::VANDNPDZrmb,     TB_BCAST_SD },
-  { X86::VANDNPSZ128rr,  X86::VANDNPSZ128rmb,  TB_BCAST_SS },
-  { X86::VANDNPSZ256rr,  X86::VANDNPSZ256rmb,  TB_BCAST_SS },
-  { X86::VANDNPSZrr,     X86::VANDNPSZrmb,     TB_BCAST_SS },
-  { X86::VANDPDZ128rr,   X86::VANDPDZ128rmb,   TB_BCAST_SD },
-  { X86::VANDPDZ256rr,   X86::VANDPDZ256rmb,   TB_BCAST_SD },
-  { X86::VANDPDZrr,      X86::VANDPDZrmb,      TB_BCAST_SD },
-  { X86::VANDPSZ128rr,   X86::VANDPSZ128rmb,   TB_BCAST_SS },
-  { X86::VANDPSZ256rr,   X86::VANDPSZ256rmb,   TB_BCAST_SS },
-  { X86::VANDPSZrr,      X86::VANDPSZrmb,      TB_BCAST_SS },
-  { X86::VCMPPDZ128rri,  X86::VCMPPDZ128rmbi,  TB_BCAST_SD },
-  { X86::VCMPPDZ256rri,  X86::VCMPPDZ256rmbi,  TB_BCAST_SD },
-  { X86::VCMPPDZrri,     X86::VCMPPDZrmbi,     TB_BCAST_SD },
-  { X86::VCMPPSZ128rri,  X86::VCMPPSZ128rmbi,  TB_BCAST_SS },
-  { X86::VCMPPSZ256rri,  X86::VCMPPSZ256rmbi,  TB_BCAST_SS },
-  { X86::VCMPPSZrri,     X86::VCMPPSZrmbi,     TB_BCAST_SS },
-  { X86::VDIVPDZ128rr,   X86::VDIVPDZ128rmb,   TB_BCAST_SD },
-  { X86::VDIVPDZ256rr,   X86::VDIVPDZ256rmb,   TB_BCAST_SD },
-  { X86::VDIVPDZrr,      X86::VDIVPDZrmb,      TB_BCAST_SD },
-  { X86::VDIVPSZ128rr,   X86::VDIVPSZ128rmb,   TB_BCAST_SS },
-  { X86::VDIVPSZ256rr,   X86::VDIVPSZ256rmb,   TB_BCAST_SS },
-  { X86::VDIVPSZrr,      X86::VDIVPSZrmb,      TB_BCAST_SS },
-  { X86::VMAXCPDZ128rr,  X86::VMAXCPDZ128rmb,  TB_BCAST_SD },
-  { X86::VMAXCPDZ256rr,  X86::VMAXCPDZ256rmb,  TB_BCAST_SD },
-  { X86::VMAXCPDZrr,     X86::VMAXCPDZrmb,     TB_BCAST_SD },
-  { X86::VMAXCPSZ128rr,  X86::VMAXCPSZ128rmb,  TB_BCAST_SS },
-  { X86::VMAXCPSZ256rr,  X86::VMAXCPSZ256rmb,  TB_BCAST_SS },
-  { X86::VMAXCPSZrr,     X86::VMAXCPSZrmb,     TB_BCAST_SS },
-  { X86::VMAXPDZ128rr,   X86::VMAXPDZ128rmb,   TB_BCAST_SD },
-  { X86::VMAXPDZ256rr,   X86::VMAXPDZ256rmb,   TB_BCAST_SD },
-  { X86::VMAXPDZrr,      X86::VMAXPDZrmb,      TB_BCAST_SD },
-  { X86::VMAXPSZ128rr,   X86::VMAXPSZ128rmb,   TB_BCAST_SS },
-  { X86::VMAXPSZ256rr,   X86::VMAXPSZ256rmb,   TB_BCAST_SS },
-  { X86::VMAXPSZrr,      X86::VMAXPSZrmb,      TB_BCAST_SS },
-  { X86::VMINCPDZ128rr,  X86::VMINCPDZ128rmb,  TB_BCAST_SD },
-  { X86::VMINCPDZ256rr,  X86::VMINCPDZ256rmb,  TB_BCAST_SD },
-  { X86::VMINCPDZrr,     X86::VMINCPDZrmb,     TB_BCAST_SD },
-  { X86::VMINCPSZ128rr,  X86::VMINCPSZ128rmb,  TB_BCAST_SS },
-  { X86::VMINCPSZ256rr,  X86::VMINCPSZ256rmb,  TB_BCAST_SS },
-  { X86::VMINCPSZrr,     X86::VMINCPSZrmb,     TB_BCAST_SS },
-  { X86::VMINPDZ128rr,   X86::VMINPDZ128rmb,   TB_BCAST_SD },
-  { X86::VMINPDZ256rr,   X86::VMINPDZ256rmb,   TB_BCAST_SD },
-  { X86::VMINPDZrr,      X86::VMINPDZrmb,      TB_BCAST_SD },
-  { X86::VMINPSZ128rr,   X86::VMINPSZ128rmb,   TB_BCAST_SS },
-  { X86::VMINPSZ256rr,   X86::VMINPSZ256rmb,   TB_BCAST_SS },
-  { X86::VMINPSZrr,      X86::VMINPSZrmb,      TB_BCAST_SS },
-  { X86::VMULPDZ128rr,   X86::VMULPDZ128rmb,   TB_BCAST_SD },
-  { X86::VMULPDZ256rr,   X86::VMULPDZ256rmb,   TB_BCAST_SD },
-  { X86::VMULPDZrr,      X86::VMULPDZrmb,      TB_BCAST_SD },
-  { X86::VMULPSZ128rr,   X86::VMULPSZ128rmb,   TB_BCAST_SS },
-  { X86::VMULPSZ256rr,   X86::VMULPSZ256rmb,   TB_BCAST_SS },
-  { X86::VMULPSZrr,      X86::VMULPSZrmb,      TB_BCAST_SS },
-  { X86::VORPDZ128rr,    X86::VORPDZ128rmb,    TB_BCAST_SD },
-  { X86::VORPDZ256rr,    X86::VORPDZ256rmb,    TB_BCAST_SD },
-  { X86::VORPDZrr,       X86::VORPDZrmb,       TB_BCAST_SD },
-  { X86::VORPSZ128rr,    X86::VORPSZ128rmb,    TB_BCAST_SS },
-  { X86::VORPSZ256rr,    X86::VORPSZ256rmb,    TB_BCAST_SS },
-  { X86::VORPSZrr,       X86::VORPSZrmb,       TB_BCAST_SS },
-  { X86::VPADDDZ128rr,   X86::VPADDDZ128rmb,   TB_BCAST_D },
-  { X86::VPADDDZ256rr,   X86::VPADDDZ256rmb,   TB_BCAST_D },
-  { X86::VPADDDZrr,      X86::VPADDDZrmb,      TB_BCAST_D },
-  { X86::VPADDQZ128rr,   X86::VPADDQZ128rmb,   TB_BCAST_Q },
-  { X86::VPADDQZ256rr,   X86::VPADDQZ256rmb,   TB_BCAST_Q },
-  { X86::VPADDQZrr,      X86::VPADDQZrmb,      TB_BCAST_Q },
-  { X86::VPANDDZ128rr,   X86::VPANDDZ128rmb,   TB_BCAST_D },
-  { X86::VPANDDZ256rr,   X86::VPANDDZ256rmb,   TB_BCAST_D },
-  { X86::VPANDDZrr,      X86::VPANDDZrmb,      TB_BCAST_D },
-  { X86::VPANDNDZ128rr,  X86::VPANDNDZ128rmb,  TB_BCAST_D },
-  { X86::VPANDNDZ256rr,  X86::VPANDNDZ256rmb,  TB_BCAST_D },
-  { X86::VPANDNDZrr,     X86::VPANDNDZrmb,     TB_BCAST_D },
-  { X86::VPANDNQZ128rr,  X86::VPANDNQZ128rmb,  TB_BCAST_Q },
-  { X86::VPANDNQZ256rr,  X86::VPANDNQZ256rmb,  TB_BCAST_Q },
-  { X86::VPANDNQZrr,     X86::VPANDNQZrmb,     TB_BCAST_Q },
-  { X86::VPANDQZ128rr,   X86::VPANDQZ128rmb,   TB_BCAST_Q },
-  { X86::VPANDQZ256rr,   X86::VPANDQZ256rmb,   TB_BCAST_Q },
-  { X86::VPANDQZrr,      X86::VPANDQZrmb,      TB_BCAST_Q },
-  { X86::VPCMPDZ128rri,  X86::VPCMPDZ128rmib,  TB_BCAST_D },
-  { X86::VPCMPDZ256rri,  X86::VPCMPDZ256rmib,  TB_BCAST_D },
-  { X86::VPCMPDZrri,     X86::VPCMPDZrmib,     TB_BCAST_D },
-  { X86::VPCMPEQDZ128rr, X86::VPCMPEQDZ128rmb, TB_BCAST_D },
-  { X86::VPCMPEQDZ256rr, X86::VPCMPEQDZ256rmb, TB_BCAST_D },
-  { X86::VPCMPEQDZrr,    X86::VPCMPEQDZrmb,    TB_BCAST_D },
-  { X86::VPCMPEQQZ128rr, X86::VPCMPEQQZ128rmb, TB_BCAST_Q },
-  { X86::VPCMPEQQZ256rr, X86::VPCMPEQQZ256rmb, TB_BCAST_Q },
-  { X86::VPCMPEQQZrr,    X86::VPCMPEQQZrmb,    TB_BCAST_Q },
-  { X86::VPCMPGTDZ128rr, X86::VPCMPGTDZ128rmb, TB_BCAST_D },
-  { X86::VPCMPGTDZ256rr, X86::VPCMPGTDZ256rmb, TB_BCAST_D },
-  { X86::VPCMPGTDZrr,    X86::VPCMPGTDZrmb,    TB_BCAST_D },
-  { X86::VPCMPGTQZ128rr, X86::VPCMPGTQZ128rmb, TB_BCAST_Q },
-  { X86::VPCMPGTQZ256rr, X86::VPCMPGTQZ256rmb, TB_BCAST_Q },
-  { X86::VPCMPGTQZrr,    X86::VPCMPGTQZrmb,    TB_BCAST_Q },
-  { X86::VPCMPQZ128rri,  X86::VPCMPQZ128rmib,  TB_BCAST_Q },
-  { X86::VPCMPQZ256rri,  X86::VPCMPQZ256rmib,  TB_BCAST_Q },
-  { X86::VPCMPQZrri,     X86::VPCMPQZrmib,     TB_BCAST_Q },
-  { X86::VPCMPUDZ128rri, X86::VPCMPUDZ128rmib, TB_BCAST_D },
-  { X86::VPCMPUDZ256rri, X86::VPCMPUDZ256rmib, TB_BCAST_D },
-  { X86::VPCMPUDZrri,    X86::VPCMPUDZrmib,    TB_BCAST_D },
-  { X86::VPCMPUQZ128rri, X86::VPCMPUQZ128rmib, TB_BCAST_Q },
-  { X86::VPCMPUQZ256rri, X86::VPCMPUQZ256rmib, TB_BCAST_Q },
-  { X86::VPCMPUQZrri,    X86::VPCMPUQZrmib,    TB_BCAST_Q },
-  { X86::VPMAXSDZ128rr,  X86::VPMAXSDZ128rmb,  TB_BCAST_D },
-  { X86::VPMAXSDZ256rr,  X86::VPMAXSDZ256rmb,  TB_BCAST_D },
-  { X86::VPMAXSDZrr,     X86::VPMAXSDZrmb,     TB_BCAST_D },
-  { X86::VPMAXSQZ128rr,  X86::VPMAXSQZ128rmb,  TB_BCAST_Q },
-  { X86::VPMAXSQZ256rr,  X86::VPMAXSQZ256rmb,  TB_BCAST_Q },
-  { X86::VPMAXSQZrr,     X86::VPMAXSQZrmb,     TB_BCAST_Q },
-  { X86::VPMAXUDZ128rr,  X86::VPMAXUDZ128rmb,  TB_BCAST_D },
-  { X86::VPMAXUDZ256rr,  X86::VPMAXUDZ256rmb,  TB_BCAST_D },
-  { X86::VPMAXUDZrr,     X86::VPMAXUDZrmb,     TB_BCAST_D },
-  { X86::VPMAXUQZ128rr,  X86::VPMAXUQZ128rmb,  TB_BCAST_Q },
-  { X86::VPMAXUQZ256rr,  X86::VPMAXUQZ256rmb,  TB_BCAST_Q },
-  { X86::VPMAXUQZrr,     X86::VPMAXUQZrmb,     TB_BCAST_Q },
-  { X86::VPMINSDZ128rr,  X86::VPMINSDZ128rmb,  TB_BCAST_D },
-  { X86::VPMINSDZ256rr,  X86::VPMINSDZ256rmb,  TB_BCAST_D },
-  { X86::VPMINSDZrr,     X86::VPMINSDZrmb,     TB_BCAST_D },
-  { X86::VPMINSQZ128rr,  X86::VPMINSQZ128rmb,  TB_BCAST_Q },
-  { X86::VPMINSQZ256rr,  X86::VPMINSQZ256rmb,  TB_BCAST_Q },
-  { X86::VPMINSQZrr,     X86::VPMINSQZrmb,     TB_BCAST_Q },
-  { X86::VPMINUDZ128rr,  X86::VPMINUDZ128rmb,  TB_BCAST_D },
-  { X86::VPMINUDZ256rr,  X86::VPMINUDZ256rmb,  TB_BCAST_D },
-  { X86::VPMINUDZrr,     X86::VPMINUDZrmb,     TB_BCAST_D },
-  { X86::VPMINUQZ128rr,  X86::VPMINUQZ128rmb,  TB_BCAST_Q },
-  { X86::VPMINUQZ256rr,  X86::VPMINUQZ256rmb,  TB_BCAST_Q },
-  { X86::VPMINUQZrr,     X86::VPMINUQZrmb,     TB_BCAST_Q },
-  { X86::VPMULLDZ128rr,  X86::VPMULLDZ128rmb,  TB_BCAST_D },
-  { X86::VPMULLDZ256rr,  X86::VPMULLDZ256rmb,  TB_BCAST_D },
-  { X86::VPMULLDZrr,     X86::VPMULLDZrmb,     TB_BCAST_D },
-  { X86::VPMULLQZ128rr,  X86::VPMULLQZ128rmb,  TB_BCAST_Q },
-  { X86::VPMULLQZ256rr,  X86::VPMULLQZ256rmb,  TB_BCAST_Q },
-  { X86::VPMULLQZrr,     X86::VPMULLQZrmb,     TB_BCAST_Q },
-  { X86::VPORDZ128rr,    X86::VPORDZ128rmb,    TB_BCAST_D },
-  { X86::VPORDZ256rr,    X86::VPORDZ256rmb,    TB_BCAST_D },
-  { X86::VPORDZrr,       X86::VPORDZrmb,       TB_BCAST_D },
-  { X86::VPORQZ128rr,    X86::VPORQZ128rmb,    TB_BCAST_Q },
-  { X86::VPORQZ256rr,    X86::VPORQZ256rmb,    TB_BCAST_Q },
-  { X86::VPORQZrr,       X86::VPORQZrmb,       TB_BCAST_Q },
-  { X86::VPTESTMDZ128rr, X86::VPTESTMDZ128rmb, TB_BCAST_D },
-  { X86::VPTESTMDZ256rr, X86::VPTESTMDZ256rmb, TB_BCAST_D },
-  { X86::VPTESTMDZrr,    X86::VPTESTMDZrmb,    TB_BCAST_D },
-  { X86::VPTESTMQZ128rr, X86::VPTESTMQZ128rmb, TB_BCAST_Q },
-  { X86::VPTESTMQZ256rr, X86::VPTESTMQZ256rmb, TB_BCAST_Q },
-  { X86::VPTESTMQZrr,    X86::VPTESTMQZrmb,    TB_BCAST_Q },
-  { X86::VPTESTNMDZ128rr,X86::VPTESTNMDZ128rmb,TB_BCAST_D },
-  { X86::VPTESTNMDZ256rr,X86::VPTESTNMDZ256rmb,TB_BCAST_D },
-  { X86::VPTESTNMDZrr,   X86::VPTESTNMDZrmb,   TB_BCAST_D },
-  { X86::VPTESTNMQZ128rr,X86::VPTESTNMQZ128rmb,TB_BCAST_Q },
-  { X86::VPTESTNMQZ256rr,X86::VPTESTNMQZ256rmb,TB_BCAST_Q },
-  { X86::VPTESTNMQZrr,   X86::VPTESTNMQZrmb,   TB_BCAST_Q },
-  { X86::VPXORDZ128rr,   X86::VPXORDZ128rmb,   TB_BCAST_D },
-  { X86::VPXORDZ256rr,   X86::VPXORDZ256rmb,   TB_BCAST_D },
-  { X86::VPXORDZrr,      X86::VPXORDZrmb,      TB_BCAST_D },
-  { X86::VPXORQZ128rr,   X86::VPXORQZ128rmb,   TB_BCAST_Q },
-  { X86::VPXORQZ256rr,   X86::VPXORQZ256rmb,   TB_BCAST_Q },
-  { X86::VPXORQZrr,      X86::VPXORQZrmb,      TB_BCAST_Q },
-  { X86::VSUBPDZ128rr,   X86::VSUBPDZ128rmb,   TB_BCAST_SD },
-  { X86::VSUBPDZ256rr,   X86::VSUBPDZ256rmb,   TB_BCAST_SD },
-  { X86::VSUBPDZrr,      X86::VSUBPDZrmb,      TB_BCAST_SD },
-  { X86::VSUBPSZ128rr,   X86::VSUBPSZ128rmb,   TB_BCAST_SS },
-  { X86::VSUBPSZ256rr,   X86::VSUBPSZ256rmb,   TB_BCAST_SS },
-  { X86::VSUBPSZrr,      X86::VSUBPSZrmb,      TB_BCAST_SS },
-  { X86::VXORPDZ128rr,   X86::VXORPDZ128rmb,   TB_BCAST_SD },
-  { X86::VXORPDZ256rr,   X86::VXORPDZ256rmb,   TB_BCAST_SD },
-  { X86::VXORPDZrr,      X86::VXORPDZrmb,      TB_BCAST_SD },
-  { X86::VXORPSZ128rr,   X86::VXORPSZ128rmb,   TB_BCAST_SS },
-  { X86::VXORPSZ256rr,   X86::VXORPSZ256rmb,   TB_BCAST_SS },
-  { X86::VXORPSZrr,      X86::VXORPSZrmb,      TB_BCAST_SS },
-};
-
-static const X86FoldTableEntry BroadcastTable3[] = {
-  { X86::VFMADD132PDZ128r,     X86::VFMADD132PDZ128mb,    TB_BCAST_SD },
-  { X86::VFMADD132PDZ256r,     X86::VFMADD132PDZ256mb,    TB_BCAST_SD },
-  { X86::VFMADD132PDZr,        X86::VFMADD132PDZmb,       TB_BCAST_SD },
-  { X86::VFMADD132PSZ128r,     X86::VFMADD132PSZ128mb,    TB_BCAST_SS },
-  { X86::VFMADD132PSZ256r,     X86::VFMADD132PSZ256mb,    TB_BCAST_SS },
-  { X86::VFMADD132PSZr,        X86::VFMADD132PSZmb,       TB_BCAST_SS },
-  { X86::VFMADD213PDZ128r,     X86::VFMADD213PDZ128mb,    TB_BCAST_SD },
-  { X86::VFMADD213PDZ256r,     X86::VFMADD213PDZ256mb,    TB_BCAST_SD },
-  { X86::VFMADD213PDZr,        X86::VFMADD213PDZmb,       TB_BCAST_SD },
-  { X86::VFMADD213PSZ128r,     X86::VFMADD213PSZ128mb,    TB_BCAST_SS },
-  { X86::VFMADD213PSZ256r,     X86::VFMADD213PSZ256mb,    TB_BCAST_SS },
-  { X86::VFMADD213PSZr,        X86::VFMADD213PSZmb,       TB_BCAST_SS },
-  { X86::VFMADD231PDZ128r,     X86::VFMADD231PDZ128mb,    TB_BCAST_SD },
-  { X86::VFMADD231PDZ256r,     X86::VFMADD231PDZ256mb,    TB_BCAST_SD },
-  { X86::VFMADD231PDZr,        X86::VFMADD231PDZmb,       TB_BCAST_SD },
-  { X86::VFMADD231PSZ128r,     X86::VFMADD231PSZ128mb,    TB_BCAST_SS },
-  { X86::VFMADD231PSZ256r,     X86::VFMADD231PSZ256mb,    TB_BCAST_SS },
-  { X86::VFMADD231PSZr,        X86::VFMADD231PSZmb,       TB_BCAST_SS },
-  { X86::VFMADDSUB132PDZ128r,  X86::VFMADDSUB132PDZ128mb, TB_BCAST_SD },
-  { X86::VFMADDSUB132PDZ256r,  X86::VFMADDSUB132PDZ256mb, TB_BCAST_SD },
-  { X86::VFMADDSUB132PDZr,     X86::VFMADDSUB132PDZmb,    TB_BCAST_SD },
-  { X86::VFMADDSUB132PSZ128r,  X86::VFMADDSUB132PSZ128mb, TB_BCAST_SS },
-  { X86::VFMADDSUB132PSZ256r,  X86::VFMADDSUB132PSZ256mb, TB_BCAST_SS },
-  { X86::VFMADDSUB132PSZr,     X86::VFMADDSUB132PSZmb,    TB_BCAST_SS },
-  { X86::VFMADDSUB213PDZ128r,  X86::VFMADDSUB213PDZ128mb, TB_BCAST_SD },
-  { X86::VFMADDSUB213PDZ256r,  X86::VFMADDSUB213PDZ256mb, TB_BCAST_SD },
-  { X86::VFMADDSUB213PDZr,     X86::VFMADDSUB213PDZmb,    TB_BCAST_SD },
-  { X86::VFMADDSUB213PSZ128r,  X86::VFMADDSUB213PSZ128mb, TB_BCAST_SS },
-  { X86::VFMADDSUB213PSZ256r,  X86::VFMADDSUB213PSZ256mb, TB_BCAST_SS },
-  { X86::VFMADDSUB213PSZr,     X86::VFMADDSUB213PSZmb,    TB_BCAST_SS },
-  { X86::VFMADDSUB231PDZ128r,  X86::VFMADDSUB231PDZ128mb, TB_BCAST_SD },
-  { X86::VFMADDSUB231PDZ256r,  X86::VFMADDSUB231PDZ256mb, TB_BCAST_SD },
-  { X86::VFMADDSUB231PDZr,     X86::VFMADDSUB231PDZmb,    TB_BCAST_SD },
-  { X86::VFMADDSUB231PSZ128r,  X86::VFMADDSUB231PSZ128mb, TB_BCAST_SS },
-  { X86::VFMADDSUB231PSZ256r,  X86::VFMADDSUB231PSZ256mb, TB_BCAST_SS },
-  { X86::VFMADDSUB231PSZr,     X86::VFMADDSUB231PSZmb,    TB_BCAST_SS },
-  { X86::VFMSUB132PDZ128r,     X86::VFMSUB132PDZ128mb,    TB_BCAST_SD },
-  { X86::VFMSUB132PDZ256r,     X86::VFMSUB132PDZ256mb,    TB_BCAST_SD },
-  { X86::VFMSUB132PDZr,        X86::VFMSUB132PDZmb,       TB_BCAST_SD },
-  { X86::VFMSUB132PSZ128r,     X86::VFMSUB132PSZ128mb,    TB_BCAST_SS },
-  { X86::VFMSUB132PSZ256r,     X86::VFMSUB132PSZ256mb,    TB_BCAST_SS },
-  { X86::VFMSUB132PSZr,        X86::VFMSUB132PSZmb,       TB_BCAST_SS },
-  { X86::VFMSUB213PDZ128r,     X86::VFMSUB213PDZ128mb,    TB_BCAST_SD },
-  { X86::VFMSUB213PDZ256r,     X86::VFMSUB213PDZ256mb,    TB_BCAST_SD },
-  { X86::VFMSUB213PDZr,        X86::VFMSUB213PDZmb,       TB_BCAST_SD },
-  { X86::VFMSUB213PSZ128r,     X86::VFMSUB213PSZ128mb,    TB_BCAST_SS },
-  { X86::VFMSUB213PSZ256r,     X86::VFMSUB213PSZ256mb,    TB_BCAST_SS },
-  { X86::VFMSUB213PSZr,        X86::VFMSUB213PSZmb,       TB_BCAST_SS },
-  { X86::VFMSUB231PDZ128r,     X86::VFMSUB231PDZ128mb,    TB_BCAST_SD },
-  { X86::VFMSUB231PDZ256r,     X86::VFMSUB231PDZ256mb,    TB_BCAST_SD },
-  { X86::VFMSUB231PDZr,        X86::VFMSUB231PDZmb,       TB_BCAST_SD },
-  { X86::VFMSUB231PSZ128r,     X86::VFMSUB231PSZ128mb,    TB_BCAST_SS },
-  { X86::VFMSUB231PSZ256r,     X86::VFMSUB231PSZ256mb,    TB_BCAST_SS },
-  { X86::VFMSUB231PSZr,        X86::VFMSUB231PSZmb,       TB_BCAST_SS },
-  { X86::VFMSUBADD132PDZ128r,  X86::VFMSUBADD132PDZ128mb, TB_BCAST_SD },
-  { X86::VFMSUBADD132PDZ256r,  X86::VFMSUBADD132PDZ256mb, TB_BCAST_SD },
-  { X86::VFMSUBADD132PDZr,     X86::VFMSUBADD132PDZmb,    TB_BCAST_SD },
-  { X86::VFMSUBADD132PSZ128r,  X86::VFMSUBADD132PSZ128mb, TB_BCAST_SS },
-  { X86::VFMSUBADD132PSZ256r,  X86::VFMSUBADD132PSZ256mb, TB_BCAST_SS },
-  { X86::VFMSUBADD132PSZr,     X86::VFMSUBADD132PSZmb,    TB_BCAST_SS },
-  { X86::VFMSUBADD213PDZ128r,  X86::VFMSUBADD213PDZ128mb, TB_BCAST_SD },
-  { X86::VFMSUBADD213PDZ256r,  X86::VFMSUBADD213PDZ256mb, TB_BCAST_SD },
-  { X86::VFMSUBADD213PDZr,     X86::VFMSUBADD213PDZmb,    TB_BCAST_SD },
-  { X86::VFMSUBADD213PSZ128r,  X86::VFMSUBADD213PSZ128mb, TB_BCAST_SS },
-  { X86::VFMSUBADD213PSZ256r,  X86::VFMSUBADD213PSZ256mb, TB_BCAST_SS },
-  { X86::VFMSUBADD213PSZr,     X86::VFMSUBADD213PSZmb,    TB_BCAST_SS },
-  { X86::VFMSUBADD231PDZ128r,  X86::VFMSUBADD231PDZ128mb, TB_BCAST_SD },
-  { X86::VFMSUBADD231PDZ256r,  X86::VFMSUBADD231PDZ256mb, TB_BCAST_SD },
-  { X86::VFMSUBADD231PDZr,     X86::VFMSUBADD231PDZmb,    TB_BCAST_SD },
-  { X86::VFMSUBADD231PSZ128r,  X86::VFMSUBADD231PSZ128mb, TB_BCAST_SS },
-  { X86::VFMSUBADD231PSZ256r,  X86::VFMSUBADD231PSZ256mb, TB_BCAST_SS },
-  { X86::VFMSUBADD231PSZr,     X86::VFMSUBADD231PSZmb,    TB_BCAST_SS },
-  { X86::VFNMADD132PDZ128r,    X86::VFNMADD132PDZ128mb,   TB_BCAST_SD },
-  { X86::VFNMADD132PDZ256r,    X86::VFNMADD132PDZ256mb,   TB_BCAST_SD },
-  { X86::VFNMADD132PDZr,       X86::VFNMADD132PDZmb,      TB_BCAST_SD },
-  { X86::VFNMADD132PSZ128r,    X86::VFNMADD132PSZ128mb,   TB_BCAST_SS },
-  { X86::VFNMADD132PSZ256r,    X86::VFNMADD132PSZ256mb,   TB_BCAST_SS },
-  { X86::VFNMADD132PSZr,       X86::VFNMADD132PSZmb,      TB_BCAST_SS },
-  { X86::VFNMADD213PDZ128r,    X86::VFNMADD213PDZ128mb,   TB_BCAST_SD },
-  { X86::VFNMADD213PDZ256r,    X86::VFNMADD213PDZ256mb,   TB_BCAST_SD },
-  { X86::VFNMADD213PDZr,       X86::VFNMADD213PDZmb,      TB_BCAST_SD },
-  { X86::VFNMADD213PSZ128r,    X86::VFNMADD213PSZ128mb,   TB_BCAST_SS },
-  { X86::VFNMADD213PSZ256r,    X86::VFNMADD213PSZ256mb,   TB_BCAST_SS },
-  { X86::VFNMADD213PSZr,       X86::VFNMADD213PSZmb,      TB_BCAST_SS },
-  { X86::VFNMADD231PDZ128r,    X86::VFNMADD231PDZ128mb,   TB_BCAST_SD },
-  { X86::VFNMADD231PDZ256r,    X86::VFNMADD231PDZ256mb,   TB_BCAST_SD },
-  { X86::VFNMADD231PDZr,       X86::VFNMADD231PDZmb,      TB_BCAST_SD },
-  { X86::VFNMADD231PSZ128r,    X86::VFNMADD231PSZ128mb,   TB_BCAST_SS },
-  { X86::VFNMADD231PSZ256r,    X86::VFNMADD231PSZ256mb,   TB_BCAST_SS },
-  { X86::VFNMADD231PSZr,       X86::VFNMADD231PSZmb,      TB_BCAST_SS },
-  { X86::VFNMSUB132PDZ128r,    X86::VFNMSUB132PDZ128mb,   TB_BCAST_SD },
-  { X86::VFNMSUB132PDZ256r,    X86::VFNMSUB132PDZ256mb,   TB_BCAST_SD },
-  { X86::VFNMSUB132PDZr,       X86::VFNMSUB132PDZmb,      TB_BCAST_SD },
-  { X86::VFNMSUB132PSZ128r,    X86::VFNMSUB132PSZ128mb,   TB_BCAST_SS },
-  { X86::VFNMSUB132PSZ256r,    X86::VFNMSUB132PSZ256mb,   TB_BCAST_SS },
-  { X86::VFNMSUB132PSZr,       X86::VFNMSUB132PSZmb,      TB_BCAST_SS },
-  { X86::VFNMSUB213PDZ128r,    X86::VFNMSUB213PDZ128mb,   TB_BCAST_SD },
-  { X86::VFNMSUB213PDZ256r,    X86::VFNMSUB213PDZ256mb,   TB_BCAST_SD },
-  { X86::VFNMSUB213PDZr,       X86::VFNMSUB213PDZmb,      TB_BCAST_SD },
-  { X86::VFNMSUB213PSZ128r,    X86::VFNMSUB213PSZ128mb,   TB_BCAST_SS },
-  { X86::VFNMSUB213PSZ256r,    X86::VFNMSUB213PSZ256mb,   TB_BCAST_SS },
-  { X86::VFNMSUB213PSZr,       X86::VFNMSUB213PSZmb,      TB_BCAST_SS },
-  { X86::VFNMSUB231PDZ128r,    X86::VFNMSUB231PDZ128mb,   TB_BCAST_SD },
-  { X86::VFNMSUB231PDZ256r,    X86::VFNMSUB231PDZ256mb,   TB_BCAST_SD },
-  { X86::VFNMSUB231PDZr,       X86::VFNMSUB231PDZmb,      TB_BCAST_SD },
-  { X86::VFNMSUB231PSZ128r,    X86::VFNMSUB231PSZ128mb,   TB_BCAST_SS },
-  { X86::VFNMSUB231PSZ256r,    X86::VFNMSUB231PSZ256mb,   TB_BCAST_SS },
-  { X86::VFNMSUB231PSZr,       X86::VFNMSUB231PSZmb,      TB_BCAST_SS },
-  { X86::VPTERNLOGDZ128rri,    X86::VPTERNLOGDZ128rmbi,   TB_BCAST_D },
-  { X86::VPTERNLOGDZ256rri,    X86::VPTERNLOGDZ256rmbi,   TB_BCAST_D },
-  { X86::VPTERNLOGDZrri,       X86::VPTERNLOGDZrmbi,      TB_BCAST_D },
-  { X86::VPTERNLOGQZ128rri,    X86::VPTERNLOGQZ128rmbi,   TB_BCAST_Q },
-  { X86::VPTERNLOGQZ256rri,    X86::VPTERNLOGQZ256rmbi,   TB_BCAST_Q },
-  { X86::VPTERNLOGQZrri,       X86::VPTERNLOGQZrmbi,      TB_BCAST_Q },
-};
-
 // Table to map instructions safe to broadcast using a different width from the
 // element width.
 static const X86FoldTableEntry BroadcastSizeTable2[] = {
@@ -397,8 +103,10 @@ lookupFoldTableImpl(ArrayRef<X86FoldTableEntry> Table, unsigned RegOp) {
     CHECK_SORTED_UNIQUE(Table2)
     CHECK_SORTED_UNIQUE(Table3)
     CHECK_SORTED_UNIQUE(Table4)
+    CHECK_SORTED_UNIQUE(BroadcastTable1)
     CHECK_SORTED_UNIQUE(BroadcastTable2)
     CHECK_SORTED_UNIQUE(BroadcastTable3)
+    CHECK_SORTED_UNIQUE(BroadcastTable4)
     CHECK_SORTED_UNIQUE(BroadcastSizeTable2)
     CHECK_SORTED_UNIQUE(BroadcastSizeTable3)
     FoldTablesChecked.store(true, std::memory_order_relaxed);
diff --git a/llvm/utils/TableGen/X86FoldTablesEmitter.cpp b/llvm/utils/TableGen/X86FoldTablesEmitter.cpp
index d8dcdd570b1edd1..63483abddde039f 100644
--- a/llvm/utils/TableGen/X86FoldTablesEmitter.cpp
+++ b/llvm/utils/TableGen/X86FoldTablesEmitter.cpp
@@ -76,6 +76,16 @@ class X86FoldTablesEmitter {
     bool NoForward = false;
     bool FoldLoad = false;
     bool FoldStore = false;
+    enum BcastType {
+      BCAST_NONE,
+      BCAST_D,
+      BCAST_Q,
+      BCAST_SS,
+      BCAST_SD,
+      BCAST_SH,
+    };
+    BcastType BroadcastKind = BCAST_NONE;
+
     Align Alignment;
 
     X86FoldTableEntry() = default;
@@ -99,6 +109,25 @@ class X86FoldTablesEmitter {
         Attrs += "TB_NO_FORWARD|";
       if (Alignment != Align(1))
         Attrs += "TB_ALIGN_" + std::to_string(Alignment.value()) + "|";
+      switch (BroadcastKind) {
+      case BCAST_NONE:
+        break;
+      case BCAST_D:
+        Attrs += "TB_BCAST_D|";
+        break;
+      case BCAST_Q:
+        Attrs += "TB_BCAST_Q|";
+        break;
+      case BCAST_SS:
+        Attrs += "TB_BCAST_SS|";
+        break;
+      case BCAST_SD:
+        Attrs += "TB_BCAST_SD|";
+        break;
+      case BCAST_SH:
+        Attrs += "TB_BCAST_SH|";
+        break;
+      }
 
       StringRef SimplifiedAttrs = StringRef(Attrs).rtrim("|");
       if (SimplifiedAttrs.empty())
@@ -148,12 +177,19 @@ class X86FoldTablesEmitter {
   //
   // Table#i - Holds instructions which the their memory form
   //           performs a load OR a store, and their #i'th operand is folded.
+  //
+  // BroadcastTable#i - Holds instructions which the their memory form performs
+  //                    a broadcat load and their #i'th operand is folded.
   FoldTable Table2Addr;
   FoldTable Table0;
   FoldTable Table1;
   FoldTable Table2;
   FoldTable Table3;
   FoldTable Table4;
+  FoldTable BroadcastTable1;
+  FoldTable BroadcastTable2;
+  FoldTable BroadcastTable3;
+  FoldTable BroadcastTable4;
 
 public:
   X86FoldTablesEmitter(RecordKeeper &R) : Records(R), Target(R) {}
@@ -166,13 +202,17 @@ class X86FoldTablesEmitter {
   // S sets the strategy of adding the TB_NO_REVERSE flag.
   void updateTables(const CodeGenInstruction *RegInst,
                     const CodeGenInstruction *MemInst, uint16_t S = 0,
-                    bool IsManual = false);
+                    bool IsManual = false, bool IsBroadcast = false);
 
   // Generates X86FoldTableEntry with the given instructions and fill it with
   // the appropriate flags, then adds it to a memory fold table.
   void addEntryWithFlags(FoldTable &Table, const CodeGenInstruction *RegInst,
                          const CodeGenInstruction *MemInst, uint16_t S,
                          unsigned FoldedIdx, bool IsManual);
+  // Generates X86FoldTableEntry with the given instructions and adds it to a
+  // broadcast table.
+  void addBroadcastEntry(FoldTable &Table, const CodeGenInstruction *RegInst,
+                         const CodeGenInstruction *MemInst);
 
   // Print the given table as a static const C++ array of type
   // X86FoldTableEntry.
@@ -289,11 +329,12 @@ static bool isNOREXRegClass(const Record *Op) {
 class IsMatch {
   const CodeGenInstruction *MemInst;
   const X86Disassembler::RecognizableInstrBase MemRI;
+  bool IsBroadcast;
   const unsigned Variant;
 
 public:
-  IsMatch(const CodeGenInstruction *Inst, unsigned V)
-      : MemInst(Inst), MemRI(*MemInst), Variant(V) {}
+  IsMatch(const CodeGenInstruction *Inst, bool IsBroadcast, unsigned V)
+      : MemInst(Inst), MemRI(*MemInst), IsBroadcast(IsBroadcast), Variant(V) {}
 
   bool operator()(const CodeGenInstruction *RegInst) {
     X86Disassembler::RecognizableInstrBase RegRI(*RegInst);
@@ -303,7 +344,9 @@ class IsMatch {
     // EVEX_B means different things for memory and register forms.
     // register form: rounding control or SAE
     // memory form: broadcast
-    if (RegRI.HasEVEX_B || MemRI.HasEVEX_B)
+    if (IsBroadcast && (RegRI.HasEVEX_B || !MemRI.HasEVEX_B))
+      return false;
+    if (!IsBroadcast && (RegRI.HasEVEX_B || MemRI.HasEVEX_B))
       return false;
 
     if (!mayFoldFromLeftToRight(RegRI.Form, MemRI.Form))
@@ -475,9 +518,65 @@ void X86FoldTablesEmitter::addEntryWithFlags(FoldTable &Table,
   Table[RegInst] = Result;
 }
 
+void X86FoldTablesEmitter::addBroadcastEntry(
+    FoldTable &Table, const CodeGenInstruction *RegInst,
+    const CodeGenInstruction *MemInst) {
+
+  assert(Table.find(RegInst) == Table.end() && "Override entry unexpectedly");
+  X86FoldTableEntry Result = X86FoldTableEntry(RegInst, MemInst);
+
+  Record *RegRec = RegInst->TheDef;
+  StringRef RegInstName = RegRec->getName();
+  StringRef MemInstName = MemInst->TheDef->getName();
+  Record *Domain = RegRec->getValueAsDef("ExeDomain");
+  bool IsSSEPackedInt = Domain->getName() == "SSEPackedInt";
+  // TODO: Rename AVX512 instructions to simplify conditions, e.g.
+  //         D128 -> DZ128
+  //         D256 -> DZ256
+  //         VPERMI2Drr -> VPERMI2DZrr
+  //         VPERMI2Drmb -> VPERMI2DZrmb
+  if ((RegInstName.contains("DZ") || RegInstName.contains("DWZ") ||
+       RegInstName.contains("D128") || RegInstName.contains("D256") ||
+       RegInstName.contains("Dr") || RegInstName.contains("I32")) &&
+      IsSSEPackedInt) {
+    assert((MemInstName.contains("DZ") || RegInstName.contains("DWZ") ||
+            MemInstName.contains("D128") || MemInstName.contains("D256") ||
+            MemInstName.contains("Dr") || MemInstName.contains("I32")) &&
+           "Unmatched names for broadcast");
+    Result.BroadcastKind = X86FoldTableEntry::BCAST_D;
+  } else if ((RegInstName.contains("QZ") || RegInstName.contains("QBZ") ||
+              RegInstName.contains("Q128") || RegInstName.contains("Q256") ||
+              RegInstName.contains("Qr") || RegInstName.contains("I64")) &&
+             IsSSEPackedInt) {
+    assert((MemInstName.contains("QZ") || MemInstName.contains("QBZ") ||
+            MemInstName.contains("Q128") || MemInstName.contains("Q256") ||
+            MemInstName.contains("Qr") || MemInstName.contains("I64")) &&
+           "Unmatched names for broadcast");
+    Result.BroadcastKind = X86FoldTableEntry::BCAST_Q;
+  } else if (RegInstName.contains("PS") || RegInstName.contains("F32")) {
+    assert((MemInstName.contains("PS") || MemInstName.contains("F32")) &&
+           "Unmatched names for broadcast");
+    Result.BroadcastKind = X86FoldTableEntry::BCAST_SS;
+  } else if (RegInstName.contains("PD") || RegInstName.contains("F64")) {
+    assert((MemInstName.contains("PD") || MemInstName.contains("F64")) &&
+           "Unmatched names for broadcast");
+    Result.BroadcastKind = X86FoldTableEntry::BCAST_SD;
+  } else if (RegInstName.contains("PH")) {
+    assert(MemInstName.contains("PH") && "Unmatched names for broadcast");
+    Result.BroadcastKind = X86FoldTableEntry::BCAST_SH;
+  } else {
+    errs() << RegInstName << ", " << MemInstName << "\n";
+    llvm_unreachable("Name is not canoicalized for broadcast or "
+                     "ExeDomain is incorrect");
+  }
+
+  Table[RegInst] = Result;
+}
+
 void X86FoldTablesEmitter::updateTables(const CodeGenInstruction *RegInst,
                                         const CodeGenInstruction *MemInst,
-                                        uint16_t S, bool IsManual) {
+                                        uint16_t S, bool IsManual,
+                                        bool IsBroadcast) {
 
   Record *RegRec = RegInst->TheDef;
   Record *MemRec = MemInst->TheDef;
@@ -488,6 +587,7 @@ void X86FoldTablesEmitter::updateTables(const CodeGenInstruction *RegInst,
 
   // Instructions which Read-Modify-Write should be added to Table2Addr.
   if (!MemOutSize && RegOutSize == 1 && MemInSize == RegInSize) {
+    assert(!IsBroadcast && "Read-Modify-Write can not be broadcast");
     // X86 would not unfold Read-Modify-Write instructions so add TB_NO_REVERSE.
     addEntryWithFlags(Table2Addr, RegInst, MemInst, S | TB_NO_REVERSE, 0,
                       IsManual);
@@ -508,19 +608,28 @@ void X86FoldTablesEmitter::updateTables(const CodeGenInstruction *RegInst,
           isMemoryOperand(MemOpRec)) {
         switch (I) {
         case 0:
+          assert(!IsBroadcast && "BroadcastTable0 needs to be added");
           addEntryWithFlags(Table0, RegInst, MemInst, S, 0, IsManual);
           return;
         case 1:
-          addEntryWithFlags(Table1, RegInst, MemInst, S, 1, IsManual);
+          IsBroadcast
+              ? addBroadcastEntry(BroadcastTable1, RegInst, MemInst)
+              : addEntryWithFlags(Table1, RegInst, MemInst, S, 1, IsManual);
           return;
         case 2:
-          addEntryWithFlags(Table2, RegInst, MemInst, S, 2, IsManual);
+          IsBroadcast
+              ? addBroadcastEntry(BroadcastTable2, RegInst, MemInst)
+              : addEntryWithFlags(Table2, RegInst, MemInst, S, 2, IsManual);
           return;
         case 3:
-          addEntryWithFlags(Table3, RegInst, MemInst, S, 3, IsManual);
+          IsBroadcast
+              ? addBroadcastEntry(BroadcastTable3, RegInst, MemInst)
+              : addEntryWithFlags(Table3, RegInst, MemInst, S, 3, IsManual);
           return;
         case 4:
-          addEntryWithFlags(Table4, RegInst, MemInst, S, 4, IsManual);
+          IsBroadcast
+              ? addBroadcastEntry(BroadcastTable4, RegInst, MemInst)
+              : addEntryWithFlags(Table4, RegInst, MemInst, S, 4, IsManual);
           return;
         }
       }
@@ -536,8 +645,10 @@ void X86FoldTablesEmitter::updateTables(const CodeGenInstruction *RegInst,
     Record *RegOpRec = RegInst->Operands[RegOutSize - 1].Rec;
     Record *MemOpRec = MemInst->Operands[RegOutSize - 1].Rec;
     if (isRegisterOperand(RegOpRec) && isMemoryOperand(MemOpRec) &&
-        getRegOperandSize(RegOpRec) == getMemOperandSize(MemOpRec))
+        getRegOperandSize(RegOpRec) == getMemOperandSize(MemOpRec)) {
+      assert(!IsBroadcast && "Store can not be broadcast");
       addEntryWithFlags(Table0, RegInst, MemInst, S, 0, IsManual);
+    }
   }
 }
 
@@ -583,6 +694,10 @@ void X86FoldTablesEmitter::run(raw_ostream &O) {
     }
   }
 
+  // Create a copy b/c the register instruction will removed when a new entry is
+  // added into memory fold tables.
+  auto RegInstsForBroadcast = RegInsts;
+
   Record *AsmWriter = Target.getAsmWriter();
   unsigned Variant = AsmWriter->getValueAsInt("Variant");
   auto FixUp = [&](const CodeGenInstruction *RegInst) {
@@ -606,11 +721,30 @@ void X86FoldTablesEmitter::run(raw_ostream &O) {
     // opcode.
     std::vector<const CodeGenInstruction *> &OpcRegInsts = RegInstsIt->second;
 
-    auto Match = find_if(OpcRegInsts, IsMatch(MemInst, Variant));
+    // Memory fold tables
+    auto Match =
+        find_if(OpcRegInsts, IsMatch(MemInst, /*IsBroadcast=*/false, Variant));
     if (Match != OpcRegInsts.end()) {
       updateTables(FixUp(*Match), MemInst);
       OpcRegInsts.erase(Match);
     }
+
+    // Broadcast tables
+    StringRef MemInstName = MemInst->TheDef->getName();
+    if (!MemInstName.contains("mb") && !MemInstName.contains("mib"))
+      continue;
+    RegInstsIt = RegInstsForBroadcast.find(Opc);
+    assert(RegInstsIt != RegInstsForBroadcast.end() &&
+           "Unexpected control flow");
+    std::vector<const CodeGenInstruction *> &OpcRegInstsForBroadcast =
+        RegInstsIt->second;
+    Match = find_if(OpcRegInstsForBroadcast,
+                    IsMatch(MemInst, /*IsBroadcast=*/true, Variant));
+    if (Match != OpcRegInstsForBroadcast.end()) {
+      updateTables(FixUp(*Match), MemInst, 0, /*IsMannual=*/false,
+                   /*IsBroadcast=*/true);
+      OpcRegInstsForBroadcast.erase(Match);
+    }
   }
 
   // Add the manually mapped instructions listed above.
@@ -635,6 +769,10 @@ void X86FoldTablesEmitter::run(raw_ostream &O) {
   CheckMemFoldTable(Table2);
   CheckMemFoldTable(Table3);
   CheckMemFoldTable(Table4);
+  CheckMemFoldTable(BroadcastTable1);
+  CheckMemFoldTable(BroadcastTable2);
+  CheckMemFoldTable(BroadcastTable3);
+  CheckMemFoldTable(BroadcastTable4);
 #endif
 #define PRINT_TABLE(TABLE) printTable(TABLE, #TABLE, OS);
   // Print all tables.
@@ -644,6 +782,10 @@ void X86FoldTablesEmitter::run(raw_ostream &O) {
   PRINT_TABLE(Table2)
   PRINT_TABLE(Table3)
   PRINT_TABLE(Table4)
+  PRINT_TABLE(BroadcastTable1)
+  PRINT_TABLE(BroadcastTable2)
+  PRINT_TABLE(BroadcastTable3)
+  PRINT_TABLE(BroadcastTable4)
 }
 
 static TableGen::Emitter::OptClass<X86FoldTablesEmitter>

>From 066a3e94285f074faeb7bd2262743564fb23c66c Mon Sep 17 00:00:00 2001
From: Shengchen Kan <shengchen.kan at intel.com>
Date: Thu, 30 Nov 2023 18:30:08 +0800
Subject: [PATCH 2/3] Update tests

---
 llvm/test/CodeGen/X86/dpbusd_const.ll  |    6 +-
 llvm/test/TableGen/x86-fold-tables.inc | 2631 ++++++++++++++++++++++++
 2 files changed, 2634 insertions(+), 3 deletions(-)

diff --git a/llvm/test/CodeGen/X86/dpbusd_const.ll b/llvm/test/CodeGen/X86/dpbusd_const.ll
index 29d8e58848588a5..2fe9feb06dff67c 100644
--- a/llvm/test/CodeGen/X86/dpbusd_const.ll
+++ b/llvm/test/CodeGen/X86/dpbusd_const.ll
@@ -194,7 +194,7 @@ define i32 @mul_16xi8_zc(<16 x i8> %a, i32 %c) {
 ; AVX512VLVNNI-LABEL: mul_16xi8_zc:
 ; AVX512VLVNNI:       # %bb.0: # %entry
 ; AVX512VLVNNI-NEXT:    vpxor %xmm1, %xmm1, %xmm1
-; AVX512VLVNNI-NEXT:    vpdpbusd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm1
+; AVX512VLVNNI-NEXT:    vpdpbusd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm1
 ; AVX512VLVNNI-NEXT:    vpshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
 ; AVX512VLVNNI-NEXT:    vpaddd %xmm0, %xmm1, %xmm0
 ; AVX512VLVNNI-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[1,1,1,1]
@@ -245,7 +245,7 @@ define i32 @mul_32xi8_zc(<32 x i8> %a, i32 %c) {
 ; AVX512VLVNNI-LABEL: mul_32xi8_zc:
 ; AVX512VLVNNI:       # %bb.0: # %entry
 ; AVX512VLVNNI-NEXT:    vpxor %xmm1, %xmm1, %xmm1
-; AVX512VLVNNI-NEXT:    vpdpbusd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm1
+; AVX512VLVNNI-NEXT:    vpdpbusd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm1
 ; AVX512VLVNNI-NEXT:    vextracti128 $1, %ymm1, %xmm0
 ; AVX512VLVNNI-NEXT:    vpaddd %xmm0, %xmm1, %xmm0
 ; AVX512VLVNNI-NEXT:    vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
@@ -287,7 +287,7 @@ define i32 @mul_64xi8_zc(<64 x i8> %a, i32 %c) {
 ; AVX512-LABEL: mul_64xi8_zc:
 ; AVX512:       # %bb.0: # %entry
 ; AVX512-NEXT:    vpxor %xmm1, %xmm1, %xmm1
-; AVX512-NEXT:    vpdpbusd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm0, %zmm1
+; AVX512-NEXT:    vpdpbusd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to16}, %zmm0, %zmm1
 ; AVX512-NEXT:    vextracti64x4 $1, %zmm1, %ymm0
 ; AVX512-NEXT:    vpaddd %zmm0, %zmm1, %zmm0
 ; AVX512-NEXT:    vextracti128 $1, %ymm0, %xmm1
diff --git a/llvm/test/TableGen/x86-fold-tables.inc b/llvm/test/TableGen/x86-fold-tables.inc
index a0d35655ae4e60f..4e33b462234b3a8 100644
--- a/llvm/test/TableGen/x86-fold-tables.inc
+++ b/llvm/test/TableGen/x86-fold-tables.inc
@@ -5995,3 +5995,2634 @@ static const X86FoldTableEntry Table4[] = {
   {X86::VXORPSZrrk, X86::VXORPSZrmk, 0},
 };
 
+static const X86FoldTableEntry BroadcastTable1[] = {
+  {X86::VCVTDQ2PDZ128rr, X86::VCVTDQ2PDZ128rmb, TB_BCAST_SD},
+  {X86::VCVTDQ2PDZ256rr, X86::VCVTDQ2PDZ256rmb, TB_BCAST_SD},
+  {X86::VCVTDQ2PDZrr, X86::VCVTDQ2PDZrmb, TB_BCAST_SD},
+  {X86::VCVTDQ2PHZ128rr, X86::VCVTDQ2PHZ128rmb, TB_BCAST_SH},
+  {X86::VCVTDQ2PHZ256rr, X86::VCVTDQ2PHZ256rmb, TB_BCAST_SH},
+  {X86::VCVTDQ2PHZrr, X86::VCVTDQ2PHZrmb, TB_BCAST_SH},
+  {X86::VCVTDQ2PSZ128rr, X86::VCVTDQ2PSZ128rmb, TB_BCAST_SS},
+  {X86::VCVTDQ2PSZ256rr, X86::VCVTDQ2PSZ256rmb, TB_BCAST_SS},
+  {X86::VCVTDQ2PSZrr, X86::VCVTDQ2PSZrmb, TB_BCAST_SS},
+  {X86::VCVTNEPS2BF16Z128rr, X86::VCVTNEPS2BF16Z128rmb, TB_BCAST_SS},
+  {X86::VCVTNEPS2BF16Z256rr, X86::VCVTNEPS2BF16Z256rmb, TB_BCAST_SS},
+  {X86::VCVTNEPS2BF16Zrr, X86::VCVTNEPS2BF16Zrmb, TB_BCAST_SS},
+  {X86::VCVTPD2DQZ128rr, X86::VCVTPD2DQZ128rmb, TB_BCAST_SD},
+  {X86::VCVTPD2DQZ256rr, X86::VCVTPD2DQZ256rmb, TB_BCAST_SD},
+  {X86::VCVTPD2DQZrr, X86::VCVTPD2DQZrmb, TB_BCAST_SD},
+  {X86::VCVTPD2PHZ128rr, X86::VCVTPD2PHZ128rmb, TB_BCAST_SD},
+  {X86::VCVTPD2PHZ256rr, X86::VCVTPD2PHZ256rmb, TB_BCAST_SD},
+  {X86::VCVTPD2PHZrr, X86::VCVTPD2PHZrmb, TB_BCAST_SD},
+  {X86::VCVTPD2PSZ128rr, X86::VCVTPD2PSZ128rmb, TB_BCAST_SS},
+  {X86::VCVTPD2PSZ256rr, X86::VCVTPD2PSZ256rmb, TB_BCAST_SS},
+  {X86::VCVTPD2PSZrr, X86::VCVTPD2PSZrmb, TB_BCAST_SS},
+  {X86::VCVTPD2QQZ128rr, X86::VCVTPD2QQZ128rmb, TB_BCAST_SD},
+  {X86::VCVTPD2QQZ256rr, X86::VCVTPD2QQZ256rmb, TB_BCAST_SD},
+  {X86::VCVTPD2QQZrr, X86::VCVTPD2QQZrmb, TB_BCAST_SD},
+  {X86::VCVTPD2UDQZ128rr, X86::VCVTPD2UDQZ128rmb, TB_BCAST_SD},
+  {X86::VCVTPD2UDQZ256rr, X86::VCVTPD2UDQZ256rmb, TB_BCAST_SD},
+  {X86::VCVTPD2UDQZrr, X86::VCVTPD2UDQZrmb, TB_BCAST_SD},
+  {X86::VCVTPD2UQQZ128rr, X86::VCVTPD2UQQZ128rmb, TB_BCAST_SD},
+  {X86::VCVTPD2UQQZ256rr, X86::VCVTPD2UQQZ256rmb, TB_BCAST_SD},
+  {X86::VCVTPD2UQQZrr, X86::VCVTPD2UQQZrmb, TB_BCAST_SD},
+  {X86::VCVTPH2DQZ128rr, X86::VCVTPH2DQZ128rmb, TB_BCAST_SH},
+  {X86::VCVTPH2DQZ256rr, X86::VCVTPH2DQZ256rmb, TB_BCAST_SH},
+  {X86::VCVTPH2DQZrr, X86::VCVTPH2DQZrmb, TB_BCAST_SH},
+  {X86::VCVTPH2PDZ128rr, X86::VCVTPH2PDZ128rmb, TB_BCAST_SD},
+  {X86::VCVTPH2PDZ256rr, X86::VCVTPH2PDZ256rmb, TB_BCAST_SD},
+  {X86::VCVTPH2PDZrr, X86::VCVTPH2PDZrmb, TB_BCAST_SD},
+  {X86::VCVTPH2PSXZ128rr, X86::VCVTPH2PSXZ128rmb, TB_BCAST_SS},
+  {X86::VCVTPH2PSXZ256rr, X86::VCVTPH2PSXZ256rmb, TB_BCAST_SS},
+  {X86::VCVTPH2PSXZrr, X86::VCVTPH2PSXZrmb, TB_BCAST_SS},
+  {X86::VCVTPH2QQZ128rr, X86::VCVTPH2QQZ128rmb, TB_BCAST_SH},
+  {X86::VCVTPH2QQZ256rr, X86::VCVTPH2QQZ256rmb, TB_BCAST_SH},
+  {X86::VCVTPH2QQZrr, X86::VCVTPH2QQZrmb, TB_BCAST_SH},
+  {X86::VCVTPH2UDQZ128rr, X86::VCVTPH2UDQZ128rmb, TB_BCAST_SH},
+  {X86::VCVTPH2UDQZ256rr, X86::VCVTPH2UDQZ256rmb, TB_BCAST_SH},
+  {X86::VCVTPH2UDQZrr, X86::VCVTPH2UDQZrmb, TB_BCAST_SH},
+  {X86::VCVTPH2UQQZ128rr, X86::VCVTPH2UQQZ128rmb, TB_BCAST_SH},
+  {X86::VCVTPH2UQQZ256rr, X86::VCVTPH2UQQZ256rmb, TB_BCAST_SH},
+  {X86::VCVTPH2UQQZrr, X86::VCVTPH2UQQZrmb, TB_BCAST_SH},
+  {X86::VCVTPH2UWZ128rr, X86::VCVTPH2UWZ128rmb, TB_BCAST_SH},
+  {X86::VCVTPH2UWZ256rr, X86::VCVTPH2UWZ256rmb, TB_BCAST_SH},
+  {X86::VCVTPH2UWZrr, X86::VCVTPH2UWZrmb, TB_BCAST_SH},
+  {X86::VCVTPH2WZ128rr, X86::VCVTPH2WZ128rmb, TB_BCAST_SH},
+  {X86::VCVTPH2WZ256rr, X86::VCVTPH2WZ256rmb, TB_BCAST_SH},
+  {X86::VCVTPH2WZrr, X86::VCVTPH2WZrmb, TB_BCAST_SH},
+  {X86::VCVTPS2DQZ128rr, X86::VCVTPS2DQZ128rmb, TB_BCAST_SS},
+  {X86::VCVTPS2DQZ256rr, X86::VCVTPS2DQZ256rmb, TB_BCAST_SS},
+  {X86::VCVTPS2DQZrr, X86::VCVTPS2DQZrmb, TB_BCAST_SS},
+  {X86::VCVTPS2PDZ128rr, X86::VCVTPS2PDZ128rmb, TB_BCAST_SS},
+  {X86::VCVTPS2PDZ256rr, X86::VCVTPS2PDZ256rmb, TB_BCAST_SS},
+  {X86::VCVTPS2PDZrr, X86::VCVTPS2PDZrmb, TB_BCAST_SS},
+  {X86::VCVTPS2PHXZ128rr, X86::VCVTPS2PHXZ128rmb, TB_BCAST_SS},
+  {X86::VCVTPS2PHXZ256rr, X86::VCVTPS2PHXZ256rmb, TB_BCAST_SS},
+  {X86::VCVTPS2PHXZrr, X86::VCVTPS2PHXZrmb, TB_BCAST_SS},
+  {X86::VCVTPS2QQZ128rr, X86::VCVTPS2QQZ128rmb, TB_BCAST_SS},
+  {X86::VCVTPS2QQZ256rr, X86::VCVTPS2QQZ256rmb, TB_BCAST_SS},
+  {X86::VCVTPS2QQZrr, X86::VCVTPS2QQZrmb, TB_BCAST_SS},
+  {X86::VCVTPS2UDQZ128rr, X86::VCVTPS2UDQZ128rmb, TB_BCAST_SS},
+  {X86::VCVTPS2UDQZ256rr, X86::VCVTPS2UDQZ256rmb, TB_BCAST_SS},
+  {X86::VCVTPS2UDQZrr, X86::VCVTPS2UDQZrmb, TB_BCAST_SS},
+  {X86::VCVTPS2UQQZ128rr, X86::VCVTPS2UQQZ128rmb, TB_BCAST_SS},
+  {X86::VCVTPS2UQQZ256rr, X86::VCVTPS2UQQZ256rmb, TB_BCAST_SS},
+  {X86::VCVTPS2UQQZrr, X86::VCVTPS2UQQZrmb, TB_BCAST_SS},
+  {X86::VCVTQQ2PDZ128rr, X86::VCVTQQ2PDZ128rmb, TB_BCAST_SD},
+  {X86::VCVTQQ2PDZ256rr, X86::VCVTQQ2PDZ256rmb, TB_BCAST_SD},
+  {X86::VCVTQQ2PDZrr, X86::VCVTQQ2PDZrmb, TB_BCAST_SD},
+  {X86::VCVTQQ2PHZ128rr, X86::VCVTQQ2PHZ128rmb, TB_BCAST_SH},
+  {X86::VCVTQQ2PHZ256rr, X86::VCVTQQ2PHZ256rmb, TB_BCAST_SH},
+  {X86::VCVTQQ2PHZrr, X86::VCVTQQ2PHZrmb, TB_BCAST_SH},
+  {X86::VCVTQQ2PSZ128rr, X86::VCVTQQ2PSZ128rmb, TB_BCAST_SS},
+  {X86::VCVTQQ2PSZ256rr, X86::VCVTQQ2PSZ256rmb, TB_BCAST_SS},
+  {X86::VCVTQQ2PSZrr, X86::VCVTQQ2PSZrmb, TB_BCAST_SS},
+  {X86::VCVTTPD2DQZ128rr, X86::VCVTTPD2DQZ128rmb, TB_BCAST_SD},
+  {X86::VCVTTPD2DQZ256rr, X86::VCVTTPD2DQZ256rmb, TB_BCAST_SD},
+  {X86::VCVTTPD2DQZrr, X86::VCVTTPD2DQZrmb, TB_BCAST_SD},
+  {X86::VCVTTPD2QQZ128rr, X86::VCVTTPD2QQZ128rmb, TB_BCAST_SD},
+  {X86::VCVTTPD2QQZ256rr, X86::VCVTTPD2QQZ256rmb, TB_BCAST_SD},
+  {X86::VCVTTPD2QQZrr, X86::VCVTTPD2QQZrmb, TB_BCAST_SD},
+  {X86::VCVTTPD2UDQZ128rr, X86::VCVTTPD2UDQZ128rmb, TB_BCAST_SD},
+  {X86::VCVTTPD2UDQZ256rr, X86::VCVTTPD2UDQZ256rmb, TB_BCAST_SD},
+  {X86::VCVTTPD2UDQZrr, X86::VCVTTPD2UDQZrmb, TB_BCAST_SD},
+  {X86::VCVTTPD2UQQZ128rr, X86::VCVTTPD2UQQZ128rmb, TB_BCAST_SD},
+  {X86::VCVTTPD2UQQZ256rr, X86::VCVTTPD2UQQZ256rmb, TB_BCAST_SD},
+  {X86::VCVTTPD2UQQZrr, X86::VCVTTPD2UQQZrmb, TB_BCAST_SD},
+  {X86::VCVTTPH2DQZ128rr, X86::VCVTTPH2DQZ128rmb, TB_BCAST_SH},
+  {X86::VCVTTPH2DQZ256rr, X86::VCVTTPH2DQZ256rmb, TB_BCAST_SH},
+  {X86::VCVTTPH2DQZrr, X86::VCVTTPH2DQZrmb, TB_BCAST_SH},
+  {X86::VCVTTPH2QQZ128rr, X86::VCVTTPH2QQZ128rmb, TB_BCAST_SH},
+  {X86::VCVTTPH2QQZ256rr, X86::VCVTTPH2QQZ256rmb, TB_BCAST_SH},
+  {X86::VCVTTPH2QQZrr, X86::VCVTTPH2QQZrmb, TB_BCAST_SH},
+  {X86::VCVTTPH2UDQZ128rr, X86::VCVTTPH2UDQZ128rmb, TB_BCAST_SH},
+  {X86::VCVTTPH2UDQZ256rr, X86::VCVTTPH2UDQZ256rmb, TB_BCAST_SH},
+  {X86::VCVTTPH2UDQZrr, X86::VCVTTPH2UDQZrmb, TB_BCAST_SH},
+  {X86::VCVTTPH2UQQZ128rr, X86::VCVTTPH2UQQZ128rmb, TB_BCAST_SH},
+  {X86::VCVTTPH2UQQZ256rr, X86::VCVTTPH2UQQZ256rmb, TB_BCAST_SH},
+  {X86::VCVTTPH2UQQZrr, X86::VCVTTPH2UQQZrmb, TB_BCAST_SH},
+  {X86::VCVTTPH2UWZ128rr, X86::VCVTTPH2UWZ128rmb, TB_BCAST_SH},
+  {X86::VCVTTPH2UWZ256rr, X86::VCVTTPH2UWZ256rmb, TB_BCAST_SH},
+  {X86::VCVTTPH2UWZrr, X86::VCVTTPH2UWZrmb, TB_BCAST_SH},
+  {X86::VCVTTPH2WZ128rr, X86::VCVTTPH2WZ128rmb, TB_BCAST_SH},
+  {X86::VCVTTPH2WZ256rr, X86::VCVTTPH2WZ256rmb, TB_BCAST_SH},
+  {X86::VCVTTPH2WZrr, X86::VCVTTPH2WZrmb, TB_BCAST_SH},
+  {X86::VCVTTPS2DQZ128rr, X86::VCVTTPS2DQZ128rmb, TB_BCAST_SS},
+  {X86::VCVTTPS2DQZ256rr, X86::VCVTTPS2DQZ256rmb, TB_BCAST_SS},
+  {X86::VCVTTPS2DQZrr, X86::VCVTTPS2DQZrmb, TB_BCAST_SS},
+  {X86::VCVTTPS2QQZ128rr, X86::VCVTTPS2QQZ128rmb, TB_BCAST_SS},
+  {X86::VCVTTPS2QQZ256rr, X86::VCVTTPS2QQZ256rmb, TB_BCAST_SS},
+  {X86::VCVTTPS2QQZrr, X86::VCVTTPS2QQZrmb, TB_BCAST_SS},
+  {X86::VCVTTPS2UDQZ128rr, X86::VCVTTPS2UDQZ128rmb, TB_BCAST_SS},
+  {X86::VCVTTPS2UDQZ256rr, X86::VCVTTPS2UDQZ256rmb, TB_BCAST_SS},
+  {X86::VCVTTPS2UDQZrr, X86::VCVTTPS2UDQZrmb, TB_BCAST_SS},
+  {X86::VCVTTPS2UQQZ128rr, X86::VCVTTPS2UQQZ128rmb, TB_BCAST_SS},
+  {X86::VCVTTPS2UQQZ256rr, X86::VCVTTPS2UQQZ256rmb, TB_BCAST_SS},
+  {X86::VCVTTPS2UQQZrr, X86::VCVTTPS2UQQZrmb, TB_BCAST_SS},
+  {X86::VCVTUDQ2PDZ128rr, X86::VCVTUDQ2PDZ128rmb, TB_BCAST_SD},
+  {X86::VCVTUDQ2PDZ256rr, X86::VCVTUDQ2PDZ256rmb, TB_BCAST_SD},
+  {X86::VCVTUDQ2PDZrr, X86::VCVTUDQ2PDZrmb, TB_BCAST_SD},
+  {X86::VCVTUDQ2PHZ128rr, X86::VCVTUDQ2PHZ128rmb, TB_BCAST_SH},
+  {X86::VCVTUDQ2PHZ256rr, X86::VCVTUDQ2PHZ256rmb, TB_BCAST_SH},
+  {X86::VCVTUDQ2PHZrr, X86::VCVTUDQ2PHZrmb, TB_BCAST_SH},
+  {X86::VCVTUDQ2PSZ128rr, X86::VCVTUDQ2PSZ128rmb, TB_BCAST_SS},
+  {X86::VCVTUDQ2PSZ256rr, X86::VCVTUDQ2PSZ256rmb, TB_BCAST_SS},
+  {X86::VCVTUDQ2PSZrr, X86::VCVTUDQ2PSZrmb, TB_BCAST_SS},
+  {X86::VCVTUQQ2PDZ128rr, X86::VCVTUQQ2PDZ128rmb, TB_BCAST_SD},
+  {X86::VCVTUQQ2PDZ256rr, X86::VCVTUQQ2PDZ256rmb, TB_BCAST_SD},
+  {X86::VCVTUQQ2PDZrr, X86::VCVTUQQ2PDZrmb, TB_BCAST_SD},
+  {X86::VCVTUQQ2PHZ128rr, X86::VCVTUQQ2PHZ128rmb, TB_BCAST_SH},
+  {X86::VCVTUQQ2PHZ256rr, X86::VCVTUQQ2PHZ256rmb, TB_BCAST_SH},
+  {X86::VCVTUQQ2PHZrr, X86::VCVTUQQ2PHZrmb, TB_BCAST_SH},
+  {X86::VCVTUQQ2PSZ128rr, X86::VCVTUQQ2PSZ128rmb, TB_BCAST_SS},
+  {X86::VCVTUQQ2PSZ256rr, X86::VCVTUQQ2PSZ256rmb, TB_BCAST_SS},
+  {X86::VCVTUQQ2PSZrr, X86::VCVTUQQ2PSZrmb, TB_BCAST_SS},
+  {X86::VCVTUW2PHZ128rr, X86::VCVTUW2PHZ128rmb, TB_BCAST_SH},
+  {X86::VCVTUW2PHZ256rr, X86::VCVTUW2PHZ256rmb, TB_BCAST_SH},
+  {X86::VCVTUW2PHZrr, X86::VCVTUW2PHZrmb, TB_BCAST_SH},
+  {X86::VCVTW2PHZ128rr, X86::VCVTW2PHZ128rmb, TB_BCAST_SH},
+  {X86::VCVTW2PHZ256rr, X86::VCVTW2PHZ256rmb, TB_BCAST_SH},
+  {X86::VCVTW2PHZrr, X86::VCVTW2PHZrmb, TB_BCAST_SH},
+  {X86::VEXP2PDZr, X86::VEXP2PDZmb, TB_BCAST_SD},
+  {X86::VEXP2PSZr, X86::VEXP2PSZmb, TB_BCAST_SS},
+  {X86::VFPCLASSPDZ128rr, X86::VFPCLASSPDZ128rmb, TB_BCAST_SD},
+  {X86::VFPCLASSPDZ256rr, X86::VFPCLASSPDZ256rmb, TB_BCAST_SD},
+  {X86::VFPCLASSPDZrr, X86::VFPCLASSPDZrmb, TB_BCAST_SD},
+  {X86::VFPCLASSPHZ128rr, X86::VFPCLASSPHZ128rmb, TB_BCAST_SH},
+  {X86::VFPCLASSPHZ256rr, X86::VFPCLASSPHZ256rmb, TB_BCAST_SH},
+  {X86::VFPCLASSPHZrr, X86::VFPCLASSPHZrmb, TB_BCAST_SH},
+  {X86::VFPCLASSPSZ128rr, X86::VFPCLASSPSZ128rmb, TB_BCAST_SS},
+  {X86::VFPCLASSPSZ256rr, X86::VFPCLASSPSZ256rmb, TB_BCAST_SS},
+  {X86::VFPCLASSPSZrr, X86::VFPCLASSPSZrmb, TB_BCAST_SS},
+  {X86::VGETEXPPDZ128r, X86::VGETEXPPDZ128mb, TB_BCAST_SD},
+  {X86::VGETEXPPDZ256r, X86::VGETEXPPDZ256mb, TB_BCAST_SD},
+  {X86::VGETEXPPDZr, X86::VGETEXPPDZmb, TB_BCAST_SD},
+  {X86::VGETEXPPHZ128r, X86::VGETEXPPHZ128mb, TB_BCAST_SH},
+  {X86::VGETEXPPHZ256r, X86::VGETEXPPHZ256mb, TB_BCAST_SH},
+  {X86::VGETEXPPHZr, X86::VGETEXPPHZmb, TB_BCAST_SH},
+  {X86::VGETEXPPSZ128r, X86::VGETEXPPSZ128mb, TB_BCAST_SS},
+  {X86::VGETEXPPSZ256r, X86::VGETEXPPSZ256mb, TB_BCAST_SS},
+  {X86::VGETEXPPSZr, X86::VGETEXPPSZmb, TB_BCAST_SS},
+  {X86::VGETMANTPDZ128rri, X86::VGETMANTPDZ128rmbi, TB_BCAST_SD},
+  {X86::VGETMANTPDZ256rri, X86::VGETMANTPDZ256rmbi, TB_BCAST_SD},
+  {X86::VGETMANTPDZrri, X86::VGETMANTPDZrmbi, TB_BCAST_SD},
+  {X86::VGETMANTPHZ128rri, X86::VGETMANTPHZ128rmbi, TB_BCAST_SH},
+  {X86::VGETMANTPHZ256rri, X86::VGETMANTPHZ256rmbi, TB_BCAST_SH},
+  {X86::VGETMANTPHZrri, X86::VGETMANTPHZrmbi, TB_BCAST_SH},
+  {X86::VGETMANTPSZ128rri, X86::VGETMANTPSZ128rmbi, TB_BCAST_SS},
+  {X86::VGETMANTPSZ256rri, X86::VGETMANTPSZ256rmbi, TB_BCAST_SS},
+  {X86::VGETMANTPSZrri, X86::VGETMANTPSZrmbi, TB_BCAST_SS},
+  {X86::VPABSDZ128rr, X86::VPABSDZ128rmb, TB_BCAST_D},
+  {X86::VPABSDZ256rr, X86::VPABSDZ256rmb, TB_BCAST_D},
+  {X86::VPABSDZrr, X86::VPABSDZrmb, TB_BCAST_D},
+  {X86::VPABSQZ128rr, X86::VPABSQZ128rmb, TB_BCAST_Q},
+  {X86::VPABSQZ256rr, X86::VPABSQZ256rmb, TB_BCAST_Q},
+  {X86::VPABSQZrr, X86::VPABSQZrmb, TB_BCAST_Q},
+  {X86::VPCONFLICTDZ128rr, X86::VPCONFLICTDZ128rmb, TB_BCAST_D},
+  {X86::VPCONFLICTDZ256rr, X86::VPCONFLICTDZ256rmb, TB_BCAST_D},
+  {X86::VPCONFLICTDZrr, X86::VPCONFLICTDZrmb, TB_BCAST_D},
+  {X86::VPCONFLICTQZ128rr, X86::VPCONFLICTQZ128rmb, TB_BCAST_Q},
+  {X86::VPCONFLICTQZ256rr, X86::VPCONFLICTQZ256rmb, TB_BCAST_Q},
+  {X86::VPCONFLICTQZrr, X86::VPCONFLICTQZrmb, TB_BCAST_Q},
+  {X86::VPERMILPDZ128ri, X86::VPERMILPDZ128mbi, TB_BCAST_SD},
+  {X86::VPERMILPDZ256ri, X86::VPERMILPDZ256mbi, TB_BCAST_SD},
+  {X86::VPERMILPDZri, X86::VPERMILPDZmbi, TB_BCAST_SD},
+  {X86::VPERMILPSZ128ri, X86::VPERMILPSZ128mbi, TB_BCAST_SS},
+  {X86::VPERMILPSZ256ri, X86::VPERMILPSZ256mbi, TB_BCAST_SS},
+  {X86::VPERMILPSZri, X86::VPERMILPSZmbi, TB_BCAST_SS},
+  {X86::VPERMPDZ256ri, X86::VPERMPDZ256mbi, TB_BCAST_SD},
+  {X86::VPERMPDZri, X86::VPERMPDZmbi, TB_BCAST_SD},
+  {X86::VPERMQZ256ri, X86::VPERMQZ256mbi, TB_BCAST_Q},
+  {X86::VPERMQZri, X86::VPERMQZmbi, TB_BCAST_Q},
+  {X86::VPLZCNTDZ128rr, X86::VPLZCNTDZ128rmb, TB_BCAST_D},
+  {X86::VPLZCNTDZ256rr, X86::VPLZCNTDZ256rmb, TB_BCAST_D},
+  {X86::VPLZCNTDZrr, X86::VPLZCNTDZrmb, TB_BCAST_D},
+  {X86::VPLZCNTQZ128rr, X86::VPLZCNTQZ128rmb, TB_BCAST_Q},
+  {X86::VPLZCNTQZ256rr, X86::VPLZCNTQZ256rmb, TB_BCAST_Q},
+  {X86::VPLZCNTQZrr, X86::VPLZCNTQZrmb, TB_BCAST_Q},
+  {X86::VPOPCNTDZ128rr, X86::VPOPCNTDZ128rmb, TB_BCAST_D},
+  {X86::VPOPCNTDZ256rr, X86::VPOPCNTDZ256rmb, TB_BCAST_D},
+  {X86::VPOPCNTDZrr, X86::VPOPCNTDZrmb, TB_BCAST_D},
+  {X86::VPOPCNTQZ128rr, X86::VPOPCNTQZ128rmb, TB_BCAST_Q},
+  {X86::VPOPCNTQZ256rr, X86::VPOPCNTQZ256rmb, TB_BCAST_Q},
+  {X86::VPOPCNTQZrr, X86::VPOPCNTQZrmb, TB_BCAST_Q},
+  {X86::VPROLDZ128ri, X86::VPROLDZ128mbi, TB_BCAST_D},
+  {X86::VPROLDZ256ri, X86::VPROLDZ256mbi, TB_BCAST_D},
+  {X86::VPROLDZri, X86::VPROLDZmbi, TB_BCAST_D},
+  {X86::VPROLQZ128ri, X86::VPROLQZ128mbi, TB_BCAST_Q},
+  {X86::VPROLQZ256ri, X86::VPROLQZ256mbi, TB_BCAST_Q},
+  {X86::VPROLQZri, X86::VPROLQZmbi, TB_BCAST_Q},
+  {X86::VPRORDZ128ri, X86::VPRORDZ128mbi, TB_BCAST_D},
+  {X86::VPRORDZ256ri, X86::VPRORDZ256mbi, TB_BCAST_D},
+  {X86::VPRORDZri, X86::VPRORDZmbi, TB_BCAST_D},
+  {X86::VPRORQZ128ri, X86::VPRORQZ128mbi, TB_BCAST_Q},
+  {X86::VPRORQZ256ri, X86::VPRORQZ256mbi, TB_BCAST_Q},
+  {X86::VPRORQZri, X86::VPRORQZmbi, TB_BCAST_Q},
+  {X86::VPSHUFDZ128ri, X86::VPSHUFDZ128mbi, TB_BCAST_D},
+  {X86::VPSHUFDZ256ri, X86::VPSHUFDZ256mbi, TB_BCAST_D},
+  {X86::VPSHUFDZri, X86::VPSHUFDZmbi, TB_BCAST_D},
+  {X86::VPSLLDZ128ri, X86::VPSLLDZ128mbi, TB_BCAST_D},
+  {X86::VPSLLDZ256ri, X86::VPSLLDZ256mbi, TB_BCAST_D},
+  {X86::VPSLLDZri, X86::VPSLLDZmbi, TB_BCAST_D},
+  {X86::VPSLLQZ128ri, X86::VPSLLQZ128mbi, TB_BCAST_Q},
+  {X86::VPSLLQZ256ri, X86::VPSLLQZ256mbi, TB_BCAST_Q},
+  {X86::VPSLLQZri, X86::VPSLLQZmbi, TB_BCAST_Q},
+  {X86::VPSRADZ128ri, X86::VPSRADZ128mbi, TB_BCAST_D},
+  {X86::VPSRADZ256ri, X86::VPSRADZ256mbi, TB_BCAST_D},
+  {X86::VPSRADZri, X86::VPSRADZmbi, TB_BCAST_D},
+  {X86::VPSRAQZ128ri, X86::VPSRAQZ128mbi, TB_BCAST_Q},
+  {X86::VPSRAQZ256ri, X86::VPSRAQZ256mbi, TB_BCAST_Q},
+  {X86::VPSRAQZri, X86::VPSRAQZmbi, TB_BCAST_Q},
+  {X86::VPSRLDZ128ri, X86::VPSRLDZ128mbi, TB_BCAST_D},
+  {X86::VPSRLDZ256ri, X86::VPSRLDZ256mbi, TB_BCAST_D},
+  {X86::VPSRLDZri, X86::VPSRLDZmbi, TB_BCAST_D},
+  {X86::VPSRLQZ128ri, X86::VPSRLQZ128mbi, TB_BCAST_Q},
+  {X86::VPSRLQZ256ri, X86::VPSRLQZ256mbi, TB_BCAST_Q},
+  {X86::VPSRLQZri, X86::VPSRLQZmbi, TB_BCAST_Q},
+  {X86::VRCP14PDZ128r, X86::VRCP14PDZ128mb, TB_BCAST_SD},
+  {X86::VRCP14PDZ256r, X86::VRCP14PDZ256mb, TB_BCAST_SD},
+  {X86::VRCP14PDZr, X86::VRCP14PDZmb, TB_BCAST_SD},
+  {X86::VRCP14PSZ128r, X86::VRCP14PSZ128mb, TB_BCAST_SS},
+  {X86::VRCP14PSZ256r, X86::VRCP14PSZ256mb, TB_BCAST_SS},
+  {X86::VRCP14PSZr, X86::VRCP14PSZmb, TB_BCAST_SS},
+  {X86::VRCP28PDZr, X86::VRCP28PDZmb, TB_BCAST_SD},
+  {X86::VRCP28PSZr, X86::VRCP28PSZmb, TB_BCAST_SS},
+  {X86::VRCPPHZ128r, X86::VRCPPHZ128mb, TB_BCAST_SH},
+  {X86::VRCPPHZ256r, X86::VRCPPHZ256mb, TB_BCAST_SH},
+  {X86::VRCPPHZr, X86::VRCPPHZmb, TB_BCAST_SH},
+  {X86::VREDUCEPDZ128rri, X86::VREDUCEPDZ128rmbi, TB_BCAST_SD},
+  {X86::VREDUCEPDZ256rri, X86::VREDUCEPDZ256rmbi, TB_BCAST_SD},
+  {X86::VREDUCEPDZrri, X86::VREDUCEPDZrmbi, TB_BCAST_SD},
+  {X86::VREDUCEPHZ128rri, X86::VREDUCEPHZ128rmbi, TB_BCAST_SH},
+  {X86::VREDUCEPHZ256rri, X86::VREDUCEPHZ256rmbi, TB_BCAST_SH},
+  {X86::VREDUCEPHZrri, X86::VREDUCEPHZrmbi, TB_BCAST_SH},
+  {X86::VREDUCEPSZ128rri, X86::VREDUCEPSZ128rmbi, TB_BCAST_SS},
+  {X86::VREDUCEPSZ256rri, X86::VREDUCEPSZ256rmbi, TB_BCAST_SS},
+  {X86::VREDUCEPSZrri, X86::VREDUCEPSZrmbi, TB_BCAST_SS},
+  {X86::VRNDSCALEPDZ128rri, X86::VRNDSCALEPDZ128rmbi, TB_BCAST_SD},
+  {X86::VRNDSCALEPDZ256rri, X86::VRNDSCALEPDZ256rmbi, TB_BCAST_SD},
+  {X86::VRNDSCALEPDZrri, X86::VRNDSCALEPDZrmbi, TB_BCAST_SD},
+  {X86::VRNDSCALEPHZ128rri, X86::VRNDSCALEPHZ128rmbi, TB_BCAST_SH},
+  {X86::VRNDSCALEPHZ256rri, X86::VRNDSCALEPHZ256rmbi, TB_BCAST_SH},
+  {X86::VRNDSCALEPHZrri, X86::VRNDSCALEPHZrmbi, TB_BCAST_SH},
+  {X86::VRNDSCALEPSZ128rri, X86::VRNDSCALEPSZ128rmbi, TB_BCAST_SS},
+  {X86::VRNDSCALEPSZ256rri, X86::VRNDSCALEPSZ256rmbi, TB_BCAST_SS},
+  {X86::VRNDSCALEPSZrri, X86::VRNDSCALEPSZrmbi, TB_BCAST_SS},
+  {X86::VRSQRT14PDZ128r, X86::VRSQRT14PDZ128mb, TB_BCAST_SD},
+  {X86::VRSQRT14PDZ256r, X86::VRSQRT14PDZ256mb, TB_BCAST_SD},
+  {X86::VRSQRT14PDZr, X86::VRSQRT14PDZmb, TB_BCAST_SD},
+  {X86::VRSQRT14PSZ128r, X86::VRSQRT14PSZ128mb, TB_BCAST_SS},
+  {X86::VRSQRT14PSZ256r, X86::VRSQRT14PSZ256mb, TB_BCAST_SS},
+  {X86::VRSQRT14PSZr, X86::VRSQRT14PSZmb, TB_BCAST_SS},
+  {X86::VRSQRT28PDZr, X86::VRSQRT28PDZmb, TB_BCAST_SD},
+  {X86::VRSQRT28PSZr, X86::VRSQRT28PSZmb, TB_BCAST_SS},
+  {X86::VRSQRTPHZ128r, X86::VRSQRTPHZ128mb, TB_BCAST_SH},
+  {X86::VRSQRTPHZ256r, X86::VRSQRTPHZ256mb, TB_BCAST_SH},
+  {X86::VRSQRTPHZr, X86::VRSQRTPHZmb, TB_BCAST_SH},
+  {X86::VSQRTPDZ128r, X86::VSQRTPDZ128mb, TB_BCAST_SD},
+  {X86::VSQRTPDZ256r, X86::VSQRTPDZ256mb, TB_BCAST_SD},
+  {X86::VSQRTPDZr, X86::VSQRTPDZmb, TB_BCAST_SD},
+  {X86::VSQRTPHZ128r, X86::VSQRTPHZ128mb, TB_BCAST_SH},
+  {X86::VSQRTPHZ256r, X86::VSQRTPHZ256mb, TB_BCAST_SH},
+  {X86::VSQRTPHZr, X86::VSQRTPHZmb, TB_BCAST_SH},
+  {X86::VSQRTPSZ128r, X86::VSQRTPSZ128mb, TB_BCAST_SS},
+  {X86::VSQRTPSZ256r, X86::VSQRTPSZ256mb, TB_BCAST_SS},
+  {X86::VSQRTPSZr, X86::VSQRTPSZmb, TB_BCAST_SS},
+};
+
+static const X86FoldTableEntry BroadcastTable2[] = {
+  {X86::VADDPDZ128rr, X86::VADDPDZ128rmb, TB_BCAST_SD},
+  {X86::VADDPDZ256rr, X86::VADDPDZ256rmb, TB_BCAST_SD},
+  {X86::VADDPDZrr, X86::VADDPDZrmb, TB_BCAST_SD},
+  {X86::VADDPHZ128rr, X86::VADDPHZ128rmb, TB_BCAST_SH},
+  {X86::VADDPHZ256rr, X86::VADDPHZ256rmb, TB_BCAST_SH},
+  {X86::VADDPHZrr, X86::VADDPHZrmb, TB_BCAST_SH},
+  {X86::VADDPSZ128rr, X86::VADDPSZ128rmb, TB_BCAST_SS},
+  {X86::VADDPSZ256rr, X86::VADDPSZ256rmb, TB_BCAST_SS},
+  {X86::VADDPSZrr, X86::VADDPSZrmb, TB_BCAST_SS},
+  {X86::VALIGNDZ128rri, X86::VALIGNDZ128rmbi, TB_BCAST_D},
+  {X86::VALIGNDZ256rri, X86::VALIGNDZ256rmbi, TB_BCAST_D},
+  {X86::VALIGNDZrri, X86::VALIGNDZrmbi, TB_BCAST_D},
+  {X86::VALIGNQZ128rri, X86::VALIGNQZ128rmbi, TB_BCAST_Q},
+  {X86::VALIGNQZ256rri, X86::VALIGNQZ256rmbi, TB_BCAST_Q},
+  {X86::VALIGNQZrri, X86::VALIGNQZrmbi, TB_BCAST_Q},
+  {X86::VANDNPDZ128rr, X86::VANDNPDZ128rmb, TB_BCAST_SD},
+  {X86::VANDNPDZ256rr, X86::VANDNPDZ256rmb, TB_BCAST_SD},
+  {X86::VANDNPDZrr, X86::VANDNPDZrmb, TB_BCAST_SD},
+  {X86::VANDNPSZ128rr, X86::VANDNPSZ128rmb, TB_BCAST_SS},
+  {X86::VANDNPSZ256rr, X86::VANDNPSZ256rmb, TB_BCAST_SS},
+  {X86::VANDNPSZrr, X86::VANDNPSZrmb, TB_BCAST_SS},
+  {X86::VANDPDZ128rr, X86::VANDPDZ128rmb, TB_BCAST_SD},
+  {X86::VANDPDZ256rr, X86::VANDPDZ256rmb, TB_BCAST_SD},
+  {X86::VANDPDZrr, X86::VANDPDZrmb, TB_BCAST_SD},
+  {X86::VANDPSZ128rr, X86::VANDPSZ128rmb, TB_BCAST_SS},
+  {X86::VANDPSZ256rr, X86::VANDPSZ256rmb, TB_BCAST_SS},
+  {X86::VANDPSZrr, X86::VANDPSZrmb, TB_BCAST_SS},
+  {X86::VBLENDMPDZ128rr, X86::VBLENDMPDZ128rmb, TB_BCAST_SD},
+  {X86::VBLENDMPDZ256rr, X86::VBLENDMPDZ256rmb, TB_BCAST_SD},
+  {X86::VBLENDMPDZrr, X86::VBLENDMPDZrmb, TB_BCAST_SD},
+  {X86::VBLENDMPSZ128rr, X86::VBLENDMPSZ128rmb, TB_BCAST_SS},
+  {X86::VBLENDMPSZ256rr, X86::VBLENDMPSZ256rmb, TB_BCAST_SS},
+  {X86::VBLENDMPSZrr, X86::VBLENDMPSZrmb, TB_BCAST_SS},
+  {X86::VCMPPDZ128rri, X86::VCMPPDZ128rmbi, TB_BCAST_SD},
+  {X86::VCMPPDZ256rri, X86::VCMPPDZ256rmbi, TB_BCAST_SD},
+  {X86::VCMPPDZrri, X86::VCMPPDZrmbi, TB_BCAST_SD},
+  {X86::VCMPPHZ128rri, X86::VCMPPHZ128rmbi, TB_BCAST_SH},
+  {X86::VCMPPHZ256rri, X86::VCMPPHZ256rmbi, TB_BCAST_SH},
+  {X86::VCMPPHZrri, X86::VCMPPHZrmbi, TB_BCAST_SH},
+  {X86::VCMPPSZ128rri, X86::VCMPPSZ128rmbi, TB_BCAST_SS},
+  {X86::VCMPPSZ256rri, X86::VCMPPSZ256rmbi, TB_BCAST_SS},
+  {X86::VCMPPSZrri, X86::VCMPPSZrmbi, TB_BCAST_SS},
+  {X86::VCVTDQ2PDZ128rrkz, X86::VCVTDQ2PDZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTDQ2PDZ256rrkz, X86::VCVTDQ2PDZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTDQ2PDZrrkz, X86::VCVTDQ2PDZrmbkz, TB_BCAST_SD},
+  {X86::VCVTDQ2PHZ128rrkz, X86::VCVTDQ2PHZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTDQ2PHZ256rrkz, X86::VCVTDQ2PHZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTDQ2PHZrrkz, X86::VCVTDQ2PHZrmbkz, TB_BCAST_SH},
+  {X86::VCVTDQ2PSZ128rrkz, X86::VCVTDQ2PSZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTDQ2PSZ256rrkz, X86::VCVTDQ2PSZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTDQ2PSZrrkz, X86::VCVTDQ2PSZrmbkz, TB_BCAST_SS},
+  {X86::VCVTNE2PS2BF16Z128rr, X86::VCVTNE2PS2BF16Z128rmb, TB_BCAST_SS},
+  {X86::VCVTNE2PS2BF16Z256rr, X86::VCVTNE2PS2BF16Z256rmb, TB_BCAST_SS},
+  {X86::VCVTNE2PS2BF16Zrr, X86::VCVTNE2PS2BF16Zrmb, TB_BCAST_SS},
+  {X86::VCVTNEPS2BF16Z128rrkz, X86::VCVTNEPS2BF16Z128rmbkz, TB_BCAST_SS},
+  {X86::VCVTNEPS2BF16Z256rrkz, X86::VCVTNEPS2BF16Z256rmbkz, TB_BCAST_SS},
+  {X86::VCVTNEPS2BF16Zrrkz, X86::VCVTNEPS2BF16Zrmbkz, TB_BCAST_SS},
+  {X86::VCVTPD2DQZ128rrkz, X86::VCVTPD2DQZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2DQZ256rrkz, X86::VCVTPD2DQZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2DQZrrkz, X86::VCVTPD2DQZrmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2PHZ128rrkz, X86::VCVTPD2PHZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2PHZ256rrkz, X86::VCVTPD2PHZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2PHZrrkz, X86::VCVTPD2PHZrmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2PSZ128rrkz, X86::VCVTPD2PSZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTPD2PSZ256rrkz, X86::VCVTPD2PSZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTPD2PSZrrkz, X86::VCVTPD2PSZrmbkz, TB_BCAST_SS},
+  {X86::VCVTPD2QQZ128rrkz, X86::VCVTPD2QQZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2QQZ256rrkz, X86::VCVTPD2QQZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2QQZrrkz, X86::VCVTPD2QQZrmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2UDQZ128rrkz, X86::VCVTPD2UDQZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2UDQZ256rrkz, X86::VCVTPD2UDQZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2UDQZrrkz, X86::VCVTPD2UDQZrmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2UQQZ128rrkz, X86::VCVTPD2UQQZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2UQQZ256rrkz, X86::VCVTPD2UQQZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTPD2UQQZrrkz, X86::VCVTPD2UQQZrmbkz, TB_BCAST_SD},
+  {X86::VCVTPH2DQZ128rrkz, X86::VCVTPH2DQZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2DQZ256rrkz, X86::VCVTPH2DQZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2DQZrrkz, X86::VCVTPH2DQZrmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2PDZ128rrkz, X86::VCVTPH2PDZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTPH2PDZ256rrkz, X86::VCVTPH2PDZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTPH2PDZrrkz, X86::VCVTPH2PDZrmbkz, TB_BCAST_SD},
+  {X86::VCVTPH2PSXZ128rrkz, X86::VCVTPH2PSXZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTPH2PSXZ256rrkz, X86::VCVTPH2PSXZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTPH2PSXZrrkz, X86::VCVTPH2PSXZrmbkz, TB_BCAST_SS},
+  {X86::VCVTPH2QQZ128rrkz, X86::VCVTPH2QQZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2QQZ256rrkz, X86::VCVTPH2QQZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2QQZrrkz, X86::VCVTPH2QQZrmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2UDQZ128rrkz, X86::VCVTPH2UDQZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2UDQZ256rrkz, X86::VCVTPH2UDQZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2UDQZrrkz, X86::VCVTPH2UDQZrmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2UQQZ128rrkz, X86::VCVTPH2UQQZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2UQQZ256rrkz, X86::VCVTPH2UQQZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2UQQZrrkz, X86::VCVTPH2UQQZrmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2UWZ128rrkz, X86::VCVTPH2UWZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2UWZ256rrkz, X86::VCVTPH2UWZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2UWZrrkz, X86::VCVTPH2UWZrmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2WZ128rrkz, X86::VCVTPH2WZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2WZ256rrkz, X86::VCVTPH2WZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTPH2WZrrkz, X86::VCVTPH2WZrmbkz, TB_BCAST_SH},
+  {X86::VCVTPS2DQZ128rrkz, X86::VCVTPS2DQZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2DQZ256rrkz, X86::VCVTPS2DQZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2DQZrrkz, X86::VCVTPS2DQZrmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2PDZ128rrkz, X86::VCVTPS2PDZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2PDZ256rrkz, X86::VCVTPS2PDZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2PDZrrkz, X86::VCVTPS2PDZrmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2PHXZ128rrkz, X86::VCVTPS2PHXZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2PHXZ256rrkz, X86::VCVTPS2PHXZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2PHXZrrkz, X86::VCVTPS2PHXZrmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2QQZ128rrkz, X86::VCVTPS2QQZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2QQZ256rrkz, X86::VCVTPS2QQZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2QQZrrkz, X86::VCVTPS2QQZrmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2UDQZ128rrkz, X86::VCVTPS2UDQZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2UDQZ256rrkz, X86::VCVTPS2UDQZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2UDQZrrkz, X86::VCVTPS2UDQZrmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2UQQZ128rrkz, X86::VCVTPS2UQQZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2UQQZ256rrkz, X86::VCVTPS2UQQZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTPS2UQQZrrkz, X86::VCVTPS2UQQZrmbkz, TB_BCAST_SS},
+  {X86::VCVTQQ2PDZ128rrkz, X86::VCVTQQ2PDZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTQQ2PDZ256rrkz, X86::VCVTQQ2PDZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTQQ2PDZrrkz, X86::VCVTQQ2PDZrmbkz, TB_BCAST_SD},
+  {X86::VCVTQQ2PHZ128rrkz, X86::VCVTQQ2PHZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTQQ2PHZ256rrkz, X86::VCVTQQ2PHZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTQQ2PHZrrkz, X86::VCVTQQ2PHZrmbkz, TB_BCAST_SH},
+  {X86::VCVTQQ2PSZ128rrkz, X86::VCVTQQ2PSZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTQQ2PSZ256rrkz, X86::VCVTQQ2PSZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTQQ2PSZrrkz, X86::VCVTQQ2PSZrmbkz, TB_BCAST_SS},
+  {X86::VCVTTPD2DQZ128rrkz, X86::VCVTTPD2DQZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTTPD2DQZ256rrkz, X86::VCVTTPD2DQZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTTPD2DQZrrkz, X86::VCVTTPD2DQZrmbkz, TB_BCAST_SD},
+  {X86::VCVTTPD2QQZ128rrkz, X86::VCVTTPD2QQZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTTPD2QQZ256rrkz, X86::VCVTTPD2QQZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTTPD2QQZrrkz, X86::VCVTTPD2QQZrmbkz, TB_BCAST_SD},
+  {X86::VCVTTPD2UDQZ128rrkz, X86::VCVTTPD2UDQZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTTPD2UDQZ256rrkz, X86::VCVTTPD2UDQZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTTPD2UDQZrrkz, X86::VCVTTPD2UDQZrmbkz, TB_BCAST_SD},
+  {X86::VCVTTPD2UQQZ128rrkz, X86::VCVTTPD2UQQZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTTPD2UQQZ256rrkz, X86::VCVTTPD2UQQZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTTPD2UQQZrrkz, X86::VCVTTPD2UQQZrmbkz, TB_BCAST_SD},
+  {X86::VCVTTPH2DQZ128rrkz, X86::VCVTTPH2DQZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2DQZ256rrkz, X86::VCVTTPH2DQZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2DQZrrkz, X86::VCVTTPH2DQZrmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2QQZ128rrkz, X86::VCVTTPH2QQZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2QQZ256rrkz, X86::VCVTTPH2QQZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2QQZrrkz, X86::VCVTTPH2QQZrmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2UDQZ128rrkz, X86::VCVTTPH2UDQZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2UDQZ256rrkz, X86::VCVTTPH2UDQZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2UDQZrrkz, X86::VCVTTPH2UDQZrmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2UQQZ128rrkz, X86::VCVTTPH2UQQZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2UQQZ256rrkz, X86::VCVTTPH2UQQZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2UQQZrrkz, X86::VCVTTPH2UQQZrmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2UWZ128rrkz, X86::VCVTTPH2UWZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2UWZ256rrkz, X86::VCVTTPH2UWZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2UWZrrkz, X86::VCVTTPH2UWZrmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2WZ128rrkz, X86::VCVTTPH2WZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2WZ256rrkz, X86::VCVTTPH2WZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTTPH2WZrrkz, X86::VCVTTPH2WZrmbkz, TB_BCAST_SH},
+  {X86::VCVTTPS2DQZ128rrkz, X86::VCVTTPS2DQZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTTPS2DQZ256rrkz, X86::VCVTTPS2DQZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTTPS2DQZrrkz, X86::VCVTTPS2DQZrmbkz, TB_BCAST_SS},
+  {X86::VCVTTPS2QQZ128rrkz, X86::VCVTTPS2QQZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTTPS2QQZ256rrkz, X86::VCVTTPS2QQZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTTPS2QQZrrkz, X86::VCVTTPS2QQZrmbkz, TB_BCAST_SS},
+  {X86::VCVTTPS2UDQZ128rrkz, X86::VCVTTPS2UDQZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTTPS2UDQZ256rrkz, X86::VCVTTPS2UDQZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTTPS2UDQZrrkz, X86::VCVTTPS2UDQZrmbkz, TB_BCAST_SS},
+  {X86::VCVTTPS2UQQZ128rrkz, X86::VCVTTPS2UQQZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTTPS2UQQZ256rrkz, X86::VCVTTPS2UQQZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTTPS2UQQZrrkz, X86::VCVTTPS2UQQZrmbkz, TB_BCAST_SS},
+  {X86::VCVTUDQ2PDZ128rrkz, X86::VCVTUDQ2PDZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTUDQ2PDZ256rrkz, X86::VCVTUDQ2PDZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTUDQ2PDZrrkz, X86::VCVTUDQ2PDZrmbkz, TB_BCAST_SD},
+  {X86::VCVTUDQ2PHZ128rrkz, X86::VCVTUDQ2PHZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTUDQ2PHZ256rrkz, X86::VCVTUDQ2PHZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTUDQ2PHZrrkz, X86::VCVTUDQ2PHZrmbkz, TB_BCAST_SH},
+  {X86::VCVTUDQ2PSZ128rrkz, X86::VCVTUDQ2PSZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTUDQ2PSZ256rrkz, X86::VCVTUDQ2PSZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTUDQ2PSZrrkz, X86::VCVTUDQ2PSZrmbkz, TB_BCAST_SS},
+  {X86::VCVTUQQ2PDZ128rrkz, X86::VCVTUQQ2PDZ128rmbkz, TB_BCAST_SD},
+  {X86::VCVTUQQ2PDZ256rrkz, X86::VCVTUQQ2PDZ256rmbkz, TB_BCAST_SD},
+  {X86::VCVTUQQ2PDZrrkz, X86::VCVTUQQ2PDZrmbkz, TB_BCAST_SD},
+  {X86::VCVTUQQ2PHZ128rrkz, X86::VCVTUQQ2PHZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTUQQ2PHZ256rrkz, X86::VCVTUQQ2PHZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTUQQ2PHZrrkz, X86::VCVTUQQ2PHZrmbkz, TB_BCAST_SH},
+  {X86::VCVTUQQ2PSZ128rrkz, X86::VCVTUQQ2PSZ128rmbkz, TB_BCAST_SS},
+  {X86::VCVTUQQ2PSZ256rrkz, X86::VCVTUQQ2PSZ256rmbkz, TB_BCAST_SS},
+  {X86::VCVTUQQ2PSZrrkz, X86::VCVTUQQ2PSZrmbkz, TB_BCAST_SS},
+  {X86::VCVTUW2PHZ128rrkz, X86::VCVTUW2PHZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTUW2PHZ256rrkz, X86::VCVTUW2PHZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTUW2PHZrrkz, X86::VCVTUW2PHZrmbkz, TB_BCAST_SH},
+  {X86::VCVTW2PHZ128rrkz, X86::VCVTW2PHZ128rmbkz, TB_BCAST_SH},
+  {X86::VCVTW2PHZ256rrkz, X86::VCVTW2PHZ256rmbkz, TB_BCAST_SH},
+  {X86::VCVTW2PHZrrkz, X86::VCVTW2PHZrmbkz, TB_BCAST_SH},
+  {X86::VDIVPDZ128rr, X86::VDIVPDZ128rmb, TB_BCAST_SD},
+  {X86::VDIVPDZ256rr, X86::VDIVPDZ256rmb, TB_BCAST_SD},
+  {X86::VDIVPDZrr, X86::VDIVPDZrmb, TB_BCAST_SD},
+  {X86::VDIVPHZ128rr, X86::VDIVPHZ128rmb, TB_BCAST_SH},
+  {X86::VDIVPHZ256rr, X86::VDIVPHZ256rmb, TB_BCAST_SH},
+  {X86::VDIVPHZrr, X86::VDIVPHZrmb, TB_BCAST_SH},
+  {X86::VDIVPSZ128rr, X86::VDIVPSZ128rmb, TB_BCAST_SS},
+  {X86::VDIVPSZ256rr, X86::VDIVPSZ256rmb, TB_BCAST_SS},
+  {X86::VDIVPSZrr, X86::VDIVPSZrmb, TB_BCAST_SS},
+  {X86::VEXP2PDZrkz, X86::VEXP2PDZmbkz, TB_BCAST_SD},
+  {X86::VEXP2PSZrkz, X86::VEXP2PSZmbkz, TB_BCAST_SS},
+  {X86::VFCMULCPHZ128rr, X86::VFCMULCPHZ128rmb, TB_BCAST_SH},
+  {X86::VFCMULCPHZ256rr, X86::VFCMULCPHZ256rmb, TB_BCAST_SH},
+  {X86::VFCMULCPHZrr, X86::VFCMULCPHZrmb, TB_BCAST_SH},
+  {X86::VFMULCPHZ128rr, X86::VFMULCPHZ128rmb, TB_BCAST_SH},
+  {X86::VFMULCPHZ256rr, X86::VFMULCPHZ256rmb, TB_BCAST_SH},
+  {X86::VFMULCPHZrr, X86::VFMULCPHZrmb, TB_BCAST_SH},
+  {X86::VFPCLASSPDZ128rrk, X86::VFPCLASSPDZ128rmbk, TB_BCAST_SD},
+  {X86::VFPCLASSPDZ256rrk, X86::VFPCLASSPDZ256rmbk, TB_BCAST_SD},
+  {X86::VFPCLASSPDZrrk, X86::VFPCLASSPDZrmbk, TB_BCAST_SD},
+  {X86::VFPCLASSPHZ128rrk, X86::VFPCLASSPHZ128rmbk, TB_BCAST_SH},
+  {X86::VFPCLASSPHZ256rrk, X86::VFPCLASSPHZ256rmbk, TB_BCAST_SH},
+  {X86::VFPCLASSPHZrrk, X86::VFPCLASSPHZrmbk, TB_BCAST_SH},
+  {X86::VFPCLASSPSZ128rrk, X86::VFPCLASSPSZ128rmbk, TB_BCAST_SS},
+  {X86::VFPCLASSPSZ256rrk, X86::VFPCLASSPSZ256rmbk, TB_BCAST_SS},
+  {X86::VFPCLASSPSZrrk, X86::VFPCLASSPSZrmbk, TB_BCAST_SS},
+  {X86::VGETEXPPDZ128rkz, X86::VGETEXPPDZ128mbkz, TB_BCAST_SD},
+  {X86::VGETEXPPDZ256rkz, X86::VGETEXPPDZ256mbkz, TB_BCAST_SD},
+  {X86::VGETEXPPDZrkz, X86::VGETEXPPDZmbkz, TB_BCAST_SD},
+  {X86::VGETEXPPHZ128rkz, X86::VGETEXPPHZ128mbkz, TB_BCAST_SH},
+  {X86::VGETEXPPHZ256rkz, X86::VGETEXPPHZ256mbkz, TB_BCAST_SH},
+  {X86::VGETEXPPHZrkz, X86::VGETEXPPHZmbkz, TB_BCAST_SH},
+  {X86::VGETEXPPSZ128rkz, X86::VGETEXPPSZ128mbkz, TB_BCAST_SS},
+  {X86::VGETEXPPSZ256rkz, X86::VGETEXPPSZ256mbkz, TB_BCAST_SS},
+  {X86::VGETEXPPSZrkz, X86::VGETEXPPSZmbkz, TB_BCAST_SS},
+  {X86::VGETMANTPDZ128rrikz, X86::VGETMANTPDZ128rmbikz, TB_BCAST_SD},
+  {X86::VGETMANTPDZ256rrikz, X86::VGETMANTPDZ256rmbikz, TB_BCAST_SD},
+  {X86::VGETMANTPDZrrikz, X86::VGETMANTPDZrmbikz, TB_BCAST_SD},
+  {X86::VGETMANTPHZ128rrikz, X86::VGETMANTPHZ128rmbikz, TB_BCAST_SH},
+  {X86::VGETMANTPHZ256rrikz, X86::VGETMANTPHZ256rmbikz, TB_BCAST_SH},
+  {X86::VGETMANTPHZrrikz, X86::VGETMANTPHZrmbikz, TB_BCAST_SH},
+  {X86::VGETMANTPSZ128rrikz, X86::VGETMANTPSZ128rmbikz, TB_BCAST_SS},
+  {X86::VGETMANTPSZ256rrikz, X86::VGETMANTPSZ256rmbikz, TB_BCAST_SS},
+  {X86::VGETMANTPSZrrikz, X86::VGETMANTPSZrmbikz, TB_BCAST_SS},
+  {X86::VGF2P8AFFINEINVQBZ128rri, X86::VGF2P8AFFINEINVQBZ128rmbi, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEINVQBZ256rri, X86::VGF2P8AFFINEINVQBZ256rmbi, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEINVQBZrri, X86::VGF2P8AFFINEINVQBZrmbi, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEQBZ128rri, X86::VGF2P8AFFINEQBZ128rmbi, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEQBZ256rri, X86::VGF2P8AFFINEQBZ256rmbi, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEQBZrri, X86::VGF2P8AFFINEQBZrmbi, TB_BCAST_Q},
+  {X86::VMAXCPDZ128rr, X86::VMAXCPDZ128rmb, TB_BCAST_SD},
+  {X86::VMAXCPDZ256rr, X86::VMAXCPDZ256rmb, TB_BCAST_SD},
+  {X86::VMAXCPDZrr, X86::VMAXCPDZrmb, TB_BCAST_SD},
+  {X86::VMAXCPHZ128rr, X86::VMAXCPHZ128rmb, TB_BCAST_SH},
+  {X86::VMAXCPHZ256rr, X86::VMAXCPHZ256rmb, TB_BCAST_SH},
+  {X86::VMAXCPHZrr, X86::VMAXCPHZrmb, TB_BCAST_SH},
+  {X86::VMAXCPSZ128rr, X86::VMAXCPSZ128rmb, TB_BCAST_SS},
+  {X86::VMAXCPSZ256rr, X86::VMAXCPSZ256rmb, TB_BCAST_SS},
+  {X86::VMAXCPSZrr, X86::VMAXCPSZrmb, TB_BCAST_SS},
+  {X86::VMAXPDZ128rr, X86::VMAXPDZ128rmb, TB_BCAST_SD},
+  {X86::VMAXPDZ256rr, X86::VMAXPDZ256rmb, TB_BCAST_SD},
+  {X86::VMAXPDZrr, X86::VMAXPDZrmb, TB_BCAST_SD},
+  {X86::VMAXPHZ128rr, X86::VMAXPHZ128rmb, TB_BCAST_SH},
+  {X86::VMAXPHZ256rr, X86::VMAXPHZ256rmb, TB_BCAST_SH},
+  {X86::VMAXPHZrr, X86::VMAXPHZrmb, TB_BCAST_SH},
+  {X86::VMAXPSZ128rr, X86::VMAXPSZ128rmb, TB_BCAST_SS},
+  {X86::VMAXPSZ256rr, X86::VMAXPSZ256rmb, TB_BCAST_SS},
+  {X86::VMAXPSZrr, X86::VMAXPSZrmb, TB_BCAST_SS},
+  {X86::VMINCPDZ128rr, X86::VMINCPDZ128rmb, TB_BCAST_SD},
+  {X86::VMINCPDZ256rr, X86::VMINCPDZ256rmb, TB_BCAST_SD},
+  {X86::VMINCPDZrr, X86::VMINCPDZrmb, TB_BCAST_SD},
+  {X86::VMINCPHZ128rr, X86::VMINCPHZ128rmb, TB_BCAST_SH},
+  {X86::VMINCPHZ256rr, X86::VMINCPHZ256rmb, TB_BCAST_SH},
+  {X86::VMINCPHZrr, X86::VMINCPHZrmb, TB_BCAST_SH},
+  {X86::VMINCPSZ128rr, X86::VMINCPSZ128rmb, TB_BCAST_SS},
+  {X86::VMINCPSZ256rr, X86::VMINCPSZ256rmb, TB_BCAST_SS},
+  {X86::VMINCPSZrr, X86::VMINCPSZrmb, TB_BCAST_SS},
+  {X86::VMINPDZ128rr, X86::VMINPDZ128rmb, TB_BCAST_SD},
+  {X86::VMINPDZ256rr, X86::VMINPDZ256rmb, TB_BCAST_SD},
+  {X86::VMINPDZrr, X86::VMINPDZrmb, TB_BCAST_SD},
+  {X86::VMINPHZ128rr, X86::VMINPHZ128rmb, TB_BCAST_SH},
+  {X86::VMINPHZ256rr, X86::VMINPHZ256rmb, TB_BCAST_SH},
+  {X86::VMINPHZrr, X86::VMINPHZrmb, TB_BCAST_SH},
+  {X86::VMINPSZ128rr, X86::VMINPSZ128rmb, TB_BCAST_SS},
+  {X86::VMINPSZ256rr, X86::VMINPSZ256rmb, TB_BCAST_SS},
+  {X86::VMINPSZrr, X86::VMINPSZrmb, TB_BCAST_SS},
+  {X86::VMULPDZ128rr, X86::VMULPDZ128rmb, TB_BCAST_SD},
+  {X86::VMULPDZ256rr, X86::VMULPDZ256rmb, TB_BCAST_SD},
+  {X86::VMULPDZrr, X86::VMULPDZrmb, TB_BCAST_SD},
+  {X86::VMULPHZ128rr, X86::VMULPHZ128rmb, TB_BCAST_SH},
+  {X86::VMULPHZ256rr, X86::VMULPHZ256rmb, TB_BCAST_SH},
+  {X86::VMULPHZrr, X86::VMULPHZrmb, TB_BCAST_SH},
+  {X86::VMULPSZ128rr, X86::VMULPSZ128rmb, TB_BCAST_SS},
+  {X86::VMULPSZ256rr, X86::VMULPSZ256rmb, TB_BCAST_SS},
+  {X86::VMULPSZrr, X86::VMULPSZrmb, TB_BCAST_SS},
+  {X86::VORPDZ128rr, X86::VORPDZ128rmb, TB_BCAST_SD},
+  {X86::VORPDZ256rr, X86::VORPDZ256rmb, TB_BCAST_SD},
+  {X86::VORPDZrr, X86::VORPDZrmb, TB_BCAST_SD},
+  {X86::VORPSZ128rr, X86::VORPSZ128rmb, TB_BCAST_SS},
+  {X86::VORPSZ256rr, X86::VORPSZ256rmb, TB_BCAST_SS},
+  {X86::VORPSZrr, X86::VORPSZrmb, TB_BCAST_SS},
+  {X86::VP2INTERSECTDZ128rr, X86::VP2INTERSECTDZ128rmb, TB_BCAST_D},
+  {X86::VP2INTERSECTDZ256rr, X86::VP2INTERSECTDZ256rmb, TB_BCAST_D},
+  {X86::VP2INTERSECTDZrr, X86::VP2INTERSECTDZrmb, TB_BCAST_D},
+  {X86::VP2INTERSECTQZ128rr, X86::VP2INTERSECTQZ128rmb, TB_BCAST_Q},
+  {X86::VP2INTERSECTQZ256rr, X86::VP2INTERSECTQZ256rmb, TB_BCAST_Q},
+  {X86::VP2INTERSECTQZrr, X86::VP2INTERSECTQZrmb, TB_BCAST_Q},
+  {X86::VPABSDZ128rrkz, X86::VPABSDZ128rmbkz, TB_BCAST_D},
+  {X86::VPABSDZ256rrkz, X86::VPABSDZ256rmbkz, TB_BCAST_D},
+  {X86::VPABSDZrrkz, X86::VPABSDZrmbkz, TB_BCAST_D},
+  {X86::VPABSQZ128rrkz, X86::VPABSQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPABSQZ256rrkz, X86::VPABSQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPABSQZrrkz, X86::VPABSQZrmbkz, TB_BCAST_Q},
+  {X86::VPACKSSDWZ128rr, X86::VPACKSSDWZ128rmb, TB_BCAST_D},
+  {X86::VPACKSSDWZ256rr, X86::VPACKSSDWZ256rmb, TB_BCAST_D},
+  {X86::VPACKSSDWZrr, X86::VPACKSSDWZrmb, TB_BCAST_D},
+  {X86::VPACKUSDWZ128rr, X86::VPACKUSDWZ128rmb, TB_BCAST_D},
+  {X86::VPACKUSDWZ256rr, X86::VPACKUSDWZ256rmb, TB_BCAST_D},
+  {X86::VPACKUSDWZrr, X86::VPACKUSDWZrmb, TB_BCAST_D},
+  {X86::VPADDDZ128rr, X86::VPADDDZ128rmb, TB_BCAST_D},
+  {X86::VPADDDZ256rr, X86::VPADDDZ256rmb, TB_BCAST_D},
+  {X86::VPADDDZrr, X86::VPADDDZrmb, TB_BCAST_D},
+  {X86::VPADDQZ128rr, X86::VPADDQZ128rmb, TB_BCAST_Q},
+  {X86::VPADDQZ256rr, X86::VPADDQZ256rmb, TB_BCAST_Q},
+  {X86::VPADDQZrr, X86::VPADDQZrmb, TB_BCAST_Q},
+  {X86::VPANDDZ128rr, X86::VPANDDZ128rmb, TB_BCAST_D},
+  {X86::VPANDDZ256rr, X86::VPANDDZ256rmb, TB_BCAST_D},
+  {X86::VPANDDZrr, X86::VPANDDZrmb, TB_BCAST_D},
+  {X86::VPANDNDZ128rr, X86::VPANDNDZ128rmb, TB_BCAST_D},
+  {X86::VPANDNDZ256rr, X86::VPANDNDZ256rmb, TB_BCAST_D},
+  {X86::VPANDNDZrr, X86::VPANDNDZrmb, TB_BCAST_D},
+  {X86::VPANDNQZ128rr, X86::VPANDNQZ128rmb, TB_BCAST_Q},
+  {X86::VPANDNQZ256rr, X86::VPANDNQZ256rmb, TB_BCAST_Q},
+  {X86::VPANDNQZrr, X86::VPANDNQZrmb, TB_BCAST_Q},
+  {X86::VPANDQZ128rr, X86::VPANDQZ128rmb, TB_BCAST_Q},
+  {X86::VPANDQZ256rr, X86::VPANDQZ256rmb, TB_BCAST_Q},
+  {X86::VPANDQZrr, X86::VPANDQZrmb, TB_BCAST_Q},
+  {X86::VPBLENDMDZ128rr, X86::VPBLENDMDZ128rmb, TB_BCAST_D},
+  {X86::VPBLENDMDZ256rr, X86::VPBLENDMDZ256rmb, TB_BCAST_D},
+  {X86::VPBLENDMDZrr, X86::VPBLENDMDZrmb, TB_BCAST_D},
+  {X86::VPBLENDMQZ128rr, X86::VPBLENDMQZ128rmb, TB_BCAST_Q},
+  {X86::VPBLENDMQZ256rr, X86::VPBLENDMQZ256rmb, TB_BCAST_Q},
+  {X86::VPBLENDMQZrr, X86::VPBLENDMQZrmb, TB_BCAST_Q},
+  {X86::VPCMPDZ128rri, X86::VPCMPDZ128rmib, TB_BCAST_D},
+  {X86::VPCMPDZ256rri, X86::VPCMPDZ256rmib, TB_BCAST_D},
+  {X86::VPCMPDZrri, X86::VPCMPDZrmib, TB_BCAST_D},
+  {X86::VPCMPEQDZ128rr, X86::VPCMPEQDZ128rmb, TB_BCAST_D},
+  {X86::VPCMPEQDZ256rr, X86::VPCMPEQDZ256rmb, TB_BCAST_D},
+  {X86::VPCMPEQDZrr, X86::VPCMPEQDZrmb, TB_BCAST_D},
+  {X86::VPCMPEQQZ128rr, X86::VPCMPEQQZ128rmb, TB_BCAST_Q},
+  {X86::VPCMPEQQZ256rr, X86::VPCMPEQQZ256rmb, TB_BCAST_Q},
+  {X86::VPCMPEQQZrr, X86::VPCMPEQQZrmb, TB_BCAST_Q},
+  {X86::VPCMPGTDZ128rr, X86::VPCMPGTDZ128rmb, TB_BCAST_D},
+  {X86::VPCMPGTDZ256rr, X86::VPCMPGTDZ256rmb, TB_BCAST_D},
+  {X86::VPCMPGTDZrr, X86::VPCMPGTDZrmb, TB_BCAST_D},
+  {X86::VPCMPGTQZ128rr, X86::VPCMPGTQZ128rmb, TB_BCAST_Q},
+  {X86::VPCMPGTQZ256rr, X86::VPCMPGTQZ256rmb, TB_BCAST_Q},
+  {X86::VPCMPGTQZrr, X86::VPCMPGTQZrmb, TB_BCAST_Q},
+  {X86::VPCMPQZ128rri, X86::VPCMPQZ128rmib, TB_BCAST_Q},
+  {X86::VPCMPQZ256rri, X86::VPCMPQZ256rmib, TB_BCAST_Q},
+  {X86::VPCMPQZrri, X86::VPCMPQZrmib, TB_BCAST_Q},
+  {X86::VPCMPUDZ128rri, X86::VPCMPUDZ128rmib, TB_BCAST_D},
+  {X86::VPCMPUDZ256rri, X86::VPCMPUDZ256rmib, TB_BCAST_D},
+  {X86::VPCMPUDZrri, X86::VPCMPUDZrmib, TB_BCAST_D},
+  {X86::VPCMPUQZ128rri, X86::VPCMPUQZ128rmib, TB_BCAST_Q},
+  {X86::VPCMPUQZ256rri, X86::VPCMPUQZ256rmib, TB_BCAST_Q},
+  {X86::VPCMPUQZrri, X86::VPCMPUQZrmib, TB_BCAST_Q},
+  {X86::VPCONFLICTDZ128rrkz, X86::VPCONFLICTDZ128rmbkz, TB_BCAST_D},
+  {X86::VPCONFLICTDZ256rrkz, X86::VPCONFLICTDZ256rmbkz, TB_BCAST_D},
+  {X86::VPCONFLICTDZrrkz, X86::VPCONFLICTDZrmbkz, TB_BCAST_D},
+  {X86::VPCONFLICTQZ128rrkz, X86::VPCONFLICTQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPCONFLICTQZ256rrkz, X86::VPCONFLICTQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPCONFLICTQZrrkz, X86::VPCONFLICTQZrmbkz, TB_BCAST_Q},
+  {X86::VPERMDZ256rr, X86::VPERMDZ256rmb, TB_BCAST_D},
+  {X86::VPERMDZrr, X86::VPERMDZrmb, TB_BCAST_D},
+  {X86::VPERMILPDZ128rikz, X86::VPERMILPDZ128mbikz, TB_BCAST_SD},
+  {X86::VPERMILPDZ128rr, X86::VPERMILPDZ128rmb, TB_BCAST_SD},
+  {X86::VPERMILPDZ256rikz, X86::VPERMILPDZ256mbikz, TB_BCAST_SD},
+  {X86::VPERMILPDZ256rr, X86::VPERMILPDZ256rmb, TB_BCAST_SD},
+  {X86::VPERMILPDZrikz, X86::VPERMILPDZmbikz, TB_BCAST_SD},
+  {X86::VPERMILPDZrr, X86::VPERMILPDZrmb, TB_BCAST_SD},
+  {X86::VPERMILPSZ128rikz, X86::VPERMILPSZ128mbikz, TB_BCAST_SS},
+  {X86::VPERMILPSZ128rr, X86::VPERMILPSZ128rmb, TB_BCAST_SS},
+  {X86::VPERMILPSZ256rikz, X86::VPERMILPSZ256mbikz, TB_BCAST_SS},
+  {X86::VPERMILPSZ256rr, X86::VPERMILPSZ256rmb, TB_BCAST_SS},
+  {X86::VPERMILPSZrikz, X86::VPERMILPSZmbikz, TB_BCAST_SS},
+  {X86::VPERMILPSZrr, X86::VPERMILPSZrmb, TB_BCAST_SS},
+  {X86::VPERMPDZ256rikz, X86::VPERMPDZ256mbikz, TB_BCAST_SD},
+  {X86::VPERMPDZ256rr, X86::VPERMPDZ256rmb, TB_BCAST_SD},
+  {X86::VPERMPDZrikz, X86::VPERMPDZmbikz, TB_BCAST_SD},
+  {X86::VPERMPDZrr, X86::VPERMPDZrmb, TB_BCAST_SD},
+  {X86::VPERMPSZ256rr, X86::VPERMPSZ256rmb, TB_BCAST_SS},
+  {X86::VPERMPSZrr, X86::VPERMPSZrmb, TB_BCAST_SS},
+  {X86::VPERMQZ256rikz, X86::VPERMQZ256mbikz, TB_BCAST_Q},
+  {X86::VPERMQZ256rr, X86::VPERMQZ256rmb, TB_BCAST_Q},
+  {X86::VPERMQZrikz, X86::VPERMQZmbikz, TB_BCAST_Q},
+  {X86::VPERMQZrr, X86::VPERMQZrmb, TB_BCAST_Q},
+  {X86::VPLZCNTDZ128rrkz, X86::VPLZCNTDZ128rmbkz, TB_BCAST_D},
+  {X86::VPLZCNTDZ256rrkz, X86::VPLZCNTDZ256rmbkz, TB_BCAST_D},
+  {X86::VPLZCNTDZrrkz, X86::VPLZCNTDZrmbkz, TB_BCAST_D},
+  {X86::VPLZCNTQZ128rrkz, X86::VPLZCNTQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPLZCNTQZ256rrkz, X86::VPLZCNTQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPLZCNTQZrrkz, X86::VPLZCNTQZrmbkz, TB_BCAST_Q},
+  {X86::VPMAXSDZ128rr, X86::VPMAXSDZ128rmb, TB_BCAST_D},
+  {X86::VPMAXSDZ256rr, X86::VPMAXSDZ256rmb, TB_BCAST_D},
+  {X86::VPMAXSDZrr, X86::VPMAXSDZrmb, TB_BCAST_D},
+  {X86::VPMAXSQZ128rr, X86::VPMAXSQZ128rmb, TB_BCAST_Q},
+  {X86::VPMAXSQZ256rr, X86::VPMAXSQZ256rmb, TB_BCAST_Q},
+  {X86::VPMAXSQZrr, X86::VPMAXSQZrmb, TB_BCAST_Q},
+  {X86::VPMAXUDZ128rr, X86::VPMAXUDZ128rmb, TB_BCAST_D},
+  {X86::VPMAXUDZ256rr, X86::VPMAXUDZ256rmb, TB_BCAST_D},
+  {X86::VPMAXUDZrr, X86::VPMAXUDZrmb, TB_BCAST_D},
+  {X86::VPMAXUQZ128rr, X86::VPMAXUQZ128rmb, TB_BCAST_Q},
+  {X86::VPMAXUQZ256rr, X86::VPMAXUQZ256rmb, TB_BCAST_Q},
+  {X86::VPMAXUQZrr, X86::VPMAXUQZrmb, TB_BCAST_Q},
+  {X86::VPMINSDZ128rr, X86::VPMINSDZ128rmb, TB_BCAST_D},
+  {X86::VPMINSDZ256rr, X86::VPMINSDZ256rmb, TB_BCAST_D},
+  {X86::VPMINSDZrr, X86::VPMINSDZrmb, TB_BCAST_D},
+  {X86::VPMINSQZ128rr, X86::VPMINSQZ128rmb, TB_BCAST_Q},
+  {X86::VPMINSQZ256rr, X86::VPMINSQZ256rmb, TB_BCAST_Q},
+  {X86::VPMINSQZrr, X86::VPMINSQZrmb, TB_BCAST_Q},
+  {X86::VPMINUDZ128rr, X86::VPMINUDZ128rmb, TB_BCAST_D},
+  {X86::VPMINUDZ256rr, X86::VPMINUDZ256rmb, TB_BCAST_D},
+  {X86::VPMINUDZrr, X86::VPMINUDZrmb, TB_BCAST_D},
+  {X86::VPMINUQZ128rr, X86::VPMINUQZ128rmb, TB_BCAST_Q},
+  {X86::VPMINUQZ256rr, X86::VPMINUQZ256rmb, TB_BCAST_Q},
+  {X86::VPMINUQZrr, X86::VPMINUQZrmb, TB_BCAST_Q},
+  {X86::VPMULDQZ128rr, X86::VPMULDQZ128rmb, TB_BCAST_Q},
+  {X86::VPMULDQZ256rr, X86::VPMULDQZ256rmb, TB_BCAST_Q},
+  {X86::VPMULDQZrr, X86::VPMULDQZrmb, TB_BCAST_Q},
+  {X86::VPMULLDZ128rr, X86::VPMULLDZ128rmb, TB_BCAST_D},
+  {X86::VPMULLDZ256rr, X86::VPMULLDZ256rmb, TB_BCAST_D},
+  {X86::VPMULLDZrr, X86::VPMULLDZrmb, TB_BCAST_D},
+  {X86::VPMULLQZ128rr, X86::VPMULLQZ128rmb, TB_BCAST_Q},
+  {X86::VPMULLQZ256rr, X86::VPMULLQZ256rmb, TB_BCAST_Q},
+  {X86::VPMULLQZrr, X86::VPMULLQZrmb, TB_BCAST_Q},
+  {X86::VPMULTISHIFTQBZ128rr, X86::VPMULTISHIFTQBZ128rmb, TB_BCAST_Q},
+  {X86::VPMULTISHIFTQBZ256rr, X86::VPMULTISHIFTQBZ256rmb, TB_BCAST_Q},
+  {X86::VPMULTISHIFTQBZrr, X86::VPMULTISHIFTQBZrmb, TB_BCAST_Q},
+  {X86::VPMULUDQZ128rr, X86::VPMULUDQZ128rmb, TB_BCAST_Q},
+  {X86::VPMULUDQZ256rr, X86::VPMULUDQZ256rmb, TB_BCAST_Q},
+  {X86::VPMULUDQZrr, X86::VPMULUDQZrmb, TB_BCAST_Q},
+  {X86::VPOPCNTDZ128rrkz, X86::VPOPCNTDZ128rmbkz, TB_BCAST_D},
+  {X86::VPOPCNTDZ256rrkz, X86::VPOPCNTDZ256rmbkz, TB_BCAST_D},
+  {X86::VPOPCNTDZrrkz, X86::VPOPCNTDZrmbkz, TB_BCAST_D},
+  {X86::VPOPCNTQZ128rrkz, X86::VPOPCNTQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPOPCNTQZ256rrkz, X86::VPOPCNTQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPOPCNTQZrrkz, X86::VPOPCNTQZrmbkz, TB_BCAST_Q},
+  {X86::VPORDZ128rr, X86::VPORDZ128rmb, TB_BCAST_D},
+  {X86::VPORDZ256rr, X86::VPORDZ256rmb, TB_BCAST_D},
+  {X86::VPORDZrr, X86::VPORDZrmb, TB_BCAST_D},
+  {X86::VPORQZ128rr, X86::VPORQZ128rmb, TB_BCAST_Q},
+  {X86::VPORQZ256rr, X86::VPORQZ256rmb, TB_BCAST_Q},
+  {X86::VPORQZrr, X86::VPORQZrmb, TB_BCAST_Q},
+  {X86::VPROLDZ128rikz, X86::VPROLDZ128mbikz, TB_BCAST_D},
+  {X86::VPROLDZ256rikz, X86::VPROLDZ256mbikz, TB_BCAST_D},
+  {X86::VPROLDZrikz, X86::VPROLDZmbikz, TB_BCAST_D},
+  {X86::VPROLQZ128rikz, X86::VPROLQZ128mbikz, TB_BCAST_Q},
+  {X86::VPROLQZ256rikz, X86::VPROLQZ256mbikz, TB_BCAST_Q},
+  {X86::VPROLQZrikz, X86::VPROLQZmbikz, TB_BCAST_Q},
+  {X86::VPROLVDZ128rr, X86::VPROLVDZ128rmb, TB_BCAST_D},
+  {X86::VPROLVDZ256rr, X86::VPROLVDZ256rmb, TB_BCAST_D},
+  {X86::VPROLVDZrr, X86::VPROLVDZrmb, TB_BCAST_D},
+  {X86::VPROLVQZ128rr, X86::VPROLVQZ128rmb, TB_BCAST_Q},
+  {X86::VPROLVQZ256rr, X86::VPROLVQZ256rmb, TB_BCAST_Q},
+  {X86::VPROLVQZrr, X86::VPROLVQZrmb, TB_BCAST_Q},
+  {X86::VPRORDZ128rikz, X86::VPRORDZ128mbikz, TB_BCAST_D},
+  {X86::VPRORDZ256rikz, X86::VPRORDZ256mbikz, TB_BCAST_D},
+  {X86::VPRORDZrikz, X86::VPRORDZmbikz, TB_BCAST_D},
+  {X86::VPRORQZ128rikz, X86::VPRORQZ128mbikz, TB_BCAST_Q},
+  {X86::VPRORQZ256rikz, X86::VPRORQZ256mbikz, TB_BCAST_Q},
+  {X86::VPRORQZrikz, X86::VPRORQZmbikz, TB_BCAST_Q},
+  {X86::VPRORVDZ128rr, X86::VPRORVDZ128rmb, TB_BCAST_D},
+  {X86::VPRORVDZ256rr, X86::VPRORVDZ256rmb, TB_BCAST_D},
+  {X86::VPRORVDZrr, X86::VPRORVDZrmb, TB_BCAST_D},
+  {X86::VPRORVQZ128rr, X86::VPRORVQZ128rmb, TB_BCAST_Q},
+  {X86::VPRORVQZ256rr, X86::VPRORVQZ256rmb, TB_BCAST_Q},
+  {X86::VPRORVQZrr, X86::VPRORVQZrmb, TB_BCAST_Q},
+  {X86::VPSHLDDZ128rri, X86::VPSHLDDZ128rmbi, TB_BCAST_D},
+  {X86::VPSHLDDZ256rri, X86::VPSHLDDZ256rmbi, TB_BCAST_D},
+  {X86::VPSHLDDZrri, X86::VPSHLDDZrmbi, TB_BCAST_D},
+  {X86::VPSHLDQZ128rri, X86::VPSHLDQZ128rmbi, TB_BCAST_Q},
+  {X86::VPSHLDQZ256rri, X86::VPSHLDQZ256rmbi, TB_BCAST_Q},
+  {X86::VPSHLDQZrri, X86::VPSHLDQZrmbi, TB_BCAST_Q},
+  {X86::VPSHRDDZ128rri, X86::VPSHRDDZ128rmbi, TB_BCAST_D},
+  {X86::VPSHRDDZ256rri, X86::VPSHRDDZ256rmbi, TB_BCAST_D},
+  {X86::VPSHRDDZrri, X86::VPSHRDDZrmbi, TB_BCAST_D},
+  {X86::VPSHRDQZ128rri, X86::VPSHRDQZ128rmbi, TB_BCAST_Q},
+  {X86::VPSHRDQZ256rri, X86::VPSHRDQZ256rmbi, TB_BCAST_Q},
+  {X86::VPSHRDQZrri, X86::VPSHRDQZrmbi, TB_BCAST_Q},
+  {X86::VPSHUFDZ128rikz, X86::VPSHUFDZ128mbikz, TB_BCAST_D},
+  {X86::VPSHUFDZ256rikz, X86::VPSHUFDZ256mbikz, TB_BCAST_D},
+  {X86::VPSHUFDZrikz, X86::VPSHUFDZmbikz, TB_BCAST_D},
+  {X86::VPSLLDZ128rikz, X86::VPSLLDZ128mbikz, TB_BCAST_D},
+  {X86::VPSLLDZ256rikz, X86::VPSLLDZ256mbikz, TB_BCAST_D},
+  {X86::VPSLLDZrikz, X86::VPSLLDZmbikz, TB_BCAST_D},
+  {X86::VPSLLQZ128rikz, X86::VPSLLQZ128mbikz, TB_BCAST_Q},
+  {X86::VPSLLQZ256rikz, X86::VPSLLQZ256mbikz, TB_BCAST_Q},
+  {X86::VPSLLQZrikz, X86::VPSLLQZmbikz, TB_BCAST_Q},
+  {X86::VPSLLVDZ128rr, X86::VPSLLVDZ128rmb, TB_BCAST_D},
+  {X86::VPSLLVDZ256rr, X86::VPSLLVDZ256rmb, TB_BCAST_D},
+  {X86::VPSLLVDZrr, X86::VPSLLVDZrmb, TB_BCAST_D},
+  {X86::VPSLLVQZ128rr, X86::VPSLLVQZ128rmb, TB_BCAST_Q},
+  {X86::VPSLLVQZ256rr, X86::VPSLLVQZ256rmb, TB_BCAST_Q},
+  {X86::VPSLLVQZrr, X86::VPSLLVQZrmb, TB_BCAST_Q},
+  {X86::VPSRADZ128rikz, X86::VPSRADZ128mbikz, TB_BCAST_D},
+  {X86::VPSRADZ256rikz, X86::VPSRADZ256mbikz, TB_BCAST_D},
+  {X86::VPSRADZrikz, X86::VPSRADZmbikz, TB_BCAST_D},
+  {X86::VPSRAQZ128rikz, X86::VPSRAQZ128mbikz, TB_BCAST_Q},
+  {X86::VPSRAQZ256rikz, X86::VPSRAQZ256mbikz, TB_BCAST_Q},
+  {X86::VPSRAQZrikz, X86::VPSRAQZmbikz, TB_BCAST_Q},
+  {X86::VPSRAVDZ128rr, X86::VPSRAVDZ128rmb, TB_BCAST_D},
+  {X86::VPSRAVDZ256rr, X86::VPSRAVDZ256rmb, TB_BCAST_D},
+  {X86::VPSRAVDZrr, X86::VPSRAVDZrmb, TB_BCAST_D},
+  {X86::VPSRAVQZ128rr, X86::VPSRAVQZ128rmb, TB_BCAST_Q},
+  {X86::VPSRAVQZ256rr, X86::VPSRAVQZ256rmb, TB_BCAST_Q},
+  {X86::VPSRAVQZrr, X86::VPSRAVQZrmb, TB_BCAST_Q},
+  {X86::VPSRLDZ128rikz, X86::VPSRLDZ128mbikz, TB_BCAST_D},
+  {X86::VPSRLDZ256rikz, X86::VPSRLDZ256mbikz, TB_BCAST_D},
+  {X86::VPSRLDZrikz, X86::VPSRLDZmbikz, TB_BCAST_D},
+  {X86::VPSRLQZ128rikz, X86::VPSRLQZ128mbikz, TB_BCAST_Q},
+  {X86::VPSRLQZ256rikz, X86::VPSRLQZ256mbikz, TB_BCAST_Q},
+  {X86::VPSRLQZrikz, X86::VPSRLQZmbikz, TB_BCAST_Q},
+  {X86::VPSRLVDZ128rr, X86::VPSRLVDZ128rmb, TB_BCAST_D},
+  {X86::VPSRLVDZ256rr, X86::VPSRLVDZ256rmb, TB_BCAST_D},
+  {X86::VPSRLVDZrr, X86::VPSRLVDZrmb, TB_BCAST_D},
+  {X86::VPSRLVQZ128rr, X86::VPSRLVQZ128rmb, TB_BCAST_Q},
+  {X86::VPSRLVQZ256rr, X86::VPSRLVQZ256rmb, TB_BCAST_Q},
+  {X86::VPSRLVQZrr, X86::VPSRLVQZrmb, TB_BCAST_Q},
+  {X86::VPSUBDZ128rr, X86::VPSUBDZ128rmb, TB_BCAST_D},
+  {X86::VPSUBDZ256rr, X86::VPSUBDZ256rmb, TB_BCAST_D},
+  {X86::VPSUBDZrr, X86::VPSUBDZrmb, TB_BCAST_D},
+  {X86::VPSUBQZ128rr, X86::VPSUBQZ128rmb, TB_BCAST_Q},
+  {X86::VPSUBQZ256rr, X86::VPSUBQZ256rmb, TB_BCAST_Q},
+  {X86::VPSUBQZrr, X86::VPSUBQZrmb, TB_BCAST_Q},
+  {X86::VPTESTMDZ128rr, X86::VPTESTMDZ128rmb, TB_BCAST_D},
+  {X86::VPTESTMDZ256rr, X86::VPTESTMDZ256rmb, TB_BCAST_D},
+  {X86::VPTESTMDZrr, X86::VPTESTMDZrmb, TB_BCAST_D},
+  {X86::VPTESTMQZ128rr, X86::VPTESTMQZ128rmb, TB_BCAST_Q},
+  {X86::VPTESTMQZ256rr, X86::VPTESTMQZ256rmb, TB_BCAST_Q},
+  {X86::VPTESTMQZrr, X86::VPTESTMQZrmb, TB_BCAST_Q},
+  {X86::VPTESTNMDZ128rr, X86::VPTESTNMDZ128rmb, TB_BCAST_D},
+  {X86::VPTESTNMDZ256rr, X86::VPTESTNMDZ256rmb, TB_BCAST_D},
+  {X86::VPTESTNMDZrr, X86::VPTESTNMDZrmb, TB_BCAST_D},
+  {X86::VPTESTNMQZ128rr, X86::VPTESTNMQZ128rmb, TB_BCAST_Q},
+  {X86::VPTESTNMQZ256rr, X86::VPTESTNMQZ256rmb, TB_BCAST_Q},
+  {X86::VPTESTNMQZrr, X86::VPTESTNMQZrmb, TB_BCAST_Q},
+  {X86::VPUNPCKHDQZ128rr, X86::VPUNPCKHDQZ128rmb, TB_BCAST_Q},
+  {X86::VPUNPCKHDQZ256rr, X86::VPUNPCKHDQZ256rmb, TB_BCAST_Q},
+  {X86::VPUNPCKHDQZrr, X86::VPUNPCKHDQZrmb, TB_BCAST_Q},
+  {X86::VPUNPCKHQDQZ128rr, X86::VPUNPCKHQDQZ128rmb, TB_BCAST_Q},
+  {X86::VPUNPCKHQDQZ256rr, X86::VPUNPCKHQDQZ256rmb, TB_BCAST_Q},
+  {X86::VPUNPCKHQDQZrr, X86::VPUNPCKHQDQZrmb, TB_BCAST_Q},
+  {X86::VPUNPCKLDQZ128rr, X86::VPUNPCKLDQZ128rmb, TB_BCAST_Q},
+  {X86::VPUNPCKLDQZ256rr, X86::VPUNPCKLDQZ256rmb, TB_BCAST_Q},
+  {X86::VPUNPCKLDQZrr, X86::VPUNPCKLDQZrmb, TB_BCAST_Q},
+  {X86::VPUNPCKLQDQZ128rr, X86::VPUNPCKLQDQZ128rmb, TB_BCAST_Q},
+  {X86::VPUNPCKLQDQZ256rr, X86::VPUNPCKLQDQZ256rmb, TB_BCAST_Q},
+  {X86::VPUNPCKLQDQZrr, X86::VPUNPCKLQDQZrmb, TB_BCAST_Q},
+  {X86::VPXORDZ128rr, X86::VPXORDZ128rmb, TB_BCAST_D},
+  {X86::VPXORDZ256rr, X86::VPXORDZ256rmb, TB_BCAST_D},
+  {X86::VPXORDZrr, X86::VPXORDZrmb, TB_BCAST_D},
+  {X86::VPXORQZ128rr, X86::VPXORQZ128rmb, TB_BCAST_Q},
+  {X86::VPXORQZ256rr, X86::VPXORQZ256rmb, TB_BCAST_Q},
+  {X86::VPXORQZrr, X86::VPXORQZrmb, TB_BCAST_Q},
+  {X86::VRANGEPDZ128rri, X86::VRANGEPDZ128rmbi, TB_BCAST_SD},
+  {X86::VRANGEPDZ256rri, X86::VRANGEPDZ256rmbi, TB_BCAST_SD},
+  {X86::VRANGEPDZrri, X86::VRANGEPDZrmbi, TB_BCAST_SD},
+  {X86::VRANGEPSZ128rri, X86::VRANGEPSZ128rmbi, TB_BCAST_SS},
+  {X86::VRANGEPSZ256rri, X86::VRANGEPSZ256rmbi, TB_BCAST_SS},
+  {X86::VRANGEPSZrri, X86::VRANGEPSZrmbi, TB_BCAST_SS},
+  {X86::VRCP14PDZ128rkz, X86::VRCP14PDZ128mbkz, TB_BCAST_SD},
+  {X86::VRCP14PDZ256rkz, X86::VRCP14PDZ256mbkz, TB_BCAST_SD},
+  {X86::VRCP14PDZrkz, X86::VRCP14PDZmbkz, TB_BCAST_SD},
+  {X86::VRCP14PSZ128rkz, X86::VRCP14PSZ128mbkz, TB_BCAST_SS},
+  {X86::VRCP14PSZ256rkz, X86::VRCP14PSZ256mbkz, TB_BCAST_SS},
+  {X86::VRCP14PSZrkz, X86::VRCP14PSZmbkz, TB_BCAST_SS},
+  {X86::VRCP28PDZrkz, X86::VRCP28PDZmbkz, TB_BCAST_SD},
+  {X86::VRCP28PSZrkz, X86::VRCP28PSZmbkz, TB_BCAST_SS},
+  {X86::VRCPPHZ128rkz, X86::VRCPPHZ128mbkz, TB_BCAST_SH},
+  {X86::VRCPPHZ256rkz, X86::VRCPPHZ256mbkz, TB_BCAST_SH},
+  {X86::VRCPPHZrkz, X86::VRCPPHZmbkz, TB_BCAST_SH},
+  {X86::VREDUCEPDZ128rrikz, X86::VREDUCEPDZ128rmbikz, TB_BCAST_SD},
+  {X86::VREDUCEPDZ256rrikz, X86::VREDUCEPDZ256rmbikz, TB_BCAST_SD},
+  {X86::VREDUCEPDZrrikz, X86::VREDUCEPDZrmbikz, TB_BCAST_SD},
+  {X86::VREDUCEPHZ128rrikz, X86::VREDUCEPHZ128rmbikz, TB_BCAST_SH},
+  {X86::VREDUCEPHZ256rrikz, X86::VREDUCEPHZ256rmbikz, TB_BCAST_SH},
+  {X86::VREDUCEPHZrrikz, X86::VREDUCEPHZrmbikz, TB_BCAST_SH},
+  {X86::VREDUCEPSZ128rrikz, X86::VREDUCEPSZ128rmbikz, TB_BCAST_SS},
+  {X86::VREDUCEPSZ256rrikz, X86::VREDUCEPSZ256rmbikz, TB_BCAST_SS},
+  {X86::VREDUCEPSZrrikz, X86::VREDUCEPSZrmbikz, TB_BCAST_SS},
+  {X86::VRNDSCALEPDZ128rrikz, X86::VRNDSCALEPDZ128rmbikz, TB_BCAST_SD},
+  {X86::VRNDSCALEPDZ256rrikz, X86::VRNDSCALEPDZ256rmbikz, TB_BCAST_SD},
+  {X86::VRNDSCALEPDZrrikz, X86::VRNDSCALEPDZrmbikz, TB_BCAST_SD},
+  {X86::VRNDSCALEPHZ128rrikz, X86::VRNDSCALEPHZ128rmbikz, TB_BCAST_SH},
+  {X86::VRNDSCALEPHZ256rrikz, X86::VRNDSCALEPHZ256rmbikz, TB_BCAST_SH},
+  {X86::VRNDSCALEPHZrrikz, X86::VRNDSCALEPHZrmbikz, TB_BCAST_SH},
+  {X86::VRNDSCALEPSZ128rrikz, X86::VRNDSCALEPSZ128rmbikz, TB_BCAST_SS},
+  {X86::VRNDSCALEPSZ256rrikz, X86::VRNDSCALEPSZ256rmbikz, TB_BCAST_SS},
+  {X86::VRNDSCALEPSZrrikz, X86::VRNDSCALEPSZrmbikz, TB_BCAST_SS},
+  {X86::VRSQRT14PDZ128rkz, X86::VRSQRT14PDZ128mbkz, TB_BCAST_SD},
+  {X86::VRSQRT14PDZ256rkz, X86::VRSQRT14PDZ256mbkz, TB_BCAST_SD},
+  {X86::VRSQRT14PDZrkz, X86::VRSQRT14PDZmbkz, TB_BCAST_SD},
+  {X86::VRSQRT14PSZ128rkz, X86::VRSQRT14PSZ128mbkz, TB_BCAST_SS},
+  {X86::VRSQRT14PSZ256rkz, X86::VRSQRT14PSZ256mbkz, TB_BCAST_SS},
+  {X86::VRSQRT14PSZrkz, X86::VRSQRT14PSZmbkz, TB_BCAST_SS},
+  {X86::VRSQRT28PDZrkz, X86::VRSQRT28PDZmbkz, TB_BCAST_SD},
+  {X86::VRSQRT28PSZrkz, X86::VRSQRT28PSZmbkz, TB_BCAST_SS},
+  {X86::VRSQRTPHZ128rkz, X86::VRSQRTPHZ128mbkz, TB_BCAST_SH},
+  {X86::VRSQRTPHZ256rkz, X86::VRSQRTPHZ256mbkz, TB_BCAST_SH},
+  {X86::VRSQRTPHZrkz, X86::VRSQRTPHZmbkz, TB_BCAST_SH},
+  {X86::VSCALEFPDZ128rr, X86::VSCALEFPDZ128rmb, TB_BCAST_SD},
+  {X86::VSCALEFPDZ256rr, X86::VSCALEFPDZ256rmb, TB_BCAST_SD},
+  {X86::VSCALEFPDZrr, X86::VSCALEFPDZrmb, TB_BCAST_SD},
+  {X86::VSCALEFPHZ128rr, X86::VSCALEFPHZ128rmb, TB_BCAST_SH},
+  {X86::VSCALEFPHZ256rr, X86::VSCALEFPHZ256rmb, TB_BCAST_SH},
+  {X86::VSCALEFPHZrr, X86::VSCALEFPHZrmb, TB_BCAST_SH},
+  {X86::VSCALEFPSZ128rr, X86::VSCALEFPSZ128rmb, TB_BCAST_SS},
+  {X86::VSCALEFPSZ256rr, X86::VSCALEFPSZ256rmb, TB_BCAST_SS},
+  {X86::VSCALEFPSZrr, X86::VSCALEFPSZrmb, TB_BCAST_SS},
+  {X86::VSHUFF32X4Z256rri, X86::VSHUFF32X4Z256rmbi, TB_BCAST_SS},
+  {X86::VSHUFF32X4Zrri, X86::VSHUFF32X4Zrmbi, TB_BCAST_SS},
+  {X86::VSHUFF64X2Z256rri, X86::VSHUFF64X2Z256rmbi, TB_BCAST_SD},
+  {X86::VSHUFF64X2Zrri, X86::VSHUFF64X2Zrmbi, TB_BCAST_SD},
+  {X86::VSHUFI32X4Z256rri, X86::VSHUFI32X4Z256rmbi, TB_BCAST_D},
+  {X86::VSHUFI32X4Zrri, X86::VSHUFI32X4Zrmbi, TB_BCAST_D},
+  {X86::VSHUFI64X2Z256rri, X86::VSHUFI64X2Z256rmbi, TB_BCAST_Q},
+  {X86::VSHUFI64X2Zrri, X86::VSHUFI64X2Zrmbi, TB_BCAST_Q},
+  {X86::VSHUFPDZ128rri, X86::VSHUFPDZ128rmbi, TB_BCAST_SD},
+  {X86::VSHUFPDZ256rri, X86::VSHUFPDZ256rmbi, TB_BCAST_SD},
+  {X86::VSHUFPDZrri, X86::VSHUFPDZrmbi, TB_BCAST_SD},
+  {X86::VSHUFPSZ128rri, X86::VSHUFPSZ128rmbi, TB_BCAST_SS},
+  {X86::VSHUFPSZ256rri, X86::VSHUFPSZ256rmbi, TB_BCAST_SS},
+  {X86::VSHUFPSZrri, X86::VSHUFPSZrmbi, TB_BCAST_SS},
+  {X86::VSQRTPDZ128rkz, X86::VSQRTPDZ128mbkz, TB_BCAST_SD},
+  {X86::VSQRTPDZ256rkz, X86::VSQRTPDZ256mbkz, TB_BCAST_SD},
+  {X86::VSQRTPDZrkz, X86::VSQRTPDZmbkz, TB_BCAST_SD},
+  {X86::VSQRTPHZ128rkz, X86::VSQRTPHZ128mbkz, TB_BCAST_SH},
+  {X86::VSQRTPHZ256rkz, X86::VSQRTPHZ256mbkz, TB_BCAST_SH},
+  {X86::VSQRTPHZrkz, X86::VSQRTPHZmbkz, TB_BCAST_SH},
+  {X86::VSQRTPSZ128rkz, X86::VSQRTPSZ128mbkz, TB_BCAST_SS},
+  {X86::VSQRTPSZ256rkz, X86::VSQRTPSZ256mbkz, TB_BCAST_SS},
+  {X86::VSQRTPSZrkz, X86::VSQRTPSZmbkz, TB_BCAST_SS},
+  {X86::VSUBPDZ128rr, X86::VSUBPDZ128rmb, TB_BCAST_SD},
+  {X86::VSUBPDZ256rr, X86::VSUBPDZ256rmb, TB_BCAST_SD},
+  {X86::VSUBPDZrr, X86::VSUBPDZrmb, TB_BCAST_SD},
+  {X86::VSUBPHZ128rr, X86::VSUBPHZ128rmb, TB_BCAST_SH},
+  {X86::VSUBPHZ256rr, X86::VSUBPHZ256rmb, TB_BCAST_SH},
+  {X86::VSUBPHZrr, X86::VSUBPHZrmb, TB_BCAST_SH},
+  {X86::VSUBPSZ128rr, X86::VSUBPSZ128rmb, TB_BCAST_SS},
+  {X86::VSUBPSZ256rr, X86::VSUBPSZ256rmb, TB_BCAST_SS},
+  {X86::VSUBPSZrr, X86::VSUBPSZrmb, TB_BCAST_SS},
+  {X86::VUNPCKHPDZ128rr, X86::VUNPCKHPDZ128rmb, TB_BCAST_SD},
+  {X86::VUNPCKHPDZ256rr, X86::VUNPCKHPDZ256rmb, TB_BCAST_SD},
+  {X86::VUNPCKHPDZrr, X86::VUNPCKHPDZrmb, TB_BCAST_SD},
+  {X86::VUNPCKHPSZ128rr, X86::VUNPCKHPSZ128rmb, TB_BCAST_SS},
+  {X86::VUNPCKHPSZ256rr, X86::VUNPCKHPSZ256rmb, TB_BCAST_SS},
+  {X86::VUNPCKHPSZrr, X86::VUNPCKHPSZrmb, TB_BCAST_SS},
+  {X86::VUNPCKLPDZ128rr, X86::VUNPCKLPDZ128rmb, TB_BCAST_SD},
+  {X86::VUNPCKLPDZ256rr, X86::VUNPCKLPDZ256rmb, TB_BCAST_SD},
+  {X86::VUNPCKLPDZrr, X86::VUNPCKLPDZrmb, TB_BCAST_SD},
+  {X86::VUNPCKLPSZ128rr, X86::VUNPCKLPSZ128rmb, TB_BCAST_SS},
+  {X86::VUNPCKLPSZ256rr, X86::VUNPCKLPSZ256rmb, TB_BCAST_SS},
+  {X86::VUNPCKLPSZrr, X86::VUNPCKLPSZrmb, TB_BCAST_SS},
+  {X86::VXORPDZ128rr, X86::VXORPDZ128rmb, TB_BCAST_SD},
+  {X86::VXORPDZ256rr, X86::VXORPDZ256rmb, TB_BCAST_SD},
+  {X86::VXORPDZrr, X86::VXORPDZrmb, TB_BCAST_SD},
+  {X86::VXORPSZ128rr, X86::VXORPSZ128rmb, TB_BCAST_SS},
+  {X86::VXORPSZ256rr, X86::VXORPSZ256rmb, TB_BCAST_SS},
+  {X86::VXORPSZrr, X86::VXORPSZrmb, TB_BCAST_SS},
+};
+
+static const X86FoldTableEntry BroadcastTable3[] = {
+  {X86::VADDPDZ128rrkz, X86::VADDPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VADDPDZ256rrkz, X86::VADDPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VADDPDZrrkz, X86::VADDPDZrmbkz, TB_BCAST_SD},
+  {X86::VADDPHZ128rrkz, X86::VADDPHZ128rmbkz, TB_BCAST_SH},
+  {X86::VADDPHZ256rrkz, X86::VADDPHZ256rmbkz, TB_BCAST_SH},
+  {X86::VADDPHZrrkz, X86::VADDPHZrmbkz, TB_BCAST_SH},
+  {X86::VADDPSZ128rrkz, X86::VADDPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VADDPSZ256rrkz, X86::VADDPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VADDPSZrrkz, X86::VADDPSZrmbkz, TB_BCAST_SS},
+  {X86::VALIGNDZ128rrikz, X86::VALIGNDZ128rmbikz, TB_BCAST_D},
+  {X86::VALIGNDZ256rrikz, X86::VALIGNDZ256rmbikz, TB_BCAST_D},
+  {X86::VALIGNDZrrikz, X86::VALIGNDZrmbikz, TB_BCAST_D},
+  {X86::VALIGNQZ128rrikz, X86::VALIGNQZ128rmbikz, TB_BCAST_Q},
+  {X86::VALIGNQZ256rrikz, X86::VALIGNQZ256rmbikz, TB_BCAST_Q},
+  {X86::VALIGNQZrrikz, X86::VALIGNQZrmbikz, TB_BCAST_Q},
+  {X86::VANDNPDZ128rrkz, X86::VANDNPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VANDNPDZ256rrkz, X86::VANDNPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VANDNPDZrrkz, X86::VANDNPDZrmbkz, TB_BCAST_SD},
+  {X86::VANDNPSZ128rrkz, X86::VANDNPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VANDNPSZ256rrkz, X86::VANDNPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VANDNPSZrrkz, X86::VANDNPSZrmbkz, TB_BCAST_SS},
+  {X86::VANDPDZ128rrkz, X86::VANDPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VANDPDZ256rrkz, X86::VANDPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VANDPDZrrkz, X86::VANDPDZrmbkz, TB_BCAST_SD},
+  {X86::VANDPSZ128rrkz, X86::VANDPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VANDPSZ256rrkz, X86::VANDPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VANDPSZrrkz, X86::VANDPSZrmbkz, TB_BCAST_SS},
+  {X86::VBLENDMPDZ128rrk, X86::VBLENDMPDZ128rmbk, TB_BCAST_SD},
+  {X86::VBLENDMPDZ256rrk, X86::VBLENDMPDZ256rmbk, TB_BCAST_SD},
+  {X86::VBLENDMPDZrrk, X86::VBLENDMPDZrmbk, TB_BCAST_SD},
+  {X86::VBLENDMPSZ128rrk, X86::VBLENDMPSZ128rmbk, TB_BCAST_SS},
+  {X86::VBLENDMPSZ256rrk, X86::VBLENDMPSZ256rmbk, TB_BCAST_SS},
+  {X86::VBLENDMPSZrrk, X86::VBLENDMPSZrmbk, TB_BCAST_SS},
+  {X86::VCMPPDZ128rrik, X86::VCMPPDZ128rmbik, TB_BCAST_SD},
+  {X86::VCMPPDZ256rrik, X86::VCMPPDZ256rmbik, TB_BCAST_SD},
+  {X86::VCMPPDZrrik, X86::VCMPPDZrmbik, TB_BCAST_SD},
+  {X86::VCMPPHZ128rrik, X86::VCMPPHZ128rmbik, TB_BCAST_SH},
+  {X86::VCMPPHZ256rrik, X86::VCMPPHZ256rmbik, TB_BCAST_SH},
+  {X86::VCMPPHZrrik, X86::VCMPPHZrmbik, TB_BCAST_SH},
+  {X86::VCMPPSZ128rrik, X86::VCMPPSZ128rmbik, TB_BCAST_SS},
+  {X86::VCMPPSZ256rrik, X86::VCMPPSZ256rmbik, TB_BCAST_SS},
+  {X86::VCMPPSZrrik, X86::VCMPPSZrmbik, TB_BCAST_SS},
+  {X86::VCVTDQ2PDZ128rrk, X86::VCVTDQ2PDZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTDQ2PDZ256rrk, X86::VCVTDQ2PDZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTDQ2PDZrrk, X86::VCVTDQ2PDZrmbk, TB_BCAST_SD},
+  {X86::VCVTDQ2PHZ128rrk, X86::VCVTDQ2PHZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTDQ2PHZ256rrk, X86::VCVTDQ2PHZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTDQ2PHZrrk, X86::VCVTDQ2PHZrmbk, TB_BCAST_SH},
+  {X86::VCVTDQ2PSZ128rrk, X86::VCVTDQ2PSZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTDQ2PSZ256rrk, X86::VCVTDQ2PSZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTDQ2PSZrrk, X86::VCVTDQ2PSZrmbk, TB_BCAST_SS},
+  {X86::VCVTNE2PS2BF16Z128rrkz, X86::VCVTNE2PS2BF16Z128rmbkz, TB_BCAST_SS},
+  {X86::VCVTNE2PS2BF16Z256rrkz, X86::VCVTNE2PS2BF16Z256rmbkz, TB_BCAST_SS},
+  {X86::VCVTNE2PS2BF16Zrrkz, X86::VCVTNE2PS2BF16Zrmbkz, TB_BCAST_SS},
+  {X86::VCVTNEPS2BF16Z128rrk, X86::VCVTNEPS2BF16Z128rmbk, TB_BCAST_SS},
+  {X86::VCVTNEPS2BF16Z256rrk, X86::VCVTNEPS2BF16Z256rmbk, TB_BCAST_SS},
+  {X86::VCVTNEPS2BF16Zrrk, X86::VCVTNEPS2BF16Zrmbk, TB_BCAST_SS},
+  {X86::VCVTPD2DQZ128rrk, X86::VCVTPD2DQZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTPD2DQZ256rrk, X86::VCVTPD2DQZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTPD2DQZrrk, X86::VCVTPD2DQZrmbk, TB_BCAST_SD},
+  {X86::VCVTPD2PHZ128rrk, X86::VCVTPD2PHZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTPD2PHZ256rrk, X86::VCVTPD2PHZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTPD2PHZrrk, X86::VCVTPD2PHZrmbk, TB_BCAST_SD},
+  {X86::VCVTPD2PSZ128rrk, X86::VCVTPD2PSZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTPD2PSZ256rrk, X86::VCVTPD2PSZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTPD2PSZrrk, X86::VCVTPD2PSZrmbk, TB_BCAST_SS},
+  {X86::VCVTPD2QQZ128rrk, X86::VCVTPD2QQZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTPD2QQZ256rrk, X86::VCVTPD2QQZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTPD2QQZrrk, X86::VCVTPD2QQZrmbk, TB_BCAST_SD},
+  {X86::VCVTPD2UDQZ128rrk, X86::VCVTPD2UDQZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTPD2UDQZ256rrk, X86::VCVTPD2UDQZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTPD2UDQZrrk, X86::VCVTPD2UDQZrmbk, TB_BCAST_SD},
+  {X86::VCVTPD2UQQZ128rrk, X86::VCVTPD2UQQZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTPD2UQQZ256rrk, X86::VCVTPD2UQQZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTPD2UQQZrrk, X86::VCVTPD2UQQZrmbk, TB_BCAST_SD},
+  {X86::VCVTPH2DQZ128rrk, X86::VCVTPH2DQZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTPH2DQZ256rrk, X86::VCVTPH2DQZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTPH2DQZrrk, X86::VCVTPH2DQZrmbk, TB_BCAST_SH},
+  {X86::VCVTPH2PDZ128rrk, X86::VCVTPH2PDZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTPH2PDZ256rrk, X86::VCVTPH2PDZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTPH2PDZrrk, X86::VCVTPH2PDZrmbk, TB_BCAST_SD},
+  {X86::VCVTPH2PSXZ128rrk, X86::VCVTPH2PSXZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTPH2PSXZ256rrk, X86::VCVTPH2PSXZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTPH2PSXZrrk, X86::VCVTPH2PSXZrmbk, TB_BCAST_SS},
+  {X86::VCVTPH2QQZ128rrk, X86::VCVTPH2QQZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTPH2QQZ256rrk, X86::VCVTPH2QQZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTPH2QQZrrk, X86::VCVTPH2QQZrmbk, TB_BCAST_SH},
+  {X86::VCVTPH2UDQZ128rrk, X86::VCVTPH2UDQZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTPH2UDQZ256rrk, X86::VCVTPH2UDQZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTPH2UDQZrrk, X86::VCVTPH2UDQZrmbk, TB_BCAST_SH},
+  {X86::VCVTPH2UQQZ128rrk, X86::VCVTPH2UQQZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTPH2UQQZ256rrk, X86::VCVTPH2UQQZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTPH2UQQZrrk, X86::VCVTPH2UQQZrmbk, TB_BCAST_SH},
+  {X86::VCVTPH2UWZ128rrk, X86::VCVTPH2UWZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTPH2UWZ256rrk, X86::VCVTPH2UWZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTPH2UWZrrk, X86::VCVTPH2UWZrmbk, TB_BCAST_SH},
+  {X86::VCVTPH2WZ128rrk, X86::VCVTPH2WZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTPH2WZ256rrk, X86::VCVTPH2WZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTPH2WZrrk, X86::VCVTPH2WZrmbk, TB_BCAST_SH},
+  {X86::VCVTPS2DQZ128rrk, X86::VCVTPS2DQZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTPS2DQZ256rrk, X86::VCVTPS2DQZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTPS2DQZrrk, X86::VCVTPS2DQZrmbk, TB_BCAST_SS},
+  {X86::VCVTPS2PDZ128rrk, X86::VCVTPS2PDZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTPS2PDZ256rrk, X86::VCVTPS2PDZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTPS2PDZrrk, X86::VCVTPS2PDZrmbk, TB_BCAST_SS},
+  {X86::VCVTPS2PHXZ128rrk, X86::VCVTPS2PHXZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTPS2PHXZ256rrk, X86::VCVTPS2PHXZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTPS2PHXZrrk, X86::VCVTPS2PHXZrmbk, TB_BCAST_SS},
+  {X86::VCVTPS2QQZ128rrk, X86::VCVTPS2QQZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTPS2QQZ256rrk, X86::VCVTPS2QQZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTPS2QQZrrk, X86::VCVTPS2QQZrmbk, TB_BCAST_SS},
+  {X86::VCVTPS2UDQZ128rrk, X86::VCVTPS2UDQZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTPS2UDQZ256rrk, X86::VCVTPS2UDQZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTPS2UDQZrrk, X86::VCVTPS2UDQZrmbk, TB_BCAST_SS},
+  {X86::VCVTPS2UQQZ128rrk, X86::VCVTPS2UQQZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTPS2UQQZ256rrk, X86::VCVTPS2UQQZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTPS2UQQZrrk, X86::VCVTPS2UQQZrmbk, TB_BCAST_SS},
+  {X86::VCVTQQ2PDZ128rrk, X86::VCVTQQ2PDZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTQQ2PDZ256rrk, X86::VCVTQQ2PDZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTQQ2PDZrrk, X86::VCVTQQ2PDZrmbk, TB_BCAST_SD},
+  {X86::VCVTQQ2PHZ128rrk, X86::VCVTQQ2PHZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTQQ2PHZ256rrk, X86::VCVTQQ2PHZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTQQ2PHZrrk, X86::VCVTQQ2PHZrmbk, TB_BCAST_SH},
+  {X86::VCVTQQ2PSZ128rrk, X86::VCVTQQ2PSZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTQQ2PSZ256rrk, X86::VCVTQQ2PSZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTQQ2PSZrrk, X86::VCVTQQ2PSZrmbk, TB_BCAST_SS},
+  {X86::VCVTTPD2DQZ128rrk, X86::VCVTTPD2DQZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTTPD2DQZ256rrk, X86::VCVTTPD2DQZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTTPD2DQZrrk, X86::VCVTTPD2DQZrmbk, TB_BCAST_SD},
+  {X86::VCVTTPD2QQZ128rrk, X86::VCVTTPD2QQZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTTPD2QQZ256rrk, X86::VCVTTPD2QQZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTTPD2QQZrrk, X86::VCVTTPD2QQZrmbk, TB_BCAST_SD},
+  {X86::VCVTTPD2UDQZ128rrk, X86::VCVTTPD2UDQZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTTPD2UDQZ256rrk, X86::VCVTTPD2UDQZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTTPD2UDQZrrk, X86::VCVTTPD2UDQZrmbk, TB_BCAST_SD},
+  {X86::VCVTTPD2UQQZ128rrk, X86::VCVTTPD2UQQZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTTPD2UQQZ256rrk, X86::VCVTTPD2UQQZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTTPD2UQQZrrk, X86::VCVTTPD2UQQZrmbk, TB_BCAST_SD},
+  {X86::VCVTTPH2DQZ128rrk, X86::VCVTTPH2DQZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2DQZ256rrk, X86::VCVTTPH2DQZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2DQZrrk, X86::VCVTTPH2DQZrmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2QQZ128rrk, X86::VCVTTPH2QQZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2QQZ256rrk, X86::VCVTTPH2QQZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2QQZrrk, X86::VCVTTPH2QQZrmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2UDQZ128rrk, X86::VCVTTPH2UDQZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2UDQZ256rrk, X86::VCVTTPH2UDQZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2UDQZrrk, X86::VCVTTPH2UDQZrmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2UQQZ128rrk, X86::VCVTTPH2UQQZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2UQQZ256rrk, X86::VCVTTPH2UQQZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2UQQZrrk, X86::VCVTTPH2UQQZrmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2UWZ128rrk, X86::VCVTTPH2UWZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2UWZ256rrk, X86::VCVTTPH2UWZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2UWZrrk, X86::VCVTTPH2UWZrmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2WZ128rrk, X86::VCVTTPH2WZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2WZ256rrk, X86::VCVTTPH2WZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTTPH2WZrrk, X86::VCVTTPH2WZrmbk, TB_BCAST_SH},
+  {X86::VCVTTPS2DQZ128rrk, X86::VCVTTPS2DQZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTTPS2DQZ256rrk, X86::VCVTTPS2DQZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTTPS2DQZrrk, X86::VCVTTPS2DQZrmbk, TB_BCAST_SS},
+  {X86::VCVTTPS2QQZ128rrk, X86::VCVTTPS2QQZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTTPS2QQZ256rrk, X86::VCVTTPS2QQZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTTPS2QQZrrk, X86::VCVTTPS2QQZrmbk, TB_BCAST_SS},
+  {X86::VCVTTPS2UDQZ128rrk, X86::VCVTTPS2UDQZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTTPS2UDQZ256rrk, X86::VCVTTPS2UDQZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTTPS2UDQZrrk, X86::VCVTTPS2UDQZrmbk, TB_BCAST_SS},
+  {X86::VCVTTPS2UQQZ128rrk, X86::VCVTTPS2UQQZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTTPS2UQQZ256rrk, X86::VCVTTPS2UQQZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTTPS2UQQZrrk, X86::VCVTTPS2UQQZrmbk, TB_BCAST_SS},
+  {X86::VCVTUDQ2PDZ128rrk, X86::VCVTUDQ2PDZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTUDQ2PDZ256rrk, X86::VCVTUDQ2PDZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTUDQ2PDZrrk, X86::VCVTUDQ2PDZrmbk, TB_BCAST_SD},
+  {X86::VCVTUDQ2PHZ128rrk, X86::VCVTUDQ2PHZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTUDQ2PHZ256rrk, X86::VCVTUDQ2PHZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTUDQ2PHZrrk, X86::VCVTUDQ2PHZrmbk, TB_BCAST_SH},
+  {X86::VCVTUDQ2PSZ128rrk, X86::VCVTUDQ2PSZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTUDQ2PSZ256rrk, X86::VCVTUDQ2PSZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTUDQ2PSZrrk, X86::VCVTUDQ2PSZrmbk, TB_BCAST_SS},
+  {X86::VCVTUQQ2PDZ128rrk, X86::VCVTUQQ2PDZ128rmbk, TB_BCAST_SD},
+  {X86::VCVTUQQ2PDZ256rrk, X86::VCVTUQQ2PDZ256rmbk, TB_BCAST_SD},
+  {X86::VCVTUQQ2PDZrrk, X86::VCVTUQQ2PDZrmbk, TB_BCAST_SD},
+  {X86::VCVTUQQ2PHZ128rrk, X86::VCVTUQQ2PHZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTUQQ2PHZ256rrk, X86::VCVTUQQ2PHZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTUQQ2PHZrrk, X86::VCVTUQQ2PHZrmbk, TB_BCAST_SH},
+  {X86::VCVTUQQ2PSZ128rrk, X86::VCVTUQQ2PSZ128rmbk, TB_BCAST_SS},
+  {X86::VCVTUQQ2PSZ256rrk, X86::VCVTUQQ2PSZ256rmbk, TB_BCAST_SS},
+  {X86::VCVTUQQ2PSZrrk, X86::VCVTUQQ2PSZrmbk, TB_BCAST_SS},
+  {X86::VCVTUW2PHZ128rrk, X86::VCVTUW2PHZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTUW2PHZ256rrk, X86::VCVTUW2PHZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTUW2PHZrrk, X86::VCVTUW2PHZrmbk, TB_BCAST_SH},
+  {X86::VCVTW2PHZ128rrk, X86::VCVTW2PHZ128rmbk, TB_BCAST_SH},
+  {X86::VCVTW2PHZ256rrk, X86::VCVTW2PHZ256rmbk, TB_BCAST_SH},
+  {X86::VCVTW2PHZrrk, X86::VCVTW2PHZrmbk, TB_BCAST_SH},
+  {X86::VDIVPDZ128rrkz, X86::VDIVPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VDIVPDZ256rrkz, X86::VDIVPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VDIVPDZrrkz, X86::VDIVPDZrmbkz, TB_BCAST_SD},
+  {X86::VDIVPHZ128rrkz, X86::VDIVPHZ128rmbkz, TB_BCAST_SH},
+  {X86::VDIVPHZ256rrkz, X86::VDIVPHZ256rmbkz, TB_BCAST_SH},
+  {X86::VDIVPHZrrkz, X86::VDIVPHZrmbkz, TB_BCAST_SH},
+  {X86::VDIVPSZ128rrkz, X86::VDIVPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VDIVPSZ256rrkz, X86::VDIVPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VDIVPSZrrkz, X86::VDIVPSZrmbkz, TB_BCAST_SS},
+  {X86::VDPBF16PSZ128r, X86::VDPBF16PSZ128mb, TB_BCAST_SS},
+  {X86::VDPBF16PSZ256r, X86::VDPBF16PSZ256mb, TB_BCAST_SS},
+  {X86::VDPBF16PSZr, X86::VDPBF16PSZmb, TB_BCAST_SS},
+  {X86::VEXP2PDZrk, X86::VEXP2PDZmbk, TB_BCAST_SD},
+  {X86::VEXP2PSZrk, X86::VEXP2PSZmbk, TB_BCAST_SS},
+  {X86::VFCMADDCPHZ128r, X86::VFCMADDCPHZ128mb, TB_BCAST_SH},
+  {X86::VFCMADDCPHZ256r, X86::VFCMADDCPHZ256mb, TB_BCAST_SH},
+  {X86::VFCMADDCPHZr, X86::VFCMADDCPHZmb, TB_BCAST_SH},
+  {X86::VFCMULCPHZ128rrkz, X86::VFCMULCPHZ128rmbkz, TB_BCAST_SH},
+  {X86::VFCMULCPHZ256rrkz, X86::VFCMULCPHZ256rmbkz, TB_BCAST_SH},
+  {X86::VFCMULCPHZrrkz, X86::VFCMULCPHZrmbkz, TB_BCAST_SH},
+  {X86::VFIXUPIMMPDZ128rri, X86::VFIXUPIMMPDZ128rmbi, TB_BCAST_SD},
+  {X86::VFIXUPIMMPDZ256rri, X86::VFIXUPIMMPDZ256rmbi, TB_BCAST_SD},
+  {X86::VFIXUPIMMPDZrri, X86::VFIXUPIMMPDZrmbi, TB_BCAST_SD},
+  {X86::VFIXUPIMMPSZ128rri, X86::VFIXUPIMMPSZ128rmbi, TB_BCAST_SS},
+  {X86::VFIXUPIMMPSZ256rri, X86::VFIXUPIMMPSZ256rmbi, TB_BCAST_SS},
+  {X86::VFIXUPIMMPSZrri, X86::VFIXUPIMMPSZrmbi, TB_BCAST_SS},
+  {X86::VFMADD132PDZ128r, X86::VFMADD132PDZ128mb, TB_BCAST_SD},
+  {X86::VFMADD132PDZ256r, X86::VFMADD132PDZ256mb, TB_BCAST_SD},
+  {X86::VFMADD132PDZr, X86::VFMADD132PDZmb, TB_BCAST_SD},
+  {X86::VFMADD132PHZ128r, X86::VFMADD132PHZ128mb, TB_BCAST_SH},
+  {X86::VFMADD132PHZ256r, X86::VFMADD132PHZ256mb, TB_BCAST_SH},
+  {X86::VFMADD132PHZr, X86::VFMADD132PHZmb, TB_BCAST_SH},
+  {X86::VFMADD132PSZ128r, X86::VFMADD132PSZ128mb, TB_BCAST_SS},
+  {X86::VFMADD132PSZ256r, X86::VFMADD132PSZ256mb, TB_BCAST_SS},
+  {X86::VFMADD132PSZr, X86::VFMADD132PSZmb, TB_BCAST_SS},
+  {X86::VFMADD213PDZ128r, X86::VFMADD213PDZ128mb, TB_BCAST_SD},
+  {X86::VFMADD213PDZ256r, X86::VFMADD213PDZ256mb, TB_BCAST_SD},
+  {X86::VFMADD213PDZr, X86::VFMADD213PDZmb, TB_BCAST_SD},
+  {X86::VFMADD213PHZ128r, X86::VFMADD213PHZ128mb, TB_BCAST_SH},
+  {X86::VFMADD213PHZ256r, X86::VFMADD213PHZ256mb, TB_BCAST_SH},
+  {X86::VFMADD213PHZr, X86::VFMADD213PHZmb, TB_BCAST_SH},
+  {X86::VFMADD213PSZ128r, X86::VFMADD213PSZ128mb, TB_BCAST_SS},
+  {X86::VFMADD213PSZ256r, X86::VFMADD213PSZ256mb, TB_BCAST_SS},
+  {X86::VFMADD213PSZr, X86::VFMADD213PSZmb, TB_BCAST_SS},
+  {X86::VFMADD231PDZ128r, X86::VFMADD231PDZ128mb, TB_BCAST_SD},
+  {X86::VFMADD231PDZ256r, X86::VFMADD231PDZ256mb, TB_BCAST_SD},
+  {X86::VFMADD231PDZr, X86::VFMADD231PDZmb, TB_BCAST_SD},
+  {X86::VFMADD231PHZ128r, X86::VFMADD231PHZ128mb, TB_BCAST_SH},
+  {X86::VFMADD231PHZ256r, X86::VFMADD231PHZ256mb, TB_BCAST_SH},
+  {X86::VFMADD231PHZr, X86::VFMADD231PHZmb, TB_BCAST_SH},
+  {X86::VFMADD231PSZ128r, X86::VFMADD231PSZ128mb, TB_BCAST_SS},
+  {X86::VFMADD231PSZ256r, X86::VFMADD231PSZ256mb, TB_BCAST_SS},
+  {X86::VFMADD231PSZr, X86::VFMADD231PSZmb, TB_BCAST_SS},
+  {X86::VFMADDCPHZ128r, X86::VFMADDCPHZ128mb, TB_BCAST_SH},
+  {X86::VFMADDCPHZ256r, X86::VFMADDCPHZ256mb, TB_BCAST_SH},
+  {X86::VFMADDCPHZr, X86::VFMADDCPHZmb, TB_BCAST_SH},
+  {X86::VFMADDSUB132PDZ128r, X86::VFMADDSUB132PDZ128mb, TB_BCAST_SD},
+  {X86::VFMADDSUB132PDZ256r, X86::VFMADDSUB132PDZ256mb, TB_BCAST_SD},
+  {X86::VFMADDSUB132PDZr, X86::VFMADDSUB132PDZmb, TB_BCAST_SD},
+  {X86::VFMADDSUB132PHZ128r, X86::VFMADDSUB132PHZ128mb, TB_BCAST_SH},
+  {X86::VFMADDSUB132PHZ256r, X86::VFMADDSUB132PHZ256mb, TB_BCAST_SH},
+  {X86::VFMADDSUB132PHZr, X86::VFMADDSUB132PHZmb, TB_BCAST_SH},
+  {X86::VFMADDSUB132PSZ128r, X86::VFMADDSUB132PSZ128mb, TB_BCAST_SS},
+  {X86::VFMADDSUB132PSZ256r, X86::VFMADDSUB132PSZ256mb, TB_BCAST_SS},
+  {X86::VFMADDSUB132PSZr, X86::VFMADDSUB132PSZmb, TB_BCAST_SS},
+  {X86::VFMADDSUB213PDZ128r, X86::VFMADDSUB213PDZ128mb, TB_BCAST_SD},
+  {X86::VFMADDSUB213PDZ256r, X86::VFMADDSUB213PDZ256mb, TB_BCAST_SD},
+  {X86::VFMADDSUB213PDZr, X86::VFMADDSUB213PDZmb, TB_BCAST_SD},
+  {X86::VFMADDSUB213PHZ128r, X86::VFMADDSUB213PHZ128mb, TB_BCAST_SH},
+  {X86::VFMADDSUB213PHZ256r, X86::VFMADDSUB213PHZ256mb, TB_BCAST_SH},
+  {X86::VFMADDSUB213PHZr, X86::VFMADDSUB213PHZmb, TB_BCAST_SH},
+  {X86::VFMADDSUB213PSZ128r, X86::VFMADDSUB213PSZ128mb, TB_BCAST_SS},
+  {X86::VFMADDSUB213PSZ256r, X86::VFMADDSUB213PSZ256mb, TB_BCAST_SS},
+  {X86::VFMADDSUB213PSZr, X86::VFMADDSUB213PSZmb, TB_BCAST_SS},
+  {X86::VFMADDSUB231PDZ128r, X86::VFMADDSUB231PDZ128mb, TB_BCAST_SD},
+  {X86::VFMADDSUB231PDZ256r, X86::VFMADDSUB231PDZ256mb, TB_BCAST_SD},
+  {X86::VFMADDSUB231PDZr, X86::VFMADDSUB231PDZmb, TB_BCAST_SD},
+  {X86::VFMADDSUB231PHZ128r, X86::VFMADDSUB231PHZ128mb, TB_BCAST_SH},
+  {X86::VFMADDSUB231PHZ256r, X86::VFMADDSUB231PHZ256mb, TB_BCAST_SH},
+  {X86::VFMADDSUB231PHZr, X86::VFMADDSUB231PHZmb, TB_BCAST_SH},
+  {X86::VFMADDSUB231PSZ128r, X86::VFMADDSUB231PSZ128mb, TB_BCAST_SS},
+  {X86::VFMADDSUB231PSZ256r, X86::VFMADDSUB231PSZ256mb, TB_BCAST_SS},
+  {X86::VFMADDSUB231PSZr, X86::VFMADDSUB231PSZmb, TB_BCAST_SS},
+  {X86::VFMSUB132PDZ128r, X86::VFMSUB132PDZ128mb, TB_BCAST_SD},
+  {X86::VFMSUB132PDZ256r, X86::VFMSUB132PDZ256mb, TB_BCAST_SD},
+  {X86::VFMSUB132PDZr, X86::VFMSUB132PDZmb, TB_BCAST_SD},
+  {X86::VFMSUB132PHZ128r, X86::VFMSUB132PHZ128mb, TB_BCAST_SH},
+  {X86::VFMSUB132PHZ256r, X86::VFMSUB132PHZ256mb, TB_BCAST_SH},
+  {X86::VFMSUB132PHZr, X86::VFMSUB132PHZmb, TB_BCAST_SH},
+  {X86::VFMSUB132PSZ128r, X86::VFMSUB132PSZ128mb, TB_BCAST_SS},
+  {X86::VFMSUB132PSZ256r, X86::VFMSUB132PSZ256mb, TB_BCAST_SS},
+  {X86::VFMSUB132PSZr, X86::VFMSUB132PSZmb, TB_BCAST_SS},
+  {X86::VFMSUB213PDZ128r, X86::VFMSUB213PDZ128mb, TB_BCAST_SD},
+  {X86::VFMSUB213PDZ256r, X86::VFMSUB213PDZ256mb, TB_BCAST_SD},
+  {X86::VFMSUB213PDZr, X86::VFMSUB213PDZmb, TB_BCAST_SD},
+  {X86::VFMSUB213PHZ128r, X86::VFMSUB213PHZ128mb, TB_BCAST_SH},
+  {X86::VFMSUB213PHZ256r, X86::VFMSUB213PHZ256mb, TB_BCAST_SH},
+  {X86::VFMSUB213PHZr, X86::VFMSUB213PHZmb, TB_BCAST_SH},
+  {X86::VFMSUB213PSZ128r, X86::VFMSUB213PSZ128mb, TB_BCAST_SS},
+  {X86::VFMSUB213PSZ256r, X86::VFMSUB213PSZ256mb, TB_BCAST_SS},
+  {X86::VFMSUB213PSZr, X86::VFMSUB213PSZmb, TB_BCAST_SS},
+  {X86::VFMSUB231PDZ128r, X86::VFMSUB231PDZ128mb, TB_BCAST_SD},
+  {X86::VFMSUB231PDZ256r, X86::VFMSUB231PDZ256mb, TB_BCAST_SD},
+  {X86::VFMSUB231PDZr, X86::VFMSUB231PDZmb, TB_BCAST_SD},
+  {X86::VFMSUB231PHZ128r, X86::VFMSUB231PHZ128mb, TB_BCAST_SH},
+  {X86::VFMSUB231PHZ256r, X86::VFMSUB231PHZ256mb, TB_BCAST_SH},
+  {X86::VFMSUB231PHZr, X86::VFMSUB231PHZmb, TB_BCAST_SH},
+  {X86::VFMSUB231PSZ128r, X86::VFMSUB231PSZ128mb, TB_BCAST_SS},
+  {X86::VFMSUB231PSZ256r, X86::VFMSUB231PSZ256mb, TB_BCAST_SS},
+  {X86::VFMSUB231PSZr, X86::VFMSUB231PSZmb, TB_BCAST_SS},
+  {X86::VFMSUBADD132PDZ128r, X86::VFMSUBADD132PDZ128mb, TB_BCAST_SD},
+  {X86::VFMSUBADD132PDZ256r, X86::VFMSUBADD132PDZ256mb, TB_BCAST_SD},
+  {X86::VFMSUBADD132PDZr, X86::VFMSUBADD132PDZmb, TB_BCAST_SD},
+  {X86::VFMSUBADD132PHZ128r, X86::VFMSUBADD132PHZ128mb, TB_BCAST_SH},
+  {X86::VFMSUBADD132PHZ256r, X86::VFMSUBADD132PHZ256mb, TB_BCAST_SH},
+  {X86::VFMSUBADD132PHZr, X86::VFMSUBADD132PHZmb, TB_BCAST_SH},
+  {X86::VFMSUBADD132PSZ128r, X86::VFMSUBADD132PSZ128mb, TB_BCAST_SS},
+  {X86::VFMSUBADD132PSZ256r, X86::VFMSUBADD132PSZ256mb, TB_BCAST_SS},
+  {X86::VFMSUBADD132PSZr, X86::VFMSUBADD132PSZmb, TB_BCAST_SS},
+  {X86::VFMSUBADD213PDZ128r, X86::VFMSUBADD213PDZ128mb, TB_BCAST_SD},
+  {X86::VFMSUBADD213PDZ256r, X86::VFMSUBADD213PDZ256mb, TB_BCAST_SD},
+  {X86::VFMSUBADD213PDZr, X86::VFMSUBADD213PDZmb, TB_BCAST_SD},
+  {X86::VFMSUBADD213PHZ128r, X86::VFMSUBADD213PHZ128mb, TB_BCAST_SH},
+  {X86::VFMSUBADD213PHZ256r, X86::VFMSUBADD213PHZ256mb, TB_BCAST_SH},
+  {X86::VFMSUBADD213PHZr, X86::VFMSUBADD213PHZmb, TB_BCAST_SH},
+  {X86::VFMSUBADD213PSZ128r, X86::VFMSUBADD213PSZ128mb, TB_BCAST_SS},
+  {X86::VFMSUBADD213PSZ256r, X86::VFMSUBADD213PSZ256mb, TB_BCAST_SS},
+  {X86::VFMSUBADD213PSZr, X86::VFMSUBADD213PSZmb, TB_BCAST_SS},
+  {X86::VFMSUBADD231PDZ128r, X86::VFMSUBADD231PDZ128mb, TB_BCAST_SD},
+  {X86::VFMSUBADD231PDZ256r, X86::VFMSUBADD231PDZ256mb, TB_BCAST_SD},
+  {X86::VFMSUBADD231PDZr, X86::VFMSUBADD231PDZmb, TB_BCAST_SD},
+  {X86::VFMSUBADD231PHZ128r, X86::VFMSUBADD231PHZ128mb, TB_BCAST_SH},
+  {X86::VFMSUBADD231PHZ256r, X86::VFMSUBADD231PHZ256mb, TB_BCAST_SH},
+  {X86::VFMSUBADD231PHZr, X86::VFMSUBADD231PHZmb, TB_BCAST_SH},
+  {X86::VFMSUBADD231PSZ128r, X86::VFMSUBADD231PSZ128mb, TB_BCAST_SS},
+  {X86::VFMSUBADD231PSZ256r, X86::VFMSUBADD231PSZ256mb, TB_BCAST_SS},
+  {X86::VFMSUBADD231PSZr, X86::VFMSUBADD231PSZmb, TB_BCAST_SS},
+  {X86::VFMULCPHZ128rrkz, X86::VFMULCPHZ128rmbkz, TB_BCAST_SH},
+  {X86::VFMULCPHZ256rrkz, X86::VFMULCPHZ256rmbkz, TB_BCAST_SH},
+  {X86::VFMULCPHZrrkz, X86::VFMULCPHZrmbkz, TB_BCAST_SH},
+  {X86::VFNMADD132PDZ128r, X86::VFNMADD132PDZ128mb, TB_BCAST_SD},
+  {X86::VFNMADD132PDZ256r, X86::VFNMADD132PDZ256mb, TB_BCAST_SD},
+  {X86::VFNMADD132PDZr, X86::VFNMADD132PDZmb, TB_BCAST_SD},
+  {X86::VFNMADD132PHZ128r, X86::VFNMADD132PHZ128mb, TB_BCAST_SH},
+  {X86::VFNMADD132PHZ256r, X86::VFNMADD132PHZ256mb, TB_BCAST_SH},
+  {X86::VFNMADD132PHZr, X86::VFNMADD132PHZmb, TB_BCAST_SH},
+  {X86::VFNMADD132PSZ128r, X86::VFNMADD132PSZ128mb, TB_BCAST_SS},
+  {X86::VFNMADD132PSZ256r, X86::VFNMADD132PSZ256mb, TB_BCAST_SS},
+  {X86::VFNMADD132PSZr, X86::VFNMADD132PSZmb, TB_BCAST_SS},
+  {X86::VFNMADD213PDZ128r, X86::VFNMADD213PDZ128mb, TB_BCAST_SD},
+  {X86::VFNMADD213PDZ256r, X86::VFNMADD213PDZ256mb, TB_BCAST_SD},
+  {X86::VFNMADD213PDZr, X86::VFNMADD213PDZmb, TB_BCAST_SD},
+  {X86::VFNMADD213PHZ128r, X86::VFNMADD213PHZ128mb, TB_BCAST_SH},
+  {X86::VFNMADD213PHZ256r, X86::VFNMADD213PHZ256mb, TB_BCAST_SH},
+  {X86::VFNMADD213PHZr, X86::VFNMADD213PHZmb, TB_BCAST_SH},
+  {X86::VFNMADD213PSZ128r, X86::VFNMADD213PSZ128mb, TB_BCAST_SS},
+  {X86::VFNMADD213PSZ256r, X86::VFNMADD213PSZ256mb, TB_BCAST_SS},
+  {X86::VFNMADD213PSZr, X86::VFNMADD213PSZmb, TB_BCAST_SS},
+  {X86::VFNMADD231PDZ128r, X86::VFNMADD231PDZ128mb, TB_BCAST_SD},
+  {X86::VFNMADD231PDZ256r, X86::VFNMADD231PDZ256mb, TB_BCAST_SD},
+  {X86::VFNMADD231PDZr, X86::VFNMADD231PDZmb, TB_BCAST_SD},
+  {X86::VFNMADD231PHZ128r, X86::VFNMADD231PHZ128mb, TB_BCAST_SH},
+  {X86::VFNMADD231PHZ256r, X86::VFNMADD231PHZ256mb, TB_BCAST_SH},
+  {X86::VFNMADD231PHZr, X86::VFNMADD231PHZmb, TB_BCAST_SH},
+  {X86::VFNMADD231PSZ128r, X86::VFNMADD231PSZ128mb, TB_BCAST_SS},
+  {X86::VFNMADD231PSZ256r, X86::VFNMADD231PSZ256mb, TB_BCAST_SS},
+  {X86::VFNMADD231PSZr, X86::VFNMADD231PSZmb, TB_BCAST_SS},
+  {X86::VFNMSUB132PDZ128r, X86::VFNMSUB132PDZ128mb, TB_BCAST_SD},
+  {X86::VFNMSUB132PDZ256r, X86::VFNMSUB132PDZ256mb, TB_BCAST_SD},
+  {X86::VFNMSUB132PDZr, X86::VFNMSUB132PDZmb, TB_BCAST_SD},
+  {X86::VFNMSUB132PHZ128r, X86::VFNMSUB132PHZ128mb, TB_BCAST_SH},
+  {X86::VFNMSUB132PHZ256r, X86::VFNMSUB132PHZ256mb, TB_BCAST_SH},
+  {X86::VFNMSUB132PHZr, X86::VFNMSUB132PHZmb, TB_BCAST_SH},
+  {X86::VFNMSUB132PSZ128r, X86::VFNMSUB132PSZ128mb, TB_BCAST_SS},
+  {X86::VFNMSUB132PSZ256r, X86::VFNMSUB132PSZ256mb, TB_BCAST_SS},
+  {X86::VFNMSUB132PSZr, X86::VFNMSUB132PSZmb, TB_BCAST_SS},
+  {X86::VFNMSUB213PDZ128r, X86::VFNMSUB213PDZ128mb, TB_BCAST_SD},
+  {X86::VFNMSUB213PDZ256r, X86::VFNMSUB213PDZ256mb, TB_BCAST_SD},
+  {X86::VFNMSUB213PDZr, X86::VFNMSUB213PDZmb, TB_BCAST_SD},
+  {X86::VFNMSUB213PHZ128r, X86::VFNMSUB213PHZ128mb, TB_BCAST_SH},
+  {X86::VFNMSUB213PHZ256r, X86::VFNMSUB213PHZ256mb, TB_BCAST_SH},
+  {X86::VFNMSUB213PHZr, X86::VFNMSUB213PHZmb, TB_BCAST_SH},
+  {X86::VFNMSUB213PSZ128r, X86::VFNMSUB213PSZ128mb, TB_BCAST_SS},
+  {X86::VFNMSUB213PSZ256r, X86::VFNMSUB213PSZ256mb, TB_BCAST_SS},
+  {X86::VFNMSUB213PSZr, X86::VFNMSUB213PSZmb, TB_BCAST_SS},
+  {X86::VFNMSUB231PDZ128r, X86::VFNMSUB231PDZ128mb, TB_BCAST_SD},
+  {X86::VFNMSUB231PDZ256r, X86::VFNMSUB231PDZ256mb, TB_BCAST_SD},
+  {X86::VFNMSUB231PDZr, X86::VFNMSUB231PDZmb, TB_BCAST_SD},
+  {X86::VFNMSUB231PHZ128r, X86::VFNMSUB231PHZ128mb, TB_BCAST_SH},
+  {X86::VFNMSUB231PHZ256r, X86::VFNMSUB231PHZ256mb, TB_BCAST_SH},
+  {X86::VFNMSUB231PHZr, X86::VFNMSUB231PHZmb, TB_BCAST_SH},
+  {X86::VFNMSUB231PSZ128r, X86::VFNMSUB231PSZ128mb, TB_BCAST_SS},
+  {X86::VFNMSUB231PSZ256r, X86::VFNMSUB231PSZ256mb, TB_BCAST_SS},
+  {X86::VFNMSUB231PSZr, X86::VFNMSUB231PSZmb, TB_BCAST_SS},
+  {X86::VGETEXPPDZ128rk, X86::VGETEXPPDZ128mbk, TB_BCAST_SD},
+  {X86::VGETEXPPDZ256rk, X86::VGETEXPPDZ256mbk, TB_BCAST_SD},
+  {X86::VGETEXPPDZrk, X86::VGETEXPPDZmbk, TB_BCAST_SD},
+  {X86::VGETEXPPHZ128rk, X86::VGETEXPPHZ128mbk, TB_BCAST_SH},
+  {X86::VGETEXPPHZ256rk, X86::VGETEXPPHZ256mbk, TB_BCAST_SH},
+  {X86::VGETEXPPHZrk, X86::VGETEXPPHZmbk, TB_BCAST_SH},
+  {X86::VGETEXPPSZ128rk, X86::VGETEXPPSZ128mbk, TB_BCAST_SS},
+  {X86::VGETEXPPSZ256rk, X86::VGETEXPPSZ256mbk, TB_BCAST_SS},
+  {X86::VGETEXPPSZrk, X86::VGETEXPPSZmbk, TB_BCAST_SS},
+  {X86::VGETMANTPDZ128rrik, X86::VGETMANTPDZ128rmbik, TB_BCAST_SD},
+  {X86::VGETMANTPDZ256rrik, X86::VGETMANTPDZ256rmbik, TB_BCAST_SD},
+  {X86::VGETMANTPDZrrik, X86::VGETMANTPDZrmbik, TB_BCAST_SD},
+  {X86::VGETMANTPHZ128rrik, X86::VGETMANTPHZ128rmbik, TB_BCAST_SH},
+  {X86::VGETMANTPHZ256rrik, X86::VGETMANTPHZ256rmbik, TB_BCAST_SH},
+  {X86::VGETMANTPHZrrik, X86::VGETMANTPHZrmbik, TB_BCAST_SH},
+  {X86::VGETMANTPSZ128rrik, X86::VGETMANTPSZ128rmbik, TB_BCAST_SS},
+  {X86::VGETMANTPSZ256rrik, X86::VGETMANTPSZ256rmbik, TB_BCAST_SS},
+  {X86::VGETMANTPSZrrik, X86::VGETMANTPSZrmbik, TB_BCAST_SS},
+  {X86::VGF2P8AFFINEINVQBZ128rrikz, X86::VGF2P8AFFINEINVQBZ128rmbikz, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEINVQBZ256rrikz, X86::VGF2P8AFFINEINVQBZ256rmbikz, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEINVQBZrrikz, X86::VGF2P8AFFINEINVQBZrmbikz, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEQBZ128rrikz, X86::VGF2P8AFFINEQBZ128rmbikz, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEQBZ256rrikz, X86::VGF2P8AFFINEQBZ256rmbikz, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEQBZrrikz, X86::VGF2P8AFFINEQBZrmbikz, TB_BCAST_Q},
+  {X86::VMAXCPDZ128rrkz, X86::VMAXCPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VMAXCPDZ256rrkz, X86::VMAXCPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VMAXCPDZrrkz, X86::VMAXCPDZrmbkz, TB_BCAST_SD},
+  {X86::VMAXCPHZ128rrkz, X86::VMAXCPHZ128rmbkz, TB_BCAST_SH},
+  {X86::VMAXCPHZ256rrkz, X86::VMAXCPHZ256rmbkz, TB_BCAST_SH},
+  {X86::VMAXCPHZrrkz, X86::VMAXCPHZrmbkz, TB_BCAST_SH},
+  {X86::VMAXCPSZ128rrkz, X86::VMAXCPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VMAXCPSZ256rrkz, X86::VMAXCPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VMAXCPSZrrkz, X86::VMAXCPSZrmbkz, TB_BCAST_SS},
+  {X86::VMAXPDZ128rrkz, X86::VMAXPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VMAXPDZ256rrkz, X86::VMAXPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VMAXPDZrrkz, X86::VMAXPDZrmbkz, TB_BCAST_SD},
+  {X86::VMAXPHZ128rrkz, X86::VMAXPHZ128rmbkz, TB_BCAST_SH},
+  {X86::VMAXPHZ256rrkz, X86::VMAXPHZ256rmbkz, TB_BCAST_SH},
+  {X86::VMAXPHZrrkz, X86::VMAXPHZrmbkz, TB_BCAST_SH},
+  {X86::VMAXPSZ128rrkz, X86::VMAXPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VMAXPSZ256rrkz, X86::VMAXPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VMAXPSZrrkz, X86::VMAXPSZrmbkz, TB_BCAST_SS},
+  {X86::VMINCPDZ128rrkz, X86::VMINCPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VMINCPDZ256rrkz, X86::VMINCPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VMINCPDZrrkz, X86::VMINCPDZrmbkz, TB_BCAST_SD},
+  {X86::VMINCPHZ128rrkz, X86::VMINCPHZ128rmbkz, TB_BCAST_SH},
+  {X86::VMINCPHZ256rrkz, X86::VMINCPHZ256rmbkz, TB_BCAST_SH},
+  {X86::VMINCPHZrrkz, X86::VMINCPHZrmbkz, TB_BCAST_SH},
+  {X86::VMINCPSZ128rrkz, X86::VMINCPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VMINCPSZ256rrkz, X86::VMINCPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VMINCPSZrrkz, X86::VMINCPSZrmbkz, TB_BCAST_SS},
+  {X86::VMINPDZ128rrkz, X86::VMINPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VMINPDZ256rrkz, X86::VMINPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VMINPDZrrkz, X86::VMINPDZrmbkz, TB_BCAST_SD},
+  {X86::VMINPHZ128rrkz, X86::VMINPHZ128rmbkz, TB_BCAST_SH},
+  {X86::VMINPHZ256rrkz, X86::VMINPHZ256rmbkz, TB_BCAST_SH},
+  {X86::VMINPHZrrkz, X86::VMINPHZrmbkz, TB_BCAST_SH},
+  {X86::VMINPSZ128rrkz, X86::VMINPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VMINPSZ256rrkz, X86::VMINPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VMINPSZrrkz, X86::VMINPSZrmbkz, TB_BCAST_SS},
+  {X86::VMULPDZ128rrkz, X86::VMULPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VMULPDZ256rrkz, X86::VMULPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VMULPDZrrkz, X86::VMULPDZrmbkz, TB_BCAST_SD},
+  {X86::VMULPHZ128rrkz, X86::VMULPHZ128rmbkz, TB_BCAST_SH},
+  {X86::VMULPHZ256rrkz, X86::VMULPHZ256rmbkz, TB_BCAST_SH},
+  {X86::VMULPHZrrkz, X86::VMULPHZrmbkz, TB_BCAST_SH},
+  {X86::VMULPSZ128rrkz, X86::VMULPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VMULPSZ256rrkz, X86::VMULPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VMULPSZrrkz, X86::VMULPSZrmbkz, TB_BCAST_SS},
+  {X86::VORPDZ128rrkz, X86::VORPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VORPDZ256rrkz, X86::VORPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VORPDZrrkz, X86::VORPDZrmbkz, TB_BCAST_SD},
+  {X86::VORPSZ128rrkz, X86::VORPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VORPSZ256rrkz, X86::VORPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VORPSZrrkz, X86::VORPSZrmbkz, TB_BCAST_SS},
+  {X86::VPABSDZ128rrk, X86::VPABSDZ128rmbk, TB_BCAST_D},
+  {X86::VPABSDZ256rrk, X86::VPABSDZ256rmbk, TB_BCAST_D},
+  {X86::VPABSDZrrk, X86::VPABSDZrmbk, TB_BCAST_D},
+  {X86::VPABSQZ128rrk, X86::VPABSQZ128rmbk, TB_BCAST_Q},
+  {X86::VPABSQZ256rrk, X86::VPABSQZ256rmbk, TB_BCAST_Q},
+  {X86::VPABSQZrrk, X86::VPABSQZrmbk, TB_BCAST_Q},
+  {X86::VPACKSSDWZ128rrkz, X86::VPACKSSDWZ128rmbkz, TB_BCAST_D},
+  {X86::VPACKSSDWZ256rrkz, X86::VPACKSSDWZ256rmbkz, TB_BCAST_D},
+  {X86::VPACKSSDWZrrkz, X86::VPACKSSDWZrmbkz, TB_BCAST_D},
+  {X86::VPACKUSDWZ128rrkz, X86::VPACKUSDWZ128rmbkz, TB_BCAST_D},
+  {X86::VPACKUSDWZ256rrkz, X86::VPACKUSDWZ256rmbkz, TB_BCAST_D},
+  {X86::VPACKUSDWZrrkz, X86::VPACKUSDWZrmbkz, TB_BCAST_D},
+  {X86::VPADDDZ128rrkz, X86::VPADDDZ128rmbkz, TB_BCAST_D},
+  {X86::VPADDDZ256rrkz, X86::VPADDDZ256rmbkz, TB_BCAST_D},
+  {X86::VPADDDZrrkz, X86::VPADDDZrmbkz, TB_BCAST_D},
+  {X86::VPADDQZ128rrkz, X86::VPADDQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPADDQZ256rrkz, X86::VPADDQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPADDQZrrkz, X86::VPADDQZrmbkz, TB_BCAST_Q},
+  {X86::VPANDDZ128rrkz, X86::VPANDDZ128rmbkz, TB_BCAST_D},
+  {X86::VPANDDZ256rrkz, X86::VPANDDZ256rmbkz, TB_BCAST_D},
+  {X86::VPANDDZrrkz, X86::VPANDDZrmbkz, TB_BCAST_D},
+  {X86::VPANDNDZ128rrkz, X86::VPANDNDZ128rmbkz, TB_BCAST_D},
+  {X86::VPANDNDZ256rrkz, X86::VPANDNDZ256rmbkz, TB_BCAST_D},
+  {X86::VPANDNDZrrkz, X86::VPANDNDZrmbkz, TB_BCAST_D},
+  {X86::VPANDNQZ128rrkz, X86::VPANDNQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPANDNQZ256rrkz, X86::VPANDNQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPANDNQZrrkz, X86::VPANDNQZrmbkz, TB_BCAST_Q},
+  {X86::VPANDQZ128rrkz, X86::VPANDQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPANDQZ256rrkz, X86::VPANDQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPANDQZrrkz, X86::VPANDQZrmbkz, TB_BCAST_Q},
+  {X86::VPBLENDMDZ128rrk, X86::VPBLENDMDZ128rmbk, TB_BCAST_D},
+  {X86::VPBLENDMDZ256rrk, X86::VPBLENDMDZ256rmbk, TB_BCAST_D},
+  {X86::VPBLENDMDZrrk, X86::VPBLENDMDZrmbk, TB_BCAST_D},
+  {X86::VPBLENDMQZ128rrk, X86::VPBLENDMQZ128rmbk, TB_BCAST_Q},
+  {X86::VPBLENDMQZ256rrk, X86::VPBLENDMQZ256rmbk, TB_BCAST_Q},
+  {X86::VPBLENDMQZrrk, X86::VPBLENDMQZrmbk, TB_BCAST_Q},
+  {X86::VPCMPDZ128rrik, X86::VPCMPDZ128rmibk, TB_BCAST_D},
+  {X86::VPCMPDZ256rrik, X86::VPCMPDZ256rmibk, TB_BCAST_D},
+  {X86::VPCMPDZrrik, X86::VPCMPDZrmibk, TB_BCAST_D},
+  {X86::VPCMPEQDZ128rrk, X86::VPCMPEQDZ128rmbk, TB_BCAST_D},
+  {X86::VPCMPEQDZ256rrk, X86::VPCMPEQDZ256rmbk, TB_BCAST_D},
+  {X86::VPCMPEQDZrrk, X86::VPCMPEQDZrmbk, TB_BCAST_D},
+  {X86::VPCMPEQQZ128rrk, X86::VPCMPEQQZ128rmbk, TB_BCAST_Q},
+  {X86::VPCMPEQQZ256rrk, X86::VPCMPEQQZ256rmbk, TB_BCAST_Q},
+  {X86::VPCMPEQQZrrk, X86::VPCMPEQQZrmbk, TB_BCAST_Q},
+  {X86::VPCMPGTDZ128rrk, X86::VPCMPGTDZ128rmbk, TB_BCAST_D},
+  {X86::VPCMPGTDZ256rrk, X86::VPCMPGTDZ256rmbk, TB_BCAST_D},
+  {X86::VPCMPGTDZrrk, X86::VPCMPGTDZrmbk, TB_BCAST_D},
+  {X86::VPCMPGTQZ128rrk, X86::VPCMPGTQZ128rmbk, TB_BCAST_Q},
+  {X86::VPCMPGTQZ256rrk, X86::VPCMPGTQZ256rmbk, TB_BCAST_Q},
+  {X86::VPCMPGTQZrrk, X86::VPCMPGTQZrmbk, TB_BCAST_Q},
+  {X86::VPCMPQZ128rrik, X86::VPCMPQZ128rmibk, TB_BCAST_Q},
+  {X86::VPCMPQZ256rrik, X86::VPCMPQZ256rmibk, TB_BCAST_Q},
+  {X86::VPCMPQZrrik, X86::VPCMPQZrmibk, TB_BCAST_Q},
+  {X86::VPCMPUDZ128rrik, X86::VPCMPUDZ128rmibk, TB_BCAST_D},
+  {X86::VPCMPUDZ256rrik, X86::VPCMPUDZ256rmibk, TB_BCAST_D},
+  {X86::VPCMPUDZrrik, X86::VPCMPUDZrmibk, TB_BCAST_D},
+  {X86::VPCMPUQZ128rrik, X86::VPCMPUQZ128rmibk, TB_BCAST_Q},
+  {X86::VPCMPUQZ256rrik, X86::VPCMPUQZ256rmibk, TB_BCAST_Q},
+  {X86::VPCMPUQZrrik, X86::VPCMPUQZrmibk, TB_BCAST_Q},
+  {X86::VPCONFLICTDZ128rrk, X86::VPCONFLICTDZ128rmbk, TB_BCAST_D},
+  {X86::VPCONFLICTDZ256rrk, X86::VPCONFLICTDZ256rmbk, TB_BCAST_D},
+  {X86::VPCONFLICTDZrrk, X86::VPCONFLICTDZrmbk, TB_BCAST_D},
+  {X86::VPCONFLICTQZ128rrk, X86::VPCONFLICTQZ128rmbk, TB_BCAST_Q},
+  {X86::VPCONFLICTQZ256rrk, X86::VPCONFLICTQZ256rmbk, TB_BCAST_Q},
+  {X86::VPCONFLICTQZrrk, X86::VPCONFLICTQZrmbk, TB_BCAST_Q},
+  {X86::VPDPBUSDSZ128r, X86::VPDPBUSDSZ128mb, TB_BCAST_SD},
+  {X86::VPDPBUSDSZ256r, X86::VPDPBUSDSZ256mb, TB_BCAST_SD},
+  {X86::VPDPBUSDSZr, X86::VPDPBUSDSZmb, TB_BCAST_SD},
+  {X86::VPDPBUSDZ128r, X86::VPDPBUSDZ128mb, TB_BCAST_D},
+  {X86::VPDPBUSDZ256r, X86::VPDPBUSDZ256mb, TB_BCAST_D},
+  {X86::VPDPBUSDZr, X86::VPDPBUSDZmb, TB_BCAST_D},
+  {X86::VPDPWSSDSZ128r, X86::VPDPWSSDSZ128mb, TB_BCAST_SD},
+  {X86::VPDPWSSDSZ256r, X86::VPDPWSSDSZ256mb, TB_BCAST_SD},
+  {X86::VPDPWSSDSZr, X86::VPDPWSSDSZmb, TB_BCAST_SD},
+  {X86::VPDPWSSDZ128r, X86::VPDPWSSDZ128mb, TB_BCAST_D},
+  {X86::VPDPWSSDZ256r, X86::VPDPWSSDZ256mb, TB_BCAST_D},
+  {X86::VPDPWSSDZr, X86::VPDPWSSDZmb, TB_BCAST_D},
+  {X86::VPERMDZ256rrkz, X86::VPERMDZ256rmbkz, TB_BCAST_D},
+  {X86::VPERMDZrrkz, X86::VPERMDZrmbkz, TB_BCAST_D},
+  {X86::VPERMI2D128rr, X86::VPERMI2D128rmb, TB_BCAST_D},
+  {X86::VPERMI2D256rr, X86::VPERMI2D256rmb, TB_BCAST_D},
+  {X86::VPERMI2Drr, X86::VPERMI2Drmb, TB_BCAST_D},
+  {X86::VPERMI2PD128rr, X86::VPERMI2PD128rmb, TB_BCAST_SD},
+  {X86::VPERMI2PD256rr, X86::VPERMI2PD256rmb, TB_BCAST_SD},
+  {X86::VPERMI2PDrr, X86::VPERMI2PDrmb, TB_BCAST_SD},
+  {X86::VPERMI2PS128rr, X86::VPERMI2PS128rmb, TB_BCAST_SS},
+  {X86::VPERMI2PS256rr, X86::VPERMI2PS256rmb, TB_BCAST_SS},
+  {X86::VPERMI2PSrr, X86::VPERMI2PSrmb, TB_BCAST_SS},
+  {X86::VPERMI2Q128rr, X86::VPERMI2Q128rmb, TB_BCAST_Q},
+  {X86::VPERMI2Q256rr, X86::VPERMI2Q256rmb, TB_BCAST_Q},
+  {X86::VPERMI2Qrr, X86::VPERMI2Qrmb, TB_BCAST_Q},
+  {X86::VPERMILPDZ128rik, X86::VPERMILPDZ128mbik, TB_BCAST_SD},
+  {X86::VPERMILPDZ128rrkz, X86::VPERMILPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VPERMILPDZ256rik, X86::VPERMILPDZ256mbik, TB_BCAST_SD},
+  {X86::VPERMILPDZ256rrkz, X86::VPERMILPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VPERMILPDZrik, X86::VPERMILPDZmbik, TB_BCAST_SD},
+  {X86::VPERMILPDZrrkz, X86::VPERMILPDZrmbkz, TB_BCAST_SD},
+  {X86::VPERMILPSZ128rik, X86::VPERMILPSZ128mbik, TB_BCAST_SS},
+  {X86::VPERMILPSZ128rrkz, X86::VPERMILPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VPERMILPSZ256rik, X86::VPERMILPSZ256mbik, TB_BCAST_SS},
+  {X86::VPERMILPSZ256rrkz, X86::VPERMILPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VPERMILPSZrik, X86::VPERMILPSZmbik, TB_BCAST_SS},
+  {X86::VPERMILPSZrrkz, X86::VPERMILPSZrmbkz, TB_BCAST_SS},
+  {X86::VPERMPDZ256rik, X86::VPERMPDZ256mbik, TB_BCAST_SD},
+  {X86::VPERMPDZ256rrkz, X86::VPERMPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VPERMPDZrik, X86::VPERMPDZmbik, TB_BCAST_SD},
+  {X86::VPERMPDZrrkz, X86::VPERMPDZrmbkz, TB_BCAST_SD},
+  {X86::VPERMPSZ256rrkz, X86::VPERMPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VPERMPSZrrkz, X86::VPERMPSZrmbkz, TB_BCAST_SS},
+  {X86::VPERMQZ256rik, X86::VPERMQZ256mbik, TB_BCAST_Q},
+  {X86::VPERMQZ256rrkz, X86::VPERMQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPERMQZrik, X86::VPERMQZmbik, TB_BCAST_Q},
+  {X86::VPERMQZrrkz, X86::VPERMQZrmbkz, TB_BCAST_Q},
+  {X86::VPERMT2D128rr, X86::VPERMT2D128rmb, TB_BCAST_D},
+  {X86::VPERMT2D256rr, X86::VPERMT2D256rmb, TB_BCAST_D},
+  {X86::VPERMT2Drr, X86::VPERMT2Drmb, TB_BCAST_D},
+  {X86::VPERMT2PD128rr, X86::VPERMT2PD128rmb, TB_BCAST_SD},
+  {X86::VPERMT2PD256rr, X86::VPERMT2PD256rmb, TB_BCAST_SD},
+  {X86::VPERMT2PDrr, X86::VPERMT2PDrmb, TB_BCAST_SD},
+  {X86::VPERMT2PS128rr, X86::VPERMT2PS128rmb, TB_BCAST_SS},
+  {X86::VPERMT2PS256rr, X86::VPERMT2PS256rmb, TB_BCAST_SS},
+  {X86::VPERMT2PSrr, X86::VPERMT2PSrmb, TB_BCAST_SS},
+  {X86::VPERMT2Q128rr, X86::VPERMT2Q128rmb, TB_BCAST_Q},
+  {X86::VPERMT2Q256rr, X86::VPERMT2Q256rmb, TB_BCAST_Q},
+  {X86::VPERMT2Qrr, X86::VPERMT2Qrmb, TB_BCAST_Q},
+  {X86::VPLZCNTDZ128rrk, X86::VPLZCNTDZ128rmbk, TB_BCAST_D},
+  {X86::VPLZCNTDZ256rrk, X86::VPLZCNTDZ256rmbk, TB_BCAST_D},
+  {X86::VPLZCNTDZrrk, X86::VPLZCNTDZrmbk, TB_BCAST_D},
+  {X86::VPLZCNTQZ128rrk, X86::VPLZCNTQZ128rmbk, TB_BCAST_Q},
+  {X86::VPLZCNTQZ256rrk, X86::VPLZCNTQZ256rmbk, TB_BCAST_Q},
+  {X86::VPLZCNTQZrrk, X86::VPLZCNTQZrmbk, TB_BCAST_Q},
+  {X86::VPMADD52HUQZ128r, X86::VPMADD52HUQZ128mb, TB_BCAST_Q},
+  {X86::VPMADD52HUQZ256r, X86::VPMADD52HUQZ256mb, TB_BCAST_Q},
+  {X86::VPMADD52HUQZr, X86::VPMADD52HUQZmb, TB_BCAST_Q},
+  {X86::VPMADD52LUQZ128r, X86::VPMADD52LUQZ128mb, TB_BCAST_Q},
+  {X86::VPMADD52LUQZ256r, X86::VPMADD52LUQZ256mb, TB_BCAST_Q},
+  {X86::VPMADD52LUQZr, X86::VPMADD52LUQZmb, TB_BCAST_Q},
+  {X86::VPMAXSDZ128rrkz, X86::VPMAXSDZ128rmbkz, TB_BCAST_D},
+  {X86::VPMAXSDZ256rrkz, X86::VPMAXSDZ256rmbkz, TB_BCAST_D},
+  {X86::VPMAXSDZrrkz, X86::VPMAXSDZrmbkz, TB_BCAST_D},
+  {X86::VPMAXSQZ128rrkz, X86::VPMAXSQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPMAXSQZ256rrkz, X86::VPMAXSQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPMAXSQZrrkz, X86::VPMAXSQZrmbkz, TB_BCAST_Q},
+  {X86::VPMAXUDZ128rrkz, X86::VPMAXUDZ128rmbkz, TB_BCAST_D},
+  {X86::VPMAXUDZ256rrkz, X86::VPMAXUDZ256rmbkz, TB_BCAST_D},
+  {X86::VPMAXUDZrrkz, X86::VPMAXUDZrmbkz, TB_BCAST_D},
+  {X86::VPMAXUQZ128rrkz, X86::VPMAXUQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPMAXUQZ256rrkz, X86::VPMAXUQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPMAXUQZrrkz, X86::VPMAXUQZrmbkz, TB_BCAST_Q},
+  {X86::VPMINSDZ128rrkz, X86::VPMINSDZ128rmbkz, TB_BCAST_D},
+  {X86::VPMINSDZ256rrkz, X86::VPMINSDZ256rmbkz, TB_BCAST_D},
+  {X86::VPMINSDZrrkz, X86::VPMINSDZrmbkz, TB_BCAST_D},
+  {X86::VPMINSQZ128rrkz, X86::VPMINSQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPMINSQZ256rrkz, X86::VPMINSQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPMINSQZrrkz, X86::VPMINSQZrmbkz, TB_BCAST_Q},
+  {X86::VPMINUDZ128rrkz, X86::VPMINUDZ128rmbkz, TB_BCAST_D},
+  {X86::VPMINUDZ256rrkz, X86::VPMINUDZ256rmbkz, TB_BCAST_D},
+  {X86::VPMINUDZrrkz, X86::VPMINUDZrmbkz, TB_BCAST_D},
+  {X86::VPMINUQZ128rrkz, X86::VPMINUQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPMINUQZ256rrkz, X86::VPMINUQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPMINUQZrrkz, X86::VPMINUQZrmbkz, TB_BCAST_Q},
+  {X86::VPMULDQZ128rrkz, X86::VPMULDQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPMULDQZ256rrkz, X86::VPMULDQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPMULDQZrrkz, X86::VPMULDQZrmbkz, TB_BCAST_Q},
+  {X86::VPMULLDZ128rrkz, X86::VPMULLDZ128rmbkz, TB_BCAST_D},
+  {X86::VPMULLDZ256rrkz, X86::VPMULLDZ256rmbkz, TB_BCAST_D},
+  {X86::VPMULLDZrrkz, X86::VPMULLDZrmbkz, TB_BCAST_D},
+  {X86::VPMULLQZ128rrkz, X86::VPMULLQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPMULLQZ256rrkz, X86::VPMULLQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPMULLQZrrkz, X86::VPMULLQZrmbkz, TB_BCAST_Q},
+  {X86::VPMULTISHIFTQBZ128rrkz, X86::VPMULTISHIFTQBZ128rmbkz, TB_BCAST_Q},
+  {X86::VPMULTISHIFTQBZ256rrkz, X86::VPMULTISHIFTQBZ256rmbkz, TB_BCAST_Q},
+  {X86::VPMULTISHIFTQBZrrkz, X86::VPMULTISHIFTQBZrmbkz, TB_BCAST_Q},
+  {X86::VPMULUDQZ128rrkz, X86::VPMULUDQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPMULUDQZ256rrkz, X86::VPMULUDQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPMULUDQZrrkz, X86::VPMULUDQZrmbkz, TB_BCAST_Q},
+  {X86::VPOPCNTDZ128rrk, X86::VPOPCNTDZ128rmbk, TB_BCAST_D},
+  {X86::VPOPCNTDZ256rrk, X86::VPOPCNTDZ256rmbk, TB_BCAST_D},
+  {X86::VPOPCNTDZrrk, X86::VPOPCNTDZrmbk, TB_BCAST_D},
+  {X86::VPOPCNTQZ128rrk, X86::VPOPCNTQZ128rmbk, TB_BCAST_Q},
+  {X86::VPOPCNTQZ256rrk, X86::VPOPCNTQZ256rmbk, TB_BCAST_Q},
+  {X86::VPOPCNTQZrrk, X86::VPOPCNTQZrmbk, TB_BCAST_Q},
+  {X86::VPORDZ128rrkz, X86::VPORDZ128rmbkz, TB_BCAST_D},
+  {X86::VPORDZ256rrkz, X86::VPORDZ256rmbkz, TB_BCAST_D},
+  {X86::VPORDZrrkz, X86::VPORDZrmbkz, TB_BCAST_D},
+  {X86::VPORQZ128rrkz, X86::VPORQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPORQZ256rrkz, X86::VPORQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPORQZrrkz, X86::VPORQZrmbkz, TB_BCAST_Q},
+  {X86::VPROLDZ128rik, X86::VPROLDZ128mbik, TB_BCAST_D},
+  {X86::VPROLDZ256rik, X86::VPROLDZ256mbik, TB_BCAST_D},
+  {X86::VPROLDZrik, X86::VPROLDZmbik, TB_BCAST_D},
+  {X86::VPROLQZ128rik, X86::VPROLQZ128mbik, TB_BCAST_Q},
+  {X86::VPROLQZ256rik, X86::VPROLQZ256mbik, TB_BCAST_Q},
+  {X86::VPROLQZrik, X86::VPROLQZmbik, TB_BCAST_Q},
+  {X86::VPROLVDZ128rrkz, X86::VPROLVDZ128rmbkz, TB_BCAST_D},
+  {X86::VPROLVDZ256rrkz, X86::VPROLVDZ256rmbkz, TB_BCAST_D},
+  {X86::VPROLVDZrrkz, X86::VPROLVDZrmbkz, TB_BCAST_D},
+  {X86::VPROLVQZ128rrkz, X86::VPROLVQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPROLVQZ256rrkz, X86::VPROLVQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPROLVQZrrkz, X86::VPROLVQZrmbkz, TB_BCAST_Q},
+  {X86::VPRORDZ128rik, X86::VPRORDZ128mbik, TB_BCAST_D},
+  {X86::VPRORDZ256rik, X86::VPRORDZ256mbik, TB_BCAST_D},
+  {X86::VPRORDZrik, X86::VPRORDZmbik, TB_BCAST_D},
+  {X86::VPRORQZ128rik, X86::VPRORQZ128mbik, TB_BCAST_Q},
+  {X86::VPRORQZ256rik, X86::VPRORQZ256mbik, TB_BCAST_Q},
+  {X86::VPRORQZrik, X86::VPRORQZmbik, TB_BCAST_Q},
+  {X86::VPRORVDZ128rrkz, X86::VPRORVDZ128rmbkz, TB_BCAST_D},
+  {X86::VPRORVDZ256rrkz, X86::VPRORVDZ256rmbkz, TB_BCAST_D},
+  {X86::VPRORVDZrrkz, X86::VPRORVDZrmbkz, TB_BCAST_D},
+  {X86::VPRORVQZ128rrkz, X86::VPRORVQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPRORVQZ256rrkz, X86::VPRORVQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPRORVQZrrkz, X86::VPRORVQZrmbkz, TB_BCAST_Q},
+  {X86::VPSHLDDZ128rrikz, X86::VPSHLDDZ128rmbikz, TB_BCAST_D},
+  {X86::VPSHLDDZ256rrikz, X86::VPSHLDDZ256rmbikz, TB_BCAST_D},
+  {X86::VPSHLDDZrrikz, X86::VPSHLDDZrmbikz, TB_BCAST_D},
+  {X86::VPSHLDQZ128rrikz, X86::VPSHLDQZ128rmbikz, TB_BCAST_Q},
+  {X86::VPSHLDQZ256rrikz, X86::VPSHLDQZ256rmbikz, TB_BCAST_Q},
+  {X86::VPSHLDQZrrikz, X86::VPSHLDQZrmbikz, TB_BCAST_Q},
+  {X86::VPSHLDVDZ128r, X86::VPSHLDVDZ128mb, TB_BCAST_D},
+  {X86::VPSHLDVDZ256r, X86::VPSHLDVDZ256mb, TB_BCAST_D},
+  {X86::VPSHLDVDZr, X86::VPSHLDVDZmb, TB_BCAST_D},
+  {X86::VPSHLDVQZ128r, X86::VPSHLDVQZ128mb, TB_BCAST_Q},
+  {X86::VPSHLDVQZ256r, X86::VPSHLDVQZ256mb, TB_BCAST_Q},
+  {X86::VPSHLDVQZr, X86::VPSHLDVQZmb, TB_BCAST_Q},
+  {X86::VPSHRDDZ128rrikz, X86::VPSHRDDZ128rmbikz, TB_BCAST_D},
+  {X86::VPSHRDDZ256rrikz, X86::VPSHRDDZ256rmbikz, TB_BCAST_D},
+  {X86::VPSHRDDZrrikz, X86::VPSHRDDZrmbikz, TB_BCAST_D},
+  {X86::VPSHRDQZ128rrikz, X86::VPSHRDQZ128rmbikz, TB_BCAST_Q},
+  {X86::VPSHRDQZ256rrikz, X86::VPSHRDQZ256rmbikz, TB_BCAST_Q},
+  {X86::VPSHRDQZrrikz, X86::VPSHRDQZrmbikz, TB_BCAST_Q},
+  {X86::VPSHRDVDZ128r, X86::VPSHRDVDZ128mb, TB_BCAST_D},
+  {X86::VPSHRDVDZ256r, X86::VPSHRDVDZ256mb, TB_BCAST_D},
+  {X86::VPSHRDVDZr, X86::VPSHRDVDZmb, TB_BCAST_D},
+  {X86::VPSHRDVQZ128r, X86::VPSHRDVQZ128mb, TB_BCAST_Q},
+  {X86::VPSHRDVQZ256r, X86::VPSHRDVQZ256mb, TB_BCAST_Q},
+  {X86::VPSHRDVQZr, X86::VPSHRDVQZmb, TB_BCAST_Q},
+  {X86::VPSHUFDZ128rik, X86::VPSHUFDZ128mbik, TB_BCAST_D},
+  {X86::VPSHUFDZ256rik, X86::VPSHUFDZ256mbik, TB_BCAST_D},
+  {X86::VPSHUFDZrik, X86::VPSHUFDZmbik, TB_BCAST_D},
+  {X86::VPSLLDZ128rik, X86::VPSLLDZ128mbik, TB_BCAST_D},
+  {X86::VPSLLDZ256rik, X86::VPSLLDZ256mbik, TB_BCAST_D},
+  {X86::VPSLLDZrik, X86::VPSLLDZmbik, TB_BCAST_D},
+  {X86::VPSLLQZ128rik, X86::VPSLLQZ128mbik, TB_BCAST_Q},
+  {X86::VPSLLQZ256rik, X86::VPSLLQZ256mbik, TB_BCAST_Q},
+  {X86::VPSLLQZrik, X86::VPSLLQZmbik, TB_BCAST_Q},
+  {X86::VPSLLVDZ128rrkz, X86::VPSLLVDZ128rmbkz, TB_BCAST_D},
+  {X86::VPSLLVDZ256rrkz, X86::VPSLLVDZ256rmbkz, TB_BCAST_D},
+  {X86::VPSLLVDZrrkz, X86::VPSLLVDZrmbkz, TB_BCAST_D},
+  {X86::VPSLLVQZ128rrkz, X86::VPSLLVQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPSLLVQZ256rrkz, X86::VPSLLVQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPSLLVQZrrkz, X86::VPSLLVQZrmbkz, TB_BCAST_Q},
+  {X86::VPSRADZ128rik, X86::VPSRADZ128mbik, TB_BCAST_D},
+  {X86::VPSRADZ256rik, X86::VPSRADZ256mbik, TB_BCAST_D},
+  {X86::VPSRADZrik, X86::VPSRADZmbik, TB_BCAST_D},
+  {X86::VPSRAQZ128rik, X86::VPSRAQZ128mbik, TB_BCAST_Q},
+  {X86::VPSRAQZ256rik, X86::VPSRAQZ256mbik, TB_BCAST_Q},
+  {X86::VPSRAQZrik, X86::VPSRAQZmbik, TB_BCAST_Q},
+  {X86::VPSRAVDZ128rrkz, X86::VPSRAVDZ128rmbkz, TB_BCAST_D},
+  {X86::VPSRAVDZ256rrkz, X86::VPSRAVDZ256rmbkz, TB_BCAST_D},
+  {X86::VPSRAVDZrrkz, X86::VPSRAVDZrmbkz, TB_BCAST_D},
+  {X86::VPSRAVQZ128rrkz, X86::VPSRAVQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPSRAVQZ256rrkz, X86::VPSRAVQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPSRAVQZrrkz, X86::VPSRAVQZrmbkz, TB_BCAST_Q},
+  {X86::VPSRLDZ128rik, X86::VPSRLDZ128mbik, TB_BCAST_D},
+  {X86::VPSRLDZ256rik, X86::VPSRLDZ256mbik, TB_BCAST_D},
+  {X86::VPSRLDZrik, X86::VPSRLDZmbik, TB_BCAST_D},
+  {X86::VPSRLQZ128rik, X86::VPSRLQZ128mbik, TB_BCAST_Q},
+  {X86::VPSRLQZ256rik, X86::VPSRLQZ256mbik, TB_BCAST_Q},
+  {X86::VPSRLQZrik, X86::VPSRLQZmbik, TB_BCAST_Q},
+  {X86::VPSRLVDZ128rrkz, X86::VPSRLVDZ128rmbkz, TB_BCAST_D},
+  {X86::VPSRLVDZ256rrkz, X86::VPSRLVDZ256rmbkz, TB_BCAST_D},
+  {X86::VPSRLVDZrrkz, X86::VPSRLVDZrmbkz, TB_BCAST_D},
+  {X86::VPSRLVQZ128rrkz, X86::VPSRLVQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPSRLVQZ256rrkz, X86::VPSRLVQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPSRLVQZrrkz, X86::VPSRLVQZrmbkz, TB_BCAST_Q},
+  {X86::VPSUBDZ128rrkz, X86::VPSUBDZ128rmbkz, TB_BCAST_D},
+  {X86::VPSUBDZ256rrkz, X86::VPSUBDZ256rmbkz, TB_BCAST_D},
+  {X86::VPSUBDZrrkz, X86::VPSUBDZrmbkz, TB_BCAST_D},
+  {X86::VPSUBQZ128rrkz, X86::VPSUBQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPSUBQZ256rrkz, X86::VPSUBQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPSUBQZrrkz, X86::VPSUBQZrmbkz, TB_BCAST_Q},
+  {X86::VPTERNLOGDZ128rri, X86::VPTERNLOGDZ128rmbi, TB_BCAST_D},
+  {X86::VPTERNLOGDZ256rri, X86::VPTERNLOGDZ256rmbi, TB_BCAST_D},
+  {X86::VPTERNLOGDZrri, X86::VPTERNLOGDZrmbi, TB_BCAST_D},
+  {X86::VPTERNLOGQZ128rri, X86::VPTERNLOGQZ128rmbi, TB_BCAST_Q},
+  {X86::VPTERNLOGQZ256rri, X86::VPTERNLOGQZ256rmbi, TB_BCAST_Q},
+  {X86::VPTERNLOGQZrri, X86::VPTERNLOGQZrmbi, TB_BCAST_Q},
+  {X86::VPTESTMDZ128rrk, X86::VPTESTMDZ128rmbk, TB_BCAST_D},
+  {X86::VPTESTMDZ256rrk, X86::VPTESTMDZ256rmbk, TB_BCAST_D},
+  {X86::VPTESTMDZrrk, X86::VPTESTMDZrmbk, TB_BCAST_D},
+  {X86::VPTESTMQZ128rrk, X86::VPTESTMQZ128rmbk, TB_BCAST_Q},
+  {X86::VPTESTMQZ256rrk, X86::VPTESTMQZ256rmbk, TB_BCAST_Q},
+  {X86::VPTESTMQZrrk, X86::VPTESTMQZrmbk, TB_BCAST_Q},
+  {X86::VPTESTNMDZ128rrk, X86::VPTESTNMDZ128rmbk, TB_BCAST_D},
+  {X86::VPTESTNMDZ256rrk, X86::VPTESTNMDZ256rmbk, TB_BCAST_D},
+  {X86::VPTESTNMDZrrk, X86::VPTESTNMDZrmbk, TB_BCAST_D},
+  {X86::VPTESTNMQZ128rrk, X86::VPTESTNMQZ128rmbk, TB_BCAST_Q},
+  {X86::VPTESTNMQZ256rrk, X86::VPTESTNMQZ256rmbk, TB_BCAST_Q},
+  {X86::VPTESTNMQZrrk, X86::VPTESTNMQZrmbk, TB_BCAST_Q},
+  {X86::VPUNPCKHDQZ128rrkz, X86::VPUNPCKHDQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPUNPCKHDQZ256rrkz, X86::VPUNPCKHDQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPUNPCKHDQZrrkz, X86::VPUNPCKHDQZrmbkz, TB_BCAST_Q},
+  {X86::VPUNPCKHQDQZ128rrkz, X86::VPUNPCKHQDQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPUNPCKHQDQZ256rrkz, X86::VPUNPCKHQDQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPUNPCKHQDQZrrkz, X86::VPUNPCKHQDQZrmbkz, TB_BCAST_Q},
+  {X86::VPUNPCKLDQZ128rrkz, X86::VPUNPCKLDQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPUNPCKLDQZ256rrkz, X86::VPUNPCKLDQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPUNPCKLDQZrrkz, X86::VPUNPCKLDQZrmbkz, TB_BCAST_Q},
+  {X86::VPUNPCKLQDQZ128rrkz, X86::VPUNPCKLQDQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPUNPCKLQDQZ256rrkz, X86::VPUNPCKLQDQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPUNPCKLQDQZrrkz, X86::VPUNPCKLQDQZrmbkz, TB_BCAST_Q},
+  {X86::VPXORDZ128rrkz, X86::VPXORDZ128rmbkz, TB_BCAST_D},
+  {X86::VPXORDZ256rrkz, X86::VPXORDZ256rmbkz, TB_BCAST_D},
+  {X86::VPXORDZrrkz, X86::VPXORDZrmbkz, TB_BCAST_D},
+  {X86::VPXORQZ128rrkz, X86::VPXORQZ128rmbkz, TB_BCAST_Q},
+  {X86::VPXORQZ256rrkz, X86::VPXORQZ256rmbkz, TB_BCAST_Q},
+  {X86::VPXORQZrrkz, X86::VPXORQZrmbkz, TB_BCAST_Q},
+  {X86::VRANGEPDZ128rrikz, X86::VRANGEPDZ128rmbikz, TB_BCAST_SD},
+  {X86::VRANGEPDZ256rrikz, X86::VRANGEPDZ256rmbikz, TB_BCAST_SD},
+  {X86::VRANGEPDZrrikz, X86::VRANGEPDZrmbikz, TB_BCAST_SD},
+  {X86::VRANGEPSZ128rrikz, X86::VRANGEPSZ128rmbikz, TB_BCAST_SS},
+  {X86::VRANGEPSZ256rrikz, X86::VRANGEPSZ256rmbikz, TB_BCAST_SS},
+  {X86::VRANGEPSZrrikz, X86::VRANGEPSZrmbikz, TB_BCAST_SS},
+  {X86::VRCP14PDZ128rk, X86::VRCP14PDZ128mbk, TB_BCAST_SD},
+  {X86::VRCP14PDZ256rk, X86::VRCP14PDZ256mbk, TB_BCAST_SD},
+  {X86::VRCP14PDZrk, X86::VRCP14PDZmbk, TB_BCAST_SD},
+  {X86::VRCP14PSZ128rk, X86::VRCP14PSZ128mbk, TB_BCAST_SS},
+  {X86::VRCP14PSZ256rk, X86::VRCP14PSZ256mbk, TB_BCAST_SS},
+  {X86::VRCP14PSZrk, X86::VRCP14PSZmbk, TB_BCAST_SS},
+  {X86::VRCP28PDZrk, X86::VRCP28PDZmbk, TB_BCAST_SD},
+  {X86::VRCP28PSZrk, X86::VRCP28PSZmbk, TB_BCAST_SS},
+  {X86::VRCPPHZ128rk, X86::VRCPPHZ128mbk, TB_BCAST_SH},
+  {X86::VRCPPHZ256rk, X86::VRCPPHZ256mbk, TB_BCAST_SH},
+  {X86::VRCPPHZrk, X86::VRCPPHZmbk, TB_BCAST_SH},
+  {X86::VREDUCEPDZ128rrik, X86::VREDUCEPDZ128rmbik, TB_BCAST_SD},
+  {X86::VREDUCEPDZ256rrik, X86::VREDUCEPDZ256rmbik, TB_BCAST_SD},
+  {X86::VREDUCEPDZrrik, X86::VREDUCEPDZrmbik, TB_BCAST_SD},
+  {X86::VREDUCEPHZ128rrik, X86::VREDUCEPHZ128rmbik, TB_BCAST_SH},
+  {X86::VREDUCEPHZ256rrik, X86::VREDUCEPHZ256rmbik, TB_BCAST_SH},
+  {X86::VREDUCEPHZrrik, X86::VREDUCEPHZrmbik, TB_BCAST_SH},
+  {X86::VREDUCEPSZ128rrik, X86::VREDUCEPSZ128rmbik, TB_BCAST_SS},
+  {X86::VREDUCEPSZ256rrik, X86::VREDUCEPSZ256rmbik, TB_BCAST_SS},
+  {X86::VREDUCEPSZrrik, X86::VREDUCEPSZrmbik, TB_BCAST_SS},
+  {X86::VRNDSCALEPDZ128rrik, X86::VRNDSCALEPDZ128rmbik, TB_BCAST_SD},
+  {X86::VRNDSCALEPDZ256rrik, X86::VRNDSCALEPDZ256rmbik, TB_BCAST_SD},
+  {X86::VRNDSCALEPDZrrik, X86::VRNDSCALEPDZrmbik, TB_BCAST_SD},
+  {X86::VRNDSCALEPHZ128rrik, X86::VRNDSCALEPHZ128rmbik, TB_BCAST_SH},
+  {X86::VRNDSCALEPHZ256rrik, X86::VRNDSCALEPHZ256rmbik, TB_BCAST_SH},
+  {X86::VRNDSCALEPHZrrik, X86::VRNDSCALEPHZrmbik, TB_BCAST_SH},
+  {X86::VRNDSCALEPSZ128rrik, X86::VRNDSCALEPSZ128rmbik, TB_BCAST_SS},
+  {X86::VRNDSCALEPSZ256rrik, X86::VRNDSCALEPSZ256rmbik, TB_BCAST_SS},
+  {X86::VRNDSCALEPSZrrik, X86::VRNDSCALEPSZrmbik, TB_BCAST_SS},
+  {X86::VRSQRT14PDZ128rk, X86::VRSQRT14PDZ128mbk, TB_BCAST_SD},
+  {X86::VRSQRT14PDZ256rk, X86::VRSQRT14PDZ256mbk, TB_BCAST_SD},
+  {X86::VRSQRT14PDZrk, X86::VRSQRT14PDZmbk, TB_BCAST_SD},
+  {X86::VRSQRT14PSZ128rk, X86::VRSQRT14PSZ128mbk, TB_BCAST_SS},
+  {X86::VRSQRT14PSZ256rk, X86::VRSQRT14PSZ256mbk, TB_BCAST_SS},
+  {X86::VRSQRT14PSZrk, X86::VRSQRT14PSZmbk, TB_BCAST_SS},
+  {X86::VRSQRT28PDZrk, X86::VRSQRT28PDZmbk, TB_BCAST_SD},
+  {X86::VRSQRT28PSZrk, X86::VRSQRT28PSZmbk, TB_BCAST_SS},
+  {X86::VRSQRTPHZ128rk, X86::VRSQRTPHZ128mbk, TB_BCAST_SH},
+  {X86::VRSQRTPHZ256rk, X86::VRSQRTPHZ256mbk, TB_BCAST_SH},
+  {X86::VRSQRTPHZrk, X86::VRSQRTPHZmbk, TB_BCAST_SH},
+  {X86::VSCALEFPDZ128rrkz, X86::VSCALEFPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VSCALEFPDZ256rrkz, X86::VSCALEFPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VSCALEFPDZrrkz, X86::VSCALEFPDZrmbkz, TB_BCAST_SD},
+  {X86::VSCALEFPHZ128rrkz, X86::VSCALEFPHZ128rmbkz, TB_BCAST_SH},
+  {X86::VSCALEFPHZ256rrkz, X86::VSCALEFPHZ256rmbkz, TB_BCAST_SH},
+  {X86::VSCALEFPHZrrkz, X86::VSCALEFPHZrmbkz, TB_BCAST_SH},
+  {X86::VSCALEFPSZ128rrkz, X86::VSCALEFPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VSCALEFPSZ256rrkz, X86::VSCALEFPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VSCALEFPSZrrkz, X86::VSCALEFPSZrmbkz, TB_BCAST_SS},
+  {X86::VSHUFF32X4Z256rrikz, X86::VSHUFF32X4Z256rmbikz, TB_BCAST_SS},
+  {X86::VSHUFF32X4Zrrikz, X86::VSHUFF32X4Zrmbikz, TB_BCAST_SS},
+  {X86::VSHUFF64X2Z256rrikz, X86::VSHUFF64X2Z256rmbikz, TB_BCAST_SD},
+  {X86::VSHUFF64X2Zrrikz, X86::VSHUFF64X2Zrmbikz, TB_BCAST_SD},
+  {X86::VSHUFI32X4Z256rrikz, X86::VSHUFI32X4Z256rmbikz, TB_BCAST_D},
+  {X86::VSHUFI32X4Zrrikz, X86::VSHUFI32X4Zrmbikz, TB_BCAST_D},
+  {X86::VSHUFI64X2Z256rrikz, X86::VSHUFI64X2Z256rmbikz, TB_BCAST_Q},
+  {X86::VSHUFI64X2Zrrikz, X86::VSHUFI64X2Zrmbikz, TB_BCAST_Q},
+  {X86::VSHUFPDZ128rrikz, X86::VSHUFPDZ128rmbikz, TB_BCAST_SD},
+  {X86::VSHUFPDZ256rrikz, X86::VSHUFPDZ256rmbikz, TB_BCAST_SD},
+  {X86::VSHUFPDZrrikz, X86::VSHUFPDZrmbikz, TB_BCAST_SD},
+  {X86::VSHUFPSZ128rrikz, X86::VSHUFPSZ128rmbikz, TB_BCAST_SS},
+  {X86::VSHUFPSZ256rrikz, X86::VSHUFPSZ256rmbikz, TB_BCAST_SS},
+  {X86::VSHUFPSZrrikz, X86::VSHUFPSZrmbikz, TB_BCAST_SS},
+  {X86::VSQRTPDZ128rk, X86::VSQRTPDZ128mbk, TB_BCAST_SD},
+  {X86::VSQRTPDZ256rk, X86::VSQRTPDZ256mbk, TB_BCAST_SD},
+  {X86::VSQRTPDZrk, X86::VSQRTPDZmbk, TB_BCAST_SD},
+  {X86::VSQRTPHZ128rk, X86::VSQRTPHZ128mbk, TB_BCAST_SH},
+  {X86::VSQRTPHZ256rk, X86::VSQRTPHZ256mbk, TB_BCAST_SH},
+  {X86::VSQRTPHZrk, X86::VSQRTPHZmbk, TB_BCAST_SH},
+  {X86::VSQRTPSZ128rk, X86::VSQRTPSZ128mbk, TB_BCAST_SS},
+  {X86::VSQRTPSZ256rk, X86::VSQRTPSZ256mbk, TB_BCAST_SS},
+  {X86::VSQRTPSZrk, X86::VSQRTPSZmbk, TB_BCAST_SS},
+  {X86::VSUBPDZ128rrkz, X86::VSUBPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VSUBPDZ256rrkz, X86::VSUBPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VSUBPDZrrkz, X86::VSUBPDZrmbkz, TB_BCAST_SD},
+  {X86::VSUBPHZ128rrkz, X86::VSUBPHZ128rmbkz, TB_BCAST_SH},
+  {X86::VSUBPHZ256rrkz, X86::VSUBPHZ256rmbkz, TB_BCAST_SH},
+  {X86::VSUBPHZrrkz, X86::VSUBPHZrmbkz, TB_BCAST_SH},
+  {X86::VSUBPSZ128rrkz, X86::VSUBPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VSUBPSZ256rrkz, X86::VSUBPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VSUBPSZrrkz, X86::VSUBPSZrmbkz, TB_BCAST_SS},
+  {X86::VUNPCKHPDZ128rrkz, X86::VUNPCKHPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VUNPCKHPDZ256rrkz, X86::VUNPCKHPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VUNPCKHPDZrrkz, X86::VUNPCKHPDZrmbkz, TB_BCAST_SD},
+  {X86::VUNPCKHPSZ128rrkz, X86::VUNPCKHPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VUNPCKHPSZ256rrkz, X86::VUNPCKHPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VUNPCKHPSZrrkz, X86::VUNPCKHPSZrmbkz, TB_BCAST_SS},
+  {X86::VUNPCKLPDZ128rrkz, X86::VUNPCKLPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VUNPCKLPDZ256rrkz, X86::VUNPCKLPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VUNPCKLPDZrrkz, X86::VUNPCKLPDZrmbkz, TB_BCAST_SD},
+  {X86::VUNPCKLPSZ128rrkz, X86::VUNPCKLPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VUNPCKLPSZ256rrkz, X86::VUNPCKLPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VUNPCKLPSZrrkz, X86::VUNPCKLPSZrmbkz, TB_BCAST_SS},
+  {X86::VXORPDZ128rrkz, X86::VXORPDZ128rmbkz, TB_BCAST_SD},
+  {X86::VXORPDZ256rrkz, X86::VXORPDZ256rmbkz, TB_BCAST_SD},
+  {X86::VXORPDZrrkz, X86::VXORPDZrmbkz, TB_BCAST_SD},
+  {X86::VXORPSZ128rrkz, X86::VXORPSZ128rmbkz, TB_BCAST_SS},
+  {X86::VXORPSZ256rrkz, X86::VXORPSZ256rmbkz, TB_BCAST_SS},
+  {X86::VXORPSZrrkz, X86::VXORPSZrmbkz, TB_BCAST_SS},
+};
+
+static const X86FoldTableEntry BroadcastTable4[] = {
+  {X86::VADDPDZ128rrk, X86::VADDPDZ128rmbk, TB_BCAST_SD},
+  {X86::VADDPDZ256rrk, X86::VADDPDZ256rmbk, TB_BCAST_SD},
+  {X86::VADDPDZrrk, X86::VADDPDZrmbk, TB_BCAST_SD},
+  {X86::VADDPHZ128rrk, X86::VADDPHZ128rmbk, TB_BCAST_SH},
+  {X86::VADDPHZ256rrk, X86::VADDPHZ256rmbk, TB_BCAST_SH},
+  {X86::VADDPHZrrk, X86::VADDPHZrmbk, TB_BCAST_SH},
+  {X86::VADDPSZ128rrk, X86::VADDPSZ128rmbk, TB_BCAST_SS},
+  {X86::VADDPSZ256rrk, X86::VADDPSZ256rmbk, TB_BCAST_SS},
+  {X86::VADDPSZrrk, X86::VADDPSZrmbk, TB_BCAST_SS},
+  {X86::VALIGNDZ128rrik, X86::VALIGNDZ128rmbik, TB_BCAST_D},
+  {X86::VALIGNDZ256rrik, X86::VALIGNDZ256rmbik, TB_BCAST_D},
+  {X86::VALIGNDZrrik, X86::VALIGNDZrmbik, TB_BCAST_D},
+  {X86::VALIGNQZ128rrik, X86::VALIGNQZ128rmbik, TB_BCAST_Q},
+  {X86::VALIGNQZ256rrik, X86::VALIGNQZ256rmbik, TB_BCAST_Q},
+  {X86::VALIGNQZrrik, X86::VALIGNQZrmbik, TB_BCAST_Q},
+  {X86::VANDNPDZ128rrk, X86::VANDNPDZ128rmbk, TB_BCAST_SD},
+  {X86::VANDNPDZ256rrk, X86::VANDNPDZ256rmbk, TB_BCAST_SD},
+  {X86::VANDNPDZrrk, X86::VANDNPDZrmbk, TB_BCAST_SD},
+  {X86::VANDNPSZ128rrk, X86::VANDNPSZ128rmbk, TB_BCAST_SS},
+  {X86::VANDNPSZ256rrk, X86::VANDNPSZ256rmbk, TB_BCAST_SS},
+  {X86::VANDNPSZrrk, X86::VANDNPSZrmbk, TB_BCAST_SS},
+  {X86::VANDPDZ128rrk, X86::VANDPDZ128rmbk, TB_BCAST_SD},
+  {X86::VANDPDZ256rrk, X86::VANDPDZ256rmbk, TB_BCAST_SD},
+  {X86::VANDPDZrrk, X86::VANDPDZrmbk, TB_BCAST_SD},
+  {X86::VANDPSZ128rrk, X86::VANDPSZ128rmbk, TB_BCAST_SS},
+  {X86::VANDPSZ256rrk, X86::VANDPSZ256rmbk, TB_BCAST_SS},
+  {X86::VANDPSZrrk, X86::VANDPSZrmbk, TB_BCAST_SS},
+  {X86::VCVTNE2PS2BF16Z128rrk, X86::VCVTNE2PS2BF16Z128rmbk, TB_BCAST_SS},
+  {X86::VCVTNE2PS2BF16Z256rrk, X86::VCVTNE2PS2BF16Z256rmbk, TB_BCAST_SS},
+  {X86::VCVTNE2PS2BF16Zrrk, X86::VCVTNE2PS2BF16Zrmbk, TB_BCAST_SS},
+  {X86::VDIVPDZ128rrk, X86::VDIVPDZ128rmbk, TB_BCAST_SD},
+  {X86::VDIVPDZ256rrk, X86::VDIVPDZ256rmbk, TB_BCAST_SD},
+  {X86::VDIVPDZrrk, X86::VDIVPDZrmbk, TB_BCAST_SD},
+  {X86::VDIVPHZ128rrk, X86::VDIVPHZ128rmbk, TB_BCAST_SH},
+  {X86::VDIVPHZ256rrk, X86::VDIVPHZ256rmbk, TB_BCAST_SH},
+  {X86::VDIVPHZrrk, X86::VDIVPHZrmbk, TB_BCAST_SH},
+  {X86::VDIVPSZ128rrk, X86::VDIVPSZ128rmbk, TB_BCAST_SS},
+  {X86::VDIVPSZ256rrk, X86::VDIVPSZ256rmbk, TB_BCAST_SS},
+  {X86::VDIVPSZrrk, X86::VDIVPSZrmbk, TB_BCAST_SS},
+  {X86::VDPBF16PSZ128rk, X86::VDPBF16PSZ128mbk, TB_BCAST_SS},
+  {X86::VDPBF16PSZ128rkz, X86::VDPBF16PSZ128mbkz, TB_BCAST_SS},
+  {X86::VDPBF16PSZ256rk, X86::VDPBF16PSZ256mbk, TB_BCAST_SS},
+  {X86::VDPBF16PSZ256rkz, X86::VDPBF16PSZ256mbkz, TB_BCAST_SS},
+  {X86::VDPBF16PSZrk, X86::VDPBF16PSZmbk, TB_BCAST_SS},
+  {X86::VDPBF16PSZrkz, X86::VDPBF16PSZmbkz, TB_BCAST_SS},
+  {X86::VFCMADDCPHZ128rk, X86::VFCMADDCPHZ128mbk, TB_BCAST_SH},
+  {X86::VFCMADDCPHZ128rkz, X86::VFCMADDCPHZ128mbkz, TB_BCAST_SH},
+  {X86::VFCMADDCPHZ256rk, X86::VFCMADDCPHZ256mbk, TB_BCAST_SH},
+  {X86::VFCMADDCPHZ256rkz, X86::VFCMADDCPHZ256mbkz, TB_BCAST_SH},
+  {X86::VFCMADDCPHZrk, X86::VFCMADDCPHZmbk, TB_BCAST_SH},
+  {X86::VFCMADDCPHZrkz, X86::VFCMADDCPHZmbkz, TB_BCAST_SH},
+  {X86::VFCMULCPHZ128rrk, X86::VFCMULCPHZ128rmbk, TB_BCAST_SH},
+  {X86::VFCMULCPHZ256rrk, X86::VFCMULCPHZ256rmbk, TB_BCAST_SH},
+  {X86::VFCMULCPHZrrk, X86::VFCMULCPHZrmbk, TB_BCAST_SH},
+  {X86::VFIXUPIMMPDZ128rrik, X86::VFIXUPIMMPDZ128rmbik, TB_BCAST_SD},
+  {X86::VFIXUPIMMPDZ128rrikz, X86::VFIXUPIMMPDZ128rmbikz, TB_BCAST_SD},
+  {X86::VFIXUPIMMPDZ256rrik, X86::VFIXUPIMMPDZ256rmbik, TB_BCAST_SD},
+  {X86::VFIXUPIMMPDZ256rrikz, X86::VFIXUPIMMPDZ256rmbikz, TB_BCAST_SD},
+  {X86::VFIXUPIMMPDZrrik, X86::VFIXUPIMMPDZrmbik, TB_BCAST_SD},
+  {X86::VFIXUPIMMPDZrrikz, X86::VFIXUPIMMPDZrmbikz, TB_BCAST_SD},
+  {X86::VFIXUPIMMPSZ128rrik, X86::VFIXUPIMMPSZ128rmbik, TB_BCAST_SS},
+  {X86::VFIXUPIMMPSZ128rrikz, X86::VFIXUPIMMPSZ128rmbikz, TB_BCAST_SS},
+  {X86::VFIXUPIMMPSZ256rrik, X86::VFIXUPIMMPSZ256rmbik, TB_BCAST_SS},
+  {X86::VFIXUPIMMPSZ256rrikz, X86::VFIXUPIMMPSZ256rmbikz, TB_BCAST_SS},
+  {X86::VFIXUPIMMPSZrrik, X86::VFIXUPIMMPSZrmbik, TB_BCAST_SS},
+  {X86::VFIXUPIMMPSZrrikz, X86::VFIXUPIMMPSZrmbikz, TB_BCAST_SS},
+  {X86::VFMADD132PDZ128rk, X86::VFMADD132PDZ128mbk, TB_BCAST_SD},
+  {X86::VFMADD132PDZ128rkz, X86::VFMADD132PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFMADD132PDZ256rk, X86::VFMADD132PDZ256mbk, TB_BCAST_SD},
+  {X86::VFMADD132PDZ256rkz, X86::VFMADD132PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFMADD132PDZrk, X86::VFMADD132PDZmbk, TB_BCAST_SD},
+  {X86::VFMADD132PDZrkz, X86::VFMADD132PDZmbkz, TB_BCAST_SD},
+  {X86::VFMADD132PHZ128rk, X86::VFMADD132PHZ128mbk, TB_BCAST_SH},
+  {X86::VFMADD132PHZ128rkz, X86::VFMADD132PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFMADD132PHZ256rk, X86::VFMADD132PHZ256mbk, TB_BCAST_SH},
+  {X86::VFMADD132PHZ256rkz, X86::VFMADD132PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFMADD132PHZrk, X86::VFMADD132PHZmbk, TB_BCAST_SH},
+  {X86::VFMADD132PHZrkz, X86::VFMADD132PHZmbkz, TB_BCAST_SH},
+  {X86::VFMADD132PSZ128rk, X86::VFMADD132PSZ128mbk, TB_BCAST_SS},
+  {X86::VFMADD132PSZ128rkz, X86::VFMADD132PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFMADD132PSZ256rk, X86::VFMADD132PSZ256mbk, TB_BCAST_SS},
+  {X86::VFMADD132PSZ256rkz, X86::VFMADD132PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFMADD132PSZrk, X86::VFMADD132PSZmbk, TB_BCAST_SS},
+  {X86::VFMADD132PSZrkz, X86::VFMADD132PSZmbkz, TB_BCAST_SS},
+  {X86::VFMADD213PDZ128rk, X86::VFMADD213PDZ128mbk, TB_BCAST_SD},
+  {X86::VFMADD213PDZ128rkz, X86::VFMADD213PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFMADD213PDZ256rk, X86::VFMADD213PDZ256mbk, TB_BCAST_SD},
+  {X86::VFMADD213PDZ256rkz, X86::VFMADD213PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFMADD213PDZrk, X86::VFMADD213PDZmbk, TB_BCAST_SD},
+  {X86::VFMADD213PDZrkz, X86::VFMADD213PDZmbkz, TB_BCAST_SD},
+  {X86::VFMADD213PHZ128rk, X86::VFMADD213PHZ128mbk, TB_BCAST_SH},
+  {X86::VFMADD213PHZ128rkz, X86::VFMADD213PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFMADD213PHZ256rk, X86::VFMADD213PHZ256mbk, TB_BCAST_SH},
+  {X86::VFMADD213PHZ256rkz, X86::VFMADD213PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFMADD213PHZrk, X86::VFMADD213PHZmbk, TB_BCAST_SH},
+  {X86::VFMADD213PHZrkz, X86::VFMADD213PHZmbkz, TB_BCAST_SH},
+  {X86::VFMADD213PSZ128rk, X86::VFMADD213PSZ128mbk, TB_BCAST_SS},
+  {X86::VFMADD213PSZ128rkz, X86::VFMADD213PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFMADD213PSZ256rk, X86::VFMADD213PSZ256mbk, TB_BCAST_SS},
+  {X86::VFMADD213PSZ256rkz, X86::VFMADD213PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFMADD213PSZrk, X86::VFMADD213PSZmbk, TB_BCAST_SS},
+  {X86::VFMADD213PSZrkz, X86::VFMADD213PSZmbkz, TB_BCAST_SS},
+  {X86::VFMADD231PDZ128rk, X86::VFMADD231PDZ128mbk, TB_BCAST_SD},
+  {X86::VFMADD231PDZ128rkz, X86::VFMADD231PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFMADD231PDZ256rk, X86::VFMADD231PDZ256mbk, TB_BCAST_SD},
+  {X86::VFMADD231PDZ256rkz, X86::VFMADD231PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFMADD231PDZrk, X86::VFMADD231PDZmbk, TB_BCAST_SD},
+  {X86::VFMADD231PDZrkz, X86::VFMADD231PDZmbkz, TB_BCAST_SD},
+  {X86::VFMADD231PHZ128rk, X86::VFMADD231PHZ128mbk, TB_BCAST_SH},
+  {X86::VFMADD231PHZ128rkz, X86::VFMADD231PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFMADD231PHZ256rk, X86::VFMADD231PHZ256mbk, TB_BCAST_SH},
+  {X86::VFMADD231PHZ256rkz, X86::VFMADD231PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFMADD231PHZrk, X86::VFMADD231PHZmbk, TB_BCAST_SH},
+  {X86::VFMADD231PHZrkz, X86::VFMADD231PHZmbkz, TB_BCAST_SH},
+  {X86::VFMADD231PSZ128rk, X86::VFMADD231PSZ128mbk, TB_BCAST_SS},
+  {X86::VFMADD231PSZ128rkz, X86::VFMADD231PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFMADD231PSZ256rk, X86::VFMADD231PSZ256mbk, TB_BCAST_SS},
+  {X86::VFMADD231PSZ256rkz, X86::VFMADD231PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFMADD231PSZrk, X86::VFMADD231PSZmbk, TB_BCAST_SS},
+  {X86::VFMADD231PSZrkz, X86::VFMADD231PSZmbkz, TB_BCAST_SS},
+  {X86::VFMADDCPHZ128rk, X86::VFMADDCPHZ128mbk, TB_BCAST_SH},
+  {X86::VFMADDCPHZ128rkz, X86::VFMADDCPHZ128mbkz, TB_BCAST_SH},
+  {X86::VFMADDCPHZ256rk, X86::VFMADDCPHZ256mbk, TB_BCAST_SH},
+  {X86::VFMADDCPHZ256rkz, X86::VFMADDCPHZ256mbkz, TB_BCAST_SH},
+  {X86::VFMADDCPHZrk, X86::VFMADDCPHZmbk, TB_BCAST_SH},
+  {X86::VFMADDCPHZrkz, X86::VFMADDCPHZmbkz, TB_BCAST_SH},
+  {X86::VFMADDSUB132PDZ128rk, X86::VFMADDSUB132PDZ128mbk, TB_BCAST_SD},
+  {X86::VFMADDSUB132PDZ128rkz, X86::VFMADDSUB132PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFMADDSUB132PDZ256rk, X86::VFMADDSUB132PDZ256mbk, TB_BCAST_SD},
+  {X86::VFMADDSUB132PDZ256rkz, X86::VFMADDSUB132PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFMADDSUB132PDZrk, X86::VFMADDSUB132PDZmbk, TB_BCAST_SD},
+  {X86::VFMADDSUB132PDZrkz, X86::VFMADDSUB132PDZmbkz, TB_BCAST_SD},
+  {X86::VFMADDSUB132PHZ128rk, X86::VFMADDSUB132PHZ128mbk, TB_BCAST_SH},
+  {X86::VFMADDSUB132PHZ128rkz, X86::VFMADDSUB132PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFMADDSUB132PHZ256rk, X86::VFMADDSUB132PHZ256mbk, TB_BCAST_SH},
+  {X86::VFMADDSUB132PHZ256rkz, X86::VFMADDSUB132PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFMADDSUB132PHZrk, X86::VFMADDSUB132PHZmbk, TB_BCAST_SH},
+  {X86::VFMADDSUB132PHZrkz, X86::VFMADDSUB132PHZmbkz, TB_BCAST_SH},
+  {X86::VFMADDSUB132PSZ128rk, X86::VFMADDSUB132PSZ128mbk, TB_BCAST_SS},
+  {X86::VFMADDSUB132PSZ128rkz, X86::VFMADDSUB132PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFMADDSUB132PSZ256rk, X86::VFMADDSUB132PSZ256mbk, TB_BCAST_SS},
+  {X86::VFMADDSUB132PSZ256rkz, X86::VFMADDSUB132PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFMADDSUB132PSZrk, X86::VFMADDSUB132PSZmbk, TB_BCAST_SS},
+  {X86::VFMADDSUB132PSZrkz, X86::VFMADDSUB132PSZmbkz, TB_BCAST_SS},
+  {X86::VFMADDSUB213PDZ128rk, X86::VFMADDSUB213PDZ128mbk, TB_BCAST_SD},
+  {X86::VFMADDSUB213PDZ128rkz, X86::VFMADDSUB213PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFMADDSUB213PDZ256rk, X86::VFMADDSUB213PDZ256mbk, TB_BCAST_SD},
+  {X86::VFMADDSUB213PDZ256rkz, X86::VFMADDSUB213PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFMADDSUB213PDZrk, X86::VFMADDSUB213PDZmbk, TB_BCAST_SD},
+  {X86::VFMADDSUB213PDZrkz, X86::VFMADDSUB213PDZmbkz, TB_BCAST_SD},
+  {X86::VFMADDSUB213PHZ128rk, X86::VFMADDSUB213PHZ128mbk, TB_BCAST_SH},
+  {X86::VFMADDSUB213PHZ128rkz, X86::VFMADDSUB213PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFMADDSUB213PHZ256rk, X86::VFMADDSUB213PHZ256mbk, TB_BCAST_SH},
+  {X86::VFMADDSUB213PHZ256rkz, X86::VFMADDSUB213PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFMADDSUB213PHZrk, X86::VFMADDSUB213PHZmbk, TB_BCAST_SH},
+  {X86::VFMADDSUB213PHZrkz, X86::VFMADDSUB213PHZmbkz, TB_BCAST_SH},
+  {X86::VFMADDSUB213PSZ128rk, X86::VFMADDSUB213PSZ128mbk, TB_BCAST_SS},
+  {X86::VFMADDSUB213PSZ128rkz, X86::VFMADDSUB213PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFMADDSUB213PSZ256rk, X86::VFMADDSUB213PSZ256mbk, TB_BCAST_SS},
+  {X86::VFMADDSUB213PSZ256rkz, X86::VFMADDSUB213PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFMADDSUB213PSZrk, X86::VFMADDSUB213PSZmbk, TB_BCAST_SS},
+  {X86::VFMADDSUB213PSZrkz, X86::VFMADDSUB213PSZmbkz, TB_BCAST_SS},
+  {X86::VFMADDSUB231PDZ128rk, X86::VFMADDSUB231PDZ128mbk, TB_BCAST_SD},
+  {X86::VFMADDSUB231PDZ128rkz, X86::VFMADDSUB231PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFMADDSUB231PDZ256rk, X86::VFMADDSUB231PDZ256mbk, TB_BCAST_SD},
+  {X86::VFMADDSUB231PDZ256rkz, X86::VFMADDSUB231PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFMADDSUB231PDZrk, X86::VFMADDSUB231PDZmbk, TB_BCAST_SD},
+  {X86::VFMADDSUB231PDZrkz, X86::VFMADDSUB231PDZmbkz, TB_BCAST_SD},
+  {X86::VFMADDSUB231PHZ128rk, X86::VFMADDSUB231PHZ128mbk, TB_BCAST_SH},
+  {X86::VFMADDSUB231PHZ128rkz, X86::VFMADDSUB231PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFMADDSUB231PHZ256rk, X86::VFMADDSUB231PHZ256mbk, TB_BCAST_SH},
+  {X86::VFMADDSUB231PHZ256rkz, X86::VFMADDSUB231PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFMADDSUB231PHZrk, X86::VFMADDSUB231PHZmbk, TB_BCAST_SH},
+  {X86::VFMADDSUB231PHZrkz, X86::VFMADDSUB231PHZmbkz, TB_BCAST_SH},
+  {X86::VFMADDSUB231PSZ128rk, X86::VFMADDSUB231PSZ128mbk, TB_BCAST_SS},
+  {X86::VFMADDSUB231PSZ128rkz, X86::VFMADDSUB231PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFMADDSUB231PSZ256rk, X86::VFMADDSUB231PSZ256mbk, TB_BCAST_SS},
+  {X86::VFMADDSUB231PSZ256rkz, X86::VFMADDSUB231PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFMADDSUB231PSZrk, X86::VFMADDSUB231PSZmbk, TB_BCAST_SS},
+  {X86::VFMADDSUB231PSZrkz, X86::VFMADDSUB231PSZmbkz, TB_BCAST_SS},
+  {X86::VFMSUB132PDZ128rk, X86::VFMSUB132PDZ128mbk, TB_BCAST_SD},
+  {X86::VFMSUB132PDZ128rkz, X86::VFMSUB132PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFMSUB132PDZ256rk, X86::VFMSUB132PDZ256mbk, TB_BCAST_SD},
+  {X86::VFMSUB132PDZ256rkz, X86::VFMSUB132PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFMSUB132PDZrk, X86::VFMSUB132PDZmbk, TB_BCAST_SD},
+  {X86::VFMSUB132PDZrkz, X86::VFMSUB132PDZmbkz, TB_BCAST_SD},
+  {X86::VFMSUB132PHZ128rk, X86::VFMSUB132PHZ128mbk, TB_BCAST_SH},
+  {X86::VFMSUB132PHZ128rkz, X86::VFMSUB132PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFMSUB132PHZ256rk, X86::VFMSUB132PHZ256mbk, TB_BCAST_SH},
+  {X86::VFMSUB132PHZ256rkz, X86::VFMSUB132PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFMSUB132PHZrk, X86::VFMSUB132PHZmbk, TB_BCAST_SH},
+  {X86::VFMSUB132PHZrkz, X86::VFMSUB132PHZmbkz, TB_BCAST_SH},
+  {X86::VFMSUB132PSZ128rk, X86::VFMSUB132PSZ128mbk, TB_BCAST_SS},
+  {X86::VFMSUB132PSZ128rkz, X86::VFMSUB132PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFMSUB132PSZ256rk, X86::VFMSUB132PSZ256mbk, TB_BCAST_SS},
+  {X86::VFMSUB132PSZ256rkz, X86::VFMSUB132PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFMSUB132PSZrk, X86::VFMSUB132PSZmbk, TB_BCAST_SS},
+  {X86::VFMSUB132PSZrkz, X86::VFMSUB132PSZmbkz, TB_BCAST_SS},
+  {X86::VFMSUB213PDZ128rk, X86::VFMSUB213PDZ128mbk, TB_BCAST_SD},
+  {X86::VFMSUB213PDZ128rkz, X86::VFMSUB213PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFMSUB213PDZ256rk, X86::VFMSUB213PDZ256mbk, TB_BCAST_SD},
+  {X86::VFMSUB213PDZ256rkz, X86::VFMSUB213PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFMSUB213PDZrk, X86::VFMSUB213PDZmbk, TB_BCAST_SD},
+  {X86::VFMSUB213PDZrkz, X86::VFMSUB213PDZmbkz, TB_BCAST_SD},
+  {X86::VFMSUB213PHZ128rk, X86::VFMSUB213PHZ128mbk, TB_BCAST_SH},
+  {X86::VFMSUB213PHZ128rkz, X86::VFMSUB213PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFMSUB213PHZ256rk, X86::VFMSUB213PHZ256mbk, TB_BCAST_SH},
+  {X86::VFMSUB213PHZ256rkz, X86::VFMSUB213PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFMSUB213PHZrk, X86::VFMSUB213PHZmbk, TB_BCAST_SH},
+  {X86::VFMSUB213PHZrkz, X86::VFMSUB213PHZmbkz, TB_BCAST_SH},
+  {X86::VFMSUB213PSZ128rk, X86::VFMSUB213PSZ128mbk, TB_BCAST_SS},
+  {X86::VFMSUB213PSZ128rkz, X86::VFMSUB213PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFMSUB213PSZ256rk, X86::VFMSUB213PSZ256mbk, TB_BCAST_SS},
+  {X86::VFMSUB213PSZ256rkz, X86::VFMSUB213PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFMSUB213PSZrk, X86::VFMSUB213PSZmbk, TB_BCAST_SS},
+  {X86::VFMSUB213PSZrkz, X86::VFMSUB213PSZmbkz, TB_BCAST_SS},
+  {X86::VFMSUB231PDZ128rk, X86::VFMSUB231PDZ128mbk, TB_BCAST_SD},
+  {X86::VFMSUB231PDZ128rkz, X86::VFMSUB231PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFMSUB231PDZ256rk, X86::VFMSUB231PDZ256mbk, TB_BCAST_SD},
+  {X86::VFMSUB231PDZ256rkz, X86::VFMSUB231PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFMSUB231PDZrk, X86::VFMSUB231PDZmbk, TB_BCAST_SD},
+  {X86::VFMSUB231PDZrkz, X86::VFMSUB231PDZmbkz, TB_BCAST_SD},
+  {X86::VFMSUB231PHZ128rk, X86::VFMSUB231PHZ128mbk, TB_BCAST_SH},
+  {X86::VFMSUB231PHZ128rkz, X86::VFMSUB231PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFMSUB231PHZ256rk, X86::VFMSUB231PHZ256mbk, TB_BCAST_SH},
+  {X86::VFMSUB231PHZ256rkz, X86::VFMSUB231PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFMSUB231PHZrk, X86::VFMSUB231PHZmbk, TB_BCAST_SH},
+  {X86::VFMSUB231PHZrkz, X86::VFMSUB231PHZmbkz, TB_BCAST_SH},
+  {X86::VFMSUB231PSZ128rk, X86::VFMSUB231PSZ128mbk, TB_BCAST_SS},
+  {X86::VFMSUB231PSZ128rkz, X86::VFMSUB231PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFMSUB231PSZ256rk, X86::VFMSUB231PSZ256mbk, TB_BCAST_SS},
+  {X86::VFMSUB231PSZ256rkz, X86::VFMSUB231PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFMSUB231PSZrk, X86::VFMSUB231PSZmbk, TB_BCAST_SS},
+  {X86::VFMSUB231PSZrkz, X86::VFMSUB231PSZmbkz, TB_BCAST_SS},
+  {X86::VFMSUBADD132PDZ128rk, X86::VFMSUBADD132PDZ128mbk, TB_BCAST_SD},
+  {X86::VFMSUBADD132PDZ128rkz, X86::VFMSUBADD132PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFMSUBADD132PDZ256rk, X86::VFMSUBADD132PDZ256mbk, TB_BCAST_SD},
+  {X86::VFMSUBADD132PDZ256rkz, X86::VFMSUBADD132PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFMSUBADD132PDZrk, X86::VFMSUBADD132PDZmbk, TB_BCAST_SD},
+  {X86::VFMSUBADD132PDZrkz, X86::VFMSUBADD132PDZmbkz, TB_BCAST_SD},
+  {X86::VFMSUBADD132PHZ128rk, X86::VFMSUBADD132PHZ128mbk, TB_BCAST_SH},
+  {X86::VFMSUBADD132PHZ128rkz, X86::VFMSUBADD132PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFMSUBADD132PHZ256rk, X86::VFMSUBADD132PHZ256mbk, TB_BCAST_SH},
+  {X86::VFMSUBADD132PHZ256rkz, X86::VFMSUBADD132PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFMSUBADD132PHZrk, X86::VFMSUBADD132PHZmbk, TB_BCAST_SH},
+  {X86::VFMSUBADD132PHZrkz, X86::VFMSUBADD132PHZmbkz, TB_BCAST_SH},
+  {X86::VFMSUBADD132PSZ128rk, X86::VFMSUBADD132PSZ128mbk, TB_BCAST_SS},
+  {X86::VFMSUBADD132PSZ128rkz, X86::VFMSUBADD132PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFMSUBADD132PSZ256rk, X86::VFMSUBADD132PSZ256mbk, TB_BCAST_SS},
+  {X86::VFMSUBADD132PSZ256rkz, X86::VFMSUBADD132PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFMSUBADD132PSZrk, X86::VFMSUBADD132PSZmbk, TB_BCAST_SS},
+  {X86::VFMSUBADD132PSZrkz, X86::VFMSUBADD132PSZmbkz, TB_BCAST_SS},
+  {X86::VFMSUBADD213PDZ128rk, X86::VFMSUBADD213PDZ128mbk, TB_BCAST_SD},
+  {X86::VFMSUBADD213PDZ128rkz, X86::VFMSUBADD213PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFMSUBADD213PDZ256rk, X86::VFMSUBADD213PDZ256mbk, TB_BCAST_SD},
+  {X86::VFMSUBADD213PDZ256rkz, X86::VFMSUBADD213PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFMSUBADD213PDZrk, X86::VFMSUBADD213PDZmbk, TB_BCAST_SD},
+  {X86::VFMSUBADD213PDZrkz, X86::VFMSUBADD213PDZmbkz, TB_BCAST_SD},
+  {X86::VFMSUBADD213PHZ128rk, X86::VFMSUBADD213PHZ128mbk, TB_BCAST_SH},
+  {X86::VFMSUBADD213PHZ128rkz, X86::VFMSUBADD213PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFMSUBADD213PHZ256rk, X86::VFMSUBADD213PHZ256mbk, TB_BCAST_SH},
+  {X86::VFMSUBADD213PHZ256rkz, X86::VFMSUBADD213PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFMSUBADD213PHZrk, X86::VFMSUBADD213PHZmbk, TB_BCAST_SH},
+  {X86::VFMSUBADD213PHZrkz, X86::VFMSUBADD213PHZmbkz, TB_BCAST_SH},
+  {X86::VFMSUBADD213PSZ128rk, X86::VFMSUBADD213PSZ128mbk, TB_BCAST_SS},
+  {X86::VFMSUBADD213PSZ128rkz, X86::VFMSUBADD213PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFMSUBADD213PSZ256rk, X86::VFMSUBADD213PSZ256mbk, TB_BCAST_SS},
+  {X86::VFMSUBADD213PSZ256rkz, X86::VFMSUBADD213PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFMSUBADD213PSZrk, X86::VFMSUBADD213PSZmbk, TB_BCAST_SS},
+  {X86::VFMSUBADD213PSZrkz, X86::VFMSUBADD213PSZmbkz, TB_BCAST_SS},
+  {X86::VFMSUBADD231PDZ128rk, X86::VFMSUBADD231PDZ128mbk, TB_BCAST_SD},
+  {X86::VFMSUBADD231PDZ128rkz, X86::VFMSUBADD231PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFMSUBADD231PDZ256rk, X86::VFMSUBADD231PDZ256mbk, TB_BCAST_SD},
+  {X86::VFMSUBADD231PDZ256rkz, X86::VFMSUBADD231PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFMSUBADD231PDZrk, X86::VFMSUBADD231PDZmbk, TB_BCAST_SD},
+  {X86::VFMSUBADD231PDZrkz, X86::VFMSUBADD231PDZmbkz, TB_BCAST_SD},
+  {X86::VFMSUBADD231PHZ128rk, X86::VFMSUBADD231PHZ128mbk, TB_BCAST_SH},
+  {X86::VFMSUBADD231PHZ128rkz, X86::VFMSUBADD231PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFMSUBADD231PHZ256rk, X86::VFMSUBADD231PHZ256mbk, TB_BCAST_SH},
+  {X86::VFMSUBADD231PHZ256rkz, X86::VFMSUBADD231PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFMSUBADD231PHZrk, X86::VFMSUBADD231PHZmbk, TB_BCAST_SH},
+  {X86::VFMSUBADD231PHZrkz, X86::VFMSUBADD231PHZmbkz, TB_BCAST_SH},
+  {X86::VFMSUBADD231PSZ128rk, X86::VFMSUBADD231PSZ128mbk, TB_BCAST_SS},
+  {X86::VFMSUBADD231PSZ128rkz, X86::VFMSUBADD231PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFMSUBADD231PSZ256rk, X86::VFMSUBADD231PSZ256mbk, TB_BCAST_SS},
+  {X86::VFMSUBADD231PSZ256rkz, X86::VFMSUBADD231PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFMSUBADD231PSZrk, X86::VFMSUBADD231PSZmbk, TB_BCAST_SS},
+  {X86::VFMSUBADD231PSZrkz, X86::VFMSUBADD231PSZmbkz, TB_BCAST_SS},
+  {X86::VFMULCPHZ128rrk, X86::VFMULCPHZ128rmbk, TB_BCAST_SH},
+  {X86::VFMULCPHZ256rrk, X86::VFMULCPHZ256rmbk, TB_BCAST_SH},
+  {X86::VFMULCPHZrrk, X86::VFMULCPHZrmbk, TB_BCAST_SH},
+  {X86::VFNMADD132PDZ128rk, X86::VFNMADD132PDZ128mbk, TB_BCAST_SD},
+  {X86::VFNMADD132PDZ128rkz, X86::VFNMADD132PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFNMADD132PDZ256rk, X86::VFNMADD132PDZ256mbk, TB_BCAST_SD},
+  {X86::VFNMADD132PDZ256rkz, X86::VFNMADD132PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFNMADD132PDZrk, X86::VFNMADD132PDZmbk, TB_BCAST_SD},
+  {X86::VFNMADD132PDZrkz, X86::VFNMADD132PDZmbkz, TB_BCAST_SD},
+  {X86::VFNMADD132PHZ128rk, X86::VFNMADD132PHZ128mbk, TB_BCAST_SH},
+  {X86::VFNMADD132PHZ128rkz, X86::VFNMADD132PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFNMADD132PHZ256rk, X86::VFNMADD132PHZ256mbk, TB_BCAST_SH},
+  {X86::VFNMADD132PHZ256rkz, X86::VFNMADD132PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFNMADD132PHZrk, X86::VFNMADD132PHZmbk, TB_BCAST_SH},
+  {X86::VFNMADD132PHZrkz, X86::VFNMADD132PHZmbkz, TB_BCAST_SH},
+  {X86::VFNMADD132PSZ128rk, X86::VFNMADD132PSZ128mbk, TB_BCAST_SS},
+  {X86::VFNMADD132PSZ128rkz, X86::VFNMADD132PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFNMADD132PSZ256rk, X86::VFNMADD132PSZ256mbk, TB_BCAST_SS},
+  {X86::VFNMADD132PSZ256rkz, X86::VFNMADD132PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFNMADD132PSZrk, X86::VFNMADD132PSZmbk, TB_BCAST_SS},
+  {X86::VFNMADD132PSZrkz, X86::VFNMADD132PSZmbkz, TB_BCAST_SS},
+  {X86::VFNMADD213PDZ128rk, X86::VFNMADD213PDZ128mbk, TB_BCAST_SD},
+  {X86::VFNMADD213PDZ128rkz, X86::VFNMADD213PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFNMADD213PDZ256rk, X86::VFNMADD213PDZ256mbk, TB_BCAST_SD},
+  {X86::VFNMADD213PDZ256rkz, X86::VFNMADD213PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFNMADD213PDZrk, X86::VFNMADD213PDZmbk, TB_BCAST_SD},
+  {X86::VFNMADD213PDZrkz, X86::VFNMADD213PDZmbkz, TB_BCAST_SD},
+  {X86::VFNMADD213PHZ128rk, X86::VFNMADD213PHZ128mbk, TB_BCAST_SH},
+  {X86::VFNMADD213PHZ128rkz, X86::VFNMADD213PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFNMADD213PHZ256rk, X86::VFNMADD213PHZ256mbk, TB_BCAST_SH},
+  {X86::VFNMADD213PHZ256rkz, X86::VFNMADD213PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFNMADD213PHZrk, X86::VFNMADD213PHZmbk, TB_BCAST_SH},
+  {X86::VFNMADD213PHZrkz, X86::VFNMADD213PHZmbkz, TB_BCAST_SH},
+  {X86::VFNMADD213PSZ128rk, X86::VFNMADD213PSZ128mbk, TB_BCAST_SS},
+  {X86::VFNMADD213PSZ128rkz, X86::VFNMADD213PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFNMADD213PSZ256rk, X86::VFNMADD213PSZ256mbk, TB_BCAST_SS},
+  {X86::VFNMADD213PSZ256rkz, X86::VFNMADD213PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFNMADD213PSZrk, X86::VFNMADD213PSZmbk, TB_BCAST_SS},
+  {X86::VFNMADD213PSZrkz, X86::VFNMADD213PSZmbkz, TB_BCAST_SS},
+  {X86::VFNMADD231PDZ128rk, X86::VFNMADD231PDZ128mbk, TB_BCAST_SD},
+  {X86::VFNMADD231PDZ128rkz, X86::VFNMADD231PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFNMADD231PDZ256rk, X86::VFNMADD231PDZ256mbk, TB_BCAST_SD},
+  {X86::VFNMADD231PDZ256rkz, X86::VFNMADD231PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFNMADD231PDZrk, X86::VFNMADD231PDZmbk, TB_BCAST_SD},
+  {X86::VFNMADD231PDZrkz, X86::VFNMADD231PDZmbkz, TB_BCAST_SD},
+  {X86::VFNMADD231PHZ128rk, X86::VFNMADD231PHZ128mbk, TB_BCAST_SH},
+  {X86::VFNMADD231PHZ128rkz, X86::VFNMADD231PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFNMADD231PHZ256rk, X86::VFNMADD231PHZ256mbk, TB_BCAST_SH},
+  {X86::VFNMADD231PHZ256rkz, X86::VFNMADD231PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFNMADD231PHZrk, X86::VFNMADD231PHZmbk, TB_BCAST_SH},
+  {X86::VFNMADD231PHZrkz, X86::VFNMADD231PHZmbkz, TB_BCAST_SH},
+  {X86::VFNMADD231PSZ128rk, X86::VFNMADD231PSZ128mbk, TB_BCAST_SS},
+  {X86::VFNMADD231PSZ128rkz, X86::VFNMADD231PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFNMADD231PSZ256rk, X86::VFNMADD231PSZ256mbk, TB_BCAST_SS},
+  {X86::VFNMADD231PSZ256rkz, X86::VFNMADD231PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFNMADD231PSZrk, X86::VFNMADD231PSZmbk, TB_BCAST_SS},
+  {X86::VFNMADD231PSZrkz, X86::VFNMADD231PSZmbkz, TB_BCAST_SS},
+  {X86::VFNMSUB132PDZ128rk, X86::VFNMSUB132PDZ128mbk, TB_BCAST_SD},
+  {X86::VFNMSUB132PDZ128rkz, X86::VFNMSUB132PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFNMSUB132PDZ256rk, X86::VFNMSUB132PDZ256mbk, TB_BCAST_SD},
+  {X86::VFNMSUB132PDZ256rkz, X86::VFNMSUB132PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFNMSUB132PDZrk, X86::VFNMSUB132PDZmbk, TB_BCAST_SD},
+  {X86::VFNMSUB132PDZrkz, X86::VFNMSUB132PDZmbkz, TB_BCAST_SD},
+  {X86::VFNMSUB132PHZ128rk, X86::VFNMSUB132PHZ128mbk, TB_BCAST_SH},
+  {X86::VFNMSUB132PHZ128rkz, X86::VFNMSUB132PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFNMSUB132PHZ256rk, X86::VFNMSUB132PHZ256mbk, TB_BCAST_SH},
+  {X86::VFNMSUB132PHZ256rkz, X86::VFNMSUB132PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFNMSUB132PHZrk, X86::VFNMSUB132PHZmbk, TB_BCAST_SH},
+  {X86::VFNMSUB132PHZrkz, X86::VFNMSUB132PHZmbkz, TB_BCAST_SH},
+  {X86::VFNMSUB132PSZ128rk, X86::VFNMSUB132PSZ128mbk, TB_BCAST_SS},
+  {X86::VFNMSUB132PSZ128rkz, X86::VFNMSUB132PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFNMSUB132PSZ256rk, X86::VFNMSUB132PSZ256mbk, TB_BCAST_SS},
+  {X86::VFNMSUB132PSZ256rkz, X86::VFNMSUB132PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFNMSUB132PSZrk, X86::VFNMSUB132PSZmbk, TB_BCAST_SS},
+  {X86::VFNMSUB132PSZrkz, X86::VFNMSUB132PSZmbkz, TB_BCAST_SS},
+  {X86::VFNMSUB213PDZ128rk, X86::VFNMSUB213PDZ128mbk, TB_BCAST_SD},
+  {X86::VFNMSUB213PDZ128rkz, X86::VFNMSUB213PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFNMSUB213PDZ256rk, X86::VFNMSUB213PDZ256mbk, TB_BCAST_SD},
+  {X86::VFNMSUB213PDZ256rkz, X86::VFNMSUB213PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFNMSUB213PDZrk, X86::VFNMSUB213PDZmbk, TB_BCAST_SD},
+  {X86::VFNMSUB213PDZrkz, X86::VFNMSUB213PDZmbkz, TB_BCAST_SD},
+  {X86::VFNMSUB213PHZ128rk, X86::VFNMSUB213PHZ128mbk, TB_BCAST_SH},
+  {X86::VFNMSUB213PHZ128rkz, X86::VFNMSUB213PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFNMSUB213PHZ256rk, X86::VFNMSUB213PHZ256mbk, TB_BCAST_SH},
+  {X86::VFNMSUB213PHZ256rkz, X86::VFNMSUB213PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFNMSUB213PHZrk, X86::VFNMSUB213PHZmbk, TB_BCAST_SH},
+  {X86::VFNMSUB213PHZrkz, X86::VFNMSUB213PHZmbkz, TB_BCAST_SH},
+  {X86::VFNMSUB213PSZ128rk, X86::VFNMSUB213PSZ128mbk, TB_BCAST_SS},
+  {X86::VFNMSUB213PSZ128rkz, X86::VFNMSUB213PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFNMSUB213PSZ256rk, X86::VFNMSUB213PSZ256mbk, TB_BCAST_SS},
+  {X86::VFNMSUB213PSZ256rkz, X86::VFNMSUB213PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFNMSUB213PSZrk, X86::VFNMSUB213PSZmbk, TB_BCAST_SS},
+  {X86::VFNMSUB213PSZrkz, X86::VFNMSUB213PSZmbkz, TB_BCAST_SS},
+  {X86::VFNMSUB231PDZ128rk, X86::VFNMSUB231PDZ128mbk, TB_BCAST_SD},
+  {X86::VFNMSUB231PDZ128rkz, X86::VFNMSUB231PDZ128mbkz, TB_BCAST_SD},
+  {X86::VFNMSUB231PDZ256rk, X86::VFNMSUB231PDZ256mbk, TB_BCAST_SD},
+  {X86::VFNMSUB231PDZ256rkz, X86::VFNMSUB231PDZ256mbkz, TB_BCAST_SD},
+  {X86::VFNMSUB231PDZrk, X86::VFNMSUB231PDZmbk, TB_BCAST_SD},
+  {X86::VFNMSUB231PDZrkz, X86::VFNMSUB231PDZmbkz, TB_BCAST_SD},
+  {X86::VFNMSUB231PHZ128rk, X86::VFNMSUB231PHZ128mbk, TB_BCAST_SH},
+  {X86::VFNMSUB231PHZ128rkz, X86::VFNMSUB231PHZ128mbkz, TB_BCAST_SH},
+  {X86::VFNMSUB231PHZ256rk, X86::VFNMSUB231PHZ256mbk, TB_BCAST_SH},
+  {X86::VFNMSUB231PHZ256rkz, X86::VFNMSUB231PHZ256mbkz, TB_BCAST_SH},
+  {X86::VFNMSUB231PHZrk, X86::VFNMSUB231PHZmbk, TB_BCAST_SH},
+  {X86::VFNMSUB231PHZrkz, X86::VFNMSUB231PHZmbkz, TB_BCAST_SH},
+  {X86::VFNMSUB231PSZ128rk, X86::VFNMSUB231PSZ128mbk, TB_BCAST_SS},
+  {X86::VFNMSUB231PSZ128rkz, X86::VFNMSUB231PSZ128mbkz, TB_BCAST_SS},
+  {X86::VFNMSUB231PSZ256rk, X86::VFNMSUB231PSZ256mbk, TB_BCAST_SS},
+  {X86::VFNMSUB231PSZ256rkz, X86::VFNMSUB231PSZ256mbkz, TB_BCAST_SS},
+  {X86::VFNMSUB231PSZrk, X86::VFNMSUB231PSZmbk, TB_BCAST_SS},
+  {X86::VFNMSUB231PSZrkz, X86::VFNMSUB231PSZmbkz, TB_BCAST_SS},
+  {X86::VGF2P8AFFINEINVQBZ128rrik, X86::VGF2P8AFFINEINVQBZ128rmbik, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEINVQBZ256rrik, X86::VGF2P8AFFINEINVQBZ256rmbik, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEINVQBZrrik, X86::VGF2P8AFFINEINVQBZrmbik, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEQBZ128rrik, X86::VGF2P8AFFINEQBZ128rmbik, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEQBZ256rrik, X86::VGF2P8AFFINEQBZ256rmbik, TB_BCAST_Q},
+  {X86::VGF2P8AFFINEQBZrrik, X86::VGF2P8AFFINEQBZrmbik, TB_BCAST_Q},
+  {X86::VMAXCPDZ128rrk, X86::VMAXCPDZ128rmbk, TB_BCAST_SD},
+  {X86::VMAXCPDZ256rrk, X86::VMAXCPDZ256rmbk, TB_BCAST_SD},
+  {X86::VMAXCPDZrrk, X86::VMAXCPDZrmbk, TB_BCAST_SD},
+  {X86::VMAXCPHZ128rrk, X86::VMAXCPHZ128rmbk, TB_BCAST_SH},
+  {X86::VMAXCPHZ256rrk, X86::VMAXCPHZ256rmbk, TB_BCAST_SH},
+  {X86::VMAXCPHZrrk, X86::VMAXCPHZrmbk, TB_BCAST_SH},
+  {X86::VMAXCPSZ128rrk, X86::VMAXCPSZ128rmbk, TB_BCAST_SS},
+  {X86::VMAXCPSZ256rrk, X86::VMAXCPSZ256rmbk, TB_BCAST_SS},
+  {X86::VMAXCPSZrrk, X86::VMAXCPSZrmbk, TB_BCAST_SS},
+  {X86::VMAXPDZ128rrk, X86::VMAXPDZ128rmbk, TB_BCAST_SD},
+  {X86::VMAXPDZ256rrk, X86::VMAXPDZ256rmbk, TB_BCAST_SD},
+  {X86::VMAXPDZrrk, X86::VMAXPDZrmbk, TB_BCAST_SD},
+  {X86::VMAXPHZ128rrk, X86::VMAXPHZ128rmbk, TB_BCAST_SH},
+  {X86::VMAXPHZ256rrk, X86::VMAXPHZ256rmbk, TB_BCAST_SH},
+  {X86::VMAXPHZrrk, X86::VMAXPHZrmbk, TB_BCAST_SH},
+  {X86::VMAXPSZ128rrk, X86::VMAXPSZ128rmbk, TB_BCAST_SS},
+  {X86::VMAXPSZ256rrk, X86::VMAXPSZ256rmbk, TB_BCAST_SS},
+  {X86::VMAXPSZrrk, X86::VMAXPSZrmbk, TB_BCAST_SS},
+  {X86::VMINCPDZ128rrk, X86::VMINCPDZ128rmbk, TB_BCAST_SD},
+  {X86::VMINCPDZ256rrk, X86::VMINCPDZ256rmbk, TB_BCAST_SD},
+  {X86::VMINCPDZrrk, X86::VMINCPDZrmbk, TB_BCAST_SD},
+  {X86::VMINCPHZ128rrk, X86::VMINCPHZ128rmbk, TB_BCAST_SH},
+  {X86::VMINCPHZ256rrk, X86::VMINCPHZ256rmbk, TB_BCAST_SH},
+  {X86::VMINCPHZrrk, X86::VMINCPHZrmbk, TB_BCAST_SH},
+  {X86::VMINCPSZ128rrk, X86::VMINCPSZ128rmbk, TB_BCAST_SS},
+  {X86::VMINCPSZ256rrk, X86::VMINCPSZ256rmbk, TB_BCAST_SS},
+  {X86::VMINCPSZrrk, X86::VMINCPSZrmbk, TB_BCAST_SS},
+  {X86::VMINPDZ128rrk, X86::VMINPDZ128rmbk, TB_BCAST_SD},
+  {X86::VMINPDZ256rrk, X86::VMINPDZ256rmbk, TB_BCAST_SD},
+  {X86::VMINPDZrrk, X86::VMINPDZrmbk, TB_BCAST_SD},
+  {X86::VMINPHZ128rrk, X86::VMINPHZ128rmbk, TB_BCAST_SH},
+  {X86::VMINPHZ256rrk, X86::VMINPHZ256rmbk, TB_BCAST_SH},
+  {X86::VMINPHZrrk, X86::VMINPHZrmbk, TB_BCAST_SH},
+  {X86::VMINPSZ128rrk, X86::VMINPSZ128rmbk, TB_BCAST_SS},
+  {X86::VMINPSZ256rrk, X86::VMINPSZ256rmbk, TB_BCAST_SS},
+  {X86::VMINPSZrrk, X86::VMINPSZrmbk, TB_BCAST_SS},
+  {X86::VMULPDZ128rrk, X86::VMULPDZ128rmbk, TB_BCAST_SD},
+  {X86::VMULPDZ256rrk, X86::VMULPDZ256rmbk, TB_BCAST_SD},
+  {X86::VMULPDZrrk, X86::VMULPDZrmbk, TB_BCAST_SD},
+  {X86::VMULPHZ128rrk, X86::VMULPHZ128rmbk, TB_BCAST_SH},
+  {X86::VMULPHZ256rrk, X86::VMULPHZ256rmbk, TB_BCAST_SH},
+  {X86::VMULPHZrrk, X86::VMULPHZrmbk, TB_BCAST_SH},
+  {X86::VMULPSZ128rrk, X86::VMULPSZ128rmbk, TB_BCAST_SS},
+  {X86::VMULPSZ256rrk, X86::VMULPSZ256rmbk, TB_BCAST_SS},
+  {X86::VMULPSZrrk, X86::VMULPSZrmbk, TB_BCAST_SS},
+  {X86::VORPDZ128rrk, X86::VORPDZ128rmbk, TB_BCAST_SD},
+  {X86::VORPDZ256rrk, X86::VORPDZ256rmbk, TB_BCAST_SD},
+  {X86::VORPDZrrk, X86::VORPDZrmbk, TB_BCAST_SD},
+  {X86::VORPSZ128rrk, X86::VORPSZ128rmbk, TB_BCAST_SS},
+  {X86::VORPSZ256rrk, X86::VORPSZ256rmbk, TB_BCAST_SS},
+  {X86::VORPSZrrk, X86::VORPSZrmbk, TB_BCAST_SS},
+  {X86::VPACKSSDWZ128rrk, X86::VPACKSSDWZ128rmbk, TB_BCAST_D},
+  {X86::VPACKSSDWZ256rrk, X86::VPACKSSDWZ256rmbk, TB_BCAST_D},
+  {X86::VPACKSSDWZrrk, X86::VPACKSSDWZrmbk, TB_BCAST_D},
+  {X86::VPACKUSDWZ128rrk, X86::VPACKUSDWZ128rmbk, TB_BCAST_D},
+  {X86::VPACKUSDWZ256rrk, X86::VPACKUSDWZ256rmbk, TB_BCAST_D},
+  {X86::VPACKUSDWZrrk, X86::VPACKUSDWZrmbk, TB_BCAST_D},
+  {X86::VPADDDZ128rrk, X86::VPADDDZ128rmbk, TB_BCAST_D},
+  {X86::VPADDDZ256rrk, X86::VPADDDZ256rmbk, TB_BCAST_D},
+  {X86::VPADDDZrrk, X86::VPADDDZrmbk, TB_BCAST_D},
+  {X86::VPADDQZ128rrk, X86::VPADDQZ128rmbk, TB_BCAST_Q},
+  {X86::VPADDQZ256rrk, X86::VPADDQZ256rmbk, TB_BCAST_Q},
+  {X86::VPADDQZrrk, X86::VPADDQZrmbk, TB_BCAST_Q},
+  {X86::VPANDDZ128rrk, X86::VPANDDZ128rmbk, TB_BCAST_D},
+  {X86::VPANDDZ256rrk, X86::VPANDDZ256rmbk, TB_BCAST_D},
+  {X86::VPANDDZrrk, X86::VPANDDZrmbk, TB_BCAST_D},
+  {X86::VPANDNDZ128rrk, X86::VPANDNDZ128rmbk, TB_BCAST_D},
+  {X86::VPANDNDZ256rrk, X86::VPANDNDZ256rmbk, TB_BCAST_D},
+  {X86::VPANDNDZrrk, X86::VPANDNDZrmbk, TB_BCAST_D},
+  {X86::VPANDNQZ128rrk, X86::VPANDNQZ128rmbk, TB_BCAST_Q},
+  {X86::VPANDNQZ256rrk, X86::VPANDNQZ256rmbk, TB_BCAST_Q},
+  {X86::VPANDNQZrrk, X86::VPANDNQZrmbk, TB_BCAST_Q},
+  {X86::VPANDQZ128rrk, X86::VPANDQZ128rmbk, TB_BCAST_Q},
+  {X86::VPANDQZ256rrk, X86::VPANDQZ256rmbk, TB_BCAST_Q},
+  {X86::VPANDQZrrk, X86::VPANDQZrmbk, TB_BCAST_Q},
+  {X86::VPDPBUSDSZ128rk, X86::VPDPBUSDSZ128mbk, TB_BCAST_SD},
+  {X86::VPDPBUSDSZ128rkz, X86::VPDPBUSDSZ128mbkz, TB_BCAST_SD},
+  {X86::VPDPBUSDSZ256rk, X86::VPDPBUSDSZ256mbk, TB_BCAST_SD},
+  {X86::VPDPBUSDSZ256rkz, X86::VPDPBUSDSZ256mbkz, TB_BCAST_SD},
+  {X86::VPDPBUSDSZrk, X86::VPDPBUSDSZmbk, TB_BCAST_SD},
+  {X86::VPDPBUSDSZrkz, X86::VPDPBUSDSZmbkz, TB_BCAST_SD},
+  {X86::VPDPBUSDZ128rk, X86::VPDPBUSDZ128mbk, TB_BCAST_D},
+  {X86::VPDPBUSDZ128rkz, X86::VPDPBUSDZ128mbkz, TB_BCAST_D},
+  {X86::VPDPBUSDZ256rk, X86::VPDPBUSDZ256mbk, TB_BCAST_D},
+  {X86::VPDPBUSDZ256rkz, X86::VPDPBUSDZ256mbkz, TB_BCAST_D},
+  {X86::VPDPBUSDZrk, X86::VPDPBUSDZmbk, TB_BCAST_D},
+  {X86::VPDPBUSDZrkz, X86::VPDPBUSDZmbkz, TB_BCAST_D},
+  {X86::VPDPWSSDSZ128rk, X86::VPDPWSSDSZ128mbk, TB_BCAST_SD},
+  {X86::VPDPWSSDSZ128rkz, X86::VPDPWSSDSZ128mbkz, TB_BCAST_SD},
+  {X86::VPDPWSSDSZ256rk, X86::VPDPWSSDSZ256mbk, TB_BCAST_SD},
+  {X86::VPDPWSSDSZ256rkz, X86::VPDPWSSDSZ256mbkz, TB_BCAST_SD},
+  {X86::VPDPWSSDSZrk, X86::VPDPWSSDSZmbk, TB_BCAST_SD},
+  {X86::VPDPWSSDSZrkz, X86::VPDPWSSDSZmbkz, TB_BCAST_SD},
+  {X86::VPDPWSSDZ128rk, X86::VPDPWSSDZ128mbk, TB_BCAST_D},
+  {X86::VPDPWSSDZ128rkz, X86::VPDPWSSDZ128mbkz, TB_BCAST_D},
+  {X86::VPDPWSSDZ256rk, X86::VPDPWSSDZ256mbk, TB_BCAST_D},
+  {X86::VPDPWSSDZ256rkz, X86::VPDPWSSDZ256mbkz, TB_BCAST_D},
+  {X86::VPDPWSSDZrk, X86::VPDPWSSDZmbk, TB_BCAST_D},
+  {X86::VPDPWSSDZrkz, X86::VPDPWSSDZmbkz, TB_BCAST_D},
+  {X86::VPERMDZ256rrk, X86::VPERMDZ256rmbk, TB_BCAST_D},
+  {X86::VPERMDZrrk, X86::VPERMDZrmbk, TB_BCAST_D},
+  {X86::VPERMI2D128rrk, X86::VPERMI2D128rmbk, TB_BCAST_D},
+  {X86::VPERMI2D128rrkz, X86::VPERMI2D128rmbkz, TB_BCAST_D},
+  {X86::VPERMI2D256rrk, X86::VPERMI2D256rmbk, TB_BCAST_D},
+  {X86::VPERMI2D256rrkz, X86::VPERMI2D256rmbkz, TB_BCAST_D},
+  {X86::VPERMI2Drrk, X86::VPERMI2Drmbk, TB_BCAST_D},
+  {X86::VPERMI2Drrkz, X86::VPERMI2Drmbkz, TB_BCAST_D},
+  {X86::VPERMI2PD128rrk, X86::VPERMI2PD128rmbk, TB_BCAST_SD},
+  {X86::VPERMI2PD128rrkz, X86::VPERMI2PD128rmbkz, TB_BCAST_SD},
+  {X86::VPERMI2PD256rrk, X86::VPERMI2PD256rmbk, TB_BCAST_SD},
+  {X86::VPERMI2PD256rrkz, X86::VPERMI2PD256rmbkz, TB_BCAST_SD},
+  {X86::VPERMI2PDrrk, X86::VPERMI2PDrmbk, TB_BCAST_SD},
+  {X86::VPERMI2PDrrkz, X86::VPERMI2PDrmbkz, TB_BCAST_SD},
+  {X86::VPERMI2PS128rrk, X86::VPERMI2PS128rmbk, TB_BCAST_SS},
+  {X86::VPERMI2PS128rrkz, X86::VPERMI2PS128rmbkz, TB_BCAST_SS},
+  {X86::VPERMI2PS256rrk, X86::VPERMI2PS256rmbk, TB_BCAST_SS},
+  {X86::VPERMI2PS256rrkz, X86::VPERMI2PS256rmbkz, TB_BCAST_SS},
+  {X86::VPERMI2PSrrk, X86::VPERMI2PSrmbk, TB_BCAST_SS},
+  {X86::VPERMI2PSrrkz, X86::VPERMI2PSrmbkz, TB_BCAST_SS},
+  {X86::VPERMI2Q128rrk, X86::VPERMI2Q128rmbk, TB_BCAST_Q},
+  {X86::VPERMI2Q128rrkz, X86::VPERMI2Q128rmbkz, TB_BCAST_Q},
+  {X86::VPERMI2Q256rrk, X86::VPERMI2Q256rmbk, TB_BCAST_Q},
+  {X86::VPERMI2Q256rrkz, X86::VPERMI2Q256rmbkz, TB_BCAST_Q},
+  {X86::VPERMI2Qrrk, X86::VPERMI2Qrmbk, TB_BCAST_Q},
+  {X86::VPERMI2Qrrkz, X86::VPERMI2Qrmbkz, TB_BCAST_Q},
+  {X86::VPERMILPDZ128rrk, X86::VPERMILPDZ128rmbk, TB_BCAST_SD},
+  {X86::VPERMILPDZ256rrk, X86::VPERMILPDZ256rmbk, TB_BCAST_SD},
+  {X86::VPERMILPDZrrk, X86::VPERMILPDZrmbk, TB_BCAST_SD},
+  {X86::VPERMILPSZ128rrk, X86::VPERMILPSZ128rmbk, TB_BCAST_SS},
+  {X86::VPERMILPSZ256rrk, X86::VPERMILPSZ256rmbk, TB_BCAST_SS},
+  {X86::VPERMILPSZrrk, X86::VPERMILPSZrmbk, TB_BCAST_SS},
+  {X86::VPERMPDZ256rrk, X86::VPERMPDZ256rmbk, TB_BCAST_SD},
+  {X86::VPERMPDZrrk, X86::VPERMPDZrmbk, TB_BCAST_SD},
+  {X86::VPERMPSZ256rrk, X86::VPERMPSZ256rmbk, TB_BCAST_SS},
+  {X86::VPERMPSZrrk, X86::VPERMPSZrmbk, TB_BCAST_SS},
+  {X86::VPERMQZ256rrk, X86::VPERMQZ256rmbk, TB_BCAST_Q},
+  {X86::VPERMQZrrk, X86::VPERMQZrmbk, TB_BCAST_Q},
+  {X86::VPERMT2D128rrk, X86::VPERMT2D128rmbk, TB_BCAST_D},
+  {X86::VPERMT2D128rrkz, X86::VPERMT2D128rmbkz, TB_BCAST_D},
+  {X86::VPERMT2D256rrk, X86::VPERMT2D256rmbk, TB_BCAST_D},
+  {X86::VPERMT2D256rrkz, X86::VPERMT2D256rmbkz, TB_BCAST_D},
+  {X86::VPERMT2Drrk, X86::VPERMT2Drmbk, TB_BCAST_D},
+  {X86::VPERMT2Drrkz, X86::VPERMT2Drmbkz, TB_BCAST_D},
+  {X86::VPERMT2PD128rrk, X86::VPERMT2PD128rmbk, TB_BCAST_SD},
+  {X86::VPERMT2PD128rrkz, X86::VPERMT2PD128rmbkz, TB_BCAST_SD},
+  {X86::VPERMT2PD256rrk, X86::VPERMT2PD256rmbk, TB_BCAST_SD},
+  {X86::VPERMT2PD256rrkz, X86::VPERMT2PD256rmbkz, TB_BCAST_SD},
+  {X86::VPERMT2PDrrk, X86::VPERMT2PDrmbk, TB_BCAST_SD},
+  {X86::VPERMT2PDrrkz, X86::VPERMT2PDrmbkz, TB_BCAST_SD},
+  {X86::VPERMT2PS128rrk, X86::VPERMT2PS128rmbk, TB_BCAST_SS},
+  {X86::VPERMT2PS128rrkz, X86::VPERMT2PS128rmbkz, TB_BCAST_SS},
+  {X86::VPERMT2PS256rrk, X86::VPERMT2PS256rmbk, TB_BCAST_SS},
+  {X86::VPERMT2PS256rrkz, X86::VPERMT2PS256rmbkz, TB_BCAST_SS},
+  {X86::VPERMT2PSrrk, X86::VPERMT2PSrmbk, TB_BCAST_SS},
+  {X86::VPERMT2PSrrkz, X86::VPERMT2PSrmbkz, TB_BCAST_SS},
+  {X86::VPERMT2Q128rrk, X86::VPERMT2Q128rmbk, TB_BCAST_Q},
+  {X86::VPERMT2Q128rrkz, X86::VPERMT2Q128rmbkz, TB_BCAST_Q},
+  {X86::VPERMT2Q256rrk, X86::VPERMT2Q256rmbk, TB_BCAST_Q},
+  {X86::VPERMT2Q256rrkz, X86::VPERMT2Q256rmbkz, TB_BCAST_Q},
+  {X86::VPERMT2Qrrk, X86::VPERMT2Qrmbk, TB_BCAST_Q},
+  {X86::VPERMT2Qrrkz, X86::VPERMT2Qrmbkz, TB_BCAST_Q},
+  {X86::VPMADD52HUQZ128rk, X86::VPMADD52HUQZ128mbk, TB_BCAST_Q},
+  {X86::VPMADD52HUQZ128rkz, X86::VPMADD52HUQZ128mbkz, TB_BCAST_Q},
+  {X86::VPMADD52HUQZ256rk, X86::VPMADD52HUQZ256mbk, TB_BCAST_Q},
+  {X86::VPMADD52HUQZ256rkz, X86::VPMADD52HUQZ256mbkz, TB_BCAST_Q},
+  {X86::VPMADD52HUQZrk, X86::VPMADD52HUQZmbk, TB_BCAST_Q},
+  {X86::VPMADD52HUQZrkz, X86::VPMADD52HUQZmbkz, TB_BCAST_Q},
+  {X86::VPMADD52LUQZ128rk, X86::VPMADD52LUQZ128mbk, TB_BCAST_Q},
+  {X86::VPMADD52LUQZ128rkz, X86::VPMADD52LUQZ128mbkz, TB_BCAST_Q},
+  {X86::VPMADD52LUQZ256rk, X86::VPMADD52LUQZ256mbk, TB_BCAST_Q},
+  {X86::VPMADD52LUQZ256rkz, X86::VPMADD52LUQZ256mbkz, TB_BCAST_Q},
+  {X86::VPMADD52LUQZrk, X86::VPMADD52LUQZmbk, TB_BCAST_Q},
+  {X86::VPMADD52LUQZrkz, X86::VPMADD52LUQZmbkz, TB_BCAST_Q},
+  {X86::VPMAXSDZ128rrk, X86::VPMAXSDZ128rmbk, TB_BCAST_D},
+  {X86::VPMAXSDZ256rrk, X86::VPMAXSDZ256rmbk, TB_BCAST_D},
+  {X86::VPMAXSDZrrk, X86::VPMAXSDZrmbk, TB_BCAST_D},
+  {X86::VPMAXSQZ128rrk, X86::VPMAXSQZ128rmbk, TB_BCAST_Q},
+  {X86::VPMAXSQZ256rrk, X86::VPMAXSQZ256rmbk, TB_BCAST_Q},
+  {X86::VPMAXSQZrrk, X86::VPMAXSQZrmbk, TB_BCAST_Q},
+  {X86::VPMAXUDZ128rrk, X86::VPMAXUDZ128rmbk, TB_BCAST_D},
+  {X86::VPMAXUDZ256rrk, X86::VPMAXUDZ256rmbk, TB_BCAST_D},
+  {X86::VPMAXUDZrrk, X86::VPMAXUDZrmbk, TB_BCAST_D},
+  {X86::VPMAXUQZ128rrk, X86::VPMAXUQZ128rmbk, TB_BCAST_Q},
+  {X86::VPMAXUQZ256rrk, X86::VPMAXUQZ256rmbk, TB_BCAST_Q},
+  {X86::VPMAXUQZrrk, X86::VPMAXUQZrmbk, TB_BCAST_Q},
+  {X86::VPMINSDZ128rrk, X86::VPMINSDZ128rmbk, TB_BCAST_D},
+  {X86::VPMINSDZ256rrk, X86::VPMINSDZ256rmbk, TB_BCAST_D},
+  {X86::VPMINSDZrrk, X86::VPMINSDZrmbk, TB_BCAST_D},
+  {X86::VPMINSQZ128rrk, X86::VPMINSQZ128rmbk, TB_BCAST_Q},
+  {X86::VPMINSQZ256rrk, X86::VPMINSQZ256rmbk, TB_BCAST_Q},
+  {X86::VPMINSQZrrk, X86::VPMINSQZrmbk, TB_BCAST_Q},
+  {X86::VPMINUDZ128rrk, X86::VPMINUDZ128rmbk, TB_BCAST_D},
+  {X86::VPMINUDZ256rrk, X86::VPMINUDZ256rmbk, TB_BCAST_D},
+  {X86::VPMINUDZrrk, X86::VPMINUDZrmbk, TB_BCAST_D},
+  {X86::VPMINUQZ128rrk, X86::VPMINUQZ128rmbk, TB_BCAST_Q},
+  {X86::VPMINUQZ256rrk, X86::VPMINUQZ256rmbk, TB_BCAST_Q},
+  {X86::VPMINUQZrrk, X86::VPMINUQZrmbk, TB_BCAST_Q},
+  {X86::VPMULDQZ128rrk, X86::VPMULDQZ128rmbk, TB_BCAST_Q},
+  {X86::VPMULDQZ256rrk, X86::VPMULDQZ256rmbk, TB_BCAST_Q},
+  {X86::VPMULDQZrrk, X86::VPMULDQZrmbk, TB_BCAST_Q},
+  {X86::VPMULLDZ128rrk, X86::VPMULLDZ128rmbk, TB_BCAST_D},
+  {X86::VPMULLDZ256rrk, X86::VPMULLDZ256rmbk, TB_BCAST_D},
+  {X86::VPMULLDZrrk, X86::VPMULLDZrmbk, TB_BCAST_D},
+  {X86::VPMULLQZ128rrk, X86::VPMULLQZ128rmbk, TB_BCAST_Q},
+  {X86::VPMULLQZ256rrk, X86::VPMULLQZ256rmbk, TB_BCAST_Q},
+  {X86::VPMULLQZrrk, X86::VPMULLQZrmbk, TB_BCAST_Q},
+  {X86::VPMULTISHIFTQBZ128rrk, X86::VPMULTISHIFTQBZ128rmbk, TB_BCAST_Q},
+  {X86::VPMULTISHIFTQBZ256rrk, X86::VPMULTISHIFTQBZ256rmbk, TB_BCAST_Q},
+  {X86::VPMULTISHIFTQBZrrk, X86::VPMULTISHIFTQBZrmbk, TB_BCAST_Q},
+  {X86::VPMULUDQZ128rrk, X86::VPMULUDQZ128rmbk, TB_BCAST_Q},
+  {X86::VPMULUDQZ256rrk, X86::VPMULUDQZ256rmbk, TB_BCAST_Q},
+  {X86::VPMULUDQZrrk, X86::VPMULUDQZrmbk, TB_BCAST_Q},
+  {X86::VPORDZ128rrk, X86::VPORDZ128rmbk, TB_BCAST_D},
+  {X86::VPORDZ256rrk, X86::VPORDZ256rmbk, TB_BCAST_D},
+  {X86::VPORDZrrk, X86::VPORDZrmbk, TB_BCAST_D},
+  {X86::VPORQZ128rrk, X86::VPORQZ128rmbk, TB_BCAST_Q},
+  {X86::VPORQZ256rrk, X86::VPORQZ256rmbk, TB_BCAST_Q},
+  {X86::VPORQZrrk, X86::VPORQZrmbk, TB_BCAST_Q},
+  {X86::VPROLVDZ128rrk, X86::VPROLVDZ128rmbk, TB_BCAST_D},
+  {X86::VPROLVDZ256rrk, X86::VPROLVDZ256rmbk, TB_BCAST_D},
+  {X86::VPROLVDZrrk, X86::VPROLVDZrmbk, TB_BCAST_D},
+  {X86::VPROLVQZ128rrk, X86::VPROLVQZ128rmbk, TB_BCAST_Q},
+  {X86::VPROLVQZ256rrk, X86::VPROLVQZ256rmbk, TB_BCAST_Q},
+  {X86::VPROLVQZrrk, X86::VPROLVQZrmbk, TB_BCAST_Q},
+  {X86::VPRORVDZ128rrk, X86::VPRORVDZ128rmbk, TB_BCAST_D},
+  {X86::VPRORVDZ256rrk, X86::VPRORVDZ256rmbk, TB_BCAST_D},
+  {X86::VPRORVDZrrk, X86::VPRORVDZrmbk, TB_BCAST_D},
+  {X86::VPRORVQZ128rrk, X86::VPRORVQZ128rmbk, TB_BCAST_Q},
+  {X86::VPRORVQZ256rrk, X86::VPRORVQZ256rmbk, TB_BCAST_Q},
+  {X86::VPRORVQZrrk, X86::VPRORVQZrmbk, TB_BCAST_Q},
+  {X86::VPSHLDDZ128rrik, X86::VPSHLDDZ128rmbik, TB_BCAST_D},
+  {X86::VPSHLDDZ256rrik, X86::VPSHLDDZ256rmbik, TB_BCAST_D},
+  {X86::VPSHLDDZrrik, X86::VPSHLDDZrmbik, TB_BCAST_D},
+  {X86::VPSHLDQZ128rrik, X86::VPSHLDQZ128rmbik, TB_BCAST_Q},
+  {X86::VPSHLDQZ256rrik, X86::VPSHLDQZ256rmbik, TB_BCAST_Q},
+  {X86::VPSHLDQZrrik, X86::VPSHLDQZrmbik, TB_BCAST_Q},
+  {X86::VPSHLDVDZ128rk, X86::VPSHLDVDZ128mbk, TB_BCAST_D},
+  {X86::VPSHLDVDZ128rkz, X86::VPSHLDVDZ128mbkz, TB_BCAST_D},
+  {X86::VPSHLDVDZ256rk, X86::VPSHLDVDZ256mbk, TB_BCAST_D},
+  {X86::VPSHLDVDZ256rkz, X86::VPSHLDVDZ256mbkz, TB_BCAST_D},
+  {X86::VPSHLDVDZrk, X86::VPSHLDVDZmbk, TB_BCAST_D},
+  {X86::VPSHLDVDZrkz, X86::VPSHLDVDZmbkz, TB_BCAST_D},
+  {X86::VPSHLDVQZ128rk, X86::VPSHLDVQZ128mbk, TB_BCAST_Q},
+  {X86::VPSHLDVQZ128rkz, X86::VPSHLDVQZ128mbkz, TB_BCAST_Q},
+  {X86::VPSHLDVQZ256rk, X86::VPSHLDVQZ256mbk, TB_BCAST_Q},
+  {X86::VPSHLDVQZ256rkz, X86::VPSHLDVQZ256mbkz, TB_BCAST_Q},
+  {X86::VPSHLDVQZrk, X86::VPSHLDVQZmbk, TB_BCAST_Q},
+  {X86::VPSHLDVQZrkz, X86::VPSHLDVQZmbkz, TB_BCAST_Q},
+  {X86::VPSHRDDZ128rrik, X86::VPSHRDDZ128rmbik, TB_BCAST_D},
+  {X86::VPSHRDDZ256rrik, X86::VPSHRDDZ256rmbik, TB_BCAST_D},
+  {X86::VPSHRDDZrrik, X86::VPSHRDDZrmbik, TB_BCAST_D},
+  {X86::VPSHRDQZ128rrik, X86::VPSHRDQZ128rmbik, TB_BCAST_Q},
+  {X86::VPSHRDQZ256rrik, X86::VPSHRDQZ256rmbik, TB_BCAST_Q},
+  {X86::VPSHRDQZrrik, X86::VPSHRDQZrmbik, TB_BCAST_Q},
+  {X86::VPSHRDVDZ128rk, X86::VPSHRDVDZ128mbk, TB_BCAST_D},
+  {X86::VPSHRDVDZ128rkz, X86::VPSHRDVDZ128mbkz, TB_BCAST_D},
+  {X86::VPSHRDVDZ256rk, X86::VPSHRDVDZ256mbk, TB_BCAST_D},
+  {X86::VPSHRDVDZ256rkz, X86::VPSHRDVDZ256mbkz, TB_BCAST_D},
+  {X86::VPSHRDVDZrk, X86::VPSHRDVDZmbk, TB_BCAST_D},
+  {X86::VPSHRDVDZrkz, X86::VPSHRDVDZmbkz, TB_BCAST_D},
+  {X86::VPSHRDVQZ128rk, X86::VPSHRDVQZ128mbk, TB_BCAST_Q},
+  {X86::VPSHRDVQZ128rkz, X86::VPSHRDVQZ128mbkz, TB_BCAST_Q},
+  {X86::VPSHRDVQZ256rk, X86::VPSHRDVQZ256mbk, TB_BCAST_Q},
+  {X86::VPSHRDVQZ256rkz, X86::VPSHRDVQZ256mbkz, TB_BCAST_Q},
+  {X86::VPSHRDVQZrk, X86::VPSHRDVQZmbk, TB_BCAST_Q},
+  {X86::VPSHRDVQZrkz, X86::VPSHRDVQZmbkz, TB_BCAST_Q},
+  {X86::VPSLLVDZ128rrk, X86::VPSLLVDZ128rmbk, TB_BCAST_D},
+  {X86::VPSLLVDZ256rrk, X86::VPSLLVDZ256rmbk, TB_BCAST_D},
+  {X86::VPSLLVDZrrk, X86::VPSLLVDZrmbk, TB_BCAST_D},
+  {X86::VPSLLVQZ128rrk, X86::VPSLLVQZ128rmbk, TB_BCAST_Q},
+  {X86::VPSLLVQZ256rrk, X86::VPSLLVQZ256rmbk, TB_BCAST_Q},
+  {X86::VPSLLVQZrrk, X86::VPSLLVQZrmbk, TB_BCAST_Q},
+  {X86::VPSRAVDZ128rrk, X86::VPSRAVDZ128rmbk, TB_BCAST_D},
+  {X86::VPSRAVDZ256rrk, X86::VPSRAVDZ256rmbk, TB_BCAST_D},
+  {X86::VPSRAVDZrrk, X86::VPSRAVDZrmbk, TB_BCAST_D},
+  {X86::VPSRAVQZ128rrk, X86::VPSRAVQZ128rmbk, TB_BCAST_Q},
+  {X86::VPSRAVQZ256rrk, X86::VPSRAVQZ256rmbk, TB_BCAST_Q},
+  {X86::VPSRAVQZrrk, X86::VPSRAVQZrmbk, TB_BCAST_Q},
+  {X86::VPSRLVDZ128rrk, X86::VPSRLVDZ128rmbk, TB_BCAST_D},
+  {X86::VPSRLVDZ256rrk, X86::VPSRLVDZ256rmbk, TB_BCAST_D},
+  {X86::VPSRLVDZrrk, X86::VPSRLVDZrmbk, TB_BCAST_D},
+  {X86::VPSRLVQZ128rrk, X86::VPSRLVQZ128rmbk, TB_BCAST_Q},
+  {X86::VPSRLVQZ256rrk, X86::VPSRLVQZ256rmbk, TB_BCAST_Q},
+  {X86::VPSRLVQZrrk, X86::VPSRLVQZrmbk, TB_BCAST_Q},
+  {X86::VPSUBDZ128rrk, X86::VPSUBDZ128rmbk, TB_BCAST_D},
+  {X86::VPSUBDZ256rrk, X86::VPSUBDZ256rmbk, TB_BCAST_D},
+  {X86::VPSUBDZrrk, X86::VPSUBDZrmbk, TB_BCAST_D},
+  {X86::VPSUBQZ128rrk, X86::VPSUBQZ128rmbk, TB_BCAST_Q},
+  {X86::VPSUBQZ256rrk, X86::VPSUBQZ256rmbk, TB_BCAST_Q},
+  {X86::VPSUBQZrrk, X86::VPSUBQZrmbk, TB_BCAST_Q},
+  {X86::VPTERNLOGDZ128rrik, X86::VPTERNLOGDZ128rmbik, TB_BCAST_D},
+  {X86::VPTERNLOGDZ128rrikz, X86::VPTERNLOGDZ128rmbikz, TB_BCAST_D},
+  {X86::VPTERNLOGDZ256rrik, X86::VPTERNLOGDZ256rmbik, TB_BCAST_D},
+  {X86::VPTERNLOGDZ256rrikz, X86::VPTERNLOGDZ256rmbikz, TB_BCAST_D},
+  {X86::VPTERNLOGDZrrik, X86::VPTERNLOGDZrmbik, TB_BCAST_D},
+  {X86::VPTERNLOGDZrrikz, X86::VPTERNLOGDZrmbikz, TB_BCAST_D},
+  {X86::VPTERNLOGQZ128rrik, X86::VPTERNLOGQZ128rmbik, TB_BCAST_Q},
+  {X86::VPTERNLOGQZ128rrikz, X86::VPTERNLOGQZ128rmbikz, TB_BCAST_Q},
+  {X86::VPTERNLOGQZ256rrik, X86::VPTERNLOGQZ256rmbik, TB_BCAST_Q},
+  {X86::VPTERNLOGQZ256rrikz, X86::VPTERNLOGQZ256rmbikz, TB_BCAST_Q},
+  {X86::VPTERNLOGQZrrik, X86::VPTERNLOGQZrmbik, TB_BCAST_Q},
+  {X86::VPTERNLOGQZrrikz, X86::VPTERNLOGQZrmbikz, TB_BCAST_Q},
+  {X86::VPUNPCKHDQZ128rrk, X86::VPUNPCKHDQZ128rmbk, TB_BCAST_Q},
+  {X86::VPUNPCKHDQZ256rrk, X86::VPUNPCKHDQZ256rmbk, TB_BCAST_Q},
+  {X86::VPUNPCKHDQZrrk, X86::VPUNPCKHDQZrmbk, TB_BCAST_Q},
+  {X86::VPUNPCKHQDQZ128rrk, X86::VPUNPCKHQDQZ128rmbk, TB_BCAST_Q},
+  {X86::VPUNPCKHQDQZ256rrk, X86::VPUNPCKHQDQZ256rmbk, TB_BCAST_Q},
+  {X86::VPUNPCKHQDQZrrk, X86::VPUNPCKHQDQZrmbk, TB_BCAST_Q},
+  {X86::VPUNPCKLDQZ128rrk, X86::VPUNPCKLDQZ128rmbk, TB_BCAST_Q},
+  {X86::VPUNPCKLDQZ256rrk, X86::VPUNPCKLDQZ256rmbk, TB_BCAST_Q},
+  {X86::VPUNPCKLDQZrrk, X86::VPUNPCKLDQZrmbk, TB_BCAST_Q},
+  {X86::VPUNPCKLQDQZ128rrk, X86::VPUNPCKLQDQZ128rmbk, TB_BCAST_Q},
+  {X86::VPUNPCKLQDQZ256rrk, X86::VPUNPCKLQDQZ256rmbk, TB_BCAST_Q},
+  {X86::VPUNPCKLQDQZrrk, X86::VPUNPCKLQDQZrmbk, TB_BCAST_Q},
+  {X86::VPXORDZ128rrk, X86::VPXORDZ128rmbk, TB_BCAST_D},
+  {X86::VPXORDZ256rrk, X86::VPXORDZ256rmbk, TB_BCAST_D},
+  {X86::VPXORDZrrk, X86::VPXORDZrmbk, TB_BCAST_D},
+  {X86::VPXORQZ128rrk, X86::VPXORQZ128rmbk, TB_BCAST_Q},
+  {X86::VPXORQZ256rrk, X86::VPXORQZ256rmbk, TB_BCAST_Q},
+  {X86::VPXORQZrrk, X86::VPXORQZrmbk, TB_BCAST_Q},
+  {X86::VRANGEPDZ128rrik, X86::VRANGEPDZ128rmbik, TB_BCAST_SD},
+  {X86::VRANGEPDZ256rrik, X86::VRANGEPDZ256rmbik, TB_BCAST_SD},
+  {X86::VRANGEPDZrrik, X86::VRANGEPDZrmbik, TB_BCAST_SD},
+  {X86::VRANGEPSZ128rrik, X86::VRANGEPSZ128rmbik, TB_BCAST_SS},
+  {X86::VRANGEPSZ256rrik, X86::VRANGEPSZ256rmbik, TB_BCAST_SS},
+  {X86::VRANGEPSZrrik, X86::VRANGEPSZrmbik, TB_BCAST_SS},
+  {X86::VSCALEFPDZ128rrk, X86::VSCALEFPDZ128rmbk, TB_BCAST_SD},
+  {X86::VSCALEFPDZ256rrk, X86::VSCALEFPDZ256rmbk, TB_BCAST_SD},
+  {X86::VSCALEFPDZrrk, X86::VSCALEFPDZrmbk, TB_BCAST_SD},
+  {X86::VSCALEFPHZ128rrk, X86::VSCALEFPHZ128rmbk, TB_BCAST_SH},
+  {X86::VSCALEFPHZ256rrk, X86::VSCALEFPHZ256rmbk, TB_BCAST_SH},
+  {X86::VSCALEFPHZrrk, X86::VSCALEFPHZrmbk, TB_BCAST_SH},
+  {X86::VSCALEFPSZ128rrk, X86::VSCALEFPSZ128rmbk, TB_BCAST_SS},
+  {X86::VSCALEFPSZ256rrk, X86::VSCALEFPSZ256rmbk, TB_BCAST_SS},
+  {X86::VSCALEFPSZrrk, X86::VSCALEFPSZrmbk, TB_BCAST_SS},
+  {X86::VSHUFF32X4Z256rrik, X86::VSHUFF32X4Z256rmbik, TB_BCAST_SS},
+  {X86::VSHUFF32X4Zrrik, X86::VSHUFF32X4Zrmbik, TB_BCAST_SS},
+  {X86::VSHUFF64X2Z256rrik, X86::VSHUFF64X2Z256rmbik, TB_BCAST_SD},
+  {X86::VSHUFF64X2Zrrik, X86::VSHUFF64X2Zrmbik, TB_BCAST_SD},
+  {X86::VSHUFI32X4Z256rrik, X86::VSHUFI32X4Z256rmbik, TB_BCAST_D},
+  {X86::VSHUFI32X4Zrrik, X86::VSHUFI32X4Zrmbik, TB_BCAST_D},
+  {X86::VSHUFI64X2Z256rrik, X86::VSHUFI64X2Z256rmbik, TB_BCAST_Q},
+  {X86::VSHUFI64X2Zrrik, X86::VSHUFI64X2Zrmbik, TB_BCAST_Q},
+  {X86::VSHUFPDZ128rrik, X86::VSHUFPDZ128rmbik, TB_BCAST_SD},
+  {X86::VSHUFPDZ256rrik, X86::VSHUFPDZ256rmbik, TB_BCAST_SD},
+  {X86::VSHUFPDZrrik, X86::VSHUFPDZrmbik, TB_BCAST_SD},
+  {X86::VSHUFPSZ128rrik, X86::VSHUFPSZ128rmbik, TB_BCAST_SS},
+  {X86::VSHUFPSZ256rrik, X86::VSHUFPSZ256rmbik, TB_BCAST_SS},
+  {X86::VSHUFPSZrrik, X86::VSHUFPSZrmbik, TB_BCAST_SS},
+  {X86::VSUBPDZ128rrk, X86::VSUBPDZ128rmbk, TB_BCAST_SD},
+  {X86::VSUBPDZ256rrk, X86::VSUBPDZ256rmbk, TB_BCAST_SD},
+  {X86::VSUBPDZrrk, X86::VSUBPDZrmbk, TB_BCAST_SD},
+  {X86::VSUBPHZ128rrk, X86::VSUBPHZ128rmbk, TB_BCAST_SH},
+  {X86::VSUBPHZ256rrk, X86::VSUBPHZ256rmbk, TB_BCAST_SH},
+  {X86::VSUBPHZrrk, X86::VSUBPHZrmbk, TB_BCAST_SH},
+  {X86::VSUBPSZ128rrk, X86::VSUBPSZ128rmbk, TB_BCAST_SS},
+  {X86::VSUBPSZ256rrk, X86::VSUBPSZ256rmbk, TB_BCAST_SS},
+  {X86::VSUBPSZrrk, X86::VSUBPSZrmbk, TB_BCAST_SS},
+  {X86::VUNPCKHPDZ128rrk, X86::VUNPCKHPDZ128rmbk, TB_BCAST_SD},
+  {X86::VUNPCKHPDZ256rrk, X86::VUNPCKHPDZ256rmbk, TB_BCAST_SD},
+  {X86::VUNPCKHPDZrrk, X86::VUNPCKHPDZrmbk, TB_BCAST_SD},
+  {X86::VUNPCKHPSZ128rrk, X86::VUNPCKHPSZ128rmbk, TB_BCAST_SS},
+  {X86::VUNPCKHPSZ256rrk, X86::VUNPCKHPSZ256rmbk, TB_BCAST_SS},
+  {X86::VUNPCKHPSZrrk, X86::VUNPCKHPSZrmbk, TB_BCAST_SS},
+  {X86::VUNPCKLPDZ128rrk, X86::VUNPCKLPDZ128rmbk, TB_BCAST_SD},
+  {X86::VUNPCKLPDZ256rrk, X86::VUNPCKLPDZ256rmbk, TB_BCAST_SD},
+  {X86::VUNPCKLPDZrrk, X86::VUNPCKLPDZrmbk, TB_BCAST_SD},
+  {X86::VUNPCKLPSZ128rrk, X86::VUNPCKLPSZ128rmbk, TB_BCAST_SS},
+  {X86::VUNPCKLPSZ256rrk, X86::VUNPCKLPSZ256rmbk, TB_BCAST_SS},
+  {X86::VUNPCKLPSZrrk, X86::VUNPCKLPSZrmbk, TB_BCAST_SS},
+  {X86::VXORPDZ128rrk, X86::VXORPDZ128rmbk, TB_BCAST_SD},
+  {X86::VXORPDZ256rrk, X86::VXORPDZ256rmbk, TB_BCAST_SD},
+  {X86::VXORPDZrrk, X86::VXORPDZrmbk, TB_BCAST_SD},
+  {X86::VXORPSZ128rrk, X86::VXORPSZ128rmbk, TB_BCAST_SS},
+  {X86::VXORPSZ256rrk, X86::VXORPSZ256rmbk, TB_BCAST_SS},
+  {X86::VXORPSZrrk, X86::VXORPSZrmbk, TB_BCAST_SS},
+};
+

>From 56fd306e83cfad6f1495549eabf3b4a773f64186 Mon Sep 17 00:00:00 2001
From: Shengchen Kan <shengchen.kan at intel.com>
Date: Thu, 30 Nov 2023 19:25:18 +0800
Subject: [PATCH 3/3] Use TB_BCAST_SS for complex of FP16

---
 llvm/test/TableGen/x86-fold-tables.inc       | 108 +++++++++----------
 llvm/utils/TableGen/X86FoldTablesEmitter.cpp |   6 +-
 2 files changed, 58 insertions(+), 56 deletions(-)

diff --git a/llvm/test/TableGen/x86-fold-tables.inc b/llvm/test/TableGen/x86-fold-tables.inc
index 4e33b462234b3a8..0d492301a4a3351 100644
--- a/llvm/test/TableGen/x86-fold-tables.inc
+++ b/llvm/test/TableGen/x86-fold-tables.inc
@@ -6494,12 +6494,12 @@ static const X86FoldTableEntry BroadcastTable2[] = {
   {X86::VDIVPSZrr, X86::VDIVPSZrmb, TB_BCAST_SS},
   {X86::VEXP2PDZrkz, X86::VEXP2PDZmbkz, TB_BCAST_SD},
   {X86::VEXP2PSZrkz, X86::VEXP2PSZmbkz, TB_BCAST_SS},
-  {X86::VFCMULCPHZ128rr, X86::VFCMULCPHZ128rmb, TB_BCAST_SH},
-  {X86::VFCMULCPHZ256rr, X86::VFCMULCPHZ256rmb, TB_BCAST_SH},
-  {X86::VFCMULCPHZrr, X86::VFCMULCPHZrmb, TB_BCAST_SH},
-  {X86::VFMULCPHZ128rr, X86::VFMULCPHZ128rmb, TB_BCAST_SH},
-  {X86::VFMULCPHZ256rr, X86::VFMULCPHZ256rmb, TB_BCAST_SH},
-  {X86::VFMULCPHZrr, X86::VFMULCPHZrmb, TB_BCAST_SH},
+  {X86::VFCMULCPHZ128rr, X86::VFCMULCPHZ128rmb, TB_BCAST_SS},
+  {X86::VFCMULCPHZ256rr, X86::VFCMULCPHZ256rmb, TB_BCAST_SS},
+  {X86::VFCMULCPHZrr, X86::VFCMULCPHZrmb, TB_BCAST_SS},
+  {X86::VFMULCPHZ128rr, X86::VFMULCPHZ128rmb, TB_BCAST_SS},
+  {X86::VFMULCPHZ256rr, X86::VFMULCPHZ256rmb, TB_BCAST_SS},
+  {X86::VFMULCPHZrr, X86::VFMULCPHZrmb, TB_BCAST_SS},
   {X86::VFPCLASSPDZ128rrk, X86::VFPCLASSPDZ128rmbk, TB_BCAST_SD},
   {X86::VFPCLASSPDZ256rrk, X86::VFPCLASSPDZ256rmbk, TB_BCAST_SD},
   {X86::VFPCLASSPDZrrk, X86::VFPCLASSPDZrmbk, TB_BCAST_SD},
@@ -6536,9 +6536,9 @@ static const X86FoldTableEntry BroadcastTable2[] = {
   {X86::VMAXCPDZ128rr, X86::VMAXCPDZ128rmb, TB_BCAST_SD},
   {X86::VMAXCPDZ256rr, X86::VMAXCPDZ256rmb, TB_BCAST_SD},
   {X86::VMAXCPDZrr, X86::VMAXCPDZrmb, TB_BCAST_SD},
-  {X86::VMAXCPHZ128rr, X86::VMAXCPHZ128rmb, TB_BCAST_SH},
-  {X86::VMAXCPHZ256rr, X86::VMAXCPHZ256rmb, TB_BCAST_SH},
-  {X86::VMAXCPHZrr, X86::VMAXCPHZrmb, TB_BCAST_SH},
+  {X86::VMAXCPHZ128rr, X86::VMAXCPHZ128rmb, TB_BCAST_SS},
+  {X86::VMAXCPHZ256rr, X86::VMAXCPHZ256rmb, TB_BCAST_SS},
+  {X86::VMAXCPHZrr, X86::VMAXCPHZrmb, TB_BCAST_SS},
   {X86::VMAXCPSZ128rr, X86::VMAXCPSZ128rmb, TB_BCAST_SS},
   {X86::VMAXCPSZ256rr, X86::VMAXCPSZ256rmb, TB_BCAST_SS},
   {X86::VMAXCPSZrr, X86::VMAXCPSZrmb, TB_BCAST_SS},
@@ -6554,9 +6554,9 @@ static const X86FoldTableEntry BroadcastTable2[] = {
   {X86::VMINCPDZ128rr, X86::VMINCPDZ128rmb, TB_BCAST_SD},
   {X86::VMINCPDZ256rr, X86::VMINCPDZ256rmb, TB_BCAST_SD},
   {X86::VMINCPDZrr, X86::VMINCPDZrmb, TB_BCAST_SD},
-  {X86::VMINCPHZ128rr, X86::VMINCPHZ128rmb, TB_BCAST_SH},
-  {X86::VMINCPHZ256rr, X86::VMINCPHZ256rmb, TB_BCAST_SH},
-  {X86::VMINCPHZrr, X86::VMINCPHZrmb, TB_BCAST_SH},
+  {X86::VMINCPHZ128rr, X86::VMINCPHZ128rmb, TB_BCAST_SS},
+  {X86::VMINCPHZ256rr, X86::VMINCPHZ256rmb, TB_BCAST_SS},
+  {X86::VMINCPHZrr, X86::VMINCPHZrmb, TB_BCAST_SS},
   {X86::VMINCPSZ128rr, X86::VMINCPSZ128rmb, TB_BCAST_SS},
   {X86::VMINCPSZ256rr, X86::VMINCPSZ256rmb, TB_BCAST_SS},
   {X86::VMINCPSZrr, X86::VMINCPSZrmb, TB_BCAST_SS},
@@ -7162,12 +7162,12 @@ static const X86FoldTableEntry BroadcastTable3[] = {
   {X86::VDPBF16PSZr, X86::VDPBF16PSZmb, TB_BCAST_SS},
   {X86::VEXP2PDZrk, X86::VEXP2PDZmbk, TB_BCAST_SD},
   {X86::VEXP2PSZrk, X86::VEXP2PSZmbk, TB_BCAST_SS},
-  {X86::VFCMADDCPHZ128r, X86::VFCMADDCPHZ128mb, TB_BCAST_SH},
-  {X86::VFCMADDCPHZ256r, X86::VFCMADDCPHZ256mb, TB_BCAST_SH},
-  {X86::VFCMADDCPHZr, X86::VFCMADDCPHZmb, TB_BCAST_SH},
-  {X86::VFCMULCPHZ128rrkz, X86::VFCMULCPHZ128rmbkz, TB_BCAST_SH},
-  {X86::VFCMULCPHZ256rrkz, X86::VFCMULCPHZ256rmbkz, TB_BCAST_SH},
-  {X86::VFCMULCPHZrrkz, X86::VFCMULCPHZrmbkz, TB_BCAST_SH},
+  {X86::VFCMADDCPHZ128r, X86::VFCMADDCPHZ128mb, TB_BCAST_SS},
+  {X86::VFCMADDCPHZ256r, X86::VFCMADDCPHZ256mb, TB_BCAST_SS},
+  {X86::VFCMADDCPHZr, X86::VFCMADDCPHZmb, TB_BCAST_SS},
+  {X86::VFCMULCPHZ128rrkz, X86::VFCMULCPHZ128rmbkz, TB_BCAST_SS},
+  {X86::VFCMULCPHZ256rrkz, X86::VFCMULCPHZ256rmbkz, TB_BCAST_SS},
+  {X86::VFCMULCPHZrrkz, X86::VFCMULCPHZrmbkz, TB_BCAST_SS},
   {X86::VFIXUPIMMPDZ128rri, X86::VFIXUPIMMPDZ128rmbi, TB_BCAST_SD},
   {X86::VFIXUPIMMPDZ256rri, X86::VFIXUPIMMPDZ256rmbi, TB_BCAST_SD},
   {X86::VFIXUPIMMPDZrri, X86::VFIXUPIMMPDZrmbi, TB_BCAST_SD},
@@ -7201,9 +7201,9 @@ static const X86FoldTableEntry BroadcastTable3[] = {
   {X86::VFMADD231PSZ128r, X86::VFMADD231PSZ128mb, TB_BCAST_SS},
   {X86::VFMADD231PSZ256r, X86::VFMADD231PSZ256mb, TB_BCAST_SS},
   {X86::VFMADD231PSZr, X86::VFMADD231PSZmb, TB_BCAST_SS},
-  {X86::VFMADDCPHZ128r, X86::VFMADDCPHZ128mb, TB_BCAST_SH},
-  {X86::VFMADDCPHZ256r, X86::VFMADDCPHZ256mb, TB_BCAST_SH},
-  {X86::VFMADDCPHZr, X86::VFMADDCPHZmb, TB_BCAST_SH},
+  {X86::VFMADDCPHZ128r, X86::VFMADDCPHZ128mb, TB_BCAST_SS},
+  {X86::VFMADDCPHZ256r, X86::VFMADDCPHZ256mb, TB_BCAST_SS},
+  {X86::VFMADDCPHZr, X86::VFMADDCPHZmb, TB_BCAST_SS},
   {X86::VFMADDSUB132PDZ128r, X86::VFMADDSUB132PDZ128mb, TB_BCAST_SD},
   {X86::VFMADDSUB132PDZ256r, X86::VFMADDSUB132PDZ256mb, TB_BCAST_SD},
   {X86::VFMADDSUB132PDZr, X86::VFMADDSUB132PDZmb, TB_BCAST_SD},
@@ -7285,9 +7285,9 @@ static const X86FoldTableEntry BroadcastTable3[] = {
   {X86::VFMSUBADD231PSZ128r, X86::VFMSUBADD231PSZ128mb, TB_BCAST_SS},
   {X86::VFMSUBADD231PSZ256r, X86::VFMSUBADD231PSZ256mb, TB_BCAST_SS},
   {X86::VFMSUBADD231PSZr, X86::VFMSUBADD231PSZmb, TB_BCAST_SS},
-  {X86::VFMULCPHZ128rrkz, X86::VFMULCPHZ128rmbkz, TB_BCAST_SH},
-  {X86::VFMULCPHZ256rrkz, X86::VFMULCPHZ256rmbkz, TB_BCAST_SH},
-  {X86::VFMULCPHZrrkz, X86::VFMULCPHZrmbkz, TB_BCAST_SH},
+  {X86::VFMULCPHZ128rrkz, X86::VFMULCPHZ128rmbkz, TB_BCAST_SS},
+  {X86::VFMULCPHZ256rrkz, X86::VFMULCPHZ256rmbkz, TB_BCAST_SS},
+  {X86::VFMULCPHZrrkz, X86::VFMULCPHZrmbkz, TB_BCAST_SS},
   {X86::VFNMADD132PDZ128r, X86::VFNMADD132PDZ128mb, TB_BCAST_SD},
   {X86::VFNMADD132PDZ256r, X86::VFNMADD132PDZ256mb, TB_BCAST_SD},
   {X86::VFNMADD132PDZr, X86::VFNMADD132PDZmb, TB_BCAST_SD},
@@ -7369,9 +7369,9 @@ static const X86FoldTableEntry BroadcastTable3[] = {
   {X86::VMAXCPDZ128rrkz, X86::VMAXCPDZ128rmbkz, TB_BCAST_SD},
   {X86::VMAXCPDZ256rrkz, X86::VMAXCPDZ256rmbkz, TB_BCAST_SD},
   {X86::VMAXCPDZrrkz, X86::VMAXCPDZrmbkz, TB_BCAST_SD},
-  {X86::VMAXCPHZ128rrkz, X86::VMAXCPHZ128rmbkz, TB_BCAST_SH},
-  {X86::VMAXCPHZ256rrkz, X86::VMAXCPHZ256rmbkz, TB_BCAST_SH},
-  {X86::VMAXCPHZrrkz, X86::VMAXCPHZrmbkz, TB_BCAST_SH},
+  {X86::VMAXCPHZ128rrkz, X86::VMAXCPHZ128rmbkz, TB_BCAST_SS},
+  {X86::VMAXCPHZ256rrkz, X86::VMAXCPHZ256rmbkz, TB_BCAST_SS},
+  {X86::VMAXCPHZrrkz, X86::VMAXCPHZrmbkz, TB_BCAST_SS},
   {X86::VMAXCPSZ128rrkz, X86::VMAXCPSZ128rmbkz, TB_BCAST_SS},
   {X86::VMAXCPSZ256rrkz, X86::VMAXCPSZ256rmbkz, TB_BCAST_SS},
   {X86::VMAXCPSZrrkz, X86::VMAXCPSZrmbkz, TB_BCAST_SS},
@@ -7387,9 +7387,9 @@ static const X86FoldTableEntry BroadcastTable3[] = {
   {X86::VMINCPDZ128rrkz, X86::VMINCPDZ128rmbkz, TB_BCAST_SD},
   {X86::VMINCPDZ256rrkz, X86::VMINCPDZ256rmbkz, TB_BCAST_SD},
   {X86::VMINCPDZrrkz, X86::VMINCPDZrmbkz, TB_BCAST_SD},
-  {X86::VMINCPHZ128rrkz, X86::VMINCPHZ128rmbkz, TB_BCAST_SH},
-  {X86::VMINCPHZ256rrkz, X86::VMINCPHZ256rmbkz, TB_BCAST_SH},
-  {X86::VMINCPHZrrkz, X86::VMINCPHZrmbkz, TB_BCAST_SH},
+  {X86::VMINCPHZ128rrkz, X86::VMINCPHZ128rmbkz, TB_BCAST_SS},
+  {X86::VMINCPHZ256rrkz, X86::VMINCPHZ256rmbkz, TB_BCAST_SS},
+  {X86::VMINCPHZrrkz, X86::VMINCPHZrmbkz, TB_BCAST_SS},
   {X86::VMINCPSZ128rrkz, X86::VMINCPSZ128rmbkz, TB_BCAST_SS},
   {X86::VMINCPSZ256rrkz, X86::VMINCPSZ256rmbkz, TB_BCAST_SS},
   {X86::VMINCPSZrrkz, X86::VMINCPSZrmbkz, TB_BCAST_SS},
@@ -7888,15 +7888,15 @@ static const X86FoldTableEntry BroadcastTable4[] = {
   {X86::VDPBF16PSZ256rkz, X86::VDPBF16PSZ256mbkz, TB_BCAST_SS},
   {X86::VDPBF16PSZrk, X86::VDPBF16PSZmbk, TB_BCAST_SS},
   {X86::VDPBF16PSZrkz, X86::VDPBF16PSZmbkz, TB_BCAST_SS},
-  {X86::VFCMADDCPHZ128rk, X86::VFCMADDCPHZ128mbk, TB_BCAST_SH},
-  {X86::VFCMADDCPHZ128rkz, X86::VFCMADDCPHZ128mbkz, TB_BCAST_SH},
-  {X86::VFCMADDCPHZ256rk, X86::VFCMADDCPHZ256mbk, TB_BCAST_SH},
-  {X86::VFCMADDCPHZ256rkz, X86::VFCMADDCPHZ256mbkz, TB_BCAST_SH},
-  {X86::VFCMADDCPHZrk, X86::VFCMADDCPHZmbk, TB_BCAST_SH},
-  {X86::VFCMADDCPHZrkz, X86::VFCMADDCPHZmbkz, TB_BCAST_SH},
-  {X86::VFCMULCPHZ128rrk, X86::VFCMULCPHZ128rmbk, TB_BCAST_SH},
-  {X86::VFCMULCPHZ256rrk, X86::VFCMULCPHZ256rmbk, TB_BCAST_SH},
-  {X86::VFCMULCPHZrrk, X86::VFCMULCPHZrmbk, TB_BCAST_SH},
+  {X86::VFCMADDCPHZ128rk, X86::VFCMADDCPHZ128mbk, TB_BCAST_SS},
+  {X86::VFCMADDCPHZ128rkz, X86::VFCMADDCPHZ128mbkz, TB_BCAST_SS},
+  {X86::VFCMADDCPHZ256rk, X86::VFCMADDCPHZ256mbk, TB_BCAST_SS},
+  {X86::VFCMADDCPHZ256rkz, X86::VFCMADDCPHZ256mbkz, TB_BCAST_SS},
+  {X86::VFCMADDCPHZrk, X86::VFCMADDCPHZmbk, TB_BCAST_SS},
+  {X86::VFCMADDCPHZrkz, X86::VFCMADDCPHZmbkz, TB_BCAST_SS},
+  {X86::VFCMULCPHZ128rrk, X86::VFCMULCPHZ128rmbk, TB_BCAST_SS},
+  {X86::VFCMULCPHZ256rrk, X86::VFCMULCPHZ256rmbk, TB_BCAST_SS},
+  {X86::VFCMULCPHZrrk, X86::VFCMULCPHZrmbk, TB_BCAST_SS},
   {X86::VFIXUPIMMPDZ128rrik, X86::VFIXUPIMMPDZ128rmbik, TB_BCAST_SD},
   {X86::VFIXUPIMMPDZ128rrikz, X86::VFIXUPIMMPDZ128rmbikz, TB_BCAST_SD},
   {X86::VFIXUPIMMPDZ256rrik, X86::VFIXUPIMMPDZ256rmbik, TB_BCAST_SD},
@@ -7963,12 +7963,12 @@ static const X86FoldTableEntry BroadcastTable4[] = {
   {X86::VFMADD231PSZ256rkz, X86::VFMADD231PSZ256mbkz, TB_BCAST_SS},
   {X86::VFMADD231PSZrk, X86::VFMADD231PSZmbk, TB_BCAST_SS},
   {X86::VFMADD231PSZrkz, X86::VFMADD231PSZmbkz, TB_BCAST_SS},
-  {X86::VFMADDCPHZ128rk, X86::VFMADDCPHZ128mbk, TB_BCAST_SH},
-  {X86::VFMADDCPHZ128rkz, X86::VFMADDCPHZ128mbkz, TB_BCAST_SH},
-  {X86::VFMADDCPHZ256rk, X86::VFMADDCPHZ256mbk, TB_BCAST_SH},
-  {X86::VFMADDCPHZ256rkz, X86::VFMADDCPHZ256mbkz, TB_BCAST_SH},
-  {X86::VFMADDCPHZrk, X86::VFMADDCPHZmbk, TB_BCAST_SH},
-  {X86::VFMADDCPHZrkz, X86::VFMADDCPHZmbkz, TB_BCAST_SH},
+  {X86::VFMADDCPHZ128rk, X86::VFMADDCPHZ128mbk, TB_BCAST_SS},
+  {X86::VFMADDCPHZ128rkz, X86::VFMADDCPHZ128mbkz, TB_BCAST_SS},
+  {X86::VFMADDCPHZ256rk, X86::VFMADDCPHZ256mbk, TB_BCAST_SS},
+  {X86::VFMADDCPHZ256rkz, X86::VFMADDCPHZ256mbkz, TB_BCAST_SS},
+  {X86::VFMADDCPHZrk, X86::VFMADDCPHZmbk, TB_BCAST_SS},
+  {X86::VFMADDCPHZrkz, X86::VFMADDCPHZmbkz, TB_BCAST_SS},
   {X86::VFMADDSUB132PDZ128rk, X86::VFMADDSUB132PDZ128mbk, TB_BCAST_SD},
   {X86::VFMADDSUB132PDZ128rkz, X86::VFMADDSUB132PDZ128mbkz, TB_BCAST_SD},
   {X86::VFMADDSUB132PDZ256rk, X86::VFMADDSUB132PDZ256mbk, TB_BCAST_SD},
@@ -8131,9 +8131,9 @@ static const X86FoldTableEntry BroadcastTable4[] = {
   {X86::VFMSUBADD231PSZ256rkz, X86::VFMSUBADD231PSZ256mbkz, TB_BCAST_SS},
   {X86::VFMSUBADD231PSZrk, X86::VFMSUBADD231PSZmbk, TB_BCAST_SS},
   {X86::VFMSUBADD231PSZrkz, X86::VFMSUBADD231PSZmbkz, TB_BCAST_SS},
-  {X86::VFMULCPHZ128rrk, X86::VFMULCPHZ128rmbk, TB_BCAST_SH},
-  {X86::VFMULCPHZ256rrk, X86::VFMULCPHZ256rmbk, TB_BCAST_SH},
-  {X86::VFMULCPHZrrk, X86::VFMULCPHZrmbk, TB_BCAST_SH},
+  {X86::VFMULCPHZ128rrk, X86::VFMULCPHZ128rmbk, TB_BCAST_SS},
+  {X86::VFMULCPHZ256rrk, X86::VFMULCPHZ256rmbk, TB_BCAST_SS},
+  {X86::VFMULCPHZrrk, X86::VFMULCPHZrmbk, TB_BCAST_SS},
   {X86::VFNMADD132PDZ128rk, X86::VFNMADD132PDZ128mbk, TB_BCAST_SD},
   {X86::VFNMADD132PDZ128rkz, X86::VFNMADD132PDZ128mbkz, TB_BCAST_SD},
   {X86::VFNMADD132PDZ256rk, X86::VFNMADD132PDZ256mbk, TB_BCAST_SD},
@@ -8251,9 +8251,9 @@ static const X86FoldTableEntry BroadcastTable4[] = {
   {X86::VMAXCPDZ128rrk, X86::VMAXCPDZ128rmbk, TB_BCAST_SD},
   {X86::VMAXCPDZ256rrk, X86::VMAXCPDZ256rmbk, TB_BCAST_SD},
   {X86::VMAXCPDZrrk, X86::VMAXCPDZrmbk, TB_BCAST_SD},
-  {X86::VMAXCPHZ128rrk, X86::VMAXCPHZ128rmbk, TB_BCAST_SH},
-  {X86::VMAXCPHZ256rrk, X86::VMAXCPHZ256rmbk, TB_BCAST_SH},
-  {X86::VMAXCPHZrrk, X86::VMAXCPHZrmbk, TB_BCAST_SH},
+  {X86::VMAXCPHZ128rrk, X86::VMAXCPHZ128rmbk, TB_BCAST_SS},
+  {X86::VMAXCPHZ256rrk, X86::VMAXCPHZ256rmbk, TB_BCAST_SS},
+  {X86::VMAXCPHZrrk, X86::VMAXCPHZrmbk, TB_BCAST_SS},
   {X86::VMAXCPSZ128rrk, X86::VMAXCPSZ128rmbk, TB_BCAST_SS},
   {X86::VMAXCPSZ256rrk, X86::VMAXCPSZ256rmbk, TB_BCAST_SS},
   {X86::VMAXCPSZrrk, X86::VMAXCPSZrmbk, TB_BCAST_SS},
@@ -8269,9 +8269,9 @@ static const X86FoldTableEntry BroadcastTable4[] = {
   {X86::VMINCPDZ128rrk, X86::VMINCPDZ128rmbk, TB_BCAST_SD},
   {X86::VMINCPDZ256rrk, X86::VMINCPDZ256rmbk, TB_BCAST_SD},
   {X86::VMINCPDZrrk, X86::VMINCPDZrmbk, TB_BCAST_SD},
-  {X86::VMINCPHZ128rrk, X86::VMINCPHZ128rmbk, TB_BCAST_SH},
-  {X86::VMINCPHZ256rrk, X86::VMINCPHZ256rmbk, TB_BCAST_SH},
-  {X86::VMINCPHZrrk, X86::VMINCPHZrmbk, TB_BCAST_SH},
+  {X86::VMINCPHZ128rrk, X86::VMINCPHZ128rmbk, TB_BCAST_SS},
+  {X86::VMINCPHZ256rrk, X86::VMINCPHZ256rmbk, TB_BCAST_SS},
+  {X86::VMINCPHZrrk, X86::VMINCPHZrmbk, TB_BCAST_SS},
   {X86::VMINCPSZ128rrk, X86::VMINCPSZ128rmbk, TB_BCAST_SS},
   {X86::VMINCPSZ256rrk, X86::VMINCPSZ256rmbk, TB_BCAST_SS},
   {X86::VMINCPSZrrk, X86::VMINCPSZrmbk, TB_BCAST_SS},
diff --git a/llvm/utils/TableGen/X86FoldTablesEmitter.cpp b/llvm/utils/TableGen/X86FoldTablesEmitter.cpp
index 63483abddde039f..ea3532c743c13f7 100644
--- a/llvm/utils/TableGen/X86FoldTablesEmitter.cpp
+++ b/llvm/utils/TableGen/X86FoldTablesEmitter.cpp
@@ -553,8 +553,10 @@ void X86FoldTablesEmitter::addBroadcastEntry(
             MemInstName.contains("Qr") || MemInstName.contains("I64")) &&
            "Unmatched names for broadcast");
     Result.BroadcastKind = X86FoldTableEntry::BCAST_Q;
-  } else if (RegInstName.contains("PS") || RegInstName.contains("F32")) {
-    assert((MemInstName.contains("PS") || MemInstName.contains("F32")) &&
+  } else if (RegInstName.contains("PS") || RegInstName.contains("F32") ||
+             RegInstName.contains("CPH")) {
+    assert((MemInstName.contains("PS") || MemInstName.contains("F32") ||
+            MemInstName.contains("CPH")) &&
            "Unmatched names for broadcast");
     Result.BroadcastKind = X86FoldTableEntry::BCAST_SS;
   } else if (RegInstName.contains("PD") || RegInstName.contains("F64")) {



More information about the llvm-commits mailing list