Delete deprecated arm_neon_64, arm_neon_128
diff --git a/internal/cgen/builtin.go b/internal/cgen/builtin.go
index acd9681..ffdf27c 100644
--- a/internal/cgen/builtin.go
+++ b/internal/cgen/builtin.go
@@ -448,333 +448,16 @@
 }
 
 func (g *gen) writeBuiltinCPUArch(b *buffer, recv *a.Expr, method t.ID, args []*a.Node, sideEffectsOnly bool, depth uint32) error {
-	id := recv.MType().QID()[1]
-	if id.IsBuiltInCPUArchARMNeon() {
-		return g.writeBuiltinCPUArchARMNeon(b, recv, method, args, sideEffectsOnly, depth)
-	}
-	switch id {
-	case t.IDARMCRC32Utility, t.IDARMCRC32U32:
+	switch id := recv.MType().QID()[1]; {
+	case id == t.IDARMCRC32Utility, id == t.IDARMCRC32U32:
 		return g.writeBuiltinCPUArchARMCRC32(b, recv, method, args, sideEffectsOnly, depth)
-	case t.IDX86SSE42Utility, t.IDX86M128I:
+	case id.IsBuiltInCPUArchARMNeon():
+		return g.writeBuiltinCPUArchARMNeon(b, recv, method, args, sideEffectsOnly, depth)
+	case id == t.IDX86SSE42Utility, id == t.IDX86M128I:
 		return g.writeBuiltinCPUArchX86(b, recv, method, args, sideEffectsOnly, depth)
 	}
 	return fmt.Errorf("internal error: unsupported cpu_arch method %s.%s",
 		recv.MType().Str(g.tm), method.Str(g.tm))
-
-	armCRC32U32 := recv.MType().Eq(typeExprARMCRC32U32)
-	armNeon := recv.MType().Eq(typeExprARMNeon64) || recv.MType().Eq(typeExprARMNeon128)
-
-	switch method {
-	case t.IDCreateSlice64, t.IDCreateSlice128:
-		if armNeon {
-			switch method {
-			case t.IDCreateSlice64:
-				b.writes("vld1_u8(")
-			case t.IDCreateSlice128:
-				b.writes("vld1q_u8(")
-			}
-		}
-		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
-			return err
-		}
-		b.writes(".ptr)")
-		return nil
-	}
-
-	methodStr := method.Str(g.tm)
-	vreinterpretU8Uxx, vreinterpretUxxU8, vreinterpretClose := "", "", ""
-	if armNeon {
-		vreinterpretClose = ")"
-		switch {
-		case methodStr == "create_vdupq_n_u16":
-			vreinterpretU8Uxx = "vreinterpretq_u8_u16("
-			vreinterpretUxxU8 = "("
-		case methodStr == "create_vdupq_n_u32":
-			vreinterpretU8Uxx = "vreinterpretq_u8_u32("
-			vreinterpretUxxU8 = "("
-		case methodStr == "create_vdupq_n_u64":
-			vreinterpretU8Uxx = "vreinterpretq_u8_u64("
-			vreinterpretUxxU8 = "("
-		case methodStr == "vmovn_u16":
-			vreinterpretU8Uxx = "("
-			vreinterpretUxxU8 = "vreinterpretq_u16_u8("
-		case methodStr == "vmovn_u32":
-			vreinterpretU8Uxx = "vreinterpret_u8_u16("
-			vreinterpretUxxU8 = "vreinterpretq_u32_u8("
-		case methodStr == "vmovn_u64":
-			vreinterpretU8Uxx = "vreinterpret_u8_u32("
-			vreinterpretUxxU8 = "vreinterpretq_u64_u8("
-		case strings.HasSuffix(methodStr, "q_u16"):
-			vreinterpretU8Uxx = "vreinterpretq_u8_u16("
-			vreinterpretUxxU8 = "vreinterpretq_u16_u8("
-		case strings.HasSuffix(methodStr, "q_u32"):
-			vreinterpretU8Uxx = "vreinterpretq_u8_u32("
-			vreinterpretUxxU8 = "vreinterpretq_u32_u8("
-		case strings.HasSuffix(methodStr, "q_u64"):
-			vreinterpretU8Uxx = "vreinterpretq_u8_u64("
-			vreinterpretUxxU8 = "vreinterpretq_u64_u8("
-		case strings.HasSuffix(methodStr, "_u16"):
-			vreinterpretU8Uxx = "vreinterpret_u8_u16("
-			vreinterpretUxxU8 = "vreinterpret_u16_u8("
-		case strings.HasSuffix(methodStr, "_u32"):
-			vreinterpretU8Uxx = "vreinterpret_u8_u32("
-			vreinterpretUxxU8 = "vreinterpret_u32_u8("
-		case strings.HasSuffix(methodStr, "_u64"):
-			vreinterpretU8Uxx = "vreinterpret_u8_u64("
-			vreinterpretUxxU8 = "vreinterpret_u64_u8("
-		default:
-			vreinterpretClose = ""
-		}
-	}
-
-	const (
-		create         = "create"
-		createLiteralU = "create_literal_u"
-	)
-	if methodStr == "value" {
-		return g.writeExpr(b, recv, false, depth)
-
-	} else if methodStr == create {
-		return g.writeExpr(b, args[0].AsArg().Value(), false, depth)
-
-	} else if strings.HasPrefix(methodStr, createLiteralU) {
-		methodStr = methodStr[len(createLiteralU):]
-		switch methodStr {
-		case "16x4":
-			b.writes("vreinterpret_u8_u16")
-		case "16x8":
-			b.writes("vreinterpretq_u8_u16")
-		case "32x2":
-			b.writes("vreinterpret_u8_u32")
-		case "32x4":
-			b.writes("vreinterpretq_u8_u32")
-		case "64x1":
-			b.writes("vreinterpret_u8_u64")
-		case "64x2":
-			b.writes("vreinterpretq_u8_u64")
-		}
-		b.writes("((uint")
-		b.writes(methodStr)
-		b.writes("_t){")
-		for i, o := range args {
-			if i > 0 {
-				b.writes(", ")
-			}
-			if err := g.writeExpr(b, o.AsArg().Value(), false, depth); err != nil {
-				return err
-			}
-		}
-		b.writes("})")
-		return nil
-
-	} else if strings.HasPrefix(methodStr, create) {
-		methodStr = methodStr[len(create):]
-		if armNeon && (methodStr != "") && (methodStr[0] == '_') {
-			methodStr = methodStr[1:]
-		}
-
-		b.writes(vreinterpretU8Uxx)
-		b.printf("%s(", methodStr)
-		for i, o := range args {
-			if i > 0 {
-				b.writes(", ")
-			}
-			if err := g.writeExpr(b, o.AsArg().Value(), false, depth); err != nil {
-				return err
-			}
-		}
-		b.writes(")")
-		b.writes(vreinterpretClose)
-		return nil
-
-	}
-
-	switch methodStr {
-	case "vaddw_u8":
-		b.writes("vreinterpretq_u8_u16(")
-		b.writes(methodStr)
-		b.writes("(vreinterpretq_u16_u8(")
-		if err := g.writeExpr(b, recv, false, depth); err != nil {
-			return err
-		}
-		b.writes("), ")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
-			return err
-		}
-		b.writes("))")
-		return nil
-
-	case "vget_low_u16", "vget_high_u16":
-		b.writes("vreinterpret_u8_u16(")
-		b.writes(methodStr)
-		b.writes("(vreinterpretq_u16_u8(")
-		if err := g.writeExpr(b, recv, false, depth); err != nil {
-			return err
-		}
-		b.writes(")))")
-		return nil
-
-	case "vget_low_u32", "vget_high_u32":
-		b.writes("vreinterpret_u8_u32(")
-		b.writes(methodStr)
-		b.writes("(vreinterpretq_u32_u8(")
-		if err := g.writeExpr(b, recv, false, depth); err != nil {
-			return err
-		}
-		b.writes(")))")
-		return nil
-
-	case "vget_low_u64", "vget_high_u64":
-		b.writes("vreinterpret_u8_u64(")
-		b.writes(methodStr)
-		b.writes("(vreinterpretq_u64_u8(")
-		if err := g.writeExpr(b, recv, false, depth); err != nil {
-			return err
-		}
-		b.writes(")))")
-		return nil
-
-	case "vget_low_u8", "vget_high_u8":
-		b.writes(methodStr)
-		b.writes("(")
-		if err := g.writeExpr(b, recv, false, depth); err != nil {
-			return err
-		}
-		b.writes(")")
-		return nil
-
-	case "vmlal_u16":
-		b.writes("vreinterpretq_u8_u32(")
-		b.writes(methodStr)
-		b.writes("(vreinterpretq_u32_u8(")
-		if err := g.writeExpr(b, recv, false, depth); err != nil {
-			return err
-		}
-		b.writes(")")
-		for i := range args {
-			b.writes(", vreinterpret_u16_u8(")
-			if err := g.writeExpr(b, args[i].AsArg().Value(), false, depth); err != nil {
-				return err
-			}
-			b.writes(")")
-		}
-		b.writes("))")
-
-	case "vshlq_n_u32":
-		b.writes("vreinterpretq_u8_u32(")
-		b.writes(methodStr)
-		b.writes("(vreinterpretq_u32_u8(")
-		if err := g.writeExpr(b, recv, false, depth); err != nil {
-			return err
-		}
-		b.writes("), ")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
-			return err
-		}
-		b.writes("))")
-
-	case "vpadalq_u16":
-		b.writes("vreinterpretq_u8_u32(vpadalq_u16(vreinterpretq_u32_u8(")
-		if err := g.writeExpr(b, recv, false, depth); err != nil {
-			return err
-		}
-		b.writes("), vreinterpretq_u16_u8(")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
-			return err
-		}
-		b.writes(")))")
-		return nil
-
-	case "vpadalq_u32":
-		b.writes("vreinterpretq_u8_u64(vpadalq_u32(vreinterpretq_u64_u8(")
-		if err := g.writeExpr(b, recv, false, depth); err != nil {
-			return err
-		}
-		b.writes("), vreinterpretq_u32_u8(")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
-			return err
-		}
-		b.writes(")))")
-		return nil
-
-	case "vpadalq_u8":
-		b.writes("vreinterpretq_u8_u16(vpadalq_u8(vreinterpretq_u16_u8(")
-		if err := g.writeExpr(b, recv, false, depth); err != nil {
-			return err
-		}
-		b.writes("), ")
-		if err := g.writeExpr(b, args[0].AsArg().Value(), false, depth); err != nil {
-			return err
-		}
-		b.writes("))")
-		return nil
-
-	default:
-		postArgsAfter := ""
-		if armCRC32U32 {
-			b.writeb('_')
-		} else if armNeon {
-			// TODO: generate this table automatically?
-			postArgsAfter = ")"
-			switch methodStr {
-			case "vpadd_u16":
-				b.writes("vreinterpret_u8_u16(")
-			case "vpadd_u32":
-				b.writes("vreinterpret_u8_u32(")
-			case "vabdl_u8", "vaddl_u8",
-				"vabdq_u16", "vcleq_u16",
-				"vaddq_u16",
-				"vpaddlq_u8":
-				b.writes("vreinterpretq_u8_u16(")
-			case "vabdl_u16", "vaddl_u16",
-				"vabdq_u32", "vcleq_u32",
-				"vaddq_u32",
-				"vpaddlq_u16":
-				b.writes("vreinterpretq_u8_u32(")
-			case "vabdl_u32", "vaddl_u32",
-				"vaddq_u64",
-				"vpaddlq_u32":
-				b.writes("vreinterpretq_u8_u64(")
-			default:
-				postArgsAfter = ""
-			}
-		}
-		b.printf("%s(", methodStr)
-
-		if armNeon && recv.MType().IsCPUArchType() {
-			b.writes(vreinterpretUxxU8)
-		}
-		if err := g.writeExpr(b, recv, false, depth); err != nil {
-			return err
-		}
-		if armNeon && recv.MType().IsCPUArchType() {
-			b.writes(vreinterpretClose)
-		}
-
-		for _, o := range args {
-			b.writes(", ")
-			after := ""
-			v := o.AsArg().Value()
-			if armCRC32U32 {
-				// No-op.
-			} else if armNeon {
-				if v.MType().IsCPUArchType() {
-					b.writes(vreinterpretUxxU8)
-					after = vreinterpretClose
-				}
-			} else if !v.MType().IsCPUArchType() {
-				b.writes("(int32_t)(")
-				after = ")"
-			}
-			if err := g.writeExpr(b, v, false, depth); err != nil {
-				return err
-			}
-			b.writes(after)
-		}
-		b.writes(")")
-		b.writes(postArgsAfter)
-	}
-	return nil
 }
 
 func (g *gen) writeBuiltinCPUArchARMCRC32(b *buffer, recv *a.Expr, method t.ID, args []*a.Node, sideEffectsOnly bool, depth uint32) error {
diff --git a/internal/cgen/cgen.go b/internal/cgen/cgen.go
index 8c51b90..0eca973 100644
--- a/internal/cgen/cgen.go
+++ b/internal/cgen/cgen.go
@@ -44,8 +44,6 @@
 	maxInt64 = big.NewInt((1 << 63) - 1)
 
 	typeExprARMCRC32U32   = a.NewTypeExpr(0, t.IDBase, t.IDARMCRC32U32, nil, nil, nil)
-	typeExprARMNeon64     = a.NewTypeExpr(0, t.IDBase, t.IDARMNeon64, nil, nil, nil)
-	typeExprARMNeon128    = a.NewTypeExpr(0, t.IDBase, t.IDARMNeon128, nil, nil, nil)
 	typeExprPixelSwizzler = a.NewTypeExpr(0, t.IDBase, t.IDPixelSwizzler, nil, nil, nil)
 )
 
diff --git a/internal/cgen/expr.go b/internal/cgen/expr.go
index 21d9457..1ed28cf 100644
--- a/internal/cgen/expr.go
+++ b/internal/cgen/expr.go
@@ -578,8 +578,6 @@
 	t.IDTokenWriter: "wuffs_base__token_buffer*",
 
 	t.IDARMCRC32U32:  "uint32_t",
-	t.IDARMNeon64:    "uint8x8_t",
-	t.IDARMNeon128:   "uint8x16_t",
 	t.IDARMNeonU8x8:  "uint8x8_t",
 	t.IDARMNeonU16x4: "uint16x4_t",
 	t.IDARMNeonU32x2: "uint32x2_t",
diff --git a/lang/builtin/builtin.go b/lang/builtin/builtin.go
index 3f954b8..4e88b90 100644
--- a/lang/builtin/builtin.go
+++ b/lang/builtin/builtin.go
@@ -251,8 +251,6 @@
 	"arm_crc32_u32",
 
 	"arm_neon_utility",
-	"arm_neon_64",
-	"arm_neon_128",
 	"arm_neon_u8x8",
 	"arm_neon_u16x4",
 	"arm_neon_u32x2",
@@ -267,8 +265,8 @@
 }
 
 var Funcs = [][]string{
-	funcsOther[:],
-	funcsARMNeon[:],
+	funcsOther[:],   // Manually authored methods.
+	funcsARMNeon[:], // Automatically generated methods (intrinsics).
 }
 
 var funcsOther = [...]string{
@@ -622,110 +620,6 @@
 	"arm_neon_u32x4.as_u8x16() arm_neon_u8x16",
 	"arm_neon_u64x2.as_u8x16() arm_neon_u8x16",
 
-	// ---- arm_neon_64
-
-	// TODO: generate these methods automatically?
-
-	"arm_neon_64.create_slice64(a: slice base.u8) arm_neon_64",
-
-	"arm_neon_64.create_literal_u8x8(" +
-		"a0: u8, a1: u8, a2: u8, a3: u8," +
-		"a4: u8, a5: u8, a6: u8, a7: u8) arm_neon_64",
-	"arm_neon_64.create_literal_u16x4(" +
-		"a0: u16, a1: u16, a2: u16, a3: u16) arm_neon_64",
-	"arm_neon_64.create_literal_u32x2(" +
-		"a0: u32, a1: u32) arm_neon_64",
-	"arm_neon_64.create_literal_u64x1(" +
-		"a0: u64) arm_neon_64",
-
-	"arm_neon_64.create_vdup_n_u16(a: u16) arm_neon_64",
-	"arm_neon_64.create_vdup_n_u32(a: u32) arm_neon_64",
-	"arm_neon_64.create_vdup_n_u64(a: u64) arm_neon_64",
-	"arm_neon_64.create_vdup_n_u8(a: u8) arm_neon_64",
-
-	"arm_neon_64.vabdl_u16(b: arm_neon_64) arm_neon_128",
-	"arm_neon_64.vabdl_u32(b: arm_neon_64) arm_neon_128",
-	"arm_neon_64.vabdl_u8(b: arm_neon_64) arm_neon_128",
-	"arm_neon_64.vadd_u16(b: arm_neon_64) arm_neon_64",
-	"arm_neon_64.vadd_u32(b: arm_neon_64) arm_neon_64",
-	"arm_neon_64.vadd_u64(b: arm_neon_64) arm_neon_64",
-	"arm_neon_64.vadd_u8(b: arm_neon_64) arm_neon_64",
-	"arm_neon_64.vaddl_u16(b: arm_neon_64) arm_neon_128",
-	"arm_neon_64.vaddl_u32(b: arm_neon_64) arm_neon_128",
-	"arm_neon_64.vaddl_u8(b: arm_neon_64) arm_neon_128",
-	"arm_neon_64.vbsl_u8(b: arm_neon_64, c: arm_neon_64) arm_neon_64",
-	"arm_neon_64.vget_lane_u16(b: u32[..= 3]) u16",
-	"arm_neon_64.vget_lane_u32(b: u32[..= 1]) u32",
-	"arm_neon_64.vget_lane_u64(b: u32[..= 0]) u64",
-	"arm_neon_64.vget_lane_u8(b: u32[..= 7]) u8",
-	"arm_neon_64.vhadd_u16(b: arm_neon_64) arm_neon_64",
-	"arm_neon_64.vhadd_u32(b: arm_neon_64) arm_neon_64",
-	"arm_neon_64.vhadd_u8(b: arm_neon_64) arm_neon_64",
-	"arm_neon_64.vpadd_u16(b: arm_neon_64) arm_neon_64",
-	"arm_neon_64.vpadd_u32(b: arm_neon_64) arm_neon_64",
-	"arm_neon_64.vpadd_u8(b: arm_neon_64) arm_neon_64",
-
-	// ---- arm_neon_128
-
-	"arm_neon_128.create_slice128(a: slice base.u8) arm_neon_128",
-
-	"arm_neon_128.create_literal_u8x16(" +
-		"a0: u8, a1: u8, a2: u8, a3: u8," +
-		"a4: u8, a5: u8, a6: u8, a7: u8," +
-		"a8: u8, a9: u8, a10: u8, a11: u8," +
-		"a12: u8, a13: u8, a14: u8, a15: u8) arm_neon_128",
-	"arm_neon_128.create_literal_u16x8(" +
-		"a0: u16, a1: u16, a2: u16, a3: u16," +
-		"a4: u16, a5: u16, a6: u16, a7: u16) arm_neon_128",
-	"arm_neon_128.create_literal_u32x4(" +
-		"a0: u32, a1: u32, a2: u32, a3: u32) arm_neon_128",
-	"arm_neon_128.create_literal_u64x2(" +
-		"a0: u64, a1: u64) arm_neon_128",
-
-	"arm_neon_128.create_vdupq_n_u16(a: u16) arm_neon_128",
-	"arm_neon_128.create_vdupq_n_u32(a: u32) arm_neon_128",
-	"arm_neon_128.create_vdupq_n_u64(a: u64) arm_neon_128",
-	"arm_neon_128.create_vdupq_n_u8(a: u8) arm_neon_128",
-
-	"arm_neon_128.vabdq_u16(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vabdq_u32(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vabdq_u8(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vaddq_u16(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vaddq_u32(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vaddq_u64(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vaddq_u8(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vaddw_u16(b: arm_neon_64) arm_neon_128",
-	"arm_neon_128.vaddw_u32(b: arm_neon_64) arm_neon_128",
-	"arm_neon_128.vaddw_u8(b: arm_neon_64) arm_neon_128",
-	"arm_neon_128.vpadalq_u16(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vpadalq_u32(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vpadalq_u8(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vpaddlq_u16() arm_neon_128",
-	"arm_neon_128.vpaddlq_u32() arm_neon_128",
-	"arm_neon_128.vpaddlq_u8() arm_neon_128",
-	"arm_neon_128.vandq_u8(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vcleq_u16(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vcleq_u32(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vcleq_u8(b: arm_neon_128) arm_neon_128",
-	"arm_neon_128.vget_high_u16() arm_neon_64",
-	"arm_neon_128.vget_high_u32() arm_neon_64",
-	"arm_neon_128.vget_high_u64() arm_neon_64",
-	"arm_neon_128.vget_high_u8() arm_neon_64",
-	"arm_neon_128.vget_low_u16() arm_neon_64",
-	"arm_neon_128.vget_low_u32() arm_neon_64",
-	"arm_neon_128.vget_low_u64() arm_neon_64",
-	"arm_neon_128.vget_low_u8() arm_neon_64",
-	"arm_neon_128.vmlal_u16(b: arm_neon_64, c: arm_neon_64) arm_neon_128",
-	"arm_neon_128.vmlal_u32(b: arm_neon_64, c: arm_neon_64) arm_neon_128",
-	"arm_neon_128.vmlal_u8(b: arm_neon_64, c: arm_neon_64) arm_neon_128",
-	"arm_neon_128.vmovn_u16() arm_neon_64",
-	"arm_neon_128.vmovn_u32() arm_neon_64",
-	"arm_neon_128.vmovn_u64() arm_neon_64",
-	"arm_neon_128.vshlq_n_u16(b: u32) arm_neon_128",
-	"arm_neon_128.vshlq_n_u32(b: u32) arm_neon_128",
-	"arm_neon_128.vshlq_n_u64(b: u32) arm_neon_128",
-	"arm_neon_128.vshlq_n_u8(b: u32) arm_neon_128",
-
 	// ---- x86_sse42_utility
 
 	"x86_sse42_utility.make_m128i_multiple_u8(" +
diff --git a/lang/check/resolve.go b/lang/check/resolve.go
index 9605b25..f0480a3 100644
--- a/lang/check/resolve.go
+++ b/lang/check/resolve.go
@@ -79,8 +79,6 @@
 	typeExprARMCRC32U32     = a.NewTypeExpr(0, t.IDBase, t.IDARMCRC32U32, nil, nil, nil)
 
 	typeExprARMNeonUtility = a.NewTypeExpr(0, t.IDBase, t.IDARMNeonUtility, nil, nil, nil)
-	typeExprARMNeon64      = a.NewTypeExpr(0, t.IDBase, t.IDARMNeon64, nil, nil, nil)
-	typeExprARMNeon128     = a.NewTypeExpr(0, t.IDBase, t.IDARMNeon128, nil, nil, nil)
 	typeExprARMNeonU8x8    = a.NewTypeExpr(0, t.IDBase, t.IDARMNeonU8x8, nil, nil, nil)
 	typeExprARMNeonU16x4   = a.NewTypeExpr(0, t.IDBase, t.IDARMNeonU16x4, nil, nil, nil)
 	typeExprARMNeonU32x2   = a.NewTypeExpr(0, t.IDBase, t.IDARMNeonU32x2, nil, nil, nil)
@@ -145,8 +143,6 @@
 	t.IDARMCRC32U32:     typeExprARMCRC32U32,
 
 	t.IDARMNeonUtility: typeExprARMNeonUtility,
-	t.IDARMNeon64:      typeExprARMNeon64,
-	t.IDARMNeon128:     typeExprARMNeon128,
 	t.IDARMNeonU8x8:    typeExprARMNeonU8x8,
 	t.IDARMNeonU16x4:   typeExprARMNeonU16x4,
 	t.IDARMNeonU32x2:   typeExprARMNeonU32x2,
diff --git a/lang/check/type.go b/lang/check/type.go
index ff3370b..1781bb6 100644
--- a/lang/check/type.go
+++ b/lang/check/type.go
@@ -54,7 +54,7 @@
 		switch qid[1] {
 		case t.IDARMCRC32Utility, t.IDARMCRC32U32:
 			need = cpuArchBitsARMCRC32
-		case t.IDARMNeonUtility, t.IDARMNeon64, t.IDARMNeon128,
+		case t.IDARMNeonUtility,
 			t.IDARMNeonU8x8, t.IDARMNeonU16x4, t.IDARMNeonU32x2, t.IDARMNeonU64x1,
 			t.IDARMNeonU8x16, t.IDARMNeonU16x8, t.IDARMNeonU32x4, t.IDARMNeonU64x2:
 			need = cpuArchBitsARMNeon
diff --git a/lang/token/list.go b/lang/token/list.go
index acd6825..7cfbde7 100644
--- a/lang/token/list.go
+++ b/lang/token/list.go
@@ -689,10 +689,6 @@
 
 	IDARMCRC32U32 = ID(0x302)
 
-	// Deprecated.
-	IDARMNeon64  = ID(0x308)
-	IDARMNeon128 = ID(0x309)
-
 	IDARMNeon        = ID(0x30E)
 	IDARMNeonUtility = ID(0x30F)
 
@@ -714,11 +710,6 @@
 	IDX86AVX2Utility  = ID(0x393)
 
 	IDX86M128I = ID(0x3A0)
-
-	// --------
-
-	IDCreateSlice64  = ID(0x3AE)
-	IDCreateSlice128 = ID(0x3AF)
 )
 
 var builtInsByID = [nBuiltInIDs]string{
@@ -1110,9 +1101,6 @@
 
 	IDARMCRC32U32: "arm_crc32_u32",
 
-	IDARMNeon64:  "arm_neon_64",
-	IDARMNeon128: "arm_neon_128",
-
 	IDARMNeon:        "arm_neon",
 	IDARMNeonUtility: "arm_neon_utility",
 
@@ -1132,9 +1120,6 @@
 	IDX86AVX2Utility:  "x86_avx2_utility",
 
 	IDX86M128I: "x86_m128i",
-
-	IDCreateSlice64:  "create_slice64",
-	IDCreateSlice128: "create_slice128",
 }
 
 var builtInsByName = map[string]ID{}