Skip to content
This repository was archived by the owner on Dec 22, 2021. It is now read-only.
This repository was archived by the owner on Dec 22, 2021. It is now read-only.

Consistently support widening/long variants of integer instructions #226

Open
@bjacob

Description

@bjacob

In SIMD instruction sets where integer arithmetic is really first-class, support for different bit width in different operands is not just an ad-hoc addition for a few instructions. Instead, generically most multiplication, addition, subtraction instructions support "long" and "widening" variants. In ARM parlance, "widening" means that one operand is narrower and gets widened to match the other, e.g. (widening addition, ARM SADDW)
int16 := int16 + int8
and "long" means that while both source operands are the same width, the result or accumulator is larger, e.g. (long addition, ARM SADDL)
int16 := int8 + int8
or (long multiply-add, ARM SMLAL)
int16 += int8 * int8

While some issues have been filed in the past to discuss a few specific cases, such as Issue #175 , such ad-hoc addition of a few instructions isn't going to solve the whole problem.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions