diff options
author | Matt Godbolt <matt@godbolt.org> | 2023-05-30 21:06:54 -0500 |
---|---|---|
committer | Matt Godbolt <matt@godbolt.org> | 2023-05-30 21:06:54 -0500 |
commit | beec3b51d49254e140feb1b8792c2f8ace08a1e5 (patch) | |
tree | 8c56f0cac95ab83009475b1efb8b5ffb976c24ce | |
parent | 1275dca94b436007048cd9a1dd17833df551ea04 (diff) | |
download | compiler-explorer-beec3b51d49254e140feb1b8792c2f8ace08a1e5.tar.gz compiler-explorer-beec3b51d49254e140feb1b8792c2f8ace08a1e5.zip |
Refactor; rename arm64 to aarch64gh-7511
-rw-r--r-- | etc/scripts/docenizers/.gitignore | 2 | ||||
-rw-r--r-- | etc/scripts/docenizers/Makefile | 55 | ||||
-rw-r--r-- | etc/scripts/docenizers/aarch64.json (renamed from etc/scripts/docenizers/arm64.json) | 0 | ||||
-rw-r--r-- | lib/asm-docs/_all.ts | 3 | ||||
-rw-r--r-- | lib/asm-docs/arm.ts (renamed from lib/asm-docs/arm32.ts) | 71 | ||||
-rw-r--r-- | lib/asm-docs/arm64.ts | 36 | ||||
-rw-r--r-- | lib/asm-docs/generated/asm-docs-aarch64.ts (renamed from lib/asm-docs/generated/asm-docs-arm64.ts) | 0 |
7 files changed, 77 insertions, 90 deletions
diff --git a/etc/scripts/docenizers/.gitignore b/etc/scripts/docenizers/.gitignore index cdf469217..bdf8747c5 100644 --- a/etc/scripts/docenizers/.gitignore +++ b/etc/scripts/docenizers/.gitignore @@ -1,6 +1,6 @@ asm-docs asm-docs-arm32 -asm-docs-arm64 +asm-docs-aarch64 evm-inst-docs python-inst-docs vendor/*.html diff --git a/etc/scripts/docenizers/Makefile b/etc/scripts/docenizers/Makefile index 4145305ba..fade14c8e 100644 --- a/etc/scripts/docenizers/Makefile +++ b/etc/scripts/docenizers/Makefile @@ -1,29 +1,30 @@ +GEN_DIR := ../../../lib/asm-docs/generated all: \ - ../../../lib/asm-docs/generated/asm-docs-6502.ts \ - ../../../lib/asm-docs/generated/asm-docs-amd64.ts \ - ../../../lib/asm-docs/generated/asm-docs-arm32.ts \ - ../../../lib/asm-docs/generated/asm-docs-arm64.ts \ - ../../../lib/asm-docs/generated/asm-docs-avr.ts \ - ../../../lib/asm-docs/generated/asm-docs-evm.ts \ - ../../../lib/asm-docs/generated/asm-docs-java.ts \ - ../../../lib/asm-docs/generated/asm-docs-llvm.ts \ - ../../../lib/asm-docs/generated/asm-docs-python.ts + $(GEN_DIR)/asm-docs-6502.ts \ + $(GEN_DIR)/asm-docs-amd64.ts \ + $(GEN_DIR)/asm-docs-arm32.ts \ + $(GEN_DIR)/asm-docs-aarch64.ts \ + $(GEN_DIR)/asm-docs-avr.ts \ + $(GEN_DIR)/asm-docs-evm.ts \ + $(GEN_DIR)/asm-docs-java.ts \ + $(GEN_DIR)/asm-docs-llvm.ts \ + $(GEN_DIR)/asm-docs-python.ts -../../../lib/asm-docs/generated/asm-docs-6502.ts: docenizer-6502.py - python3 docenizer-6502.py -../../../lib/asm-docs/generated/asm-docs-amd64.ts: docenizer-amd64.py - python3 docenizer-amd64.py -o ../../../lib/asm-docs/generated/asm-docs-amd64.ts -../../../lib/asm-docs/generated/asm-docs-arm32.ts: docenizer-arm.py arm32.json - python3 docenizer-arm.py -o ../../../lib/asm-docs/generated/asm-docs-arm32.ts -c arm32.json -d asm-docs-arm32 -i asm-docs-arm32 -../../../lib/asm-docs/generated/asm-docs-arm64.ts: docenizer-arm.py arm64.json - python3 docenizer-arm.py -o ../../../lib/asm-docs/generated/asm-docs-arm64.ts -c arm64.json -d asm-docs-arm64 -i asm-docs-arm64 -../../../lib/asm-docs/generated/asm-docs-avr.ts: docenizer-avr.py - python3 docenizer-avr.py -../../../lib/asm-docs/generated/asm-docs-evm.ts: docenizer-evm.py - python3 docenizer-evm.py -o ../../../lib/asm-docs/generated/asm-docs-evm.ts -../../../lib/asm-docs/generated/asm-docs-java.ts: docenizer-java.sh docenizer-java.js - ./docenizer-java.sh -../../../lib/asm-docs/generated/asm-docs-llvm.ts: docenizer-llvm.sh docenizer-llvm.ts - ./docenizer-llvm.sh -../../../lib/asm-docs/generated/asm-docs-python.ts: docenizer-python.py - python3 docenizer-python.py -o ../../../lib/asm-docs/generated/asm-docs-python.ts +$(GEN_DIR)/asm-docs-6502.ts: docenizer-6502.py + python3 $< +$(GEN_DIR)/asm-docs-amd64.ts: docenizer-amd64.py + python3 $< -o $@ +$(GEN_DIR)/asm-docs-arm32.ts: docenizer-arm.py arm32.json + python3 $< -o $@ -c arm32.json -d asm-docs-arm32 -i asm-docs-arm32 +$(GEN_DIR)/asm-docs-aarch64.ts: docenizer-arm.py aarch64.json + python3 $< -o $@ -c aarch64.json -d asm-docs-aarch64 -i asm-docs-aarch64 +$(GEN_DIR)/asm-docs-avr.ts: docenizer-avr.py + python3 $< +$(GEN_DIR)/asm-docs-evm.ts: docenizer-evm.py + python3 $< -o $@ +$(GEN_DIR)/asm-docs-java.ts: docenizer-java.sh docenizer-java.ts + $< +$(GEN_DIR)/asm-docs-llvm.ts: docenizer-llvm.sh docenizer-llvm.ts + $< +$(GEN_DIR)/asm-docs-python.ts: docenizer-python.py + python3 $< -o $@ diff --git a/etc/scripts/docenizers/arm64.json b/etc/scripts/docenizers/aarch64.json index 045b1aac3..045b1aac3 100644 --- a/etc/scripts/docenizers/arm64.json +++ b/etc/scripts/docenizers/aarch64.json diff --git a/lib/asm-docs/_all.ts b/lib/asm-docs/_all.ts index d447dc0c4..821ad1c74 100644 --- a/lib/asm-docs/_all.ts +++ b/lib/asm-docs/_all.ts @@ -23,8 +23,7 @@ // POSSIBILITY OF SUCH DAMAGE. export {Amd64DocumentationProvider} from './amd64.js'; -export {Arm32DocumentationProvider} from './arm32.js'; -export {Arm64DocumentationProvider} from './arm64.js'; +export {Arm32DocumentationProvider, ArmArch64DocumentationProvider} from './arm.js'; export {AvrDocumentationProvider} from './avr.js'; export {EvmDocumentationProvider} from './evm.js'; export {JavaDocumentationProvider} from './java.js'; diff --git a/lib/asm-docs/arm32.ts b/lib/asm-docs/arm.ts index f2fa874df..7f4ea695b 100644 --- a/lib/asm-docs/arm32.ts +++ b/lib/asm-docs/arm.ts @@ -23,46 +23,49 @@ // POSSIBILITY OF SUCH DAMAGE. import {AssemblyInstructionInfo, BaseAssemblyDocumentationProvider} from './base.js'; -import {getAsmOpcode} from './generated/asm-docs-arm32.js'; +import {getAsmOpcode as getAsmOpcode32} from './generated/asm-docs-arm32.js'; +import {getAsmOpcode as getAsmOpcode64} from './generated/asm-docs-aarch64.js'; -export class Arm32DocumentationProvider extends BaseAssemblyDocumentationProvider { +abstract class ArmBaseDocumentationProvider extends BaseAssemblyDocumentationProvider { private static readonly CONDITIONAL_INSTRUCTION_REGEXP = /^([A-Za-z]+?)(EQ|NE|CS|CC|MI|PL|VS|VC|HI|LS|GE|LT|GT|LE|AL)$/; - public static get key() { - return 'arm32'; - } + public override getInstructionInformation(instruction: string): AssemblyInstructionInfo | null { - const info = getAsmOpcode(instruction) || Arm32DocumentationProvider.getConditionalOpcode(instruction); + const info = this.getAsmOpcode(instruction) || this.getConditionalOpcode(instruction); return info || null; } private static readonly CONDITIONAL_OPCODE_TAGS: Record<string, string> = { - EQ: 'If equal, ', - NE: 'If not equal, ', - CS: 'If carry set, ', - CC: 'If carry clear, ', - MI: 'If negative, ', - PL: 'If positive or zero, ', - VS: 'If overflow, ', - VC: 'If no overflow, ', - HI: 'If unsigned higher, ', - LS: 'If unsigned lower or same, ', - GE: 'If signed greater than or equal, ', - LT: 'If signed less than, ', - GT: 'If signed greater than, ', - LE: 'If signed less than or equal, ', + EQ: 'equal', + NE: 'not equal', + CS: 'carry set', + CC: 'carry clear', + MI: 'negative', + PL: 'positive or zero', + VS: 'overflow', + VC: 'no overflow', + HI: 'unsigned higher', + LS: 'unsigned lower or same', + GE: 'signed greater than or equal', + LT: 'signed less than', + GT: 'signed greater than', + LE: 'signed less than or equal', }; + protected abstract getAsmOpcode(opcode: string): AssemblyInstructionInfo | undefined; + /** Add additional notes for conditional instructions */ - private static getConditionalOpcode(instruction: string): AssemblyInstructionInfo | null { + private getConditionalOpcode(instruction: string): AssemblyInstructionInfo | null { // If the instruction is a conditional instruction - const isConditionalOpcode = instruction.match(Arm32DocumentationProvider.CONDITIONAL_INSTRUCTION_REGEXP); + const isConditionalOpcode = instruction + .match(ArmBaseDocumentationProvider.CONDITIONAL_INSTRUCTION_REGEXP); if (!isConditionalOpcode) { return null; } - const information = getAsmOpcode(isConditionalOpcode[1]); + const information = this.getAsmOpcode(isConditionalOpcode[1]); if (!information) return null; - const text = Arm32DocumentationProvider.CONDITIONAL_OPCODE_TAGS[isConditionalOpcode[2]] || ''; + const maybeCondition = ArmBaseDocumentationProvider.CONDITIONAL_OPCODE_TAGS[isConditionalOpcode[2]]; + const text = maybeCondition ? `If ${maybeCondition}: ` : ''; return { ...information, tooltip: text + information.tooltip, @@ -70,3 +73,23 @@ export class Arm32DocumentationProvider extends BaseAssemblyDocumentationProvide }; } } + +export class Arm32DocumentationProvider extends ArmBaseDocumentationProvider { + public static get key() { + return 'arm32'; + } + + protected getAsmOpcode(opcode: string): AssemblyInstructionInfo | undefined { + return getAsmOpcode32(opcode); + } +} + +export class ArmArch64DocumentationProvider extends ArmBaseDocumentationProvider { + public static get key() { + return 'aarch64'; + } + + protected getAsmOpcode(opcode: string): AssemblyInstructionInfo | undefined { + return getAsmOpcode64(opcode); + } +} diff --git a/lib/asm-docs/arm64.ts b/lib/asm-docs/arm64.ts deleted file mode 100644 index 117394781..000000000 --- a/lib/asm-docs/arm64.ts +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright (c) 2021, Compiler Explorer Authors -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. - -import {AssemblyInstructionInfo, BaseAssemblyDocumentationProvider} from './base.js'; -import {getAsmOpcode} from './generated/asm-docs-arm64.js'; - -export class Arm64DocumentationProvider extends BaseAssemblyDocumentationProvider { - public static get key() { - return 'arm64'; - } - public override getInstructionInformation(instruction: string): AssemblyInstructionInfo | null { - const info = getAsmOpcode(instruction); - return info || null; - } -} diff --git a/lib/asm-docs/generated/asm-docs-arm64.ts b/lib/asm-docs/generated/asm-docs-aarch64.ts index afc0c8d75..afc0c8d75 100644 --- a/lib/asm-docs/generated/asm-docs-arm64.ts +++ b/lib/asm-docs/generated/asm-docs-aarch64.ts |