{ "cells": [ { "cell_type": "markdown", "id": "c45bc113", "metadata": {}, "source": [ "# LLVM TableGen Kernel" ] }, { "cell_type": "markdown", "id": "483313fc", "metadata": {}, "source": [ "This notebook is running `llvm-tblgen`." ] }, { "cell_type": "code", "execution_count": 1, "id": "e238dd42", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "------------- Classes -----------------\n", "class Foo {\n", "}\n", "------------- Defs -----------------\n" ] } ], "source": [ "%reset\n", "// This is some tablegen\n", "class Foo {}" ] }, { "cell_type": "markdown", "id": "27f5aa83", "metadata": {}, "source": [ "Errors printed to stderr are shown." ] }, { "cell_type": "code", "execution_count": 2, "id": "e8b10293", "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":1:1: error: Unexpected token at top level\n", "This is not tablegen.\n", "^\n" ] } ], "source": [ "%reset\n", "This is not tablegen." ] }, { "cell_type": "markdown", "id": "83907141", "metadata": {}, "source": [ "Add some classes to get some output." ] }, { "cell_type": "code", "execution_count": 3, "id": "4ca8a9cb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "------------- Classes -----------------\n", "class Stuff {\n", "}\n", "------------- Defs -----------------\n", "def thing {\t// Stuff\n", "}\n" ] } ], "source": [ "%reset\n", "class Stuff {}\n", "def thing : Stuff {}" ] }, { "cell_type": "markdown", "id": "3f29d1a0", "metadata": {}, "source": [ "By default cells are connected. Meaning that we cache the code and magic directives from the previously run cells.\n", "\n", "This means that the next cell still sees the `Stuff` class." ] }, { "cell_type": "code", "execution_count": 4, "id": "3a204c70", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "------------- Classes -----------------\n", "class Stuff {\n", "}\n", "------------- Defs -----------------\n", "def other_thing {\t// Stuff\n", "}\n", "def thing {\t// Stuff\n", "}\n" ] } ], "source": [ "def other_thing : Stuff {}" ] }, { "cell_type": "markdown", "id": "473b0a1c", "metadata": {}, "source": [ "You can use the magic `%reset` to clear this cache and start fresh." ] }, { "cell_type": "code", "execution_count": 5, "id": "1f674a03", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":1:19: error: Couldn't find class 'Stuff'\n", "def other_thing : Stuff {}\n", " ^\n" ] } ], "source": [ "%reset\n", "def other_thing : Stuff {}" ] }, { "cell_type": "markdown", "id": "f6d4613b", "metadata": {}, "source": [ "There is a \"magic\" directive `%args` that you can use to send command line arguments to `llvm-tblgen`.\n", "\n", "For example, here we have some code that shows a warning." ] }, { "cell_type": "code", "execution_count": 6, "id": "2586893b", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":1:25: warning: unused template argument: Thing:B\n", "class Thing {\n", " ^\n" ] } ], "source": [ "%reset\n", "class Thing {\n", " int num = A;\n", "}" ] }, { "cell_type": "markdown", "id": "41be44e7", "metadata": {}, "source": [ "We can pass an argument to ignore that warning." ] }, { "cell_type": "code", "execution_count": 7, "id": "ae078bc4", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "------------- Classes -----------------\n", "class Thing {\n", " int num = Thing:A;\n", "}\n", "------------- Defs -----------------\n" ] } ], "source": [ "%args --no-warn-on-unused-template-args" ] }, { "cell_type": "markdown", "id": "316b9543", "metadata": {}, "source": [ "If you have a run of cells without a `%reset`, the most recent `%args` is used." ] }, { "cell_type": "code", "execution_count": 8, "id": "9634170c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "------------- Classes -----------------\n", "class Thing {\n", " int num = Thing:A;\n", "}\n", "------------- Defs -----------------\n" ] } ], "source": [ "// This passes --no-warn-on-unused-template-args" ] }, { "cell_type": "code", "execution_count": 9, "id": "fa15b542", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":1:25: warning: unused template argument: Thing:B\n", "class Thing {\n", " ^\n" ] } ], "source": [ "%args\n", "// Now we're not passing the argument so the warning comes back." ] }, { "cell_type": "markdown", "id": "e112f1d4", "metadata": {}, "source": [ "If there are many `%args` in a cell, the last one is used." ] }, { "cell_type": "code", "execution_count": 10, "id": "2ac46c7a", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":1:18: warning: unused template argument: Thing:A\n", "class Thing {}\n", " ^\n", ":1:25: warning: unused template argument: Thing:B\n", "class Thing {}\n", " ^\n" ] } ], "source": [ "%reset\n", "%args --no-warn-on-unused-template-args\n", "%args\n", "class Thing {}" ] } ], "metadata": { "kernelspec": { "display_name": "LLVM TableGen", "language": "tablegen", "name": "tablegen" }, "language_info": { "file_extension": ".td", "mimetype": "text/x-tablegen", "name": "tablegen", "pygments_lexer": "text" } }, "nbformat": 4, "nbformat_minor": 5 }