summaryrefslogtreecommitdiff
path: root/docs/lattice_iffcs.gv
diff options
context:
space:
mode:
authorCliff Click <cliffc@acm.org>2025-08-13 13:25:24 -0700
committerCliff Click <cliffc@acm.org>2025-08-13 13:25:24 -0700
commitcf5be6998b26723ae29ab1edab84d32b0702182d (patch)
tree7b8eee33a7681d60f25cd93b997d6a39bf1baba5 /docs/lattice_iffcs.gv
parent6a9a508d1809753ec5d41a5ced3f505384f1fe07 (diff)
downloadSimple-cf5be6998b26723ae29ab1edab84d32b0702182d.tar.gz
Simple-cf5be6998b26723ae29ab1edab84d32b0702182d.zip
TypeAnalysis continued
Diffstat (limited to 'docs/lattice_iffcs.gv')
-rw-r--r--docs/lattice_iffcs.gv143
1 files changed, 143 insertions, 0 deletions
diff --git a/docs/lattice_iffcs.gv b/docs/lattice_iffcs.gv
new file mode 100644
index 00000000..5b849ccf
--- /dev/null
+++ b/docs/lattice_iffcs.gv
@@ -0,0 +1,143 @@
+digraph Lattice {
+ compound = true;
+ // Define nodes
+ splines=false;
+ node [shape=circle, style=filled];
+ nodesep=0.6;
+
+ TOP [label=<<B>⊤</B >>, fillcolor=black, fontcolor=white];
+ BOT [label=<<B>⊥</B>>, fillcolor=black, fontcolor=white];
+
+ // ----------------------
+ // Control
+ XCTRL [label=<<B>⊤</B >:ctrl>, fillcolor=yellow, shape=oval];
+ CTRL [label=<<B>⊥</B>:ctrl>, fillcolor=yellow, shape=oval];
+
+ TOP -> XCTRL;
+ XCTRL -> CTRL;
+ CTRL -> BOT;
+
+ // ----------------------
+ // Integers
+ INT_TOP [label=<<B>⊤</B >:int>, fillcolor=lightblue, shape=oval];
+ INT_BOT [label=<<B>⊥</B>:int>, fillcolor=lightblue, shape=oval];
+
+ INT_HI [label="max < min" , fillcolor=lightblue, shape=oval];
+ INT_XBOOL [label="1...0", fillcolor=lightblue, shape=oval];
+ INT_CON [label="constants...", fillcolor=lightblue, shape=oval];
+ INT_CON0 [label="0", fillcolor=lightblue];
+ INT_CON1 [label="1", fillcolor=lightblue];
+ INT_BOOL [label="0...1", fillcolor=lightblue,shape=oval];
+ INT_LO [label="max > min" , fillcolor=lightblue, shape=oval];
+
+ TOP -> INT_TOP;
+ INT_TOP -> INT_HI;
+ INT_HI -> INT_XBOOL;
+ INT_XBOOL -> INT_CON0;
+ INT_XBOOL -> INT_CON1;
+ INT_HI -> INT_CON;
+ INT_CON0 -> INT_BOOL;
+ INT_CON1 -> INT_BOOL;
+ INT_BOOL -> INT_LO;
+ INT_CON -> INT_LO;
+ INT_LO -> INT_BOT;
+ INT_BOT -> BOT;
+
+ INT_CON0 -> INT_CON1 -> INT_CON [style=invis];
+
+ // ----------------------
+ // Floats
+ FLT_TOP [label=<<B>⊤</B >:flt>, fillcolor=aqua, shape=oval];
+ FLT_BOT [label=<<B>⊥</B>:flt>, fillcolor=aqua, shape=oval];
+
+ FLT_CON64 [label="64b consts\n[excludes\n32b consts]" , fillcolor=aqua, shape=oval];
+ FLT_CON32 [label="32b consts", fillcolor=aqua, shape=oval];
+ FLT_CONPI [label="3.14159...", fillcolor=aqua, shape=oval];
+ FLT_X32 [label="~f32", fillcolor=aqua];
+ FLT_CON0 [label="0." , fillcolor=aqua];
+ FLT_32 [label="f32" , fillcolor=aqua];
+
+ TOP -> FLT_TOP;
+ FLT_TOP -> FLT_CON64
+ FLT_TOP -> FLT_CONPI
+ FLT_CON64 -> FLT_BOT
+ FLT_CONPI -> FLT_BOT
+
+ FLT_TOP -> FLT_X32;
+ FLT_X32 -> FLT_CON0;
+ FLT_X32 -> FLT_CON32;
+ FLT_CON0 -> FLT_32;
+ FLT_CON32 -> FLT_32;
+ FLT_32 -> FLT_BOT
+
+ FLT_BOT -> BOT;
+
+ FLT_CON0 -> FLT_CON32 -> FLT_CONPI -> FLT_CON64 [style=invis];
+
+ // ----------------------
+ // sub-Floats
+ FL8_TOP [label=<<B>⊤</B >:FP8>, fillcolor=aqua, shape=oval];
+ FL8_BOT [label=<<B>⊥</B>:FP8>, fillcolor=aqua, shape=oval];
+
+ FL8_MINDOTS [label="...", fillcolor=aqua, shape=oval];
+ FL8_ZERO [label="0" , fillcolor=aqua];
+ FL8_MAXDOTS [label="...", fillcolor=aqua, shape=oval];
+
+ TOP -> FL8_TOP;
+ FL8_TOP -> FL8_MINDOTS;
+ FL8_TOP -> FL8_ZERO;
+ FL8_TOP -> FL8_MAXDOTS;
+ FL8_MINDOTS -> FL8_BOT;
+ FL8_ZERO -> FL8_BOT;
+ FL8_MAXDOTS -> FL8_BOT;
+ FL8_BOT -> BOT;
+
+ FL8_MINDOTS -> FL8_ZERO -> FL8_MAXDOTS [style=invis];
+
+ // ----------------------
+ // Structs
+ STRUCT_TOP [label=<<B>⊤</B >:struct>, fillcolor=lightgreen, shape=oval];
+ STRUCT_BOT [label=<<B>⊥</B>:struct>, fillcolor=lightgreen, shape=oval];
+
+ STRUCT_S1 [shape=none, fillcolor=none, label=<
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
+ <TR><TD BGCOLOR="lightgreen">field</TD><TD BGCOLOR="lightblue:green" gradientangle="315">int/ptr</TD></TR>
+ </TABLE>
+ >];
+ STRUCT_S2 [shape=none, fillcolor=none, label=<
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
+ <TR><TD BGCOLOR="lightgreen">field</TD><TD BGCOLOR="lightblue:green" gradientangle="315">int/ptr</TD></TR>
+ <TR><TD BGCOLOR="lightgreen">field</TD><TD BGCOLOR="lightblue:green" gradientangle="315">int/ptr</TD></TR>
+ </TABLE>
+ >];
+ STRUCT_SN [shape=none, fillcolor=none, label=<
+ <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
+ <TR><TD BGCOLOR="lightgreen">field</TD><TD BGCOLOR="lightblue:green" gradientangle="315">int/ptr</TD></TR>
+ <TR><TD BGCOLOR="lightgreen">... </TD><TD BGCOLOR="lightblue:green" gradientangle="315">int/ptr</TD></TR>
+ <TR><TD BGCOLOR="lightgreen">field</TD><TD BGCOLOR="lightblue:green" gradientangle="315">int/ptr</TD></TR>
+ </TABLE>
+ >];
+
+
+ TOP -> STRUCT_TOP;
+ STRUCT_TOP -> STRUCT_S1;
+ STRUCT_TOP -> STRUCT_S2;
+ STRUCT_TOP -> STRUCT_SN;
+ STRUCT_S1 -> STRUCT_BOT;
+ STRUCT_S2 -> STRUCT_BOT;
+ STRUCT_SN -> STRUCT_BOT;
+ STRUCT_BOT -> BOT;
+
+ STRUCT_S1 -> STRUCT_S2 -> STRUCT_SN [style=invis];
+
+ // Additional customization
+ {rank=same; TOP}
+ {rank=same; INT_TOP; FLT_TOP; FL8_TOP; XCTRL }
+ {rank=same; INT_CON; INT_CON0; INT_CON1;
+ FLT_CON32; FLT_CON64; FLT_CON0; FLT_CONPI;
+ FL8_MINDOTS; FL8_ZERO; FL8_MAXDOTS;
+ STRUCT_S1; STRUCT_S2; STRUCT_SN;
+ }
+ {rank=same; INT_BOT; FLT_BOT; FL8_BOT; CTRL; }
+ {rank=same; BOT;}
+}