Add some more base.x86_m128i methods
diff --git a/internal/cgen/builtin.go b/internal/cgen/builtin.go
index 6f21abd..61ebff4 100644
--- a/internal/cgen/builtin.go
+++ b/internal/cgen/builtin.go
@@ -530,8 +530,17 @@
}
after := ""
switch method {
- case t.IDCreateMMSet1EPI8:
- b.writes("(char)(")
+ case t.IDCreateMMSet1EPI8, t.IDCreateMMSetEPI8:
+ b.writes("(int8_t)(")
+ after = ")"
+ case t.IDCreateMMSet1EPI16, t.IDCreateMMSetEPI16:
+ b.writes("(int16_t)(")
+ after = ")"
+ case t.IDCreateMMSet1EPI32, t.IDCreateMMSetEPI32:
+ b.writes("(int32_t)(")
+ after = ")"
+ case t.IDCreateMMSet1EPI64X, t.IDCreateMMSetEPI64X:
+ b.writes("(int64_t)(")
after = ")"
}
if err := g.writeExpr(b, o.AsArg().Value(), false, depth); err != nil {
diff --git a/lang/builtin/builtin.go b/lang/builtin/builtin.go
index 0717000..7429f8a 100644
--- a/lang/builtin/builtin.go
+++ b/lang/builtin/builtin.go
@@ -539,22 +539,74 @@
// TODO: generate these methods automatically?
+ "x86_m128i.create_mm_set1_epi16(a: u16) x86_m128i",
+ "x86_m128i.create_mm_set1_epi32(a: u32) x86_m128i",
+ "x86_m128i.create_mm_set1_epi64x(a: u64) x86_m128i",
"x86_m128i.create_mm_set1_epi8(a: u8) x86_m128i",
+ "x86_m128i.create_mm_set_epi16(" +
+ "e7: u16, e6: u16, e5: u16, e4: u16," +
+ "e3: u16, e2: u16, e1: u16, e0: u16) x86_m128i",
+ "x86_m128i.create_mm_set_epi32(" +
+ "e3: u32, e2: u32, e1: u32, e0: u32) x86_m128i",
+ "x86_m128i.create_mm_set_epi64x(e1: u64, e0: u64) x86_m128i",
+ "x86_m128i.create_mm_set_epi8(" +
+ "e15: u8, e14: u8, e13: u8, e12: u8," +
+ "e11: u8, e10: u8, e9: u8, e8: u8," +
+ "e7: u8, e6: u8, e5: u8, e4: u8," +
+ "e3: u8, e2: u8, e1: u8, e0: u8) x86_m128i",
+ "x86_m128i.create_mm_setzero_si128() x86_m128i",
"x86_m128i._mm_abs_epi16() x86_m128i",
"x86_m128i._mm_add_epi16(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_add_epi32(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_add_epi64(b: x86_m128i) x86_m128i",
"x86_m128i._mm_add_epi8(b: x86_m128i) x86_m128i",
"x86_m128i._mm_and_si128(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_avg_epu16(b: x86_m128i) x86_m128i",
"x86_m128i._mm_avg_epu8(b: x86_m128i) x86_m128i",
"x86_m128i._mm_blend_epi16(b: x86_m128i, imm8: u32) x86_m128i",
"x86_m128i._mm_blendv_epi8(b: x86_m128i, mask: x86_m128i) x86_m128i",
"x86_m128i._mm_cmpeq_epi16(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_cmpeq_epi32(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_cmpeq_epi64(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_cmpeq_epi8(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_madd_epi16(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_maddubs_epi16(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_max_epi16(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_max_epi32(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_max_epi8(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_max_epu16(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_max_epu32(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_max_epu8(b: x86_m128i) x86_m128i",
"x86_m128i._mm_min_epi16(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_min_epi32(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_min_epi8(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_min_epu16(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_min_epu32(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_min_epu8(b: x86_m128i) x86_m128i",
"x86_m128i._mm_packus_epi16(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_sad_epu8(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_shuffle_epi32(imm8: u32) x86_m128i",
+ "x86_m128i._mm_shuffle_epi8(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_slli_epi16(imm8: u32) x86_m128i",
+ "x86_m128i._mm_slli_epi32(imm8: u32) x86_m128i",
+ "x86_m128i._mm_slli_epi64(imm8: u32) x86_m128i",
"x86_m128i._mm_slli_si128(imm8: u32) x86_m128i",
+ "x86_m128i._mm_srli_epi16(imm8: u32) x86_m128i",
+ "x86_m128i._mm_srli_epi32(imm8: u32) x86_m128i",
+ "x86_m128i._mm_srli_epi64(imm8: u32) x86_m128i",
"x86_m128i._mm_srli_si128(imm8: u32) x86_m128i",
"x86_m128i._mm_sub_epi16(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_sub_epi32(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_sub_epi64(b: x86_m128i) x86_m128i",
"x86_m128i._mm_sub_epi8(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_unpackhi_epi16(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_unpackhi_epi32(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_unpackhi_epi64(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_unpackhi_epi8(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_unpacklo_epi16(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_unpacklo_epi32(b: x86_m128i) x86_m128i",
+ "x86_m128i._mm_unpacklo_epi64(b: x86_m128i) x86_m128i",
"x86_m128i._mm_unpacklo_epi8(b: x86_m128i) x86_m128i",
"x86_m128i._mm_xor_si128(b: x86_m128i) x86_m128i",
}
diff --git a/lang/token/list.go b/lang/token/list.go
index 87916d8..e7b7be5 100644
--- a/lang/token/list.go
+++ b/lang/token/list.go
@@ -687,7 +687,14 @@
IDStoreSlice256 = ID(0x38B)
IDStoreSlice512 = ID(0x38C)
- IDCreateMMSet1EPI8 = ID(0x390)
+ IDCreateMMSet1EPI8 = ID(0x390)
+ IDCreateMMSet1EPI16 = ID(0x391)
+ IDCreateMMSet1EPI32 = ID(0x392)
+ IDCreateMMSet1EPI64X = ID(0x393)
+ IDCreateMMSetEPI8 = ID(0x394)
+ IDCreateMMSetEPI16 = ID(0x395)
+ IDCreateMMSetEPI32 = ID(0x396)
+ IDCreateMMSetEPI64X = ID(0x397)
)
var builtInsByID = [nBuiltInIDs]string{
@@ -1089,7 +1096,14 @@
IDStoreSlice256: "store_slice256",
IDStoreSlice512: "store_slice512",
- IDCreateMMSet1EPI8: "create_mm_set1_epi8",
+ IDCreateMMSet1EPI8: "create_mm_set1_epi8",
+ IDCreateMMSet1EPI16: "create_mm_set1_epi16",
+ IDCreateMMSet1EPI32: "create_mm_set1_epi32",
+ IDCreateMMSet1EPI64X: "create_mm_set1_epi64x",
+ IDCreateMMSetEPI8: "create_mm_set_epi8",
+ IDCreateMMSetEPI16: "create_mm_set_epi16",
+ IDCreateMMSetEPI32: "create_mm_set_epi32",
+ IDCreateMMSetEPI64X: "create_mm_set_epi64x",
}
var builtInsByName = map[string]ID{}
diff --git a/release/c/wuffs-unsupported-snapshot.c b/release/c/wuffs-unsupported-snapshot.c
index 2c1125f..82638aa 100644
--- a/release/c/wuffs-unsupported-snapshot.c
+++ b/release/c/wuffs-unsupported-snapshot.c
@@ -31208,7 +31208,7 @@
__m128i v_k128 = {0};
if (((uint64_t)(a_prev.len)) == 0) {
- v_k128 = _mm_set1_epi8((char)(254));
+ v_k128 = _mm_set1_epi8((int8_t)(254));
{
wuffs_base__slice_u8 i_slice_c = a_curr;
v_c.ptr = i_slice_c.ptr;
@@ -31241,7 +31241,7 @@
v_c.len = 0;
}
} else {
- v_k128 = _mm_set1_epi8((char)(1));
+ v_k128 = _mm_set1_epi8((int8_t)(1));
{
wuffs_base__slice_u8 i_slice_c = a_curr;
v_c.ptr = i_slice_c.ptr;