[llvm] da4d6ca - [X86][NFC] Use compact enum to store ternlog comments (#206089)

via llvm-commits llvm-commits at lists.llvm.org
Sat Jun 27 22:13:28 PDT 2026


Author: Alexis Engelke
Date: 2026-06-28T07:13:23+02:00
New Revision: da4d6ca094763e1eacb3d9b1f0e108c8edcaf029

URL: https://github.com/llvm/llvm-project/commit/da4d6ca094763e1eacb3d9b1f0e108c8edcaf029
DIFF: https://github.com/llvm/llvm-project/commit/da4d6ca094763e1eacb3d9b1f0e108c8edcaf029.diff

LOG: [X86][NFC] Use compact enum to store ternlog comments (#206089)

Instead of storing a StringRef (StringLiteral is essentially a
StringRef) with 16 bytes and one dynamic relocation for each of the 256
entries (4kiB total) and, use the new compact enum tables to store each
entry with 4 bytes and without relocations.

Added: 
    

Modified: 
    llvm/lib/Target/X86/MCTargetDesc/X86InstComments.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/MCTargetDesc/X86InstComments.cpp b/llvm/lib/Target/X86/MCTargetDesc/X86InstComments.cpp
index 76731437931a7..d7f21fe17bfe1 100644
--- a/llvm/lib/Target/X86/MCTargetDesc/X86InstComments.cpp
+++ b/llvm/lib/Target/X86/MCTargetDesc/X86InstComments.cpp
@@ -16,6 +16,7 @@
 #include "X86BaseInfo.h"
 #include "X86MCTargetDesc.h"
 #include "X86ShuffleDecode.h"
+#include "llvm/ADT/Enum.h"
 #include "llvm/MC/MCInst.h"
 #include "llvm/MC/MCInstrInfo.h"
 #include "llvm/Support/raw_ostream.h"
@@ -653,264 +654,265 @@ static bool printFMAComments(const MCInst *MI, raw_ostream &OS,
 // inputs to the binary function. This table was taken from
 // https://gist.github.com/dougallj/81a80cd381988466c4e1c4889ecac95b#file-2-x86-base-txt
 // with slight massaging.
-constexpr StringLiteral TernlogFunctions[] = {
-    "0",
-    "~(a | b | c)",
-    "c & ~(a | b)",
-    "~(a | b)",
-    "b & ~(a | c)",
-    "~(a | c)",
-    "~a & (b ^ c)",
-    "~(a | (b & c))",
-    "b & c & ~a",
-    "~(a | (b ^ c))",
-    "c & ~a",
-    "~a & (c | ~b)",
-    "b & ~a",
-    "~a & (b | ~c)",
-    "~a & (b | c)",
-    "~a",
-    "a & ~(b | c)",
-    "~(b | c)",
-    "~b & (a ^ c)",
-    "~((a & c) | b)",
-    "~c & (a ^ b)",
-    "~((a & b) | c)",
-    "a ^ ((a & b) | (b ^ c))",
-    "(a & (b ^ c)) ^ ~(b & c)",
-    "(a ^ b) & (a ^ c)",
-    "~((a & b) | (b ^ c))",
-    "a ^ ((a & b) | c)",
-    "(a & c) ^ (c | ~b)",
-    "a ^ ((a & c) | b)",
-    "(a & b) ^ (b | ~c)",
-    "a ^ (b | c)",
-    "~(a & (b | c))",
-    "a & c & ~b",
-    "~(b | (a ^ c))",
-    "c & ~b",
-    "~b & (c | ~a)",
-    "(a ^ b) & (b ^ c)",
-    "~((a & b) | (a ^ c))",
-    "b ^ ((a & b) | c)",
-    "(b & c) ^ (c | ~a)",
-    "c & (a ^ b)",
-    "(a | b) ^ ((a & b) | ~c)",
-    "c & ~(a & b)",
-    "(c & (a ^ b)) | ~(a | b)",
-    "(b | c) & (a ^ b)",
-    "a ^ (b | ~c)",
-    "(a & b) ^ (b | c)",
-    "(c & ~b) | ~a",
-    "a & ~b",
-    "~b & (a | ~c)",
-    "~b & (a | c)",
-    "~b",
-    "b ^ (a | (b & c))",
-    "(a & b) ^ (a | ~c)",
-    "b ^ (a | c)",
-    "~(b & (a | c))",
-    "(a | c) & (a ^ b)",
-    "b ^ (a | ~c)",
-    "(a & b) ^ (a | c)",
-    "(c & ~a) | ~b",
-    "a ^ b",
-    "~(a | c) | (a ^ b)",
-    "(c & ~a) | (a ^ b)",
-    "~(a & b)",
-    "a & b & ~c",
-    "~(c | (a ^ b))",
-    "(a ^ c) & (b ^ c)",
-    "~((a & c) | (a ^ b))",
-    "b & ~c",
-    "~c & (b | ~a)",
-    "c ^ ((a & c) | b)",
-    "(b & c) ^ (b | ~a)",
-    "b & (a ^ c)",
-    "(a | c) ^ ((a & c) | ~b)",
-    "(b | c) & (a ^ c)",
-    "a ^ (c | ~b)",
-    "b & ~(a & c)",
-    "(b & (a ^ c)) | ~(a | c)",
-    "(a & c) ^ (b | c)",
-    "(b & ~c) | ~a",
-    "a & ~c",
-    "~c & (a | ~b)",
-    "c ^ (a | (b & c))",
-    "(a & c) ^ (a | ~b)",
-    "~c & (a | b)",
-    "~c",
-    "c ^ (a | b)",
-    "~(c & (a | b))",
-    "(a | b) & (a ^ c)",
-    "c ^ (a | ~b)",
-    "a ^ c",
-    "~(a | b) | (a ^ c)",
-    "(a & c) ^ (a | b)",
-    "(b & ~a) | ~c",
-    "(b & ~a) | (a ^ c)",
-    "~(a & c)",
-    "a & (b ^ c)",
-    "~(b ^ c) ^ (a | (b & c))",
-    "(a | c) & (b ^ c)",
-    "b ^ (c | ~a)",
-    "(a | b) & (b ^ c)",
-    "c ^ (b | ~a)",
-    "b ^ c",
-    "~(a | b) | (b ^ c)",
-    "(a | b) & (c ^ (a & b))",
-    "b ^ c ^ ~a",
-    "c ^ (a & b)",
-    "~(a | b) | (c ^ (a & b))",
-    "b ^ (a & c)",
-    "~(a | c) | (b ^ (a & c))",
-    "(b & ~a) | (b ^ c)",
-    "~a | (b ^ c)",
-    "a & ~(b & c)",
-    "(a & (b ^ c)) | ~(b | c)",
-    "(b & c) ^ (a | c)",
-    "(a & ~c) | ~b",
-    "(b & c) ^ (a | b)",
-    "(a & ~b) | ~c",
-    "(a & ~b) | (b ^ c)",
-    "~(b & c)",
-    "a ^ (b & c)",
-    "~(b | c) | (a ^ (b & c))",
-    "(a & ~b) | (a ^ c)",
-    "~b | (a ^ c)",
-    "(a & ~c) | (a ^ b)",
-    "~c | (a ^ b)",
-    "(a ^ b) | (a ^ c)",
-    "~(a & b & c)",
-    "a & b & c",
-    "~((a ^ b) | (a ^ c))",
-    "c & ~(a ^ b)",
-    "~(a ^ b) & (c | ~a)",
-    "b & ~(a ^ c)",
-    "~(a ^ c) & (b | ~a)",
-    "(b | c) & (a ^ b ^ c)",
-    "(b & c) ^ ~a",
-    "b & c",
-    "~(b ^ c) & (b | ~a)",
-    "c & (b | ~a)",
-    "~((b & c) ^ (a | b))",
-    "b & (c | ~a)",
-    "~((b & c) ^ (a | c))",
-    "a ^ ((a ^ b) | (a ^ c))",
-    "(b & c) | ~a",
-    "a & ~(b ^ c)",
-    "~(b ^ c) & (a | ~b)",
-    "(a | c) & (a ^ b ^ c)",
-    "(a & c) ^ ~b",
-    "(a | b) & (a ^ b ^ c)",
-    "(a & b) ^ ~c",
-    "a ^ b ^ c",
-    "~(a | b) | (a ^ b ^ c)",
-    "~(b ^ c) & (a | b)",
-    "~(b ^ c)",
-    "c ^ (a & ~b)",
-    "~((a | b) & (b ^ c))",
-    "b ^ (a & ~c)",
-    "~((a | c) & (b ^ c))",
-    "(b & c) | (a ^ (b | c))",
-    "~(a & (b ^ c))",
-    "a & c",
-    "~(a ^ c) & (a | ~b)",
-    "c & (a | ~b)",
-    "~((a & c) ^ (a | b))",
-    "~(a ^ c) & (a | b)",
-    "~(a ^ c)",
-    "c ^ (b & ~a)",
-    "~((a | b) & (a ^ c))",
-    "c & (a | b)",
-    "~c ^ (a | b)",
-    "c",
-    "c | ~(a | b)",
-    "b ^ (a & (b ^ c))",
-    "(b & c) | ~(a ^ c)",
-    "(b & ~a) | c",
-    "c | ~a",
-    "a & (c | ~b)",
-    "~((a & c) ^ (b | c))",
-    "a ^ ((a ^ c) & (b ^ c))",
-    "(a & c) | ~b",
-    "a ^ (b & ~c)",
-    "~((b | c) & (a ^ c))",
-    "(a & c) | (a ^ b ^ c)",
-    "~(b & (a ^ c))",
-    "a ^ (b & (a ^ c))",
-    "(a & c) | ~(b ^ c)",
-    "(a & ~b) | c",
-    "c | ~b",
-    "(a & c) | (a ^ b)",
-    "~((a ^ c) & (b ^ c))",
-    "c | (a ^ b)",
-    "c | ~(a & b)",
-    "a & b",
-    "~(a ^ b) & (a | ~c)",
-    "~(a ^ b) & (a | c)",
-    "~(a ^ b)",
-    "b & (a | ~c)",
-    "~((a & b) ^ (a | c))",
-    "b ^ (c & ~a)",
-    "~((a | c) & (a ^ b))",
-    "b & (a | c)",
-    "~b ^ (a | c)",
-    "c ^ (a & (b ^ c))",
-    "(b & c) | ~(a ^ b)",
-    "b",
-    "b | ~(a | c)",
-    "(c & ~a) | b",
-    "b | ~a",
-    "a & (b | ~c)",
-    "~((a & b) ^ (b | c))",
-    "a ^ (c & ~b)",
-    "~((b | c) & (a ^ b))",
-    "a ^ ((a ^ b) & (b ^ c))",
-    "(a & b) | ~c",
-    "(a & b) | (a ^ b ^ c)",
-    "~(c & (a ^ b))",
-    "a ^ (c & (a ^ b))",
-    "(a & b) | ~(b ^ c)",
-    "(a & b) | (a ^ c)",
-    "~((a ^ b) & (b ^ c))",
-    "(a & ~c) | b",
-    "b | ~c",
-    "b | (a ^ c)",
-    "b | ~(a & c)",
-    "a & (b | c)",
-    "~a ^ (b | c)",
-    "c ^ (b & (a ^ c))",
-    "(a & c) | ~(a ^ b)",
-    "b ^ (c & (a ^ b))",
-    "(a & b) | ~(a ^ c)",
-    "(a & b) | (b ^ c)",
-    "~((a ^ b) & (a ^ c))",
-    "(a | b) & ((a & b) | c)",
-    "(a & b) | (b ^ c ^ ~a)",
-    "(a & b) | c",
-    "c | ~(a ^ b)",
-    "(a & c) | b",
-    "b | ~(a ^ c)",
-    "b | c",
-    "~a | b | c",
-    "a",
-    "a | ~(b | c)",
-    "a | (c & ~b)",
-    "a | ~b",
-    "a | (b & ~c)",
-    "a | ~c",
-    "a | (b ^ c)",
-    "a | ~(b & c)",
-    "a | (b & c)",
-    "a | ~(b ^ c)",
-    "a | c",
-    "~b | a | c",
-    "a | b",
-    "~c | a | b",
-    "a | b | c",
-    "-1",
+constexpr EnumStringDef<uint8_t> TernlogFunctionDefs[] = {
+    {{"0"}, 0},
+    {{"~(a | b | c)"}, 1},
+    {{"c & ~(a | b)"}, 2},
+    {{"~(a | b)"}, 3},
+    {{"b & ~(a | c)"}, 4},
+    {{"~(a | c)"}, 5},
+    {{"~a & (b ^ c)"}, 6},
+    {{"~(a | (b & c))"}, 7},
+    {{"b & c & ~a"}, 8},
+    {{"~(a | (b ^ c))"}, 9},
+    {{"c & ~a"}, 10},
+    {{"~a & (c | ~b)"}, 11},
+    {{"b & ~a"}, 12},
+    {{"~a & (b | ~c)"}, 13},
+    {{"~a & (b | c)"}, 14},
+    {{"~a"}, 15},
+    {{"a & ~(b | c)"}, 16},
+    {{"~(b | c)"}, 17},
+    {{"~b & (a ^ c)"}, 18},
+    {{"~((a & c) | b)"}, 19},
+    {{"~c & (a ^ b)"}, 20},
+    {{"~((a & b) | c)"}, 21},
+    {{"a ^ ((a & b) | (b ^ c))"}, 22},
+    {{"(a & (b ^ c)) ^ ~(b & c)"}, 23},
+    {{"(a ^ b) & (a ^ c)"}, 24},
+    {{"~((a & b) | (b ^ c))"}, 25},
+    {{"a ^ ((a & b) | c)"}, 26},
+    {{"(a & c) ^ (c | ~b)"}, 27},
+    {{"a ^ ((a & c) | b)"}, 28},
+    {{"(a & b) ^ (b | ~c)"}, 29},
+    {{"a ^ (b | c)"}, 30},
+    {{"~(a & (b | c))"}, 31},
+    {{"a & c & ~b"}, 32},
+    {{"~(b | (a ^ c))"}, 33},
+    {{"c & ~b"}, 34},
+    {{"~b & (c | ~a)"}, 35},
+    {{"(a ^ b) & (b ^ c)"}, 36},
+    {{"~((a & b) | (a ^ c))"}, 37},
+    {{"b ^ ((a & b) | c)"}, 38},
+    {{"(b & c) ^ (c | ~a)"}, 39},
+    {{"c & (a ^ b)"}, 40},
+    {{"(a | b) ^ ((a & b) | ~c)"}, 41},
+    {{"c & ~(a & b)"}, 42},
+    {{"(c & (a ^ b)) | ~(a | b)"}, 43},
+    {{"(b | c) & (a ^ b)"}, 44},
+    {{"a ^ (b | ~c)"}, 45},
+    {{"(a & b) ^ (b | c)"}, 46},
+    {{"(c & ~b) | ~a"}, 47},
+    {{"a & ~b"}, 48},
+    {{"~b & (a | ~c)"}, 49},
+    {{"~b & (a | c)"}, 50},
+    {{"~b"}, 51},
+    {{"b ^ (a | (b & c))"}, 52},
+    {{"(a & b) ^ (a | ~c)"}, 53},
+    {{"b ^ (a | c)"}, 54},
+    {{"~(b & (a | c))"}, 55},
+    {{"(a | c) & (a ^ b)"}, 56},
+    {{"b ^ (a | ~c)"}, 57},
+    {{"(a & b) ^ (a | c)"}, 58},
+    {{"(c & ~a) | ~b"}, 59},
+    {{"a ^ b"}, 60},
+    {{"~(a | c) | (a ^ b)"}, 61},
+    {{"(c & ~a) | (a ^ b)"}, 62},
+    {{"~(a & b)"}, 63},
+    {{"a & b & ~c"}, 64},
+    {{"~(c | (a ^ b))"}, 65},
+    {{"(a ^ c) & (b ^ c)"}, 66},
+    {{"~((a & c) | (a ^ b))"}, 67},
+    {{"b & ~c"}, 68},
+    {{"~c & (b | ~a)"}, 69},
+    {{"c ^ ((a & c) | b)"}, 70},
+    {{"(b & c) ^ (b | ~a)"}, 71},
+    {{"b & (a ^ c)"}, 72},
+    {{"(a | c) ^ ((a & c) | ~b)"}, 73},
+    {{"(b | c) & (a ^ c)"}, 74},
+    {{"a ^ (c | ~b)"}, 75},
+    {{"b & ~(a & c)"}, 76},
+    {{"(b & (a ^ c)) | ~(a | c)"}, 77},
+    {{"(a & c) ^ (b | c)"}, 78},
+    {{"(b & ~c) | ~a"}, 79},
+    {{"a & ~c"}, 80},
+    {{"~c & (a | ~b)"}, 81},
+    {{"c ^ (a | (b & c))"}, 82},
+    {{"(a & c) ^ (a | ~b)"}, 83},
+    {{"~c & (a | b)"}, 84},
+    {{"~c"}, 85},
+    {{"c ^ (a | b)"}, 86},
+    {{"~(c & (a | b))"}, 87},
+    {{"(a | b) & (a ^ c)"}, 88},
+    {{"c ^ (a | ~b)"}, 89},
+    {{"a ^ c"}, 90},
+    {{"~(a | b) | (a ^ c)"}, 91},
+    {{"(a & c) ^ (a | b)"}, 92},
+    {{"(b & ~a) | ~c"}, 93},
+    {{"(b & ~a) | (a ^ c)"}, 94},
+    {{"~(a & c)"}, 95},
+    {{"a & (b ^ c)"}, 96},
+    {{"~(b ^ c) ^ (a | (b & c))"}, 97},
+    {{"(a | c) & (b ^ c)"}, 98},
+    {{"b ^ (c | ~a)"}, 99},
+    {{"(a | b) & (b ^ c)"}, 100},
+    {{"c ^ (b | ~a)"}, 101},
+    {{"b ^ c"}, 102},
+    {{"~(a | b) | (b ^ c)"}, 103},
+    {{"(a | b) & (c ^ (a & b))"}, 104},
+    {{"b ^ c ^ ~a"}, 105},
+    {{"c ^ (a & b)"}, 106},
+    {{"~(a | b) | (c ^ (a & b))"}, 107},
+    {{"b ^ (a & c)"}, 108},
+    {{"~(a | c) | (b ^ (a & c))"}, 109},
+    {{"(b & ~a) | (b ^ c)"}, 110},
+    {{"~a | (b ^ c)"}, 111},
+    {{"a & ~(b & c)"}, 112},
+    {{"(a & (b ^ c)) | ~(b | c)"}, 113},
+    {{"(b & c) ^ (a | c)"}, 114},
+    {{"(a & ~c) | ~b"}, 115},
+    {{"(b & c) ^ (a | b)"}, 116},
+    {{"(a & ~b) | ~c"}, 117},
+    {{"(a & ~b) | (b ^ c)"}, 118},
+    {{"~(b & c)"}, 119},
+    {{"a ^ (b & c)"}, 120},
+    {{"~(b | c) | (a ^ (b & c))"}, 121},
+    {{"(a & ~b) | (a ^ c)"}, 122},
+    {{"~b | (a ^ c)"}, 123},
+    {{"(a & ~c) | (a ^ b)"}, 124},
+    {{"~c | (a ^ b)"}, 125},
+    {{"(a ^ b) | (a ^ c)"}, 126},
+    {{"~(a & b & c)"}, 127},
+    {{"a & b & c"}, 128},
+    {{"~((a ^ b) | (a ^ c))"}, 129},
+    {{"c & ~(a ^ b)"}, 130},
+    {{"~(a ^ b) & (c | ~a)"}, 131},
+    {{"b & ~(a ^ c)"}, 132},
+    {{"~(a ^ c) & (b | ~a)"}, 133},
+    {{"(b | c) & (a ^ b ^ c)"}, 134},
+    {{"(b & c) ^ ~a"}, 135},
+    {{"b & c"}, 136},
+    {{"~(b ^ c) & (b | ~a)"}, 137},
+    {{"c & (b | ~a)"}, 138},
+    {{"~((b & c) ^ (a | b))"}, 139},
+    {{"b & (c | ~a)"}, 140},
+    {{"~((b & c) ^ (a | c))"}, 141},
+    {{"a ^ ((a ^ b) | (a ^ c))"}, 142},
+    {{"(b & c) | ~a"}, 143},
+    {{"a & ~(b ^ c)"}, 144},
+    {{"~(b ^ c) & (a | ~b)"}, 145},
+    {{"(a | c) & (a ^ b ^ c)"}, 146},
+    {{"(a & c) ^ ~b"}, 147},
+    {{"(a | b) & (a ^ b ^ c)"}, 148},
+    {{"(a & b) ^ ~c"}, 149},
+    {{"a ^ b ^ c"}, 150},
+    {{"~(a | b) | (a ^ b ^ c)"}, 151},
+    {{"~(b ^ c) & (a | b)"}, 152},
+    {{"~(b ^ c)"}, 153},
+    {{"c ^ (a & ~b)"}, 154},
+    {{"~((a | b) & (b ^ c))"}, 155},
+    {{"b ^ (a & ~c)"}, 156},
+    {{"~((a | c) & (b ^ c))"}, 157},
+    {{"(b & c) | (a ^ (b | c))"}, 158},
+    {{"~(a & (b ^ c))"}, 159},
+    {{"a & c"}, 160},
+    {{"~(a ^ c) & (a | ~b)"}, 161},
+    {{"c & (a | ~b)"}, 162},
+    {{"~((a & c) ^ (a | b))"}, 163},
+    {{"~(a ^ c) & (a | b)"}, 164},
+    {{"~(a ^ c)"}, 165},
+    {{"c ^ (b & ~a)"}, 166},
+    {{"~((a | b) & (a ^ c))"}, 167},
+    {{"c & (a | b)"}, 168},
+    {{"~c ^ (a | b)"}, 169},
+    {{"c"}, 170},
+    {{"c | ~(a | b)"}, 171},
+    {{"b ^ (a & (b ^ c))"}, 172},
+    {{"(b & c) | ~(a ^ c)"}, 173},
+    {{"(b & ~a) | c"}, 174},
+    {{"c | ~a"}, 175},
+    {{"a & (c | ~b)"}, 176},
+    {{"~((a & c) ^ (b | c))"}, 177},
+    {{"a ^ ((a ^ c) & (b ^ c))"}, 178},
+    {{"(a & c) | ~b"}, 179},
+    {{"a ^ (b & ~c)"}, 180},
+    {{"~((b | c) & (a ^ c))"}, 181},
+    {{"(a & c) | (a ^ b ^ c)"}, 182},
+    {{"~(b & (a ^ c))"}, 183},
+    {{"a ^ (b & (a ^ c))"}, 184},
+    {{"(a & c) | ~(b ^ c)"}, 185},
+    {{"(a & ~b) | c"}, 186},
+    {{"c | ~b"}, 187},
+    {{"(a & c) | (a ^ b)"}, 188},
+    {{"~((a ^ c) & (b ^ c))"}, 189},
+    {{"c | (a ^ b)"}, 190},
+    {{"c | ~(a & b)"}, 191},
+    {{"a & b"}, 192},
+    {{"~(a ^ b) & (a | ~c)"}, 193},
+    {{"~(a ^ b) & (a | c)"}, 194},
+    {{"~(a ^ b)"}, 195},
+    {{"b & (a | ~c)"}, 196},
+    {{"~((a & b) ^ (a | c))"}, 197},
+    {{"b ^ (c & ~a)"}, 198},
+    {{"~((a | c) & (a ^ b))"}, 199},
+    {{"b & (a | c)"}, 200},
+    {{"~b ^ (a | c)"}, 201},
+    {{"c ^ (a & (b ^ c))"}, 202},
+    {{"(b & c) | ~(a ^ b)"}, 203},
+    {{"b"}, 204},
+    {{"b | ~(a | c)"}, 205},
+    {{"(c & ~a) | b"}, 206},
+    {{"b | ~a"}, 207},
+    {{"a & (b | ~c)"}, 208},
+    {{"~((a & b) ^ (b | c))"}, 209},
+    {{"a ^ (c & ~b)"}, 210},
+    {{"~((b | c) & (a ^ b))"}, 211},
+    {{"a ^ ((a ^ b) & (b ^ c))"}, 212},
+    {{"(a & b) | ~c"}, 213},
+    {{"(a & b) | (a ^ b ^ c)"}, 214},
+    {{"~(c & (a ^ b))"}, 215},
+    {{"a ^ (c & (a ^ b))"}, 216},
+    {{"(a & b) | ~(b ^ c)"}, 217},
+    {{"(a & b) | (a ^ c)"}, 218},
+    {{"~((a ^ b) & (b ^ c))"}, 219},
+    {{"(a & ~c) | b"}, 220},
+    {{"b | ~c"}, 221},
+    {{"b | (a ^ c)"}, 222},
+    {{"b | ~(a & c)"}, 223},
+    {{"a & (b | c)"}, 224},
+    {{"~a ^ (b | c)"}, 225},
+    {{"c ^ (b & (a ^ c))"}, 226},
+    {{"(a & c) | ~(a ^ b)"}, 227},
+    {{"b ^ (c & (a ^ b))"}, 228},
+    {{"(a & b) | ~(a ^ c)"}, 229},
+    {{"(a & b) | (b ^ c)"}, 230},
+    {{"~((a ^ b) & (a ^ c))"}, 231},
+    {{"(a | b) & ((a & b) | c)"}, 232},
+    {{"(a & b) | (b ^ c ^ ~a)"}, 233},
+    {{"(a & b) | c"}, 234},
+    {{"c | ~(a ^ b)"}, 235},
+    {{"(a & c) | b"}, 236},
+    {{"b | ~(a ^ c)"}, 237},
+    {{"b | c"}, 238},
+    {{"~a | b | c"}, 239},
+    {{"a"}, 240},
+    {{"a | ~(b | c)"}, 241},
+    {{"a | (c & ~b)"}, 242},
+    {{"a | ~b"}, 243},
+    {{"a | (b & ~c)"}, 244},
+    {{"a | ~c"}, 245},
+    {{"a | (b ^ c)"}, 246},
+    {{"a | ~(b & c)"}, 247},
+    {{"a | (b & c)"}, 248},
+    {{"a | ~(b ^ c)"}, 249},
+    {{"a | c"}, 250},
+    {{"~b | a | c"}, 251},
+    {{"a | b"}, 252},
+    {{"~c | a | b"}, 253},
+    {{"a | b | c"}, 254},
+    {{"-1"}, 255},
 };
+constexpr auto TernlogFunctions = BUILD_ENUM_STRINGS(TernlogFunctionDefs);
 
 static bool printPTERNLOGComments(const MCInst *MI, raw_ostream &OS,
                                   const MCInstrInfo &MCII) {
@@ -975,7 +977,7 @@ static bool printPTERNLOGComments(const MCInst *MI, raw_ostream &OS,
   OS << " = ";
 
   static_assert(std::size(TernlogFunctions) == 256);
-  std::string_view BooleanFunction = TernlogFunctions[TruthTable];
+  std::string_view BooleanFunction = TernlogFunctions[TruthTable].name();
 
   while (!BooleanFunction.empty()) {
     // Print the expression up to the next symbol.


        


More information about the llvm-commits mailing list