Name Strings

SPV_ALTERA_arbitrary_precision_floating_point

Contact

To report problems with this extension, please open a new issue at:

Contributors

  • Ajaykumar Kannan, Intel

  • Shuo Niu, Intel

  • Daniel Zhang, Intel

Notice

Copyright (c) 2023,2025 Intel Corporation

Status

Supported

Version

Last Modified Date

2025-03-05

Revision

2

Dependencies

This extension is written against the SPIR-V Specification Version 1.6, Revision 2.

While this extension does not require SPV_ALTERA_arbitrary_precision_integers, the new operators it adds are significantly more useful when that extension is supported as the combination of the two extensions allows for more freedom in the width of arbitrary precision floating point data types that can be represented.

Overview

This extension adds instructions for performing arbitrary precision floating point computations. Each arbitrary-precision floating point value is represented as an OpTypeInt as described below. This datatype and its corresponding operations can be useful on targets that can take advantage of narrower representation such as FPGAs.

The datatype can be characterized by two parameters:

  • E: the number of exponent bits

  • M: the number of mantissa bits

The total width of the OpTypeInt container is E+M+1 where the extra bit is used to represent the sign. Note that the signedness capabilities of OpTypeInt are not used for any of the operations. The data layout is shown below:

[ S (sign bit) ][ E (Exponent) ][ M (Mantissa) ] ^--MSB LSB--^

The width of the data (E+M+1) is encoded with the width of the OpTypeInt. The other parameters regarding the type (namely E and M) are encoded in the arguments of the operations.

Operation Controls

Each of the operations will also provide some control over the Rounding Mode and the Subnormal support.

Extension Name

To use this extension within a SPIR-V module, the following OpExtension must be present in the module:

OpExtension "SPV_ALTERA_arbitrary_precision_floating_point"

New Capabilities

This extension introduces a new capability:

ArbitraryPrecisionFloatingPointALTERA

New Instructions

Instructions added under the ArbitraryPrecisionFloatingPointALTERA capability:

OpArbitraryFloatAddALTERA
OpArbitraryFloatSubALTERA
OpArbitraryFloatMulALTERA
OpArbitraryFloatDivALTERA
OpArbitraryFloatGTALTERA
OpArbitraryFloatGEALTERA
OpArbitraryFloatLTALTERA
OpArbitraryFloatLEALTERA
OpArbitraryFloatEQALTERA
OpArbitraryFloatRecipALTERA
OpArbitraryFloatRSqrtALTERA
OpArbitraryFloatCbrtALTERA
OpArbitraryFloatHypotALTERA
OpArbitraryFloatSqrtALTERA
OpArbitraryFloatLogALTERA
OpArbitraryFloatLog2ALTERA
OpArbitraryFloatLog10ALTERA
OpArbitraryFloatLog1pALTERA
OpArbitraryFloatExpALTERA
OpArbitraryFloatExp2ALTERA
OpArbitraryFloatExp10ALTERA
OpArbitraryFloatExpm1ALTERA
OpArbitraryFloatSinALTERA
OpArbitraryFloatCosALTERA
OpArbitraryFloatSinCosALTERA
OpArbitraryFloatSinPiALTERA
OpArbitraryFloatCosPiALTERA
OpArbitraryFloatSinCosPiALTERA
OpArbitraryFloatASinALTERA
OpArbitraryFloatASinPiALTERA
OpArbitraryFloatACosALTERA
OpArbitraryFloatACosPiALTERA
OpArbitraryFloatATanALTERA
OpArbitraryFloatATanPiALTERA
OpArbitraryFloatATan2ALTERA
OpArbitraryFloatPowALTERA
OpArbitraryFloatPowRALTERA
OpArbitraryFloatPowNALTERA
OpArbitraryFloatCastALTERA
OpArbitraryFloatCastFromIntALTERA
OpArbitraryFloatCastToIntALTERA

Token Number Assignments

ArbitraryPrecisionFloatingPointALTERA

5845

OpArbitraryFloatAddALTERA

5846

OpArbitraryFloatSubALTERA

5847

OpArbitraryFloatMulALTERA

5848

OpArbitraryFloatDivALTERA

5849

OpArbitraryFloatGTALTERA

5850

OpArbitraryFloatGEALTERA

5851

OpArbitraryFloatLTALTERA

5852

OpArbitraryFloatLEALTERA

5853

OpArbitraryFloatEQALTERA

5854

OpArbitraryFloatRecipALTERA

5855

OpArbitraryFloatRSqrtALTERA

5856

OpArbitraryFloatCbrtALTERA

5857

OpArbitraryFloatHypotALTERA

5858

OpArbitraryFloatSqrtALTERA

5859

OpArbitraryFloatLogALTERA

5860

OpArbitraryFloatLog2ALTERA

5861

OpArbitraryFloatLog10ALTERA

5862

OpArbitraryFloatLog1pALTERA

5863

OpArbitraryFloatExpALTERA

5864

OpArbitraryFloatExp2ALTERA

5865

OpArbitraryFloatExp10ALTERA

5866

OpArbitraryFloatExpm1ALTERA

5867

OpArbitraryFloatSinALTERA

5868

OpArbitraryFloatCosALTERA

5869

OpArbitraryFloatSinCosALTERA

5870

OpArbitraryFloatSinPiALTERA

5871

OpArbitraryFloatCosPiALTERA

5872

OpArbitraryFloatSinCosPiALTERA

5840

OpArbitraryFloatASinALTERA

5873

OpArbitraryFloatASinPiALTERA

5874

OpArbitraryFloatACosALTERA

5875

OpArbitraryFloatACosPiALTERA

5876

OpArbitraryFloatATanALTERA

5877

OpArbitraryFloatATanPiALTERA

5878

OpArbitraryFloatATan2ALTERA

5879

OpArbitraryFloatPowALTERA

5880

OpArbitraryFloatPowRALTERA

5881

OpArbitraryFloatPowNALTERA

5882

OpArbitraryFloatCastALTERA

5841

OpArbitraryFloatCastFromIntALTERA

5842

OpArbitraryFloatCastToIntALTERA

5843

Modifications to the SPIR-V Specification Version 1.6

After Section 3.16, add a new section "3.16a Subnormal Support" as follows:

Subnormal Support

Control whether subnormal support is enabled or not.

Value Subnormal Support

0

Flush subnormal numbers to zero on inputs and outputs

1

Enable support for operating on subnormal numbers

After Section 3.16, add a new section "3.16d Rounding Accuracy" as follows:

Rounding Accuracy

Controls whether rounding operations can be relaxed to trade correctness for improved resource utilization.

Value Mode Behavior

0

CORRECT_ALTERA

Conform to the rounding mode specified by the instruction’s rounding mode operand.

1

FAITHFUL_ALTERA

Allow some tolerance for error (within 1ULP of the infinitely precise result) for rounding.
The returned result is one of the two floating point values closest to the mathematical result.

This mode is useful for devices that can trade CORRECT_ALTERA rounding for improved resource utilization.

Capability

Modify Section 3.31, Capability, adding a row to the Capability table:

Capability Implicitly Declares

5845

ArbitraryPrecisionFloatingPointALTERA

Allows the use of various operations for arbitrary precision floating-point math

Instructions

In Section 3.32.13, Arithmetic Instructions, add the following instructions:

OpArbitraryFloatAddALTERA

Two OpTypeInt values representing two arbitrary precision floating point numbers are passed in as A and B and the result of A+B is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult, Ma and Mb are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result, A and B respectively. Note that the exponent values (Ea, Eb, Eresult) are inferred from the width of the OpTypeInt values used to represent their corresponding arguments (A, B, Result)

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

11

5846

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal Mb

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatSubALTERA

Two OpTypeInt values representing two arbitrary precision floating point numbers are passed in as A and B and the result of A-B is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult, Ma and Mb are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result, A and B respectively. Note that the exponent values (Ea, Eb, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

11

5847

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal Mb

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatMulALTERA

Two OpTypeInt values representing two arbitrary precision floating point numbers are passed in as A and B and the result of A*B is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult, Ma and Mb are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result, A and B respectively. Note that the exponent values (Ea, Eb, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

11

5848

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal Mb

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatDivALTERA

Two OpTypeInt values representing two arbitrary precision floating point numbers are passed in as A and B and the result of A/B is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult, Ma and Mb are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result, A and B respectively. Note that the exponent values (Ea, Eb, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

11

5849

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal Mb

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatGTALTERA

Two OpTypeInt values representing two arbitrary precision floating point numbers are passed in as A and B. The two numbers are compared and a value of true is returned in Result if A > B. Otherwise, a value of false is returned.

Result Type must be a Boolean type.

Result is of type OpTypeBool.

Ma and Mb are 32-bit unsigned integers that define the mantissa widths of the floating point types within A and B respectively. Note that the exponent values (Ea, Eb) are inferred from the width of the OpTypeInt.

Capability: ArbitraryPrecisionFloatingPointALTERA

7

5850

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal Mb

OpArbitraryFloatGEALTERA

Two OpTypeInt values representing two arbitrary precision floating point numbers are passed in as A and B. The two numbers are compared and a value of true is returned in Result if A >= B. Otherwise, a value of false is returned.

Result Type must be a Boolean type.

Result is of type OpTypeBool.

Ma and Mb are 32-bit unsigned integers that define the mantissa widths of the floating point types within A and B respectively. Note that the exponent values (Ea, Eb) are inferred from the width of the OpTypeInt.

Capability: ArbitraryPrecisionFloatingPointALTERA

7

5851

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal Mb

OpArbitraryFloatLTALTERA

Two OpTypeInt values representing two arbitrary precision floating point numbers are passed in as A and B. The two numbers are compared and a value of true is returned in Result if A < B. Otherwise, a value of false is returned.

Result Type must be a Boolean type.

Result is of type OpTypeBool.

Ma and Mb are 32-bit unsigned integers that define the mantissa widths of the floating point types within A and B respectively. Note that the exponent values (Ea, Eb) are inferred from the width of the OpTypeInt.

Capability: ArbitraryPrecisionFloatingPointALTERA

7

5852

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal Mb

OpArbitraryFloatLEALTERA

Two OpTypeInt values representing two arbitrary precision floating point numbers are passed in as A and B. The two numbers are compared and a value of true is returned in Result if A <= B. Otherwise, a value of false is returned.

Result Type must be a Boolean type.

Result is of type OpTypeBool.

Ma and Mb are 32-bit unsigned integers that define the mantissa widths of the floating point types within A and B respectively. Note that the exponent values (Ea, Eb) are inferred from the width of the OpTypeInt.

Capability: ArbitraryPrecisionFloatingPointALTERA

7

5853

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal Mb

OpArbitraryFloatEQALTERA

Two OpTypeInt values representing two arbitrary precision floating point numbers are passed in as A and B. The two numbers are compared and a value of true is returned in Result if A == B. Otherwise, a value of false is returned.

Result Type must be a Boolean type.

Result is of type OpTypeBool.

Ma and Mb are 32-bit unsigned integers that define the mantissa widths of the floating point types within A and B respectively. Note that the exponent values (Ea, Eb) are inferred from the width of the OpTypeInt.

Capability: ArbitraryPrecisionFloatingPointALTERA

7

5854

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal Mb

OpArbitraryFloatRecipALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the reciprocal of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5855

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatRSqrtALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the reciprocal of the square root of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5856

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatCbrtALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the cube root of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5857

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatHypotALTERA

Two OpTypeInt values representing two arbitrary precision floating point numbers are passed in as A and B and the hypotenuse, sqrt(A^2 + B^2), is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult, Ma and Mb are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result, A and B respectively. Note that the exponent values (Ea, Eb, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

11

5858

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal Mb

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatSqrtALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the square root of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5859

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatLogALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the ln(A) of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5860

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatLog2ALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A the log2(A) of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5861

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatLog10ALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the log10(A) of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5862

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatLog1pALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the ln(1+A) of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5863

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatExpALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the e^(A) of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5864

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatExp2ALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the 2^(A) of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5865

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatExp10ALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the 10^(A) of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5866

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatExpm1ALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the (e^A)-1 of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5867

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatSinALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the sine of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5868

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatCosALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the cosine of the value is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5869

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatSinCosALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the sine and cosine of the value is returned in Result.

Result Type must be a two-component vector of OpTypeInt. The first component of the Result contains the sine of A and is an arbitrary precision floating point number. The second component of the Result contains the cosine of A and is also an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5870

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatSinPiALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the sin(A*pi) is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5871

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatCosPiALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the cos(A*pi) is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5872

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatSinCosPiALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the sine and cosine of A*pi is returned in Result.

Result Type must be a two-component vector of OpTypeInt. The first component of the Result contains the sine of A and is an arbitrary precision floating point number. The second component of the Result contains the cosine of A and is also an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5840

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatASinALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the arcsin(A) is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5873

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatASinPiALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the arcsin(A)/pi is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5874

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatACosALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the arccos(A) is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5875

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatACosPiALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the arccos(A)/pi is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5876

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatATanALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the arctan(A) is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5877

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatATanPiALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A and the arctan(A)/pi is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5878

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatATan2ALTERA

Two OpTypeInt values representing two arbitrary precision floating point numbers are passed in as A and B and the arctan2(A,B) = arctan(A/B) is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult, Ma and Mb are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result, A and B respectively. Note that the exponent values (Ea, Eb, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

11

5879

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal Mb

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatPowALTERA

Two OpTypeInt values representing two arbitrary precision floating point numbers are passed in as A and B and the value of A^B is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult, Ma and Mb are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result, A and B respectively. Note that the exponent values (Ea, Eb, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

11

5880

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal Mb

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatPowRALTERA

Two OpTypeInt values representing two arbitrary precision floating point numbers are passed in as A and B. The value of A^B is returned in Result. However, A >= 0, otherwise, the result is undefined.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult, Ma and Mb are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result, A and B respectively. Note that the exponent values (Ea, Eb, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

11

5881

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal Mb

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatPowNALTERA

Two OpTypeInt values representing an arbitrary precision floating point number and an arbitrary precision integer number of signedness SignOfB are passed in as A and B respectively. The value of A^B is returned in Result where B is a signed or unsigned integer of arbitrary size.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

SignOfB specifies whether B is signed or unsigned.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result. It is ignored if the Accuracy operand is set to "FAITHFUL_ALTERA".

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

11

5882

<id> Result Type

Result <id>

A <id>

Literal Ma

B <id>

Literal SignOfB

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatCastALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A. It is type converted into an arbitrary precision floating point number with the new specification (Eresult, Mresult) and returned as Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult and Ma are 32-bit unsigned integers that define the mantissa widths of the floating point types within Result and A respectively. Note that the exponent values (Ea, Eresult) are inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result.

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5841

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal Mresult

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

OpArbitraryFloatCastFromIntALTERA

An OpTypeInt representing an integer of signedness FromSign is passed in as A. It is type converted into an arbitrary precision floating point number with the specification (Eresult, Mresult) and sign FromSign. The result of the convert operation is returned in Result.

Result Type must be OpTypeInt.

Result is the <id> of the operation’s result, which is an arbitrary precision floating point number.

Mresult is a 32-bit unsigned integer that defines the mantissa width of the floating point value in Result. Note that the exponent value (Eresult) is inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result.

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5842

<id> Result Type

Result <id>

A <id>

Literal Mresult

Literal FromSign

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccurcy Accuracy

OpArbitraryFloatCastToIntALTERA

An OpTypeInt representing an arbitrary precision floating point number is passed in as A. It is type converted into an integer with signedness ToSign and returned as Result.

Result Type must be OpTypeInt, whose Signedness operand is ToSign. Behaviour is undefined if Result Type is not wide enough to hold the converted value.

Result is the <id> of the operation’s result, which is an arbitrary precision integer.

Ma is a 32-bit unsigned integer that defines the mantissa width of the floating point value in A. Note that the exponent value (Ea) is inferred from the width of the OpTypeInt.

Subnormal is a SubnormalMode chosen from Table 3.16a that specifies whether subnormal numbers should be supported or flushed to zero before and after the operation.

Rounding is a RoundingMode chosen from Table 3.16 that controls the rounding mode for the result.

Accuracy is a RoundingAccuracy chosen from Table 3.16d that controls the rounding accuracy of the result.

Capability: ArbitraryPrecisionFloatingPointALTERA

9

5843

<id> Result Type

Result <id>

A <id>

Literal Ma

Literal ToSign

SubnormalMode Subnormal

RoundingMode Rounding

RoundingAccuracy Accuracy

Validation Rules

  • Any M* literal argument to any instruction added in this extension can’t exceed the width of its corresponding OpTypeInt argument minus 1

Issues

None.

Revision History

Rev Date Author Changes

2

2025-03-05

Jessica Davies

Fix for https://github.com/KhronosGroup/SPIRV-Registry/issues/315

1

2023-03-29

Ajaykumar Kannan

Initial Public Release