struct ins_ops  *(*associate_instruction_ops)(struct arch *arch, const char *name);
        bool            sorted_instructions;
        bool            initialized;
+       const char      *insn_suffix;
        void            *priv;
        unsigned int    model;
        unsigned int    family;
                .init = x86__annotate_init,
                .instructions = x86__instructions,
                .nr_instructions = ARRAY_SIZE(x86__instructions),
+               .insn_suffix = "bwlq",
                .objdump =  {
                        .comment_char = '#',
                },
        }
 
        ins = bsearch(name, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp);
+       if (ins)
+               return ins->ops;
+
+       if (arch->insn_suffix) {
+               char tmp[32];
+               char suffix;
+               size_t len = strlen(name);
+
+               if (len == 0 || len >= sizeof(tmp))
+                       return NULL;
+
+               suffix = name[len - 1];
+               if (strchr(arch->insn_suffix, suffix) == NULL)
+                       return NULL;
+
+               strcpy(tmp, name);
+               tmp[len - 1] = '\0'; /* remove the suffix and check again */
+
+               ins = bsearch(tmp, arch->instructions, nmemb, sizeof(struct ins), ins__key_cmp);
+       }
        return ins ? ins->ops : NULL;
 }