{"version":3,"file":"llvm.mjs","sources":["../../../../../../node_modules/highlight.js/lib/languages/llvm.js"],"sourcesContent":["/*\nLanguage: LLVM IR\nAuthor: Michael Rodler <contact@f0rki.at>\nDescription: language used as intermediate representation in the LLVM compiler framework\nWebsite: https://llvm.org/docs/LangRef.html\nCategory: assembler\nAudit: 2020\n*/\n\n/** @type LanguageFn */\nfunction llvm(hljs) {\n  const regex = hljs.regex;\n  const IDENT_RE = /([-a-zA-Z$._][\\w$.-]*)/;\n  const TYPE = {\n    className: 'type',\n    begin: /\\bi\\d+(?=\\s|\\b)/\n  };\n  const OPERATOR = {\n    className: 'operator',\n    relevance: 0,\n    begin: /=/\n  };\n  const PUNCTUATION = {\n    className: 'punctuation',\n    relevance: 0,\n    begin: /,/\n  };\n  const NUMBER = {\n    className: 'number',\n    variants: [\n      { begin: /[su]?0[xX][KMLHR]?[a-fA-F0-9]+/ },\n      { begin: /[-+]?\\d+(?:[.]\\d+)?(?:[eE][-+]?\\d+(?:[.]\\d+)?)?/ }\n    ],\n    relevance: 0\n  };\n  const LABEL = {\n    className: 'symbol',\n    variants: [ { begin: /^\\s*[a-z]+:/ }, // labels\n    ],\n    relevance: 0\n  };\n  const VARIABLE = {\n    className: 'variable',\n    variants: [\n      { begin: regex.concat(/%/, IDENT_RE) },\n      { begin: /%\\d+/ },\n      { begin: /#\\d+/ },\n    ]\n  };\n  const FUNCTION = {\n    className: 'title',\n    variants: [\n      { begin: regex.concat(/@/, IDENT_RE) },\n      { begin: /@\\d+/ },\n      { begin: regex.concat(/!/, IDENT_RE) },\n      { begin: regex.concat(/!\\d+/, IDENT_RE) },\n      // https://llvm.org/docs/LangRef.html#namedmetadatastructure\n      // obviously a single digit can also be used in this fashion\n      { begin: /!\\d+/ }\n    ]\n  };\n\n  return {\n    name: 'LLVM IR',\n    // TODO: split into different categories of keywords\n    keywords: {\n      keyword: 'begin end true false declare define global '\n        + 'constant private linker_private internal '\n        + 'available_externally linkonce linkonce_odr weak '\n        + 'weak_odr appending dllimport dllexport common '\n        + 'default hidden protected extern_weak external '\n        + 'thread_local zeroinitializer undef null to tail '\n        + 'target triple datalayout volatile nuw nsw nnan '\n        + 'ninf nsz arcp fast exact inbounds align '\n        + 'addrspace section alias module asm sideeffect '\n        + 'gc dbg linker_private_weak attributes blockaddress '\n        + 'initialexec localdynamic localexec prefix unnamed_addr '\n        + 'ccc fastcc coldcc x86_stdcallcc x86_fastcallcc '\n        + 'arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device '\n        + 'ptx_kernel intel_ocl_bicc msp430_intrcc spir_func '\n        + 'spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc '\n        + 'cc c signext zeroext inreg sret nounwind '\n        + 'noreturn noalias nocapture byval nest readnone '\n        + 'readonly inlinehint noinline alwaysinline optsize ssp '\n        + 'sspreq noredzone noimplicitfloat naked builtin cold '\n        + 'nobuiltin noduplicate nonlazybind optnone returns_twice '\n        + 'sanitize_address sanitize_memory sanitize_thread sspstrong '\n        + 'uwtable returned type opaque eq ne slt sgt '\n        + 'sle sge ult ugt ule uge oeq one olt ogt '\n        + 'ole oge ord uno ueq une x acq_rel acquire '\n        + 'alignstack atomic catch cleanup filter inteldialect '\n        + 'max min monotonic nand personality release seq_cst '\n        + 'singlethread umax umin unordered xchg add fadd '\n        + 'sub fsub mul fmul udiv sdiv fdiv urem srem '\n        + 'frem shl lshr ashr and or xor icmp fcmp '\n        + 'phi call trunc zext sext fptrunc fpext uitofp '\n        + 'sitofp fptoui fptosi inttoptr ptrtoint bitcast '\n        + 'addrspacecast select va_arg ret br switch invoke '\n        + 'unwind unreachable indirectbr landingpad resume '\n        + 'malloc alloca free load store getelementptr '\n        + 'extractelement insertelement shufflevector getresult '\n        + 'extractvalue insertvalue atomicrmw cmpxchg fence '\n        + 'argmemonly',\n      type: 'void half bfloat float double fp128 x86_fp80 ppc_fp128 '\n        + 'x86_amx x86_mmx ptr label token metadata opaque'\n    },\n    contains: [\n      TYPE,\n      // this matches \"empty comments\"...\n      // ...because it's far more likely this is a statement terminator in\n      // another language than an actual comment\n      hljs.COMMENT(/;\\s*$/, null, { relevance: 0 }),\n      hljs.COMMENT(/;/, /$/),\n      {\n        className: 'string',\n        begin: /\"/,\n        end: /\"/,\n        contains: [\n          {\n            className: 'char.escape',\n            match: /\\\\\\d\\d/\n          }\n        ]\n      },\n      FUNCTION,\n      PUNCTUATION,\n      OPERATOR,\n      VARIABLE,\n      LABEL,\n      NUMBER\n    ]\n  };\n}\n\nmodule.exports = llvm;\n"],"names":["llvm","hljs","regex","IDENT_RE","TYPE","OPERATOR","PUNCTUATION","NUMBER","LABEL","VARIABLE","FUNCTION","llvm_1"],"mappings":";;;;AAUA,WAASA,EAAKC,GAAM;AAClB,UAAMC,IAAQD,EAAK,OACbE,IAAW,0BACXC,IAAO;AAAA,MACX,WAAW;AAAA,MACX,OAAO;AAAA,IACX,GACQC,IAAW;AAAA,MACf,WAAW;AAAA,MACX,WAAW;AAAA,MACX,OAAO;AAAA,IACX,GACQC,IAAc;AAAA,MAClB,WAAW;AAAA,MACX,WAAW;AAAA,MACX,OAAO;AAAA,IACX,GACQC,IAAS;AAAA,MACb,WAAW;AAAA,MACX,UAAU;AAAA,QACR,EAAE,OAAO,iCAAgC;AAAA,QACzC,EAAE,OAAO,kDAAiD;AAAA;MAE5D,WAAW;AAAA,IACf,GACQC,IAAQ;AAAA,MACZ,WAAW;AAAA,MACX,UAAU;AAAA,QAAE,EAAE,OAAO,cAAa;AAAA;AAAA;MAElC,WAAW;AAAA,IACf,GACQC,IAAW;AAAA,MACf,WAAW;AAAA,MACX,UAAU;AAAA,QACR,EAAE,OAAOP,EAAM,OAAO,KAAKC,CAAQ,EAAC;AAAA,QACpC,EAAE,OAAO,OAAM;AAAA,QACf,EAAE,OAAO,OAAM;AAAA;IAErB,GACQO,IAAW;AAAA,MACf,WAAW;AAAA,MACX,UAAU;AAAA,QACR,EAAE,OAAOR,EAAM,OAAO,KAAKC,CAAQ,EAAC;AAAA,QACpC,EAAE,OAAO,OAAM;AAAA,QACf,EAAE,OAAOD,EAAM,OAAO,KAAKC,CAAQ,EAAC;AAAA,QACpC,EAAE,OAAOD,EAAM,OAAO,QAAQC,CAAQ,EAAC;AAAA;AAAA;AAAA,QAGvC,EAAE,OAAO,OAAM;AAAA;IAErB;AAEE,WAAO;AAAA,MACL,MAAM;AAAA;AAAA,MAEN,UAAU;AAAA,QACR,SAAS;AAAA,QAqCT,MAAM;AAAA;MAGR,UAAU;AAAA,QACRC;AAAA;AAAA;AAAA;AAAA,QAIAH,EAAK,QAAQ,SAAS,MAAM,EAAE,WAAW,GAAG;AAAA,QAC5CA,EAAK,QAAQ,KAAK,GAAG;AAAA,QACrB;AAAA,UACE,WAAW;AAAA,UACX,OAAO;AAAA,UACP,KAAK;AAAA,UACL,UAAU;AAAA,YACR;AAAA,cACE,WAAW;AAAA,cACX,OAAO;AAAA;;;QAIbS;AAAA,QACAJ;AAAA,QACAD;AAAA,QACAI;AAAA,QACAD;AAAA,QACAD;AAAA;IAEN;AAAA,EACA;AAEA,SAAAI,IAAiBX;;","x_google_ignoreList":[0]}