Let simd/x86 pass new transmute/cast vet.

This commit is contained in:
Jeroen van Rijn
2024-07-09 16:50:55 +02:00
parent b83822fd35
commit 7b31acd2d7
4 changed files with 23 additions and 21 deletions
+9 -9
View File
@@ -35,7 +35,7 @@ _mm_add_epi32 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
}
@(require_results, enable_target_feature="sse2")
_mm_add_epi64 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
return transmute(__m128i)simd.add(transmute(i64x2)a, transmute(i64x2)b)
return simd.add(a, b)
}
@(require_results, enable_target_feature="sse2")
_mm_adds_epi8 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
@@ -118,7 +118,7 @@ _mm_sub_epi32 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
}
@(require_results, enable_target_feature="sse2")
_mm_sub_epi64 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
return transmute(__m128i)simd.sub(transmute(i64x2)a, transmute(i64x2)b)
return simd.sub(a, b)
}
@(require_results, enable_target_feature="sse2")
_mm_subs_epi8 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
@@ -229,7 +229,7 @@ _mm_slli_epi64 :: #force_inline proc "c" (a: __m128i, $IMM8: u32) -> __m128i {
}
@(require_results, enable_target_feature="sse2")
_mm_sll_epi64 :: #force_inline proc "c" (a, count: __m128i) -> __m128i {
return transmute(__m128i)psllq(transmute(i64x2)a, transmute(i64x2)count)
return psllq(a, count)
}
@(require_results, enable_target_feature="sse2")
_mm_srai_epi16 :: #force_inline proc "c" (a: __m128i, $IMM8: u32) -> __m128i {
@@ -275,7 +275,7 @@ _mm_srli_epi64 :: #force_inline proc "c" (a: __m128i, $IMM8: u32) -> __m128i {
}
@(require_results, enable_target_feature="sse2")
_mm_srl_epi64 :: #force_inline proc "c" (a, count: __m128i) -> __m128i {
return transmute(__m128i)psrlq(transmute(i64x2)a, transmute(i64x2)count)
return psrlq(a, count)
}
@@ -363,7 +363,7 @@ _mm_cvtsi128_si32 :: #force_inline proc "c" (a: __m128i) -> i32 {
@(require_results, enable_target_feature="sse2")
_mm_set_epi64x :: #force_inline proc "c" (e1, e0: i64) -> __m128i {
return transmute(__m128i)i64x2{e0, e1}
return i64x2{e0, e1}
}
@(require_results, enable_target_feature="sse2")
_mm_set_epi32 :: #force_inline proc "c" (e3, e2, e1, e0: i32) -> __m128i {
@@ -453,7 +453,7 @@ _mm_stream_si32 :: #force_inline proc "c" (mem_addr: ^i32, a: i32) {
@(require_results, enable_target_feature="sse2")
_mm_move_epi64 :: #force_inline proc "c" (a: __m128i) -> __m128i {
zero := _mm_setzero_si128()
return transmute(__m128i)simd.shuffle(transmute(i64x2)a, transmute(i64x2)zero, 0, 2)
return simd.shuffle(a, zero, 0, 2)
}
@@ -545,7 +545,7 @@ _mm_unpackhi_epi32 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
}
@(require_results, enable_target_feature="sse2")
_mm_unpackhi_epi64 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
return transmute(__m128i)simd.shuffle(transmute(i64x2)a, transmute(i64x2)b, 1, 3)
return simd.shuffle(a, b, 1, 3)
}
@(require_results, enable_target_feature="sse2")
_mm_unpacklo_epi8 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
@@ -565,7 +565,7 @@ _mm_unpacklo_epi32 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
}
@(require_results, enable_target_feature="sse2")
_mm_unpacklo_epi64 :: #force_inline proc "c" (a, b: __m128i) -> __m128i {
return transmute(__m128i)simd.shuffle(transmute(i64x2)a, transmute(i64x2)b, 0, 2)
return simd.shuffle(a, b, 0, 2)
}
@@ -1023,7 +1023,7 @@ when ODIN_ARCH == .amd64 {
}
@(require_results, enable_target_feature="sse2")
_mm_cvtsi128_si64 :: #force_inline proc "c" (a: __m128i) -> i64 {
return simd.extract(transmute(i64x2)a, 0)
return simd.extract(a, 0)
}
@(require_results, enable_target_feature="sse2")
_mm_cvtsi128_si64x :: #force_inline proc "c" (a: __m128i) -> i64 {