Go to file
Brendan Punsky b8c391e9e1 rexcode/arm32: take the encoding-shaped names down to what assemblers spell
Of the 38 mnemonics still carrying an encoding-shaped name, 24 were simply
names no assembler accepts, and arm32's printer emits the enum name verbatim
-- so `vldrb_gather`, `vceq_z`, `vmov_q_r` and friends were the printed
output. Judged against llvm-mc in every case:

  renamed (base name was free)
    BFI_BR -> BFX      the V8.1M Branch Future indeXed, not a bitfield
                       insert; llvm assembles `bfx .L, r0` to F060E001,
                       which is exactly the bit pattern this entry held.
    VDOT_BF16  -> VDOT      `vdot.bf16 d0, d1, d2`
    VMMLA_BF16 -> VMMLA     `vmmla.bf16 q0, q1, q2`

  merged into the base mnemonic (21)
    VCEQ_Z/VCGE_Z/VCGT_Z/VCLE_Z/VCLT_Z -> the compare-against-zero forms
      are the same mnemonic with a literal `#0`: `vceq.i8 d0, d1, #0`.
    VCVT_FIXED, VCVT_BF16 -> VCVT      `vcvt.s16.f32 s0, s0, #4`
    VFMA_BF16 -> VFMA
    VLDR{B,H,W,D}_GATHER, VSTR{B,H,W,D}_SCATTER -> VLDR*/VSTR*: an MVE
      gather is spelled `vldrb.u8 q0, [r0, q1]`; the vector offset is an
      operand, not part of the mnemonic.
    VMOV_Q_R, VMOV_R_Q, VMOV_2GPR_Q -> VMOV
    VHCADD_SAT -> VHCADD, VCMLA_MVE -> VCMLA

  kept, but printed properly (2)
    PSB_CSYNC / TSB_CSYNC are written as two tokens, `psb csync`, the same
    shape as arm64's DC/AT/TLBI. The underscore now prints as a space; no
    other arm32 mnemonic has one.

Every merged form had an operand signature the matcher could already tell
apart from the base's, so nothing became unreachable. 631 -> 590 mnemonics,
underscore-bearing names 58 -> 14.

Test indices were re-derived by matching (bits, mask) against the rebuilt
table rather than by computing offsets -- every index the tests reference was
found, which is a check that the merge dropped no form.

Still blocked, and for the two reasons already known:
  VPADD_F, VRECPE_F, VRSQRTE_F  -- collide with their base because the NEON
    data type (.f32 vs .i8/.u32) is not an operand.
  VMOV_LANE, VLD1-4_LANE, VST1-4_LANE -- register lists and lane indices are
    not modelled.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-26 23:21:57 -04:00
2025-12-11 11:11:53 +00:00
2025-10-28 13:26:56 +00:00
2018-12-27 10:51:15 +00:00
2026-08-09 20:23:34 +02:00
2022-11-04 11:40:07 +00:00
2026-08-12 16:17:49 +01:00
2025-09-26 12:05:16 +02:00
2025-03-18 15:39:18 +00:00
2026-05-17 13:18:48 +01:00
2020-11-03 07:40:17 -03:00
2025-04-09 07:46:44 +11:00
2025-03-28 18:38:08 +01:00

Odin logo
The Data-Oriented Language for Sane Software Development.


The Odin Programming Language

Odin is a general-purpose programming language with distinct typing, built for high performance, modern systems, and built-in data-oriented data types. The Odin Programming Language, the C alternative for the joy of programming.

Website: https://odin-lang.org/

package main

import "core:fmt"

main :: proc() {
	program := "+ + * 😃 - /"
	accumulator := 0

	for token in program {
		switch token {
		case '+': accumulator += 1
		case '-': accumulator -= 1
		case '*': accumulator *= 2
		case '/': accumulator /= 2
		case '😃': accumulator *= accumulator
		case: // Ignore everything else
		}
	}

	fmt.printf("The program \"%s\" calculates the value %d\n",
	           program, accumulator)
}

Documentation

Getting Started

Instructions for downloading and installing the Odin compiler and libraries.

Nightly Builds

Get the latest nightly builds of Odin.

Learning Odin

Overview of Odin

An overview of the Odin programming language.

Frequently Asked Questions (FAQ)

Answers to common questions about Odin.

Packages

Documentation for all the official packages part of the core and vendor library collections.

Examples

Examples on how to write idiomatic Odin code. Shows how to accomplish specific tasks in Odin, as well as how to use packages from core and vendor.

Odin Documentation

Documentation for the Odin language itself.

Odin Discord

Get live support and talk with other Odin programmers on the Odin Discord.

Articles

The Odin Blog

The official blog of the Odin programming language, featuring announcements, news, and in-depth articles by the Odin team and guests.

Warnings

  • The Odin compiler is still in development.
Languages
Odin 82.3%
C++ 12.3%
C 4.6%
Python 0.3%
Lua 0.2%
Other 0.2%