!sum - go: TruncToInt8 asm: "VXTN" hiHalfAsm: "VXTN2" in: - base: int elemBits: 16 out: - base: int bits: 128 - go: TruncToUint8 asm: "VXTN" hiHalfAsm: "VXTN2" in: - base: uint elemBits: 16 out: - base: uint bits: 128 - go: TruncToInt16 asm: "VXTN" hiHalfAsm: "VXTN2" in: - base: int elemBits: 32 out: - base: int bits: 128 - go: TruncToUint16 asm: "VXTN" hiHalfAsm: "VXTN2" in: - base: uint elemBits: 32 out: - base: uint bits: 128 - go: TruncToInt32 asm: "VXTN" hiHalfAsm: "VXTN2" in: - base: int elemBits: 64 out: - base: int bits: 128 - go: TruncToUint32 asm: "VXTN" hiHalfAsm: "VXTN2" in: - base: uint elemBits: 64 out: - base: uint bits: 128 # Float -> Int conversions (same-size) # ISA XML has float→float for FCVTZS_int; use OverwriteBase to correct output type # float32 -> int32 - go: ConvertToInt32 asm: "VFCVTZS" in: - base: float elemBits: 32 out: - base: float elemBits: 32 OverwriteBase: int # float32 -> uint32 - go: ConvertToUint32 asm: "VFCVTZU" in: - base: float elemBits: 32 out: - base: float elemBits: 32 OverwriteBase: uint # float64 -> int64 - go: ConvertToInt64 asm: "VFCVTZS" in: - base: float elemBits: 64 out: - base: float elemBits: 64 OverwriteBase: int # float64 -> uint64 - go: ConvertToUint64 asm: "VFCVTZU" in: - base: float elemBits: 64 out: - base: float elemBits: 64 OverwriteBase: uint # Int -> Float conversions (same-size) # ISA XML has float→float for SCVTF_int/UCVTF_int; use OverwriteBase to correct input type # int32 -> float32 - go: ConvertToFloat32 asm: "VSCVTF" in: - base: float elemBits: 32 OverwriteBase: int out: - base: float elemBits: 32 # uint32 -> float32 - go: ConvertToFloat32 asm: "VUCVTF" in: - base: float elemBits: 32 OverwriteBase: uint out: - base: float elemBits: 32 # int64 -> float64 - go: ConvertToFloat64 asm: "VSCVTF" in: - base: float elemBits: 64 OverwriteBase: int out: - base: float elemBits: 64 # uint64 -> float64 - go: ConvertToFloat64 asm: "VUCVTF" in: - base: float elemBits: 64 OverwriteBase: uint out: - base: float elemBits: 64 # Float narrow/widen # float64 -> float32 narrow - go: ConvertToFloat32 asm: "VFCVTN" hiHalfAsm: "VFCVTN2" in: - base: float elemBits: 64 out: - base: float elemBits: 32 bits: 128 # float32 -> float64 widen - go: ConvertLo2ToFloat64 asm: "VFCVTL" hiHalfAsm: "VFCVTL2" in: - base: float elemBits: 32 out: - base: float elemBits: 64 bits: 128 # Integer extend (widen) — signed # int8 -> int16 - go: ExtendLo8ToInt16 asm: "VSXTL" hiHalfAsm: "VSXTL2" in: - base: int elemBits: 8 out: - base: int elemBits: 16 bits: 128 # int16 -> int32 - go: ExtendLo4ToInt32 asm: "VSXTL" hiHalfAsm: "VSXTL2" in: - base: int elemBits: 16 out: - base: int elemBits: 32 bits: 128 # int32 -> int64 - go: ExtendLo2ToInt64 asm: "VSXTL" hiHalfAsm: "VSXTL2" in: - base: int elemBits: 32 out: - base: int elemBits: 64 bits: 128 # Integer extend (widen) — unsigned # uint8 -> uint16 - go: ExtendLo8ToUint16 asm: "VUXTL" hiHalfAsm: "VUXTL2" in: - base: uint elemBits: 8 out: - base: uint elemBits: 16 bits: 128 # uint16 -> uint32 - go: ExtendLo4ToUint32 asm: "VUXTL" hiHalfAsm: "VUXTL2" in: - base: uint elemBits: 16 out: - base: uint elemBits: 32 bits: 128 # uint32 -> uint64 - go: ExtendLo2ToUint64 asm: "VUXTL" hiHalfAsm: "VUXTL2" in: - base: uint elemBits: 32 out: - base: uint elemBits: 64 bits: 128 # Saturating narrow — signed (VSQXTN/VSQXTN2) - go: SaturateToInt8 asm: "VSQXTN" hiHalfAsm: "VSQXTN2" in: - base: int elemBits: 16 out: - base: int elemBits: 8 bits: 128 - go: SaturateToInt16 asm: "VSQXTN" hiHalfAsm: "VSQXTN2" in: - base: int elemBits: 32 out: - base: int elemBits: 16 bits: 128 - go: SaturateToInt32 asm: "VSQXTN" hiHalfAsm: "VSQXTN2" in: - base: int elemBits: 64 out: - base: int elemBits: 32 bits: 128 # Saturating narrow — signed to unsigned (VSQXTUN/VSQXTUN2) # ISA XML has int→int for SQXTUN; use OverwriteBase to correct output type - go: SaturateToUint8 asm: "VSQXTUN" hiHalfAsm: "VSQXTUN2" in: - base: int elemBits: 16 out: - base: int elemBits: 8 bits: 128 OverwriteBase: uint - go: SaturateToUint16 asm: "VSQXTUN" hiHalfAsm: "VSQXTUN2" in: - base: int elemBits: 32 out: - base: int elemBits: 16 bits: 128 OverwriteBase: uint - go: SaturateToUint32 asm: "VSQXTUN" hiHalfAsm: "VSQXTUN2" in: - base: int elemBits: 64 out: - base: int elemBits: 32 bits: 128 OverwriteBase: uint # Saturating narrow — unsigned (VUQXTN/VUQXTN2) - go: SaturateToUint8 asm: "VUQXTN" hiHalfAsm: "VUQXTN2" in: - base: uint elemBits: 16 out: - base: uint elemBits: 8 bits: 128 - go: SaturateToUint16 asm: "VUQXTN" hiHalfAsm: "VUQXTN2" in: - base: uint elemBits: 32 out: - base: uint elemBits: 16 bits: 128 - go: SaturateToUint32 asm: "VUQXTN" hiHalfAsm: "VUQXTN2" in: - base: uint elemBits: 64 out: - base: uint elemBits: 32 bits: 128