================
@@ -335,6 +337,31 @@ void X86InstrMappingEmitter::emitND2NonNDTable(
   printTable(Table, "X86ND2NonNDTable", "GET_X86_ND2NONND_TABLE", OS);
 }
 
+void X86InstrMappingEmitter::emitSSE2AVXTable(
+    ArrayRef<const CodeGenInstruction *> Insts, raw_ostream &OS) {
+  std::vector<Entry> Table;
+  for (const CodeGenInstruction *Inst : Insts) {
+    const Record *Rec = Inst->TheDef;
+    StringRef Name = Rec->getName();
+    if (!isInteresting(Rec))
+      continue;
+    auto *NewRec = Records.getDef(Name);
+    if (!NewRec)
+      continue;
+
+    std::string NewName = ("V" + Name).str();
+    // Handle instructions BLENDVPD, BLENDVPS ,PBLENDVB
+    if (Name.ends_with("rm0") || Name.ends_with("rr0"))
+      NewName.back() = 'r';
----------------
JaydeepChauhan14 wrote:

These code is adding below entries in to the table.

**{ X86::BLENDVPDrm0, X86::VBLENDVPDrmr },
{ X86::BLENDVPDrr0, X86::VBLENDVPDrrr },
{ X86::BLENDVPSrm0, X86::VBLENDVPSrmr },
{ X86::BLENDVPSrr0, X86::VBLENDVPSrrr },
{ X86::PBLENDVBrm0, X86::VPBLENDVBrmr },
{ X86::PBLENDVBrr0, X86::VPBLENDVBrrr },**

Problem was, for **BLENDVPDrm0** equivalent AVX entry is **VBLENDVPDrmr** . 
But **AVXRec** contain **VBLENDVPDrm0**, so ```"auto &AVXInst = 
Target.getInstruction(AVXRec);"``` unable to find 
 correct instruction. And above instructions were missed in table.
So updated last letter BLENDVPDrm0 -> BLENDVPDrmr , so it will be able to 
search correct AVX instruction VBLENDVPDrmr.

https://github.com/llvm/llvm-project/pull/96860
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to