We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Lessons in TableGen

00:00

Formal Metadata

Title
Lessons in TableGen
Title of Series
Number of Parts
561
Author
License
CC Attribution 2.0 Belgium:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
TableGen is LLVM's DSL for describing intrinsics, backends' machine instructions, physical registers, machine scheduling models, and a bunch of other things. It is extremely flexible and powerful, but can also be rather aggravating. Most people who spend a significant amount of time working on an LLVM backend probably develop a love/hate-relationship with it. The goal of this talk is to give a brief overview of what TableGen offers -- frontend, application-specific backends, generic table emission backend, idiosyncratic type system, and these days even limited functional-style programming -- and a brief introduction on how to use it. The focus will be mostly on the frontend -- that is, syntax and semantics of the TableGen DSL itself -- rather than on specific backends. Along the way, I want to share some lessons learned and decisions made during a major refactoring of the TableGen frontend that I undertook in early 2018 to iron out many of TableGen's quirks and shortcomings that had accumulated over the years, as well as some glimpses of the advanced TableGen uses in the AMDGPU backend that motivated that refactoring.
Formal languageComputer-generated imageryTypsystemSocial classTable (information)Performance appraisalStatement (computer science)Computer fileDisassemblerCore dumpArchitectureDisintegrationLibrary (computing)Default (computer science)BuildingCodeVirtual machineRow (database)Software developerRegular graphInclined planeInclusion mapSource codeOrder (biology)Conditional probabilityType theoryGeneric programmingFunctional (mathematics)String (computer science)SequenceData conversionSubject indexingRange (statistics)Machine codeScheduling (computing)Source codeRow (database)Mathematical optimizationLibrary (computing)Type theoryFormal languageFront and back endsFunctional (mathematics)Poisson-KlammerSquare numberPositional notationString (computer science)Problemorientierte ProgrammierspracheIntegerCodeRegulärer Ausdruck <Textverarbeitung>CASE <Informatik>BuildingBitINTEGRALSequencePoint (geometry)Limit (category theory)MereologyPattern language2 (number)AngleMessage passingShader <Informatik>Compilation albumReguläres MaßPerformance appraisalElectronic mailing listTelephone number mappingVirtual machineMikroarchitekturSelectivity (electronic)ParsingInheritance (object-oriented programming)BytecodeCore dumpIndependence (probability theory)Template (C++)Logical constantQuicksortNatural numberCategory of beingSocial classThermal expansionKey (cryptography)Slide ruleMultiplication signComputer fileKernel (computing)Set (mathematics)Physical systemDataflowAdditionLie groupElectric generatorDisassemblerSubject indexingTable (information)Moment (mathematics)Descriptive statisticsLatent heatLattice (order)DebuggerOnline helpTypinferenzInclusion mapData dictionaryCrash (computing)Right angleError messageGenderProgram slicingComputer animationProgram flowchart
Type theoryCodierung <Programmierung>Convex hullRegulärer Ausdruck <Textverarbeitung>Equivalence relationVirtual machineString (computer science)Rule of inferenceSocial classTemplate (C++)Parameter (computer programming)Default (computer science)Inheritance (object-oriented programming)SpacetimeSource codeFormal languageEquals signPersonal digital assistantMultiplicationPerformance appraisalStatement (computer science)Computer programmingVariable (mathematics)Term (mathematics)ClefCellular automatonTexture mappingSocial classMereologyGreatest elementGroup actionData dictionaryField (computer science)SequenceIndependence (probability theory)BitSet (mathematics)Real numberFront and back endsOpcodeAngleTemplate (C++)Slide ruleData conversionMultiplicationRight angleRow (database)Machine codeOperator (mathematics)Functional (mathematics)Parameter (computer programming)Network topologyStatement (computer science)Sign (mathematics)Variable (mathematics)Software testingRepresentation (politics)Instance (computer science)Default (computer science)Selectivity (electronic)ExpressionGraph (mathematics)Inheritance (object-oriented programming)Logical constantTheory of relativityCodierung <Programmierung>Electronic mailing listFamilyFunctional programmingSource codeFree variables and bound variablesRule of inferenceCartesian coordinate systemPoisson-KlammerFormal languageOvalType theoryPattern languageTable (information)CASE <Informatik>DampingExclusive orData storage deviceData structureComputer animation
IntegerIterationRange (statistics)Price indexExecution unitMultiplicationSet (mathematics)Regular graphComputer programMotion captureWechselseitige InformationArmNP-hardAmsterdam Ordnance DatumFunction (mathematics)String (computer science)Casting (performing arts)Formal languageComputer-generated imageryType theorySocial classStatement (computer science)Performance appraisalFunctional (mathematics)Operations researchNumberAddress spaceDifferent (Kate Ryan album)Dimensional analysisVirtual machineTable (information)Revision controlOpcodeDerivation (linguistics)InformationTelephone number mappingHausdorff dimensionGradientElectronic mailing listParameter (computer programming)Installation artForm (programming)Maxima and minimaMenu (computing)Programmer (hardware)Program slicingRight angleTouchscreenSocial classSet (mathematics)CASE <Informatik>Pattern languageMereologyParameter (computer programming)Similarity (geometry)Field (computer science)String (computer science)Loop (music)Row (database)Functional (mathematics)Front and back endsMoving averagePartial derivativeType theoryMappingVariable (mathematics)2 (number)DatabaseGradientElectronic mailing listMachine codeSource codeMatching (graph theory)Flow separation1 (number)Table (information)Derivation (linguistics)Medical imagingIndependence (probability theory)Operator (mathematics)Graphics processing unitIntegerCodeNumberElement (mathematics)Cartesian coordinate systemFamilyDirection (geometry)MultiplicationCasting (performing arts)Level (video gaming)BitMultiplication signRange (statistics)Formal verificationOrthogonalityDampingComplex (psychology)Codierung <Programmierung>Exception handlingKey (cryptography)Statement (computer science)Axiom of choiceForm (programming)Hash functionCuboidDifferent (Kate Ryan album)Telephone number mappingProfil (magazine)CombinatoricsGeneric programmingComputer configurationExtension (kinesiology)Coordinate system
Menu (computing)Type theoryComputer wormFormal languageComputer-generated imageryTypsystemSocial classTable (information)Statement (computer science)Performance appraisalComputer programmingDirection (geometry)Extension (kinesiology)Operator (mathematics)MultiplicationInheritance (object-oriented programming)CodeString (computer science)Predicate (grammar)Complex (psychology)OrthogonalityMessage passingError messageRow (database)CASE <Informatik>Multiplication signArray data structureSocial classProjective planeSelectivity (electronic)Table (information)Crash (computing)RecursionError messageMatching (graph theory)Point (geometry)Hash functionStatement (computer science)Core dumpOrder (biology)BlogPlanningFunctional (mathematics)Turing testFormal languageSeries (mathematics)VideoconferencingFront and back endsComputer fileCondition numberSubject indexingPattern languageQuicksortBitRight angleType theoryInheritance (object-oriented programming)InformationElectronic mailing listSystem callCasting (performing arts)Limit (category theory)Parameter (computer programming)Self-referenceElectric generatorImplementationFunction (mathematics)PreprocessoroutputSlide ruleFile formatString (computer science)Operator (mathematics)DebuggerParsingMultiplicationPhysical systemComputer animation
Point cloudComputer animation
Transcript: English(auto-generated)