Last active
June 6, 2016 00:44
-
-
Save michaeljclark/e7469e2d40f362b5469c1c3b4c87f5b2 to your computer and use it in GitHub Desktop.
Type-UJ Immediate Bit Gather Scatter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
\documentclass{report} | |
\usepackage[letterpaper, portrait, margin=0.5in]{geometry} | |
\usepackage[utf8]{inputenc} | |
\usepackage{tikz} | |
\begin{document} | |
\bf{Type-UJ} | |
\begin{tikzpicture}[fill=blue!20,scale=0.5] | |
\begin{scope}[every node/.style={font=\scriptsize}] | |
% insn imm bit segment backgrounds | |
\fill [black!40] (0,-1) rectangle (1,-2); | |
\fill [black!30] (1,-1) rectangle (11,-2); | |
\fill [black!20] (11,-1) rectangle (12,-2); | |
\fill [black!10] (12,-1) rectangle (20,-2); | |
% insn imm bit segment borders | |
\draw (0,-1) rectangle (1,-2); | |
\draw (1,-1) rectangle (11,-2); | |
\draw (11,-1) rectangle (12,-2); | |
\draw (12,-1) rectangle (20,-2); | |
\draw (20,-1) rectangle (25,-2); | |
\draw (25,-1) rectangle (32,-2); | |
% insn imm bit segment labels | |
\node (insn_imm20) at (10 ,-0.5) {$imm[20|10:1|11|19:12]$}; | |
\node (insn_rd) at (22.5,-0.5) {$rd$}; | |
\node (insn_op) at (28.5,-0.5) {$opcode$}; | |
% insn imm bit segment bits | |
\node (insn_31) at (0.5 ,-1.5) {$31$}; | |
\node (insn_30) at (1.5 ,-1.5) {$30$}; | |
\node (insn_21) at (10.5,-1.5) {$21$}; | |
\node (insn_20) at (11.5,-1.5) {$20$}; | |
\node (insn_19) at (12.5,-1.5) {$19$}; | |
\node (insn_12) at (19.5,-1.5) {$12$}; | |
\node (insn_11) at (20.5,-1.5) {$11$}; | |
\node (insn_7) at (24.5,-1.5) {$7$}; | |
\node (insn_6) at (25.5,-1.5) {$6$}; | |
\node (insn_0) at (31.5,-1.5) {$0$}; | |
% insn imm bit segment nodes | |
\node (insn_seg_31) at (0.5 ,-2) {}; | |
\node (insn_seg_30_21) at (6 ,-2) {}; | |
\node (insn_seg_20) at (11.5,-2) {}; | |
\node (insn_seg_19_12) at (16 ,-2) {}; | |
\node (insn_seg_11_7) at (22.5,-2) {}; | |
\node (insn_seg_6_0) at (28.5,-2) {}; | |
% decode imm bit segment backgrounds | |
\fill [black!40] (11,-6) rectangle (12,-7); | |
\fill [black!10] (12,-6) rectangle (20,-7); | |
\fill [black!20] (20,-6) rectangle (21,-7); | |
\fill [black!30] (21,-6) rectangle (31,-7); | |
% decode imm bit segment borders | |
\draw (11,-6) rectangle (12,-7); | |
\draw (12,-6) rectangle (20,-7); | |
\draw (20,-6) rectangle (21,-7); | |
\draw (21,-6) rectangle (31,-7); | |
\draw (31,-6) rectangle (32,-7); | |
% decode imm bit segment labels | |
\node (imm_20) at (21.5,-7.5) {$offset21$}; | |
% decode imm bit segment bits | |
\node (imm_20) at (11.5,-6.5) {$20$}; | |
\node (imm_19) at (12.5,-6.5) {$19$}; | |
\node (imm_12) at (19.5,-6.5) {$12$}; | |
\node (imm_11) at (20.5,-6.5) {$11$}; | |
\node (imm_10) at (21.5,-6.5) {$10$}; | |
\node (imm_1) at (30.5,-6.5) {$1$}; | |
\node (imm_0) at (31.5,-6.5) {$0$}; | |
% decode imm bit segment nodes | |
\node (imm_seg_20) at (11.5,-6) {}; | |
\node (imm_seg_19_12) at (16 ,-6) {}; | |
\node (imm_seg_11) at (20.5,-6) {}; | |
\node (imm_seg_10_1) at (27 ,-6) {}; | |
\node (imm_seg_0) at (31.5,-6) {}; | |
% insn imm decode gather scatter edges | |
\draw[->, black!50] (insn_seg_31.south) .. controls +(0,-0.40) and +(0,1.00) .. (imm_seg_20.north); | |
\draw[->, black!50] (insn_seg_30_21.south) .. controls +(0,-0.50) and +(0,0.80) .. (imm_seg_10_1.north); | |
\draw[->, black!50] (insn_seg_20.south) .. controls +(0,-0.80) and +(0,0.60) .. (imm_seg_11.north); | |
\draw[->, black!50] (insn_seg_19_12.south) .. controls +(0,-1.00) and +(0,0.40) .. (imm_seg_19_12.north); | |
\end{scope} | |
\end{tikzpicture} | |
\end{document} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment