| !sum | |
| # Float <-> Int conversions | |
| # float32 -> int32 | |
| - go: ConvertToInt32 | |
| regexpTag: "convert" | |
| asm: "VCVTTP[SD]2DQ" | |
| in: | |
| - | |
| go: $t | |
| base: float | |
| out: | |
| - | |
| go: $u | |
| base: int | |
| elemBits: 32 | |
| # float32 -> uint32 | |
| - go: ConvertToUint32 | |
| regexpTag: "convert" | |
| asm: "VCVTTP[SD]2UDQ" | |
| in: | |
| - | |
| out: | |
| - | |
| go: $u | |
| base: uint | |
| elemBits: 32 | |
| # float32|float64 -> int64 | |
| - go: ConvertToInt64 | |
| regexpTag: "convert" | |
| asm: "VCVTTPD2QQ" | |
| in: | |
| - | |
| out: | |
| - | |
| go: $u | |
| base: int | |
| elemBits: 64 | |
| - go: ConvertToInt64 | |
| regexpTag: "convert" | |
| asm: "VCVTTPS2QQ" | |
| in: | |
| - | |
| out: | |
| - go: $u | |
| base: int | |
| elemBits: 64 | |
| bits: 256|512 | |
| # float32|float64 -> uint64 | |
| - go: ConvertToUint64 | |
| regexpTag: "convert" | |
| asm: "VCVTTPD2UQQ" | |
| in: | |
| - | |
| out: | |
| - | |
| go: $u | |
| base: uint | |
| elemBits: 64 | |
| - go: ConvertToUint64 | |
| regexpTag: "convert" | |
| asm: "VCVTTPS2UQQ" | |
| in: | |
| - | |
| out: | |
| - go: $u | |
| base: uint | |
| elemBits: 64 | |
| bits: 256|512 | |
| # int -> float32 | |
| - go: ConvertToFloat32 | |
| regexpTag: "convert" | |
| asm: "VCVT[DQ]Q2PS" | |
| in: | |
| - go: $i | |
| base: int | |
| out: | |
| - | |
| # int -> float64 | |
| - go: ConvertToFloat64 | |
| regexpTag: "convert" | |
| asm: "VCVTQQ2PD" | |
| in: | |
| out: | |
| - | |
| - go: ConvertToFloat64 | |
| regexpTag: "convert" | |
| asm: "VCVTDQ2PD" | |
| in: | |
| out: | |
| - base: float | |
| bits: 256|512 | |
| # uint -> float32 | |
| - go: ConvertToFloat32 | |
| regexpTag: "convert" | |
| asm: "VCVTU[DQ]Q2PS" | |
| in: | |
| - go: $u | |
| base: uint | |
| out: | |
| - | |
| # uint -> float64 | |
| - go: ConvertToFloat64 | |
| regexpTag: "convert" | |
| asm: "VCVTUQQ2PD" | |
| in: | |
| out: | |
| - | |
| - go: ConvertToFloat64 | |
| regexpTag: "convert" | |
| asm: "VCVTUDQ2PD" | |
| in: | |
| out: | |
| - base: float | |
| bits: 256|512 | |
| # float64 -> float32 | |
| - go: ConvertToFloat32 | |
| regexpTag: "convert" | |
| asm: "VCVTPD2PS" | |
| addDoc: | |
| !string |- | |
| // The result vector's elements are rounded to the nearest value. | |
| in: | |
| - base: float | |
| elemBits: 64 | |
| out: | |
| - base: float | |
| elemBits: 32 | |
| # float32 -> float64 | |
| - go: ConvertToFloat64 | |
| regexpTag: "convert" | |
| asm: "VCVTPS2PD" | |
| in: | |
| out: | |
| - base: float | |
| elemBits: 64 | |
| bits: 256|512 | |
| # Widening integer conversions. | |
| # uint8 -> uint16 | |
| - go: ExtendToUint16 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXBW" | |
| in: | |
| - | |
| base: uint | |
| elemBits: 8 | |
| bits: 128 | |
| out: | |
| - | |
| base: uint | |
| elemBits: 16 | |
| bits: 256 | |
| - go: ExtendToUint16 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXBW" | |
| in: | |
| - | |
| base: uint | |
| elemBits: 8 | |
| bits: 256 | |
| out: | |
| - | |
| base: uint | |
| elemBits: 16 | |
| bits: 512 | |
| # int8 -> int16 | |
| - go: ExtendToInt16 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXBW" | |
| in: | |
| - | |
| base: int | |
| elemBits: 8 | |
| bits: 128 | |
| out: | |
| - | |
| base: int | |
| elemBits: 16 | |
| bits: 256 | |
| - go: ExtendToInt16 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXBW" | |
| in: | |
| - | |
| base: int | |
| elemBits: 8 | |
| bits: 256 | |
| out: | |
| - | |
| base: int | |
| elemBits: 16 | |
| bits: 512 | |
| # uint16->uint32 | |
| - go: ExtendToUint32 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXWD" | |
| in: | |
| - | |
| base: uint | |
| elemBits: 16 | |
| bits: 128 | |
| out: | |
| - | |
| base: uint | |
| elemBits: 32 | |
| bits: 256 | |
| - go: ExtendToUint32 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXWD" | |
| in: | |
| - | |
| out: | |
| - | |
| base: uint | |
| elemBits: 32 | |
| bits: 512 | |
| # int16->int32 | |
| - go: ExtendToInt32 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXWD" | |
| in: | |
| - | |
| base: int | |
| elemBits: 16 | |
| bits: 128 | |
| out: | |
| - | |
| base: int | |
| elemBits: 32 | |
| bits: 256 | |
| - go: ExtendToInt32 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXWD" | |
| in: | |
| - | |
| out: | |
| - | |
| base: int | |
| elemBits: 32 | |
| bits: 512 | |
| # uint32 -> uint64 | |
| - go: ExtendToUint64 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXDQ" | |
| in: | |
| - | |
| base: uint | |
| elemBits: 32 | |
| bits: 128 | |
| out: | |
| - | |
| base: uint | |
| elemBits: 64 | |
| bits: 256 | |
| - go: ExtendToUint64 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXDQ" | |
| in: | |
| - | |
| out: | |
| - | |
| base: uint | |
| elemBits: 64 | |
| bits: 512 | |
| # int32 -> int64 | |
| - go: ExtendToInt64 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXDQ" | |
| in: | |
| - | |
| base: int | |
| elemBits: 32 | |
| bits: 128 | |
| out: | |
| - | |
| base: int | |
| elemBits: 64 | |
| bits: 256 | |
| - go: ExtendToInt64 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXDQ" | |
| in: | |
| - | |
| out: | |
| - | |
| base: int | |
| elemBits: 64 | |
| bits: 512 | |
| # uint16 -> uint64 | |
| - go: ExtendToUint64 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXWQ" | |
| in: | |
| - | |
| out: | |
| - | |
| # int16 -> int64 | |
| - go: ExtendToInt64 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXWQ" | |
| in: | |
| - | |
| out: | |
| - | |
| # uint8 -> uint32 | |
| - go: ExtendToUint32 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXBD" | |
| in: | |
| - | |
| out: | |
| - | |
| # int8 -> int32 | |
| - go: ExtendToInt32 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXBD" | |
| in: | |
| - | |
| out: | |
| - | |
| # Truncating conversions | |
| - go: TruncateToInt8 | |
| regexpTag: "convert" | |
| asm: "VPMOV[WDQ]B" | |
| in: | |
| - base: int | |
| out: | |
| - base: int | |
| bits: 128 | |
| - go: TruncateToUint8 | |
| regexpTag: "convert" | |
| asm: "VPMOV[WDQ]B" | |
| in: | |
| - base: uint | |
| out: | |
| - base: uint | |
| bits: 128 | |
| - go: TruncateToInt8 | |
| regexpTag: "convert" | |
| asm: "VPMOV[WDQ]B" | |
| in: | |
| - base: int | |
| out: | |
| - base: int | |
| bits: 256|512 | |
| - go: TruncateToUint8 | |
| regexpTag: "convert" | |
| asm: "VPMOV[WDQ]B" | |
| in: | |
| - base: uint | |
| out: | |
| - base: uint | |
| bits: 256|512 | |
| - go: TruncateToInt16 | |
| regexpTag: "convert" | |
| asm: "VPMOV[DQ]W" | |
| in: | |
| - base: int | |
| out: | |
| - base: int | |
| - go: TruncateToUint16 | |
| regexpTag: "convert" | |
| asm: "VPMOV[DQ]W" | |
| in: | |
| - base: uint | |
| out: | |
| - base: uint | |
| - go: TruncateToInt32 | |
| regexpTag: "convert" | |
| asm: "VPMOVQD" | |
| in: | |
| - base: int | |
| out: | |
| - base: int | |
| - go: TruncateToUint32 | |
| regexpTag: "convert" | |
| asm: "VPMOVQD" | |
| in: | |
| - base: uint | |
| out: | |
| - base: uint | |
| # Saturated conversions. | |
| - go: SaturateToInt8 | |
| regexpTag: "convert" | |
| asm: "VPMOVS[WDQ]B" | |
| in: | |
| - base: int | |
| out: | |
| - base: int | |
| bits: 128 | |
| - go: SaturateToUint8 | |
| regexpTag: "convert" | |
| asm: "VPMOVUS[WDQ]B" | |
| in: | |
| - base: uint | |
| out: | |
| - base: uint | |
| bits: 128 | |
| - go: SaturateToInt8 | |
| regexpTag: "convert" | |
| asm: "VPMOVS[WDQ]B" | |
| in: | |
| - base: int | |
| out: | |
| - base: int | |
| bits: 256|512 | |
| - go: SaturateToUint8 | |
| regexpTag: "convert" | |
| asm: "VPMOVUS[WDQ]B" | |
| in: | |
| - base: uint | |
| out: | |
| - base: uint | |
| bits: 256|512 | |
| - go: SaturateToInt16 | |
| regexpTag: "convert" | |
| asm: "VPMOVS[DQ]W" | |
| in: | |
| - base: int | |
| out: | |
| - base: int | |
| - go: SaturateToUint16 | |
| regexpTag: "convert" | |
| asm: "VPMOVUS[DQ]W" | |
| in: | |
| - base: uint | |
| out: | |
| - base: uint | |
| - go: SaturateToInt32 | |
| regexpTag: "convert" | |
| asm: "VPMOVSQD" | |
| in: | |
| - base: int | |
| out: | |
| - base: int | |
| - go: SaturateToUint32 | |
| regexpTag: "convert" | |
| asm: "VPMOVUSQD" | |
| in: | |
| - base: uint | |
| out: | |
| - base: uint | |
| # Truncating saturated packed | |
| - go: SaturateToInt16Concat | |
| regexpTag: "convert" | |
| asm: "VPACKSSDW" | |
| addDoc: | |
| !string |- | |
| // The converted elements from x will be packed to the lower part of the result vector, | |
| // the converted elements from y will be packed to the upper part of the result vector. | |
| in: | |
| - base: int | |
| - base: int | |
| out: | |
| - base: int | |
| bits: 128 | |
| - go: SaturateToInt16ConcatGrouped | |
| regexpTag: "convert" | |
| asm: "VPACKSSDW" | |
| addDoc: | |
| !string |- | |
| // With each 128-bit as a group: | |
| // The converted elements from x will be packed to the lower part of the group in the result vector, | |
| // the converted elements from y will be packed to the upper part of the group in the result vector. | |
| in: | |
| - base: int | |
| - base: int | |
| out: | |
| - base: int | |
| bits: 256|512 | |
| - go: SaturateToUint16Concat | |
| regexpTag: "convert" | |
| asm: "VPACKUSDW" | |
| addDoc: | |
| in: | |
| - base: int | |
| - base: int | |
| out: | |
| - base: uint | |
| bits: 128 | |
| - go: SaturateToUint16ConcatGrouped | |
| regexpTag: "convert" | |
| asm: "VPACKUSDW" | |
| addDoc: | |
| in: | |
| - base: int | |
| - base: int | |
| out: | |
| - base: uint | |
| bits: 256|512 | |
| # low-part only conversions. | |
| # uint8->uint16 | |
| - go: ExtendLo8ToUint16 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXBW" | |
| in: | |
| - | |
| out: | |
| - | |
| # int8->int16 | |
| - go: ExtendLo8ToInt16 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXBW" | |
| in: | |
| - | |
| out: | |
| - | |
| # uint16->uint32 | |
| - go: ExtendLo4ToUint32 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXWD" | |
| in: | |
| - | |
| out: | |
| - | |
| # int16->int32 | |
| - go: ExtendLo4ToInt32 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXWD" | |
| in: | |
| - | |
| out: | |
| - | |
| # uint32 -> uint64 | |
| - go: ExtendLo2ToUint64 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXDQ" | |
| in: | |
| - | |
| out: | |
| - | |
| base: uint | |
| elemBits: 64 | |
| bits: 128 | |
| # int32 -> int64 | |
| - go: ExtendLo2ToInt64 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXDQ" | |
| in: | |
| - | |
| out: | |
| - | |
| base: int | |
| elemBits: 64 | |
| bits: 128 | |
| # uint16 -> uint64 | |
| - go: ExtendLo2ToUint64 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXWQ" | |
| in: | |
| - | |
| out: | |
| - | |
| - go: ExtendLo4ToUint64 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXWQ" | |
| in: | |
| - | |
| out: | |
| - | |
| # int16 -> int64 | |
| - go: ExtendLo2ToInt64 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXWQ" | |
| in: | |
| - | |
| out: | |
| - | |
| - go: ExtendLo4ToInt64 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXWQ" | |
| in: | |
| - | |
| out: | |
| - | |
| # uint8 -> uint32 | |
| - go: ExtendLo4ToUint32 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXBD" | |
| in: | |
| - | |
| out: | |
| - | |
| - go: ExtendLo8ToUint32 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXBD" | |
| in: | |
| - | |
| out: | |
| - | |
| # int8 -> int32 | |
| - go: ExtendLo4ToInt32 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXBD" | |
| in: | |
| - | |
| out: | |
| - | |
| - go: ExtendLo8ToInt32 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXBD" | |
| in: | |
| - | |
| out: | |
| - | |
| # uint8 -> uint64 | |
| - go: ExtendLo2ToUint64 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXBQ" | |
| in: | |
| - | |
| out: | |
| - | |
| - go: ExtendLo4ToUint64 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXBQ" | |
| in: | |
| - | |
| out: | |
| - | |
| - go: ExtendLo8ToUint64 | |
| regexpTag: "convert" | |
| asm: "VPMOVZXBQ" | |
| in: | |
| - | |
| out: | |
| - | |
| # int8 -> int64 | |
| - go: ExtendLo2ToInt64 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXBQ" | |
| in: | |
| - | |
| out: | |
| - | |
| - go: ExtendLo4ToInt64 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXBQ" | |
| in: | |
| - | |
| out: | |
| - | |
| - go: ExtendLo8ToInt64 | |
| regexpTag: "convert" | |
| asm: "VPMOVSXBQ" | |
| in: | |
| - | |
| out: | |
| - | |