Migrate Vector128 from kotlin.native to kotlinx.cinterop #KT-58402

Make kotlin.native.Vector128 a typealias for kotlinx.cinterop.Vector128
Choose source compatibility over binary compatibility.
This commit is contained in:
Abduqodiri Qurbonzoda
2023-07-26 12:09:35 +03:00
committed by Space Team
parent 2823fff63d
commit 0f33d71de3
9 changed files with 104 additions and 70 deletions
+2 -2
View File
@@ -93,7 +93,7 @@ bool IsSubInterface(const TypeInfo* thiz, const TypeInfo* other) {
return false;
}
KVector4f Kotlin_Vector4f_of(KFloat f0, KFloat f1, KFloat f2, KFloat f3) {
KVector4f Kotlin_Interop_Vector4f_of(KFloat f0, KFloat f1, KFloat f2, KFloat f3) {
return {f0, f1, f2, f3};
}
@@ -103,7 +103,7 @@ KVector4f Kotlin_Vector4f_of(KFloat f0, KFloat f1, KFloat f2, KFloat f3) {
* To avoid illegal bitcast from/to function types the following function
* return type MUST be <4 x float> and explicit type cast is done on the variable type.
*/
KVector4f Kotlin_Vector4i32_of(KInt f0, KInt f1, KInt f2, KInt f3) {
KVector4f Kotlin_Interop_Vector4i32_of(KInt f0, KInt f1, KInt f2, KInt f3) {
KInt __attribute__ ((__vector_size__(16))) v4i = {f0, f1, f2, f3};
return (KVector4f)v4i;
}
@@ -6,10 +6,7 @@
package kotlin.native.internal
import kotlinx.cinterop.CPointer
import kotlinx.cinterop.NativePointed
import kotlinx.cinterop.NativePtr
import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.cinterop.*
import kotlin.native.internal.TypedIntrinsic
import kotlin.native.internal.IntrinsicType
@@ -10,54 +10,21 @@ import kotlin.native.internal.IntrinsicType
import kotlinx.cinterop.ExperimentalForeignApi
@Deprecated("Use kotlinx.cinterop.Vector128 instead.", ReplaceWith("kotlinx.cinterop.Vector128"))
@DeprecatedSinceKotlin(warningSince = "1.9")
@ExperimentalForeignApi
public final class Vector128 private constructor() {
@TypedIntrinsic(IntrinsicType.EXTRACT_ELEMENT)
external fun getByteAt(index: Int): Byte
@TypedIntrinsic(IntrinsicType.EXTRACT_ELEMENT)
external fun getIntAt(index: Int): Int
@TypedIntrinsic(IntrinsicType.EXTRACT_ELEMENT)
external fun getLongAt(index: Int): Long
@TypedIntrinsic(IntrinsicType.EXTRACT_ELEMENT)
external fun getFloatAt(index: Int): Float
@TypedIntrinsic(IntrinsicType.EXTRACT_ELEMENT)
external fun getDoubleAt(index: Int): Double
@TypedIntrinsic(IntrinsicType.EXTRACT_ELEMENT)
external fun getUByteAt(index: Int): UByte
@TypedIntrinsic(IntrinsicType.EXTRACT_ELEMENT)
external fun getUIntAt(index: Int): UInt
@TypedIntrinsic(IntrinsicType.EXTRACT_ELEMENT)
external fun getULongAt(index: Int): ULong
public override fun toString() =
"(0x${getUIntAt(0).toString(16)}, 0x${getUIntAt(1).toString(16)}, 0x${getUIntAt(2).toString(16)}, 0x${getUIntAt(3).toString(16)})"
@Deprecated("Provided for binary compatibility", level = DeprecationLevel.HIDDEN)
public fun equals(other: Vector128): Boolean =
getLongAt(0) == other.getLongAt(0) && getLongAt(1) == other.getLongAt(1)
// Not as good for floating types
public override fun equals(other: Any?): Boolean =
other is Vector128 && getLongAt(0) == other.getLongAt(0) && getLongAt(1) == other.getLongAt(1)
override fun hashCode(): Int {
val x0 = getLongAt(0)
val x1 = getLongAt(1)
return 31 * (x0 xor (x0 shr 32)).toInt() + (x1 xor (x1 shr 32)).toInt()
}
}
public typealias Vector128 = kotlinx.cinterop.Vector128
@Suppress("DEPRECATION")
@Deprecated("Use kotlinx.cinterop.vectorOf instead.", ReplaceWith("kotlinx.cinterop.vectorOf(f0, f1, f2, f3)"))
@DeprecatedSinceKotlin(warningSince = "1.9")
@ExperimentalForeignApi
@GCUnsafeCall("Kotlin_Vector4f_of")
@GCUnsafeCall("Kotlin_Interop_Vector4f_of")
external fun vectorOf(f0: Float, f1: Float, f2: Float, f3: Float): Vector128
@Suppress("DEPRECATION")
@Deprecated("Use kotlinx.cinterop.vectorOf instead.", ReplaceWith("kotlinx.cinterop.vectorOf(f0, f1, f2, f3)"))
@DeprecatedSinceKotlin(warningSince = "1.9")
@ExperimentalForeignApi
@GCUnsafeCall("Kotlin_Vector4i32_of")
@GCUnsafeCall("Kotlin_Interop_Vector4i32_of")
external fun vectorOf(f0: Int, f1: Int, f2: Int, f3: Int): Vector128