diff --git a/compiler/rustc_attr_ir/src/target.rs b/compiler/rustc_attr_ir/src/target.rs
index aa36df24f7f78..c41e78c4a96e0 100644
--- a/compiler/rustc_attr_ir/src/target.rs
+++ b/compiler/rustc_attr_ir/src/target.rs
@@ -6,13 +6,6 @@ pub use rustc_ast::visit::AssocCtxt;
use rustc_ast::{AssocItemKind, ForeignItemKind, ast};
use rustc_macros::StableHash;
-#[derive(Copy, Clone, PartialEq, Debug, Eq, StableHash)]
-pub enum GenericParamKind {
- Type,
- Lifetime,
- Const,
-}
-
#[derive(Copy, Clone, PartialEq, Debug, Eq, StableHash)]
pub enum MethodKind {
/// Method in a `trait Trait` block
@@ -55,7 +48,9 @@ pub enum Target {
ForeignFn,
ForeignStatic,
ForeignTy,
- GenericParam { kind: GenericParamKind, has_default: bool },
+ LifetimeParam,
+ TypeParam,
+ ConstParam,
MacroDef,
Param,
PatField,
@@ -106,7 +101,9 @@ impl Target {
| Target::ForeignFn
| Target::ForeignStatic
| Target::ForeignTy
- | Target::GenericParam { .. }
+ | Target::TypeParam
+ | Target::LifetimeParam
+ | Target::ConstParam
| Target::MacroDef
| Target::Param
| Target::PatField
@@ -222,11 +219,9 @@ impl Target {
Target::ForeignFn => "foreign function",
Target::ForeignStatic => "foreign static item",
Target::ForeignTy => "foreign type",
- Target::GenericParam { kind, .. } => match kind {
- GenericParamKind::Type => "type parameter",
- GenericParamKind::Lifetime => "lifetime parameter",
- GenericParamKind::Const => "const parameter",
- },
+ Target::TypeParam => "type parameter",
+ Target::LifetimeParam => "lifetime parameter",
+ Target::ConstParam => "const parameter",
Target::MacroDef => "macro def",
Target::Param => "function param",
Target::PatField => "pattern field",
@@ -277,11 +272,9 @@ impl Target {
Target::ForeignFn => "foreign functions",
Target::ForeignStatic => "foreign statics",
Target::ForeignTy => "foreign types",
- Target::GenericParam { kind, has_default: _ } => match kind {
- GenericParamKind::Type => "type parameters",
- GenericParamKind::Lifetime => "lifetime parameters",
- GenericParamKind::Const => "const parameters",
- },
+ Target::TypeParam => "type parameters",
+ Target::LifetimeParam => "lifetime parameters",
+ Target::ConstParam => "const parameters",
Target::MacroDef => "macro defs",
Target::Param => "function params",
Target::PatField => "pattern fields",
diff --git a/compiler/rustc_attr_parsing/src/attributes/rustc_internal.rs b/compiler/rustc_attr_parsing/src/attributes/rustc_internal.rs
index bd892064fc12c..bb982184772e7 100644
--- a/compiler/rustc_attr_parsing/src/attributes/rustc_internal.rs
+++ b/compiler/rustc_attr_parsing/src/attributes/rustc_internal.rs
@@ -2,7 +2,6 @@ use std::path::PathBuf;
use rustc_ast::{LitIntType, LitKind, MetaItemLit};
use rustc_attr_ir::lang_items::LangItem;
-use rustc_attr_ir::target::GenericParamKind;
use rustc_attr_ir::{
BorrowckGraphvizFormatKind, CguFields, CguKind, RustcCleanAttribute, RustcCleanQueries,
RustcMirKind,
@@ -109,10 +108,8 @@ pub(crate) struct RustcPanicsWhenZeroParser;
impl NoArgsAttributeParser for RustcPanicsWhenZeroParser {
const PATH: &[Symbol] = &[sym::rustc_panics_when_zero];
- const ALLOWED_TARGETS: AllowedTargets<'_> = AllowedTargets::AllowList(&[
- Allow(Target::GenericParam { kind: GenericParamKind::Const, has_default: true }),
- Allow(Target::GenericParam { kind: GenericParamKind::Const, has_default: false }),
- ]);
+ const ALLOWED_TARGETS: AllowedTargets<'_> =
+ AllowedTargets::AllowList(&[Allow(Target::ConstParam)]);
const STABILITY: AttributeStability = unstable!(rustc_attrs);
const CREATE: fn(Span) -> AttributeKind = |_| AttributeKind::RustcPanicsWhenZero;
diff --git a/compiler/rustc_attr_parsing/src/attributes/semantics.rs b/compiler/rustc_attr_parsing/src/attributes/semantics.rs
index e0aba956ea000..bc3fee8bc0ba3 100644
--- a/compiler/rustc_attr_parsing/src/attributes/semantics.rs
+++ b/compiler/rustc_attr_parsing/src/attributes/semantics.rs
@@ -1,4 +1,3 @@
-use rustc_attr_ir::target::GenericParamKind;
use rustc_feature::AttributeStability;
use super::prelude::*;
@@ -6,12 +5,8 @@ use super::prelude::*;
pub(crate) struct MayDangleParser;
impl NoArgsAttributeParser for MayDangleParser {
const PATH: &[Symbol] = &[sym::may_dangle];
- const ALLOWED_TARGETS: AllowedTargets<'_> = AllowedTargets::AllowList(&[
- Allow(Target::GenericParam { kind: GenericParamKind::Type, has_default: false }),
- Allow(Target::GenericParam { kind: GenericParamKind::Type, has_default: true }),
- Allow(Target::GenericParam { kind: GenericParamKind::Lifetime, has_default: false }),
- Allow(Target::GenericParam { kind: GenericParamKind::Lifetime, has_default: true }),
- ]);
+ const ALLOWED_TARGETS: AllowedTargets<'_> =
+ AllowedTargets::AllowList(&[Allow(Target::TypeParam), Allow(Target::LifetimeParam)]);
const STABILITY: AttributeStability = unstable!(dropck_eyepatch);
const CREATE: fn(span: Span) -> AttributeKind = AttributeKind::MayDangle;
}
diff --git a/compiler/rustc_attr_parsing/src/attributes/stability.rs b/compiler/rustc_attr_parsing/src/attributes/stability.rs
index 29e288d858c37..f14934ab76547 100644
--- a/compiler/rustc_attr_parsing/src/attributes/stability.rs
+++ b/compiler/rustc_attr_parsing/src/attributes/stability.rs
@@ -1,6 +1,6 @@
use std::num::NonZero;
-use rustc_attr_ir::target::{AssocCtxt, GenericParamKind, MethodKind, Target};
+use rustc_attr_ir::target::{AssocCtxt, MethodKind, Target};
use rustc_attr_ir::{
DefaultBodyStability, PartialConstStability, Stability, StabilityLevel, StableSince,
UnstableReason, UnstableRemovedFeature, VERSION_PLACEHOLDER,
@@ -40,7 +40,7 @@ const ALLOWED_TARGETS: AllowedTargets<'_> = AllowedTargets::AllowList(&[
Allow(Target::TyAlias),
Allow(Target::Variant),
Allow(Target::Field),
- Allow(Target::GenericParam { kind: GenericParamKind::Type, has_default: true }),
+ Allow(Target::TypeParam),
Allow(Target::Static),
Allow(Target::ForeignFn),
Allow(Target::ForeignStatic),
diff --git a/compiler/rustc_attr_parsing/src/target_checking.rs b/compiler/rustc_attr_parsing/src/target_checking.rs
index 1e272b9674dab..5fc0b248110f7 100644
--- a/compiler/rustc_attr_parsing/src/target_checking.rs
+++ b/compiler/rustc_attr_parsing/src/target_checking.rs
@@ -532,30 +532,9 @@ pub(crate) const ALL_TARGETS: &[Policy] = {
Allow(Target::Crate),
Allow(Target::Delegation { mac: false }),
Allow(Target::Delegation { mac: true }),
- Allow(Target::GenericParam {
- kind: rustc_attr_ir::target::GenericParamKind::Const,
- has_default: false,
- }),
- Allow(Target::GenericParam {
- kind: rustc_attr_ir::target::GenericParamKind::Const,
- has_default: true,
- }),
- Allow(Target::GenericParam {
- kind: rustc_attr_ir::target::GenericParamKind::Lifetime,
- has_default: false,
- }),
- Allow(Target::GenericParam {
- kind: rustc_attr_ir::target::GenericParamKind::Lifetime,
- has_default: true,
- }),
- Allow(Target::GenericParam {
- kind: rustc_attr_ir::target::GenericParamKind::Type,
- has_default: false,
- }),
- Allow(Target::GenericParam {
- kind: rustc_attr_ir::target::GenericParamKind::Type,
- has_default: true,
- }),
+ Allow(Target::ConstParam),
+ Allow(Target::LifetimeParam),
+ Allow(Target::TypeParam),
Allow(Target::Loop),
Allow(Target::ForLoop),
Allow(Target::While),
diff --git a/compiler/rustc_borrowck/src/polonius/dump.rs b/compiler/rustc_borrowck/src/polonius/dump.rs
index e0f4c9ff98eca..0c63b00ce5461 100644
--- a/compiler/rustc_borrowck/src/polonius/dump.rs
+++ b/compiler/rustc_borrowck/src/polonius/dump.rs
@@ -543,6 +543,7 @@ fn emit_loan_reachability(
// It's useful to know whether the region we're reaching is live at this point.
let node_liveness =
if liveness.is_live_at(node.region, location) { "live" } else { "not live" };
+ writeln!(out, "")?;
writeln!(
out,
"/ at {:?}: '{} is {}",
@@ -550,6 +551,7 @@ fn emit_loan_reachability(
node.region.index(),
node_liveness,
)?;
+ writeln!(out, "")?;
writeln!(out, "")?;
}
writeln!(out, "")?;
diff --git a/compiler/rustc_borrowck/src/polonius/dump/polonius-mir-dump.template.html b/compiler/rustc_borrowck/src/polonius/dump/polonius-mir-dump.template.html
index e2b9b412963a2..c83d4b9b856cf 100644
--- a/compiler/rustc_borrowck/src/polonius/dump/polonius-mir-dump.template.html
+++ b/compiler/rustc_borrowck/src/polonius/dump/polonius-mir-dump.template.html
@@ -3,8 +3,9 @@
Polonius MIR dump
-
+
+
+
+
-
+
$SECTION_POLONIUS_CONSTRAINTS
-
+
$SECTION_POLONIUS_REACHABILITY
-
+
-
+
-
+
diff --git a/compiler/rustc_borrowck/src/type_check/liveness/trace.rs b/compiler/rustc_borrowck/src/type_check/liveness/trace.rs
index 61aa30aa3917c..90126866cd500 100644
--- a/compiler/rustc_borrowck/src/type_check/liveness/trace.rs
+++ b/compiler/rustc_borrowck/src/type_check/liveness/trace.rs
@@ -6,7 +6,7 @@ use rustc_infer::infer::canonical::QueryRegionConstraints;
use rustc_infer::traits::TraitErrors;
use rustc_middle::mir::{BasicBlock, Body, ConstraintCategory, Local, Location};
use rustc_middle::traits::query::DropckOutlivesResult;
-use rustc_middle::ty::{GenericArg, Ty, TypeVisitable, TypeVisitableExt};
+use rustc_middle::ty::{Ty, TyCtxt, TypeVisitable, TypeVisitableExt};
use rustc_mir_dataflow::impls::MaybeInitializedPlaces;
use rustc_mir_dataflow::move_paths::{HasMoveData, MoveData, MovePathIndex};
use rustc_mir_dataflow::points::{DenseLocationMap, PointIndex};
@@ -553,8 +553,17 @@ impl<'tcx> LivenessContext<'_, '_, 'tcx> {
/// points `live_at`.
fn add_use_live_facts_for(&mut self, value: Ty<'tcx>, live_at: &IntervalSet
) {
debug!("add_use_live_facts_for(value={:?})", value);
- Self::record_region_variance(self.typeck, value.into());
- Self::make_all_regions_live(self.location_map, self.typeck, value.into(), live_at);
+ Self::make_all_regions_live(self.location_map, self.typeck, value, live_at);
+
+ // When using `-Zpolonius=next`, we also record the variance of regions in this live type.
+ if let Some(polonius_context) = self.typeck.polonius_context.as_mut() {
+ record_live_region_variance(
+ self.typeck.infcx.tcx,
+ &mut polonius_context.live_region_variances,
+ self.typeck.universal_regions,
+ value,
+ );
+ }
}
/// Some variable with type `live_ty` is "drop live" at `location`
@@ -595,9 +604,6 @@ impl<'tcx> LivenessContext<'_, '_, 'tcx> {
}
}
- // Since the entire dropped local is live, record the variance of its regions.
- Self::record_region_variance(self.typeck, dropped_ty.into());
-
// All things in the `outlives` array may be touched by
// the destructor and must be live at this point.
for &kind in &drop_data.dropck_result.kinds {
@@ -610,19 +616,16 @@ impl<'tcx> LivenessContext<'_, '_, 'tcx> {
self.typeck.polonius_facts,
);
}
- }
- /// `live_kind` is the type of a (use- or drop-) live local.
- /// Record the variance of any region(s) appearing in it for Polonius. Does
- /// nothing if Polonius is not active.
- fn record_region_variance(typeck: &mut TypeChecker<'_, 'tcx>, live_kind: GenericArg<'tcx>) {
- // When using `-Zpolonius=next`, we record the variance of each live region.
- if let Some(polonius_context) = typeck.polonius_context.as_mut() {
+ // For polonius: since the local is drop live, record the variance of the regions in its
+ // type, not the ones in the type's live components seen in the dropck results above. See
+ // issue #160670.
+ if let Some(polonius_context) = self.typeck.polonius_context.as_mut() {
record_live_region_variance(
- typeck.infcx.tcx,
+ self.typeck.infcx.tcx,
&mut polonius_context.live_region_variances,
- typeck.universal_regions,
- live_kind,
+ self.typeck.universal_regions,
+ dropped_ty,
);
}
}
@@ -630,7 +633,7 @@ impl<'tcx> LivenessContext<'_, '_, 'tcx> {
fn make_all_regions_live(
location_map: &DenseLocationMap,
typeck: &mut TypeChecker<'_, 'tcx>,
- value: GenericArg<'tcx>,
+ value: impl TypeVisitable>,
live_at: &IntervalSet,
) {
debug!("make_all_regions_live(value={:?})", value);
@@ -647,7 +650,6 @@ impl<'tcx> LivenessContext<'_, '_, 'tcx> {
typeck.constraints.liveness_constraints.add_points(live_region_vid, live_at);
},
});
- Self::record_region_variance(typeck, value);
}
}
diff --git a/compiler/rustc_codegen_llvm/src/context.rs b/compiler/rustc_codegen_llvm/src/context.rs
index 125ed8d3e63d2..ac1bfcfb45afd 100644
--- a/compiler/rustc_codegen_llvm/src/context.rs
+++ b/compiler/rustc_codegen_llvm/src/context.rs
@@ -584,13 +584,23 @@ pub(crate) unsafe fn create_module<'ll>(
);
}
- if llvm_version >= (24, 0, 0) && sess.target.singlethread(&sess.internal_target_features) {
- llvm::add_module_flag_str(
- llmod,
- llvm::ModuleFlagMergeBehavior::Error,
- "thread-model",
- "single",
- );
+ if llvm_version >= (24, 0, 0) {
+ if sess.target.singlethread(&sess.internal_target_features) {
+ llvm::add_module_flag_str(
+ llmod,
+ llvm::ModuleFlagMergeBehavior::Error,
+ "thread-model",
+ "single",
+ );
+ }
+ if wants_wasm_eh(&sess.target) {
+ llvm::add_module_flag_str(
+ llmod,
+ llvm::ModuleFlagMergeBehavior::Error,
+ "exception-model",
+ "wasm",
+ );
+ }
}
// Add module flags specified via -Z llvm_module_flag
diff --git a/compiler/rustc_driver_impl/src/lib.rs b/compiler/rustc_driver_impl/src/lib.rs
index 697bf2d528036..fce99655f54ab 100644
--- a/compiler/rustc_driver_impl/src/lib.rs
+++ b/compiler/rustc_driver_impl/src/lib.rs
@@ -1600,7 +1600,7 @@ fn report_ice(
let limit_frames = if backtrace { None } else { Some(2) };
- interface::try_print_query_stack(dcx, limit_frames, file);
+ interface::try_print_query_stack(limit_frames, file);
// We don't trust this callback not to panic itself, so run it at the end after we're sure we've
// printed all the relevant info.
diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs
index e1fd8344e73fd..f7f42c9d366f5 100644
--- a/compiler/rustc_errors/src/lib.rs
+++ b/compiler/rustc_errors/src/lib.rs
@@ -1148,11 +1148,6 @@ impl<'a> DiagCtxtHandle<'a> {
self.create_note(note).emit()
}
- #[track_caller]
- pub fn struct_failure_note(self, msg: impl Into) -> Diag<'a, ()> {
- Diag::new(self, FailureNote, msg)
- }
-
#[track_caller]
pub fn struct_allow(self, msg: impl Into) -> Diag<'a, ()> {
Diag::new(self, Allow, msg)
diff --git a/compiler/rustc_expand/src/expand.rs b/compiler/rustc_expand/src/expand.rs
index fc86bdfcf4f18..51c517ee24a66 100644
--- a/compiler/rustc_expand/src/expand.rs
+++ b/compiler/rustc_expand/src/expand.rs
@@ -1748,22 +1748,10 @@ impl InvocationCollectorNode for ast::GenericParam {
walk_flat_map_generic_param(collector, self)
}
fn as_target(&self) -> Target {
- let mut has_default = false;
- Target::GenericParam {
- kind: match &self.kind {
- rustc_ast::GenericParamKind::Lifetime => {
- rustc_attr_ir::target::GenericParamKind::Lifetime
- }
- rustc_ast::GenericParamKind::Type { default } => {
- has_default = default.is_some();
- rustc_attr_ir::target::GenericParamKind::Type
- }
- rustc_ast::GenericParamKind::Const { default, .. } => {
- has_default = default.is_some();
- rustc_attr_ir::target::GenericParamKind::Const
- }
- },
- has_default,
+ match self.kind {
+ rustc_ast::GenericParamKind::Lifetime => Target::LifetimeParam,
+ rustc_ast::GenericParamKind::Type { .. } => Target::TypeParam,
+ rustc_ast::GenericParamKind::Const { .. } => Target::ConstParam,
}
}
}
diff --git a/compiler/rustc_hir/src/target_impls.rs b/compiler/rustc_hir/src/target_impls.rs
index b71a046958b57..f98a6caaa5e66 100644
--- a/compiler/rustc_hir/src/target_impls.rs
+++ b/compiler/rustc_hir/src/target_impls.rs
@@ -1,6 +1,6 @@
//! Implements conversions from HIR types to Target.
-use rustc_attr_ir::target::{AssocCtxt, GenericParamKind, MethodKind, Target};
+use rustc_attr_ir::target::{AssocCtxt, MethodKind, Target};
use crate::def::DefKind;
use crate::{self as hir, ItemKind, TraitItemKind};
@@ -18,17 +18,9 @@ impl From<&hir::ForeignItem<'_>> for Target {
impl From<&hir::GenericParam<'_>> for Target {
fn from(generic_param: &hir::GenericParam<'_>) -> Target {
match generic_param.kind {
- hir::GenericParamKind::Type { default, .. } => Target::GenericParam {
- kind: GenericParamKind::Type,
- has_default: default.is_some(),
- },
- hir::GenericParamKind::Lifetime { .. } => {
- Target::GenericParam { kind: GenericParamKind::Lifetime, has_default: false }
- }
- hir::GenericParamKind::Const { default, .. } => Target::GenericParam {
- kind: GenericParamKind::Const,
- has_default: default.is_some(),
- },
+ hir::GenericParamKind::Type { .. } => Target::TypeParam,
+ hir::GenericParamKind::Lifetime { .. } => Target::LifetimeParam,
+ hir::GenericParamKind::Const { .. } => Target::ConstParam,
}
}
}
diff --git a/compiler/rustc_hir_analysis/src/check/always_applicable.rs b/compiler/rustc_hir_analysis/src/check/always_applicable.rs
index 1845ef3b7be0f..11960d57016f6 100644
--- a/compiler/rustc_hir_analysis/src/check/always_applicable.rs
+++ b/compiler/rustc_hir_analysis/src/check/always_applicable.rs
@@ -8,7 +8,7 @@ use rustc_data_structures::fx::FxHashSet;
use rustc_errors::codes::*;
use rustc_errors::{ErrorGuaranteed, struct_span_code_err};
use rustc_infer::infer::{RegionResolutionError, TyCtxtInferExt};
-use rustc_infer::traits::{ObligationCause, ObligationCauseCode};
+use rustc_infer::traits::{Obligation, ObligationCause, ObligationCauseCode};
use rustc_middle::ty::util::CheckRegions;
use rustc_middle::ty::{self, GenericArgsRef, Ty, TyCtxt, TypeVisitableExt, TypingMode};
use rustc_span::{span_bug, sym};
@@ -133,6 +133,45 @@ pub(crate) fn check_negative_auto_trait_impl<'tcx>(
}
}
+/// Checks if the self ty's where-clauses are able to be proven. For instance, if we have multiple
+/// overlapping drop impls, and we have `[T]: Sized` on both the impls and the self ty, we shouldn't
+/// error or ICE, since neither the ADT nor the impls are nameable in practice.
+///
+/// We already emit errors for the case where the impossible bound exists only on the self ty, or
+/// only on the impl(s).
+pub(crate) fn is_impossible_self_ty(tcx: TyCtxt<'_>, adt_did: LocalDefId) -> bool {
+ let clauses = tcx.clauses_of(adt_did).clauses;
+ if clauses.is_empty() {
+ return false;
+ }
+
+ // Be conservative in cases where we have `W` and a method like `Self: Sized`,
+ // since that method *may* have some substitutions where the predicates hold.
+ //
+ // This replicates the logic we use in coherence.
+ let infcx = tcx
+ .infer_ctxt()
+ .ignoring_regions()
+ .with_next_trait_solver(true)
+ .enable_next_solver_overflow_fcw(false)
+ .build(TypingMode::Coherence);
+ let param_env = ty::ParamEnv::empty();
+ let args = infcx.fresh_args_for_item(tcx.def_span(adt_did), adt_did.to_def_id());
+
+ let obligations = clauses.iter().map(|(clause, span)| {
+ Obligation::new(
+ tcx,
+ ObligationCause::dummy_with_span(*span),
+ param_env,
+ ty::EarlyBinder::bind(tcx, *clause).instantiate(tcx, args).skip_norm_wip(),
+ )
+ });
+
+ let ocx = ObligationCtxt::new(&infcx);
+ ocx.register_obligations(obligations);
+ ocx.try_evaluate_obligations().has_errors()
+}
+
fn ensure_impl_params_and_item_params_correspond<'tcx>(
tcx: TyCtxt<'tcx>,
impl_def_id: LocalDefId,
diff --git a/compiler/rustc_hir_analysis/src/check/mod.rs b/compiler/rustc_hir_analysis/src/check/mod.rs
index e960cd398dcb9..8d936b2cd3498 100644
--- a/compiler/rustc_hir_analysis/src/check/mod.rs
+++ b/compiler/rustc_hir_analysis/src/check/mod.rs
@@ -125,7 +125,11 @@ pub(super) fn provide(providers: &mut Providers) {
}
fn adt_destructor(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Option {
- let dtor = tcx.calculate_dtor(def_id, always_applicable::check_drop_impl);
+ let dtor = tcx.calculate_dtor(
+ def_id,
+ always_applicable::check_drop_impl,
+ always_applicable::is_impossible_self_ty,
+ );
if dtor.is_none() && tcx.features().async_drop() {
if let Some(async_dtor) = adt_async_destructor(tcx, def_id) {
// When type has AsyncDrop impl, but doesn't have Drop impl, generate error
@@ -137,7 +141,11 @@ fn adt_destructor(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Option
}
fn adt_async_destructor(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Option {
- let result = tcx.calculate_async_dtor(def_id, always_applicable::check_drop_impl);
+ let result = tcx.calculate_async_dtor(
+ def_id,
+ always_applicable::check_drop_impl,
+ always_applicable::is_impossible_self_ty,
+ );
// Async drop in libstd/libcore would become insta-stable — catch that mistake.
if result.is_some() && tcx.features().staged_api() {
span_bug!(tcx.def_span(def_id), "don't use async drop in libstd, it becomes insta-stable");
diff --git a/compiler/rustc_hir_analysis/src/check/wfcheck.rs b/compiler/rustc_hir_analysis/src/check/wfcheck.rs
index 429f45c2d8358..30947ce0f4f98 100644
--- a/compiler/rustc_hir_analysis/src/check/wfcheck.rs
+++ b/compiler/rustc_hir_analysis/src/check/wfcheck.rs
@@ -516,9 +516,14 @@ pub(crate) fn check_gat_where_clauses(tcx: TyCtxt<'_>, trait_def_id: LocalDefId)
b,
)
}
- ty::ClauseKind::TypeOutlives(ty::OutlivesClause(a, b)) => {
- !ty_known_to_outlive(tcx, gat_def_id, param_env, &FxIndexSet::default(), a, b)
- }
+ ty::ClauseKind::TypeOutlives(ty::OutlivesClause(a, b)) => !ty_known_to_outlive(
+ tcx,
+ gat_def_id,
+ param_env,
+ &FxIndexSet::default(),
+ Unnormalized::new_wip(a),
+ b,
+ ),
_ => bug!("Unexpected ClauseKind"),
})
.map(|clause| clause.to_string())
@@ -622,7 +627,14 @@ fn gather_gat_bounds<'tcx, T: TypeFoldable>>(
// reflected in a where clause on the GAT itself.
for (ty, ty_idx) in &types {
// In our example, requires that `Self: 'a`
- if ty_known_to_outlive(tcx, item_def_id, param_env, wf_tys, *ty, *region_a) {
+ if ty_known_to_outlive(
+ tcx,
+ item_def_id,
+ param_env,
+ wf_tys,
+ Unnormalized::new_wip(*ty),
+ *region_a,
+ ) {
debug!(?ty_idx, ?region_a_idx);
debug!("required clause: {ty} must outlive {region_a}");
// Translate into the generic parameters of the GAT. In
diff --git a/compiler/rustc_interface/src/interface.rs b/compiler/rustc_interface/src/interface.rs
index 006a320f11637..1950a29661249 100644
--- a/compiler/rustc_interface/src/interface.rs
+++ b/compiler/rustc_interface/src/interface.rs
@@ -6,7 +6,7 @@ use rustc_ast::{LitKind, MetaItemKind, token};
use rustc_codegen_ssa::traits::CodegenBackend;
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
use rustc_data_structures::jobserver;
-use rustc_errors::{DiagCtxtHandle, ErrorGuaranteed};
+use rustc_errors::ErrorGuaranteed;
use rustc_lint::LintStore;
use rustc_lint_defs::{Level, LintId};
use rustc_middle::ty;
@@ -536,11 +536,7 @@ pub fn run_compiler(config: Config, f: impl FnOnce(&Compiler) -> R + Se
)
}
-pub fn try_print_query_stack(
- dcx: DiagCtxtHandle<'_>,
- limit_frames: Option,
- file: Option,
-) {
+pub fn try_print_query_stack(limit_frames: Option, file: Option) {
eprintln!("query stack during panic:");
// Be careful relying on global state here: this code is called from
@@ -548,13 +544,7 @@ pub fn try_print_query_stack(
// state if it was responsible for triggering the panic.
let all_frames = ty::tls::with_context_opt(|icx| {
if let Some(icx) = icx {
- ty::print::with_no_queries!(print_query_stack(
- icx.tcx,
- icx.query,
- dcx,
- limit_frames,
- file,
- ))
+ ty::print::with_no_queries!(print_query_stack(icx.tcx, icx.query, limit_frames, file))
} else {
0
}
diff --git a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
index 494521ce18582..35d5597795a9e 100644
--- a/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
+++ b/compiler/rustc_llvm/llvm-wrapper/PassWrapper.cpp
@@ -458,10 +458,11 @@ extern "C" void LLVMRustAddLibraryInfo(LLVMTargetMachineRef T,
TLII.disableAllFunctions();
unwrap(PMR)->add(new TargetLibraryInfoWrapperPass(TLII));
#if LLVM_VERSION_GE(24, 0)
- // LLVM 24 removed TargetOptions::EABIVersion; the EABI version is now
- // derived from the target triple instead.
- unwrap(PMR)->add(new RuntimeLibraryInfoWrapper(
- Options->ExceptionModel, Options->MCOptions.ABIName, Options->VecLib));
+ // LLVM 24 removed TargetOptions::EABIVersion and ExceptionModel; the EABI
+ // version and exception model are now derived from the target triple and
+ // module flags respectively instead.
+ unwrap(PMR)->add(new RuntimeLibraryInfoWrapper(Options->MCOptions.ABIName,
+ Options->VecLib));
#elif LLVM_VERSION_GE(22, 0)
unwrap(PMR)->add(new RuntimeLibraryInfoWrapper(
TargetTriple, Options->ExceptionModel, Options->FloatABIType,
diff --git a/compiler/rustc_middle/src/ty/util.rs b/compiler/rustc_middle/src/ty/util.rs
index 31b7b719fa9cf..db983038e1af9 100644
--- a/compiler/rustc_middle/src/ty/util.rs
+++ b/compiler/rustc_middle/src/ty/util.rs
@@ -377,6 +377,7 @@ impl<'tcx> TyCtxt<'tcx> {
self,
adt_did: LocalDefId,
validate: impl Fn(Self, LocalDefId) -> Result<(), ErrorGuaranteed>,
+ impossible_self_ty: impl Fn(Self, LocalDefId) -> bool,
) -> Option {
let drop_trait = self.lang_items().drop_trait()?;
self.ensure_result().coherent_trait(drop_trait).ok()?;
@@ -394,6 +395,11 @@ impl<'tcx> TyCtxt<'tcx> {
continue;
}
+ if impossible_self_ty(self, adt_did) {
+ // The self ty is unnameable, so it can't be constructed in the first place.
+ continue;
+ }
+
let Some(&item_id) = self.associated_item_def_ids(impl_did).first() else {
self.dcx()
.span_delayed_bug(self.def_span(impl_did), "Drop impl without drop function");
@@ -424,6 +430,7 @@ impl<'tcx> TyCtxt<'tcx> {
self,
adt_did: LocalDefId,
validate: impl Fn(Self, LocalDefId) -> Result<(), ErrorGuaranteed>,
+ impossible_self_ty: impl Fn(Self, LocalDefId) -> bool,
) -> Option {
let async_drop_trait = self.lang_items().async_drop_trait()?;
self.ensure_result().coherent_trait(async_drop_trait).ok()?;
@@ -441,6 +448,11 @@ impl<'tcx> TyCtxt<'tcx> {
continue;
}
+ if impossible_self_ty(self, adt_did) {
+ // The self ty is unnameable, so it can't be constructed in the first place.
+ continue;
+ }
+
if let Some(old_impl_did) = dtor_candidate {
self.dcx()
.struct_span_err(self.def_span(impl_did), "multiple async drop impls found")
diff --git a/compiler/rustc_passes/src/check_attr.rs b/compiler/rustc_passes/src/check_attr.rs
index 79987b86385ef..f6bd780802401 100644
--- a/compiler/rustc_passes/src/check_attr.rs
+++ b/compiler/rustc_passes/src/check_attr.rs
@@ -844,7 +844,9 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
| Target::ForeignFn
| Target::ForeignStatic
| Target::ForeignTy
- | Target::GenericParam { .. }
+ | Target::TypeParam
+ | Target::LifetimeParam
+ | Target::ConstParam
| Target::MacroDef
| Target::PatField
| Target::ExprField
diff --git a/compiler/rustc_passes/src/dead.rs b/compiler/rustc_passes/src/dead.rs
index de5442d83910c..1800d4fc6c25e 100644
--- a/compiler/rustc_passes/src/dead.rs
+++ b/compiler/rustc_passes/src/dead.rs
@@ -1163,6 +1163,57 @@ impl<'tcx> DeadVisitor<'tcx> {
(level_spec.level(), level_spec.lint_id())
}
+ fn fulfill_dead_code_expectations(&self, def_id: LocalDefId, include: bool) {
+ let fulfill_if_expected = |node: DefId| {
+ // Only consider local, dead symbols where lint level carries an expectation
+ if let Some(node) = node.as_local()
+ && !self.live_symbols.contains(&node)
+ && let (_, Some(expectation)) = self.def_lint_level_plus(node)
+ {
+ // Same mechanism as LintContext::fulfill_expectation.
+ self.tcx
+ .dcx()
+ .struct_expect(
+ "this is a dummy diagnostic, to submit and store an expectation",
+ expectation.into(),
+ )
+ .emit();
+ }
+ };
+
+ if include {
+ fulfill_if_expected(def_id.to_def_id());
+ }
+
+ match self.tcx.def_kind(def_id) {
+ DefKind::Struct | DefKind::Union | DefKind::Enum => {
+ let adt = self.tcx.adt_def(def_id);
+ for variant in adt.variants() {
+ if variant.def_id != def_id.to_def_id() {
+ fulfill_if_expected(variant.def_id);
+ }
+ for field in &variant.fields {
+ fulfill_if_expected(field.did);
+ }
+ }
+ }
+ DefKind::Variant => {
+ let parent_enum = self.tcx.local_parent(def_id);
+ let variant = self.tcx.adt_def(parent_enum).variant_with_id(def_id.to_def_id());
+ //Check to see if fields carry expectation
+ for field in &variant.fields {
+ fulfill_if_expected(field.did);
+ }
+ }
+ DefKind::Trait => {
+ for &assoc_def_id in self.tcx.associated_item_def_ids(def_id) {
+ fulfill_if_expected(assoc_def_id);
+ }
+ }
+ _ => {}
+ }
+ }
+
fn dead_code_pub_in_binary_note(&self) -> Option {
self.target_lint.name.eq(DEAD_CODE_PUB_IN_BINARY.name).then_some(DeadCodePubInBinaryNote)
}
@@ -1469,10 +1520,12 @@ fn lint_dead_codes<'tcx>(
if !live_symbols.contains(&item.owner_id.def_id) {
let parent = tcx.local_parent(item.owner_id.def_id);
if parent != module.to_local_def_id() && !live_symbols.contains(&parent) {
- // We already have diagnosed something.
+ // We already have diagnosed something, but check parent's field for #[expect]
+ visitor.fulfill_dead_code_expectations(item.owner_id.def_id, true);
continue;
}
visitor.check_definition(item.owner_id.def_id);
+ visitor.fulfill_dead_code_expectations(item.owner_id.def_id, false);
continue;
}
@@ -1486,6 +1539,7 @@ fn lint_dead_codes<'tcx>(
// Record to group diagnostics.
let level_plus = visitor.def_lint_level_plus(def_id);
dead_variants.push(DeadItem { def_id, name: variant.name, level_plus });
+ visitor.fulfill_dead_code_expectations(def_id, false);
continue;
}
diff --git a/compiler/rustc_query_impl/src/job.rs b/compiler/rustc_query_impl/src/job.rs
index d90f4b6ba60ee..e0eaefa741673 100644
--- a/compiler/rustc_query_impl/src/job.rs
+++ b/compiler/rustc_query_impl/src/job.rs
@@ -6,7 +6,6 @@ use std::{iter, mem};
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
use rustc_data_structures::hash_table::HashTable;
use rustc_data_structures::sync::{DynSend, DynSync};
-use rustc_errors::DiagCtxtHandle;
use rustc_middle::queries::TaggedQueryKey;
use rustc_middle::query::{
ActiveKeyStatus, QueryCache, QueryCycle, QueryJob, QueryJobId, QueryKey, QueryLatch,
@@ -453,7 +452,6 @@ pub fn break_query_cycle<'tcx>(job_map: QueryJobMap<'tcx>, registry: &rustc_thre
pub fn print_query_stack<'tcx>(
tcx: TyCtxt<'tcx>,
mut current_query: Option,
- dcx: DiagCtxtHandle<'_>,
limit_frames: Option,
mut file: Option,
) -> usize {
@@ -476,12 +474,10 @@ pub fn print_query_stack<'tcx>(
let description = query_info.tagged_key.description(tcx);
if Some(count_printed) < limit_frames || limit_frames.is_none() {
// Only print to stderr as many stack frames as `num_frames` when present.
- dcx.struct_failure_note(format!(
+ eprintln!(
"#{count_printed} [{query_name}] {description}",
query_name = query_info.tagged_key.query_name(),
- ))
- .with_span(query_info.job.span)
- .emit();
+ );
count_printed += 1;
}
diff --git a/compiler/rustc_target/src/callconv/sparc.rs b/compiler/rustc_target/src/callconv/sparc.rs
index 71af508915e59..dc4d4a7f51225 100644
--- a/compiler/rustc_target/src/callconv/sparc.rs
+++ b/compiler/rustc_target/src/callconv/sparc.rs
@@ -1,46 +1,35 @@
-use rustc_abi::{HasDataLayout, Size, TyAbiInterface};
+use rustc_abi::{BackendRepr, Float, HasDataLayout, Primitive, TyAbiInterface};
-use crate::callconv::{ArgAbi, FnAbi, Reg, Uniform};
+use crate::callconv::{ArgAbi, FnAbi};
-fn classify_ret(cx: &C, ret: &mut ArgAbi<'_, Ty>, offset: &mut Size)
-where
- C: HasDataLayout,
-{
- if !ret.layout.is_aggregate() {
- ret.extend_integer_width_to(32);
+fn classify<'a, Ty>(arg: &mut ArgAbi<'a, Ty>) {
+ if arg.layout.is_aggregate() {
+ arg.make_indirect();
+ } else if let BackendRepr::Scalar(scalar) = arg.layout.backend_repr
+ && scalar.primitive() == Primitive::Float(Float::F128)
+ {
+ // Always pass f128 indirectly.
+ arg.make_indirect();
} else {
- ret.make_indirect();
- *offset += cx.data_layout().pointer_size();
+ arg.extend_integer_width_to(32);
}
}
-fn classify_arg<'a, Ty, C>(cx: &C, arg: &mut ArgAbi<'a, Ty>, offset: &mut Size)
+fn classify_arg<'a, Ty, C>(cx: &C, arg: &mut ArgAbi<'a, Ty>)
where
Ty: TyAbiInterface<'a, C> + Copy,
C: HasDataLayout,
{
if !arg.layout.is_sized() {
- // FIXME: Update offset?
// Not touching this...
return;
}
- let dl = cx.data_layout();
if arg.layout.pass_indirectly_in_non_rustic_abis(cx) {
arg.make_indirect();
- *offset += dl.pointer_size();
return;
}
- let size = arg.layout.size;
- let align = arg.layout.align.abi.max(dl.i32_align).min(dl.i64_align);
-
- if arg.layout.is_aggregate() {
- let pad_i32 = u8::from(!offset.is_aligned(align));
- arg.cast_to_and_pad_i32(Uniform::new(Reg::i32(), size), pad_i32);
- } else {
- arg.extend_integer_width_to(32);
- }
- *offset = offset.align_to(align) + size.align_to(align);
+ classify(arg);
}
pub(crate) fn compute_abi_info<'a, Ty, C>(cx: &C, fn_abi: &mut FnAbi<'a, Ty>)
@@ -48,15 +37,17 @@ where
Ty: TyAbiInterface<'a, C> + Copy,
C: HasDataLayout,
{
- let mut offset = Size::ZERO;
if !fn_abi.ret.is_ignore() {
- classify_ret(cx, &mut fn_abi.ret, &mut offset);
+ classify(&mut fn_abi.ret);
}
for arg in fn_abi.args.iter_mut() {
if arg.is_ignore() {
+ if arg.layout.is_zst() {
+ arg.make_indirect_from_ignore();
+ }
continue;
}
- classify_arg(cx, arg, &mut offset);
+ classify_arg(cx, arg);
}
}
diff --git a/compiler/rustc_trait_selection/src/regions.rs b/compiler/rustc_trait_selection/src/regions.rs
index 83a1af895032b..f54d774e32670 100644
--- a/compiler/rustc_trait_selection/src/regions.rs
+++ b/compiler/rustc_trait_selection/src/regions.rs
@@ -5,9 +5,11 @@ use rustc_infer::infer::{
InferCtxt, RegionResolutionError, SubregionOrigin, TyCtxtInferExt, TypeOutlivesConstraint,
};
use rustc_macros::extension;
-use rustc_middle::ty::{self, Ty, TyCtxt, TypeVisitableExt, TypingMode, elaborate};
+use rustc_middle::traits::ObligationCause;
+use rustc_middle::ty::{self, Ty, TyCtxt, TypeVisitableExt, TypingMode, Unnormalized, elaborate};
use rustc_span::DUMMY_SP;
+use crate::traits::ScrubbedTraitError;
use crate::traits::outlives_bounds::InferCtxtExt;
#[extension(pub trait OutlivesEnvironmentBuildExt<'tcx>)]
@@ -90,15 +92,30 @@ pub fn ty_known_to_outlive<'tcx>(
id: LocalDefId,
param_env: ty::ParamEnv<'tcx>,
wf_tys: &FxIndexSet>,
- ty: Ty<'tcx>,
+ ty: Unnormalized<'tcx, Ty<'tcx>>,
region: ty::Region<'tcx>,
) -> bool {
test_region_obligations(tcx, id, param_env, wf_tys, |infcx| {
+ // Types in region obligations should be normalized.
+ let ty = if infcx.next_trait_solver() {
+ let Ok(ty) = crate::solve::deeply_normalize::<_, ScrubbedTraitError<'tcx>>(
+ infcx.at(&ObligationCause::dummy_with_span(DUMMY_SP), param_env),
+ ty,
+ ) else {
+ return Err(());
+ };
+ ty
+ } else {
+ ty.skip_norm_wip()
+ };
+
infcx.register_type_outlives_constraint_inner(TypeOutlivesConstraint {
sub_region: region,
sup_type: ty,
origin: SubregionOrigin::RelateParamBound(DUMMY_SP, ty, None),
});
+
+ Ok(())
})
}
@@ -119,6 +136,7 @@ pub fn region_known_to_outlive<'tcx>(
region_a,
ty::VisibleForLeakCheck::Unreachable,
);
+ Ok(())
})
}
@@ -130,14 +148,16 @@ pub fn test_region_obligations<'tcx>(
id: LocalDefId,
param_env: ty::ParamEnv<'tcx>,
wf_tys: &FxIndexSet>,
- add_constraints: impl FnOnce(&InferCtxt<'tcx>),
+ add_constraints: impl FnOnce(&InferCtxt<'tcx>) -> Result<(), ()>,
) -> bool {
// Unfortunately, we have to use a new `InferCtxt` each call, because
// region constraints get added and solved there and we need to test each
// call individually.
let infcx = tcx.infer_ctxt().build(TypingMode::non_body_analysis());
- add_constraints(&infcx);
+ if add_constraints(&infcx).is_err() {
+ return false;
+ }
let errors = infcx.resolve_regions(id, param_env, wf_tys.iter().copied());
tracing::debug!(?errors, "errors");
diff --git a/compiler/rustc_trait_selection/src/traits/outlives_for_liveness.rs b/compiler/rustc_trait_selection/src/traits/outlives_for_liveness.rs
index c3c647df9ee0f..4cc3ac1a55320 100644
--- a/compiler/rustc_trait_selection/src/traits/outlives_for_liveness.rs
+++ b/compiler/rustc_trait_selection/src/traits/outlives_for_liveness.rs
@@ -1,16 +1,44 @@
+use std::debug_assert_matches;
+
use rustc_data_structures::fx::FxIndexSet;
use rustc_hir::def::DefKind;
use rustc_hir::def_id::{DefId, LocalDefId};
use rustc_index::bit_set::DenseBitSet;
+use rustc_infer::infer::{SubregionOrigin, TypeOutlivesConstraint};
use rustc_middle::ty::{
self, Flags, ImplTraitInTraitData, Ty, TyCtxt, TypeSuperVisitable, TypeVisitable,
TypeVisitableExt, TypeVisitor,
};
-use rustc_span::bug;
+use rustc_span::{DUMMY_SP, bug};
use crate::infer::outlives::test_type_match;
use crate::infer::region_constraints::VerifyIfEq;
-use crate::regions::{region_known_to_outlive, ty_known_to_outlive};
+use crate::regions::{region_known_to_outlive, test_region_obligations};
+
+/// Given a known `param_env` and a set of well formed types, can we prove that
+/// `ty` outlives `region`.
+///
+/// Copied from `ty_known_to_outlive` without normalization for `ty` because we
+/// don't want trait solving in liveness queries.
+fn param_known_to_outlive<'tcx>(
+ tcx: TyCtxt<'tcx>,
+ id: LocalDefId,
+ param_env: ty::ParamEnv<'tcx>,
+ wf_tys: &FxIndexSet>,
+ ty: Ty<'tcx>,
+ region: ty::Region<'tcx>,
+) -> bool {
+ debug_assert_matches!(ty.kind(), ty::Param(_));
+
+ test_region_obligations(tcx, id, param_env, wf_tys, |infcx| {
+ infcx.register_type_outlives_constraint_inner(TypeOutlivesConstraint {
+ sub_region: region,
+ sup_type: ty,
+ origin: SubregionOrigin::RelateParamBound(DUMMY_SP, ty, None),
+ });
+ Ok(())
+ })
+}
/// For a given alias type, this returns the set of indices into the identity generic args that
/// are relevant for liveness, that can be inferred from outlives bounds on the
@@ -229,7 +257,7 @@ pub(crate) fn args_known_to_outlive_opaque_params<'tcx>(
ty::GenericArgKind::Const(_) => continue,
// Lifetimes should be captured
ty::GenericArgKind::Lifetime(_) => continue,
- ty::GenericArgKind::Type(t) => ty_known_to_outlive(
+ ty::GenericArgKind::Type(t) => param_known_to_outlive(
tcx,
def_id,
parent_param_env,
@@ -290,7 +318,7 @@ pub(crate) fn args_known_to_outlive_non_opaque_params<'tcx>(
region_known_to_outlive(tcx, def_id, param_env, &wf_tys, r, outlived_region)
}
ty::GenericArgKind::Type(t) => {
- ty_known_to_outlive(tcx, def_id, param_env, &wf_tys, t, outlived_region)
+ param_known_to_outlive(tcx, def_id, param_env, &wf_tys, t, outlived_region)
}
ty::GenericArgKind::Const(_) => false,
};
diff --git a/library/alloc/src/alloc.rs b/library/alloc/src/alloc.rs
index b88d2391bfb61..0846063cbc175 100644
--- a/library/alloc/src/alloc.rs
+++ b/library/alloc/src/alloc.rs
@@ -676,3 +676,28 @@ pub mod __alloc_error_handler {
)
}
}
+
+/// Allocator marker trait that is implemented only on `Global`, except when
+/// the allocator feature gate is enabled (in which case it is implemented
+/// for all allocators).
+///
+/// This is to prevent stable code from e.g. constructing `Arc`
+/// using the `From> for Arc` impl.
+///
+/// Note that this trait cannot appear in specialization impls (even if not
+/// specialized on).
+///
+/// This trait should be used as a bound whenever a function constructing
+/// a type with an `#[unstable] A: Allocator = Global` parameter may be
+/// callable for `A != Global`.
+#[marker]
+#[unstable(feature = "allocator_api", issue = "32838")]
+#[doc(hidden)]
+pub trait AllocatorNightly: Allocator {}
+
+#[unstable(feature = "allocator_api", issue = "32838")]
+#[unstable_feature_bound(allocator_api)]
+impl AllocatorNightly for A {}
+
+#[unstable(feature = "allocator_api", issue = "32838")]
+impl AllocatorNightly for Global {}
diff --git a/library/alloc/src/collections/binary_heap/mod.rs b/library/alloc/src/collections/binary_heap/mod.rs
index 32e1d932632bc..8d730a49182bd 100644
--- a/library/alloc/src/collections/binary_heap/mod.rs
+++ b/library/alloc/src/collections/binary_heap/mod.rs
@@ -150,7 +150,7 @@ use core::num::NonZero;
use core::ops::{Deref, DerefMut};
use core::{fmt, ptr};
-use crate::alloc::Global;
+use crate::alloc::{AllocatorNightly, Global};
use crate::collections::TryReserveError;
use crate::slice;
#[cfg(not(test))]
@@ -1491,7 +1491,10 @@ impl BinaryHeap {
/// ```
#[inline]
#[stable(feature = "drain", since = "1.6.0")]
- pub fn drain(&mut self) -> Drain<'_, T, A> {
+ pub fn drain(&mut self) -> Drain<'_, T, A>
+ where
+ A: AllocatorNightly, // needed for the `Vec::drain` call
+ {
Drain { iter: self.data.drain(..) }
}
@@ -1512,7 +1515,10 @@ impl BinaryHeap {
/// assert!(heap.is_empty());
/// ```
#[stable(feature = "rust1", since = "1.0.0")]
- pub fn clear(&mut self) {
+ pub fn clear(&mut self)
+ where
+ A: AllocatorNightly,
+ {
self.drain();
}
}
@@ -1956,7 +1962,7 @@ impl FusedIterator for DrainSorted<'_, T, A> {}
unsafe impl TrustedLen for DrainSorted<'_, T, A> {}
#[stable(feature = "binary_heap_extras_15", since = "1.5.0")]
-impl From> for BinaryHeap {
+impl From> for BinaryHeap {
/// Converts a `Vec` into a `BinaryHeap`.
///
/// This conversion happens in-place, and has *O*(*n*) time complexity.
diff --git a/library/alloc/src/collections/vec_deque/mod.rs b/library/alloc/src/collections/vec_deque/mod.rs
index 5bd43806b1a09..e068add469f3b 100644
--- a/library/alloc/src/collections/vec_deque/mod.rs
+++ b/library/alloc/src/collections/vec_deque/mod.rs
@@ -21,7 +21,7 @@ use core::mem::{ManuallyDrop, SizedTypeProperties};
use core::ops::{Index, IndexMut, Range, RangeBounds};
use core::{fmt, ptr, slice};
-use crate::alloc::{Allocator, Global};
+use crate::alloc::{Allocator, AllocatorNightly, Global};
use crate::collections::{TryReserveError, TryReserveErrorKind};
use crate::raw_vec::RawVec;
use crate::vec::Vec;
@@ -4051,7 +4051,7 @@ impl fmt::Debug for VecDeque {
}
#[stable(feature = "vecdeque_vec_conversions", since = "1.10.0")]
-impl From> for VecDeque {
+impl From> for VecDeque {
/// Turn a [`Vec`] into a [`VecDeque`].
///
/// [`Vec`]: crate::vec::Vec
diff --git a/library/alloc/src/lib.rs b/library/alloc/src/lib.rs
index 6bbd8e8617413..acdc22ac5b331 100644
--- a/library/alloc/src/lib.rs
+++ b/library/alloc/src/lib.rs
@@ -149,6 +149,7 @@
#![feature(legacy_receiver_trait)]
#![feature(likely_unlikely)]
#![feature(local_waker)]
+#![feature(marker_trait_attr)]
#![feature(maybe_uninit_array_assume_init)]
#![feature(maybe_uninit_fill)]
#![feature(maybe_uninit_uninit_array_transpose)]
diff --git a/library/alloc/src/rc.rs b/library/alloc/src/rc.rs
index 5c6f5245e7cbb..7e793aea71e3c 100644
--- a/library/alloc/src/rc.rs
+++ b/library/alloc/src/rc.rs
@@ -266,9 +266,9 @@ use core::ptr::{self, NonNull, drop_in_place};
use core::slice::from_raw_parts_mut;
use core::{borrow, fmt, hint};
-#[cfg(not(no_global_oom_handling))]
-use crate::alloc::handle_alloc_error;
use crate::alloc::{AllocError, Allocator, AllocatorClone, Global, Layout};
+#[cfg(not(no_global_oom_handling))]
+use crate::alloc::{AllocatorNightly, handle_alloc_error};
use crate::borrow::{Cow, ToOwned};
use crate::boxed::Box;
#[cfg(not(no_global_oom_handling))]
@@ -3085,7 +3085,7 @@ impl From for Rc {
#[cfg(not(no_global_oom_handling))]
#[stable(feature = "shared_from_slice", since = "1.21.0")]
-impl From> for Rc {
+impl From> for Rc {
/// Move a boxed object to a new, reference counted, allocation.
///
/// # Example
@@ -3104,7 +3104,7 @@ impl From> for Rc {
#[cfg(not(no_global_oom_handling))]
#[stable(feature = "shared_from_slice", since = "1.21.0")]
-impl From> for Rc<[T], A> {
+impl From> for Rc<[T], A> {
/// Allocates a reference-counted slice and moves `v`'s items into it.
///
/// # Example
diff --git a/library/alloc/src/sync.rs b/library/alloc/src/sync.rs
index 95490625668b3..52b3b13fa5a0e 100644
--- a/library/alloc/src/sync.rs
+++ b/library/alloc/src/sync.rs
@@ -33,9 +33,9 @@ use core::sync::atomic::Ordering::{Acquire, Relaxed, Release};
use core::sync::atomic::{self, Atomic};
use core::{borrow, fmt, hint};
-#[cfg(not(no_global_oom_handling))]
-use crate::alloc::handle_alloc_error;
use crate::alloc::{AllocError, Allocator, AllocatorClone, Global, Layout};
+#[cfg(not(no_global_oom_handling))]
+use crate::alloc::{AllocatorNightly, handle_alloc_error};
use crate::borrow::{Cow, ToOwned};
use crate::boxed::Box;
use crate::rc::is_dangling;
@@ -4178,7 +4178,7 @@ impl From for Arc {
#[cfg(not(no_global_oom_handling))]
#[stable(feature = "shared_from_slice", since = "1.21.0")]
-impl From> for Arc {
+impl From> for Arc {
/// Move a boxed object to a new, reference-counted allocation.
///
/// # Example
@@ -4197,7 +4197,7 @@ impl From> for Arc {
#[cfg(not(no_global_oom_handling))]
#[stable(feature = "shared_from_slice", since = "1.21.0")]
-impl From> for Arc<[T], A> {
+impl From> for Arc<[T], A> {
/// Allocates a reference-counted slice and moves `v`'s items into it.
///
/// # Example
diff --git a/library/alloc/src/vec/mod.rs b/library/alloc/src/vec/mod.rs
index 0e550e5c2f9cd..7a9ac8bae32e2 100644
--- a/library/alloc/src/vec/mod.rs
+++ b/library/alloc/src/vec/mod.rs
@@ -88,7 +88,7 @@ use core::{cmp, fmt, hint, intrinsics, ub_checks};
#[stable(feature = "extract_if", since = "1.87.0")]
pub use self::extract_if::ExtractIf;
-use crate::alloc::{Allocator, Global};
+use crate::alloc::{Allocator, AllocatorNightly, Global};
use crate::borrow::{Cow, ToOwned};
use crate::boxed::Box;
use crate::collections::TryReserveError;
@@ -2954,7 +2954,10 @@ impl Vec {
/// ```
#[inline]
#[unstable(feature = "vec_peek_mut", issue = "122742")]
- pub fn peek_mut(&mut self) -> Option> {
+ pub fn peek_mut(&mut self) -> Option>
+ where
+ A: AllocatorNightly,
+ {
PeekMut::new(self)
}
@@ -3055,6 +3058,7 @@ impl Vec {
#[stable(feature = "drain", since = "1.6.0")]
pub fn drain(&mut self, range: R) -> Drain<'_, T, A>
where
+ A: AllocatorNightly,
R: RangeBounds,
{
// Memory safety
@@ -4241,6 +4245,7 @@ impl Vec {
#[stable(feature = "vec_splice", since = "1.21.0")]
pub fn splice(&mut self, range: R, replace_with: I) -> Splice<'_, I::IntoIter, A>
where
+ A: AllocatorNightly,
R: RangeBounds,
I: IntoIterator- ,
{
@@ -4324,6 +4329,7 @@ impl Vec {
#[stable(feature = "extract_if", since = "1.87.0")]
pub fn extract_if(&mut self, range: R, filter: F) -> ExtractIf<'_, T, F, A>
where
+ A: AllocatorNightly,
F: FnMut(&mut T) -> bool,
R: RangeBounds,
{
diff --git a/library/core/src/ffi/c_str.rs b/library/core/src/ffi/c_str.rs
index e5b1f8088a5bf..c851b56c20bc8 100644
--- a/library/core/src/ffi/c_str.rs
+++ b/library/core/src/ffi/c_str.rs
@@ -6,6 +6,7 @@ use crate::ffi::c_char;
use crate::intrinsics::const_eval_select;
use crate::iter::FusedIterator;
use crate::marker::PhantomData;
+use crate::num::niche_types::UsizeNoHighBitMinusOne;
use crate::ptr::NonNull;
use crate::slice::memchr;
use crate::{fmt, ops, range, slice, str};
@@ -262,7 +263,12 @@ impl CStr {
// means the call to `from_bytes_with_nul_unchecked` is correct.
//
// The cast from c_char to u8 is ok because a c_char is always one byte.
- unsafe { Self::from_bytes_with_nul_unchecked(slice::from_raw_parts(ptr.cast(), len + 1)) }
+ unsafe {
+ Self::from_bytes_with_nul_unchecked(slice::from_raw_parts(
+ ptr.cast(),
+ len.as_inner() + 1,
+ ))
+ }
}
/// Creates a C string wrapper from a byte slice with any number of nuls.
@@ -750,9 +756,9 @@ const impl AsRef for CStr {
#[inline]
#[unstable(feature = "cstr_internals", issue = "none")]
#[rustc_allow_const_fn_unstable(const_eval_select)]
-const unsafe fn strlen(ptr: *const c_char) -> usize {
+const unsafe fn strlen(ptr: *const c_char) -> UsizeNoHighBitMinusOne {
const_eval_select!(
- @capture { s: *const c_char = ptr } -> usize:
+ @capture { s: *const c_char = ptr } -> UsizeNoHighBitMinusOne:
if const {
let mut len = 0;
@@ -761,15 +767,16 @@ const unsafe fn strlen(ptr: *const c_char) -> usize {
len += 1;
}
- len
+ UsizeNoHighBitMinusOne::new(len).unwrap()
} else {
unsafe extern "C" {
/// Provided by libc or compiler_builtins.
fn strlen(s: *const c_char) -> usize;
}
- // SAFETY: Outer caller has provided a pointer to a valid C string.
- unsafe { strlen(s) }
+ // SAFETY: Outer caller has provided a pointer to a valid C string,
+ // and its length is within bounds.
+ unsafe { UsizeNoHighBitMinusOne::new_unchecked(strlen(s)) }
}
)
}
@@ -841,7 +848,7 @@ impl Iterator for Bytes<'_> {
#[inline]
fn count(self) -> usize {
// SAFETY: We always hold a valid pointer to a C string
- unsafe { strlen(self.ptr.as_ptr().cast()) }
+ unsafe { strlen(self.ptr.as_ptr().cast()) }.as_inner()
}
}
diff --git a/library/core/src/num/imp/bignum.rs b/library/core/src/num/imp/bignum.rs
index 9e930ed15a234..95046e96fc8f2 100644
--- a/library/core/src/num/imp/bignum.rs
+++ b/library/core/src/num/imp/bignum.rs
@@ -1,7 +1,7 @@
//! Custom arbitrary-precision number (bignum) implementation.
//!
//! This is designed to avoid the heap allocation at expense of stack memory.
-//! The most used bignum type, `Big32x40`, is limited by 32 × 40 = 1,280 bits
+//! The most used bignum type, `Big32x40` and `Big64x20` you can choose, is limited by 32 × 40 = 1,280 bits
//! and will take at most 160 bytes of stack memory. This is more than enough
//! for round-tripping all possible finite `f64` values.
//!
@@ -61,9 +61,10 @@ impl_full_ops! {
u64: add(intrinsics::u64_add_with_overflow), mul/div(u128);
}
-/// Table of powers of 5 representable in digits. Specifically, the largest {u8, u16, u32} value
+/// Table of powers of 5 representable in digits. Specifically, the largest {u8, u16, u32, u64} value
/// that's a power of five, plus the corresponding exponent. Used in `mul_pow5`.
-const SMALL_POW5: [(u64, usize); 3] = [(125, 3), (15625, 6), (1_220_703_125, 13)];
+const SMALL_POW5: [(u64, usize); 4] =
+ [(125, 3), (15625, 6), (1_220_703_125, 13), (7_450_580_596_923_828_125, 27)];
macro_rules! define_bignum {
($name:ident: type=$ty:ty, n=$n:expr) => {
@@ -100,7 +101,7 @@ macro_rules! define_bignum {
let mut sz = 0;
while v > 0 {
base[sz] = v as $ty;
- v >>= <$ty>::BITS;
+ v = v.unbounded_shr(<$ty>::BITS);
sz += 1;
}
$name { size: sz, base }
@@ -382,11 +383,28 @@ macro_rules! define_bignum {
};
}
-/// The digit type for `Big32x40`.
+/// the digit type for `Big32x40`
pub type Digit32 = u32;
+#[cfg(target_pointer_width = "32")]
define_bignum!(Big32x40: type=Digit32, n=40);
+/// The digit type for `Big64x20`.
+pub type Digit64 = u64;
+
+#[cfg(target_pointer_width = "64")]
+define_bignum!(Big64x20: type=Digit64, n=20);
+
+#[cfg(target_pointer_width = "32")]
+pub type Big = Big32x40;
+#[cfg(target_pointer_width = "64")]
+pub type Big = Big64x20;
+
+#[cfg(target_pointer_width = "32")]
+pub type Digit = Digit32;
+#[cfg(target_pointer_width = "64")]
+pub type Digit = Digit64;
+
// this one is used for testing only.
#[doc(hidden)]
pub mod tests {
diff --git a/library/core/src/num/imp/flt2dec/strategy/dragon.rs b/library/core/src/num/imp/flt2dec/strategy/dragon.rs
index de19ca6bb664d..4ae0d4b4ab0ba 100644
--- a/library/core/src/num/imp/flt2dec/strategy/dragon.rs
+++ b/library/core/src/num/imp/flt2dec/strategy/dragon.rs
@@ -9,24 +9,56 @@ use flt2dec::{Decoded, MAX_SIG_DIGITS, round_up};
use crate::cmp::Ordering;
use crate::mem::MaybeUninit;
-use crate::num::imp::bignum::{Big32x40 as Big, Digit32 as Digit};
+use crate::num::imp::bignum::{Big, Digit};
use crate::num::imp::flt2dec;
static POW10: [Digit; 10] =
[1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000];
// precalculated arrays of `Digit`s for 5^(2^n).
+// FIXME(#162879): these tables have u64 and u32 versions, future versions may be generated by macro.
+#[cfg(target_pointer_width = "32")]
static POW5TO16: [Digit; 2] = [0x86f26fc1, 0x23];
+#[cfg(target_pointer_width = "64")]
+static POW5TO16: [Digit; 1] = [0x2386f26fc1];
+
+#[cfg(target_pointer_width = "32")]
static POW5TO32: [Digit; 3] = [0x85acef81, 0x2d6d415b, 0x4ee];
+#[cfg(target_pointer_width = "64")]
+static POW5TO32: [Digit; 2] = [0x2d6d415b85acef81, 0x4ee];
+
+#[cfg(target_pointer_width = "32")]
static POW5TO64: [Digit; 5] = [0xbf6a1f01, 0x6e38ed64, 0xdaa797ed, 0xe93ff9f4, 0x184f03];
+#[cfg(target_pointer_width = "64")]
+static POW5TO64: [Digit; 3] = [0x6e38ed64bf6a1f01, 0xe93ff9f4daa797ed, 0x184f03];
+
+#[cfg(target_pointer_width = "32")]
static POW5TO128: [Digit; 10] = [
0x2e953e01, 0x3df9909, 0xf1538fd, 0x2374e42f, 0xd3cff5ec, 0xc404dc08, 0xbccdb0da, 0xa6337f19,
0xe91f2603, 0x24e,
];
+#[cfg(target_pointer_width = "64")]
+static POW5TO128: [Digit; 5] =
+ [0x3df99092e953e01, 0x2374e42f0f1538fd, 0xc404dc08d3cff5ec, 0xa6337f19bccdb0da, 0x24ee91f2603];
+
+#[cfg(target_pointer_width = "32")]
static POW5TO256: [Digit; 19] = [
0x982e7c01, 0xbed3875b, 0xd8d99f72, 0x12152f87, 0x6bde50c6, 0xcf4a6e70, 0xd595d80f, 0x26b2716e,
0xadc666b0, 0x1d153624, 0x3c42d35a, 0x63ff540e, 0xcc5573c0, 0x65f9ef17, 0x55bc28f2, 0x80dcc7f7,
0xf46eeddc, 0x5fdcefce, 0x553f7,
];
+#[cfg(target_pointer_width = "64")]
+static POW5TO256: [Digit; 10] = [
+ 0xbed3875b982e7c01,
+ 0x12152f87d8d99f72,
+ 0xcf4a6e706bde50c6,
+ 0x26b2716ed595d80f,
+ 0x1d153624adc666b0,
+ 0x63ff540e3c42d35a,
+ 0x65f9ef17cc5573c0,
+ 0x80dcc7f755bc28f2,
+ 0x5fdcefcef46eeddc,
+ 0x553f7,
+];
#[doc(hidden)]
pub fn mul_pow10(x: &mut Big, n: usize) -> &mut Big {
diff --git a/library/core/src/num/niche_types.rs b/library/core/src/num/niche_types.rs
index df1cdf0e65fa1..37037d8145fb0 100644
--- a/library/core/src/num/niche_types.rs
+++ b/library/core/src/num/niche_types.rs
@@ -111,6 +111,7 @@ const impl Default for Nanoseconds {
}
const HALF_USIZE: usize = usize::MAX >> 1;
+const HALF_USIZE_MINUS_ONE: usize = HALF_USIZE - 1;
define_valid_range_type! {
pub struct NonZeroU8Inner(u8 is 1..);
@@ -126,6 +127,7 @@ define_valid_range_type! {
pub struct NonZeroI128Inner(i128 is ..0 | 1..);
pub struct UsizeNoHighBit(usize is 0..=HALF_USIZE);
+ pub struct UsizeNoHighBitMinusOne(usize is 0..=HALF_USIZE_MINUS_ONE);
pub struct NonZeroUsizeInner(usize is 1..);
pub struct NonZeroIsizeInner(isize is ..0 | 1..);
diff --git a/library/core/src/num/nonzero.rs b/library/core/src/num/nonzero.rs
index 5d8dee0b9378a..0563c225f7e0b 100644
--- a/library/core/src/num/nonzero.rs
+++ b/library/core/src/num/nonzero.rs
@@ -1414,6 +1414,40 @@ macro_rules! nonzero_integer {
#[stable(feature = "nonzero_parse", since = "1.35.0")]
impl FromStr for NonZero<$Int> {
type Err = ParseIntError;
+
+ /// Parses a non-zero integer from a string slice with decimal digits.
+ ///
+ /// The characters are expected to be an optional
+ #[doc = sign_dependent_expr!{
+ $signedness ?
+ if signed {
+ " `+` or `-` "
+ }
+ if unsigned {
+ " `+` "
+ }
+ }]
+ /// sign followed by only digits. Leading and trailing non-digit characters (including
+ /// whitespace) represent an error. Underscores (which are accepted in Rust literals)
+ /// also represent an error.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use std::num::NonZero;
+ /// use std::str::FromStr;
+ ///
+ #[doc = concat!("assert_eq!(NonZero::<", stringify!($Int), ">::from_str(\"+10\"), Ok(NonZero::new(10).unwrap()));")]
+ /// ```
+ ///
+ /// Trailing space returns error:
+ ///
+ /// ```
+ /// use std::num::NonZero;
+ /// use std::str::FromStr;
+ ///
+ #[doc = concat!("assert!(NonZero::<", stringify!($Int), ">::from_str(\"1 \").is_err());")]
+ /// ```
fn from_str(src: &str) -> Result {
Self::from_str_radix(src, 10)
}
diff --git a/library/core/src/str/mod.rs b/library/core/src/str/mod.rs
index db52d3bada4c8..cc96e51d83393 100644
--- a/library/core/src/str/mod.rs
+++ b/library/core/src/str/mod.rs
@@ -2912,7 +2912,7 @@ impl str {
/// Converts this string to its ASCII upper case equivalent in-place.
///
/// ASCII letters 'a' to 'z' are mapped to 'A' to 'Z',
- /// but non-ASCII letters are unchanged.
+ /// but all other characters are unchanged.
///
/// To return a new uppercased value without modifying the existing one, use
/// [`to_ascii_uppercase()`].
@@ -2940,7 +2940,7 @@ impl str {
/// Converts this string to its ASCII lower case equivalent in-place.
///
/// ASCII letters 'A' to 'Z' are mapped to 'a' to 'z',
- /// but non-ASCII letters are unchanged.
+ /// but all other characters are unchanged.
///
/// To return a new lowercased value without modifying the existing one, use
/// [`to_ascii_lowercase()`].
diff --git a/library/core/src/unicode/unicode_data.rs b/library/core/src/unicode/unicode_data.rs
index ca3a276b89d90..b6848706aa902 100644
--- a/library/core/src/unicode/unicode_data.rs
+++ b/library/core/src/unicode/unicode_data.rs
@@ -1,20 +1,20 @@
//! This file is generated by `./x run src/tools/unicode-table-generator`; do not edit manually!
-// Alphabetic : 1723 bytes, 147369 codepoints in 759 ranges (U+0000AA - U+03347A) using skiplist
-// Case_Ignorable : 1063 bytes, 2789 codepoints in 459 ranges (U+0000A8 - U+0E01F0) using skiplist
+// Alphabetic : 1763 bytes, 160202 codepoints in 773 ranges (U+0000AA - U+03FC40) using skiplist
+// Case_Ignorable : 1071 bytes, 2885 codepoints in 463 ranges (U+0000A8 - U+0E01F0) using skiplist
// Cf : 87 bytes, 170 codepoints in 21 ranges (U+0000AD - U+0E0080) using skiplist
-// Cn_Planes_0_3 : 1677 bytes, 94165 codepoints in 730 ranges (U+000378 - U+03FFFE) using skiplist
+// Cn_Planes_0_3 : 1701 bytes, 81158 codepoints in 730 ranges (U+000378 - U+03FFFE) using skiplist
// Default_Ignorable_Code_Point: 83 bytes, 4174 codepoints in 17 ranges (U+0000AD - U+0E1000) using skiplist
-// Grapheme_Extend : 899 bytes, 2232 codepoints in 383 ranges (U+000300 - U+0E01F0) using skiplist
-// Lowercase : 943 bytes, 2569 codepoints in 676 ranges (U+0000AA - U+01E944) using bitset
+// Grapheme_Extend : 911 bytes, 2269 codepoints in 389 ranges (U+000300 - U+0E01F0) using skiplist
+// Lowercase : 981 bytes, 2714 codepoints in 695 ranges (U+0000AA - U+01E944) using bitset
// Lt : 33 bytes, 31 codepoints in 10 ranges (U+0001C5 - U+001FFD) using skiplist
-// N : 463 bytes, 1914 codepoints in 145 ranges (U+0000B2 - U+01FBFA) using skiplist
-// Uppercase : 799 bytes, 1980 codepoints in 659 ranges (U+0000C0 - U+01F18A) using bitset
+// N : 471 bytes, 2237 codepoints in 147 ranges (U+0000B2 - U+01FBFA) using skiplist
+// Uppercase : 847 bytes, 2000 codepoints in 677 ranges (U+0000C0 - U+01F18A) using bitset
// White_Space : 256 bytes, 19 codepoints in 8 ranges (U+000085 - U+003001) using cascading
-// to_lower : 1112 bytes, 1462 codepoints in 185 ranges (U+0000C0 - U+01E921) using 2-level LUT
-// to_upper : 1998 bytes, 1554 codepoints in 299 ranges (U+0000B5 - U+01E943) using 2-level LUT
-// to_title : 340 bytes, 135 codepoints in 49 ranges (U+0000DF - U+00FB17) using 2-level LUT
+// to_lower : 1166 bytes, 1482 codepoints in 194 ranges (U+0000C0 - U+01E921) using 2-level LUT
+// to_upper : 2068 bytes, 1575 codepoints in 308 ranges (U+0000B5 - U+01E943) using 2-level LUT
+// to_title : 356 bytes, 136 codepoints in 49 ranges (U+0000DF - U+01DF95) using 2-level LUT
// to_casefold : 32 bytes, 174 codepoints in 5 ranges (U+000131 - U+00ABBF) using 2-level LUT
-// Total : 11508 bytes
+// Total : 11826 bytes
#[inline(always)]
const fn bitset_search<
@@ -145,97 +145,99 @@ unsafe fn skip_search(
offset_idx % 2 == 1
}
-pub const UNICODE_VERSION: (u8, u8, u8) = (17, 0, 0);
+pub const UNICODE_VERSION: (u8, u8, u8) = (18, 0, 0);
#[rustfmt::skip]
pub mod alphabetic {
use super::ShortOffsetRunHeader;
- static SHORT_OFFSET_RUNS: [ShortOffsetRunHeader; 51] = [
+ static SHORT_OFFSET_RUNS: [ShortOffsetRunHeader; 54] = [
ShortOffsetRunHeader::new(0, 706), ShortOffsetRunHeader::new(12, 4681),
- ShortOffsetRunHeader::new(414, 5741), ShortOffsetRunHeader::new(452, 7958),
- ShortOffsetRunHeader::new(552, 9398), ShortOffsetRunHeader::new(623, 11264),
- ShortOffsetRunHeader::new(625, 12293), ShortOffsetRunHeader::new(663, 13312),
- ShortOffsetRunHeader::new(687, 19904), ShortOffsetRunHeader::new(688, 42125),
- ShortOffsetRunHeader::new(690, 42509), ShortOffsetRunHeader::new(694, 55204),
- ShortOffsetRunHeader::new(778, 63744), ShortOffsetRunHeader::new(783, 64110),
- ShortOffsetRunHeader::new(784, 64830), ShortOffsetRunHeader::new(806, 66176),
- ShortOffsetRunHeader::new(847, 67383), ShortOffsetRunHeader::new(894, 73440),
- ShortOffsetRunHeader::new(1217, 74650), ShortOffsetRunHeader::new(1228, 77712),
- ShortOffsetRunHeader::new(1233, 78896), ShortOffsetRunHeader::new(1236, 82939),
- ShortOffsetRunHeader::new(1240, 83527), ShortOffsetRunHeader::new(1242, 90368),
- ShortOffsetRunHeader::new(1243, 92160), ShortOffsetRunHeader::new(1245, 92729),
- ShortOffsetRunHeader::new(1246, 93504), ShortOffsetRunHeader::new(1261, 101590),
- ShortOffsetRunHeader::new(1282, 110576), ShortOffsetRunHeader::new(1287, 110883),
- ShortOffsetRunHeader::new(1294, 111356), ShortOffsetRunHeader::new(1304, 113664),
- ShortOffsetRunHeader::new(1305, 119808), ShortOffsetRunHeader::new(1315, 120486),
- ShortOffsetRunHeader::new(1352, 122624), ShortOffsetRunHeader::new(1375, 123536),
- ShortOffsetRunHeader::new(1399, 124112), ShortOffsetRunHeader::new(1403, 126464),
- ShortOffsetRunHeader::new(1431, 127280), ShortOffsetRunHeader::new(1497, 131072),
- ShortOffsetRunHeader::new(1503, 173792), ShortOffsetRunHeader::new(1504, 178206),
- ShortOffsetRunHeader::new(1506, 183982), ShortOffsetRunHeader::new(1508, 191457),
- ShortOffsetRunHeader::new(1510, 192094), ShortOffsetRunHeader::new(1512, 194560),
- ShortOffsetRunHeader::new(1513, 195102), ShortOffsetRunHeader::new(1514, 196608),
- ShortOffsetRunHeader::new(1515, 201547), ShortOffsetRunHeader::new(1516, 210042),
- ShortOffsetRunHeader::new(1518, 1324154),
+ ShortOffsetRunHeader::new(416, 5741), ShortOffsetRunHeader::new(454, 7958),
+ ShortOffsetRunHeader::new(554, 9398), ShortOffsetRunHeader::new(625, 11264),
+ ShortOffsetRunHeader::new(627, 12293), ShortOffsetRunHeader::new(665, 13312),
+ ShortOffsetRunHeader::new(689, 19904), ShortOffsetRunHeader::new(690, 42125),
+ ShortOffsetRunHeader::new(692, 42509), ShortOffsetRunHeader::new(696, 55204),
+ ShortOffsetRunHeader::new(784, 63744), ShortOffsetRunHeader::new(789, 64110),
+ ShortOffsetRunHeader::new(790, 64830), ShortOffsetRunHeader::new(812, 66176),
+ ShortOffsetRunHeader::new(853, 67383), ShortOffsetRunHeader::new(900, 74650),
+ ShortOffsetRunHeader::new(1248, 75399), ShortOffsetRunHeader::new(1254, 77712),
+ ShortOffsetRunHeader::new(1255, 78896), ShortOffsetRunHeader::new(1258, 82939),
+ ShortOffsetRunHeader::new(1262, 83527), ShortOffsetRunHeader::new(1264, 90368),
+ ShortOffsetRunHeader::new(1265, 92160), ShortOffsetRunHeader::new(1267, 92729),
+ ShortOffsetRunHeader::new(1268, 93504), ShortOffsetRunHeader::new(1283, 101595),
+ ShortOffsetRunHeader::new(1304, 102802), ShortOffsetRunHeader::new(1310, 110576),
+ ShortOffsetRunHeader::new(1313, 110889), ShortOffsetRunHeader::new(1320, 111356),
+ ShortOffsetRunHeader::new(1330, 113664), ShortOffsetRunHeader::new(1331, 119808),
+ ShortOffsetRunHeader::new(1341, 120487), ShortOffsetRunHeader::new(1378, 122624),
+ ShortOffsetRunHeader::new(1401, 123536), ShortOffsetRunHeader::new(1425, 124112),
+ ShortOffsetRunHeader::new(1429, 126464), ShortOffsetRunHeader::new(1457, 127280),
+ ShortOffsetRunHeader::new(1523, 131072), ShortOffsetRunHeader::new(1529, 173792),
+ ShortOffsetRunHeader::new(1530, 178207), ShortOffsetRunHeader::new(1532, 183982),
+ ShortOffsetRunHeader::new(1534, 191457), ShortOffsetRunHeader::new(1536, 192094),
+ ShortOffsetRunHeader::new(1538, 194560), ShortOffsetRunHeader::new(1539, 195102),
+ ShortOffsetRunHeader::new(1540, 196608), ShortOffsetRunHeader::new(1541, 201547),
+ ShortOffsetRunHeader::new(1542, 210042), ShortOffsetRunHeader::new(1544, 249856),
+ ShortOffsetRunHeader::new(1545, 261184), ShortOffsetRunHeader::new(1546, 1375296),
];
- static OFFSETS: [u8; 1519] = [
+ static OFFSETS: [u8; 1547] = [
170, 1, 10, 1, 4, 1, 5, 23, 1, 31, 1, 0, 4, 12, 14, 5, 7, 1, 1, 1, 86, 1, 29, 18, 1, 2, 2,
- 4, 1, 1, 6, 1, 1, 3, 1, 1, 1, 20, 1, 83, 1, 139, 8, 166, 1, 38, 2, 1, 6, 41, 39, 14, 1, 1,
- 1, 2, 1, 2, 1, 1, 8, 27, 4, 4, 29, 11, 5, 56, 1, 7, 14, 102, 1, 8, 4, 8, 4, 3, 10, 3, 2, 1,
- 16, 48, 13, 101, 24, 33, 9, 2, 4, 1, 5, 24, 2, 19, 19, 25, 7, 11, 5, 24, 1, 7, 7, 1, 8, 42,
- 10, 12, 3, 7, 6, 76, 1, 16, 1, 3, 4, 15, 13, 19, 1, 8, 2, 2, 2, 22, 1, 7, 1, 1, 3, 4, 3, 8,
- 2, 2, 2, 2, 1, 1, 8, 1, 4, 2, 1, 5, 12, 2, 10, 1, 4, 3, 1, 6, 4, 2, 2, 22, 1, 7, 1, 2, 1, 2,
- 1, 2, 4, 5, 4, 2, 2, 2, 4, 1, 7, 4, 1, 1, 17, 6, 11, 3, 1, 9, 1, 3, 1, 22, 1, 7, 1, 2, 1, 5,
- 3, 9, 1, 3, 1, 2, 3, 1, 15, 4, 21, 4, 4, 3, 1, 8, 2, 2, 2, 22, 1, 7, 1, 2, 1, 5, 3, 8, 2, 2,
- 2, 2, 9, 2, 4, 2, 1, 5, 13, 1, 16, 2, 1, 6, 3, 3, 1, 4, 3, 2, 1, 1, 1, 2, 3, 2, 3, 3, 3, 12,
- 4, 5, 3, 3, 1, 3, 3, 1, 6, 1, 40, 13, 1, 3, 1, 23, 1, 16, 3, 8, 1, 3, 1, 3, 8, 2, 1, 3, 1,
- 2, 2, 4, 28, 4, 1, 8, 1, 3, 1, 23, 1, 10, 1, 5, 3, 8, 1, 3, 1, 3, 8, 2, 5, 3, 1, 4, 13, 3,
- 12, 13, 1, 3, 1, 41, 2, 8, 1, 3, 1, 3, 1, 1, 5, 4, 7, 5, 22, 6, 1, 3, 1, 18, 3, 24, 1, 9, 1,
- 1, 2, 7, 8, 6, 1, 1, 1, 8, 18, 2, 13, 58, 5, 7, 6, 1, 51, 2, 1, 1, 1, 5, 1, 24, 1, 1, 1, 19,
- 1, 3, 2, 5, 1, 1, 6, 1, 14, 4, 32, 1, 63, 8, 1, 36, 4, 19, 4, 16, 1, 36, 67, 55, 1, 1, 2, 5,
- 16, 64, 10, 4, 2, 38, 1, 1, 5, 1, 2, 43, 1, 0, 1, 4, 2, 7, 1, 1, 1, 4, 2, 41, 1, 4, 2, 33,
- 1, 4, 2, 7, 1, 1, 1, 4, 2, 15, 1, 57, 1, 4, 2, 67, 37, 16, 16, 86, 2, 6, 3, 0, 2, 17, 1, 26,
- 5, 75, 3, 11, 7, 20, 11, 21, 12, 20, 12, 13, 1, 3, 1, 2, 12, 52, 2, 19, 14, 1, 4, 1, 67, 89,
- 7, 43, 5, 70, 10, 31, 1, 12, 4, 9, 23, 30, 2, 5, 11, 44, 4, 26, 54, 28, 4, 63, 2, 20, 50, 1,
- 23, 2, 11, 3, 49, 52, 1, 15, 1, 8, 51, 42, 2, 4, 10, 44, 1, 11, 14, 55, 22, 3, 10, 36, 2,
- 11, 5, 43, 2, 3, 41, 4, 1, 6, 1, 2, 3, 1, 5, 192, 19, 34, 11, 0, 2, 6, 2, 38, 2, 6, 2, 8, 1,
- 1, 1, 1, 1, 1, 1, 31, 2, 53, 1, 7, 1, 1, 3, 3, 1, 7, 3, 4, 2, 6, 4, 13, 5, 3, 1, 7, 116, 1,
- 13, 1, 16, 13, 101, 1, 4, 1, 2, 10, 1, 1, 3, 5, 6, 1, 1, 1, 1, 1, 1, 4, 1, 11, 2, 4, 5, 5,
- 4, 1, 17, 41, 0, 52, 0, 229, 6, 4, 3, 2, 12, 38, 1, 1, 5, 1, 2, 56, 7, 1, 16, 23, 9, 7, 1,
- 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 32, 47, 1, 0, 3, 25, 9, 7, 5, 2, 5, 4, 86, 6, 3,
- 1, 90, 1, 4, 5, 43, 1, 94, 17, 32, 48, 16, 0, 0, 64, 0, 67, 46, 2, 0, 3, 16, 10, 2, 20, 47,
- 5, 8, 3, 113, 39, 9, 2, 103, 2, 82, 20, 21, 1, 33, 24, 52, 12, 68, 1, 1, 44, 6, 3, 1, 1, 3,
- 10, 33, 5, 35, 13, 29, 3, 51, 1, 12, 15, 1, 16, 16, 10, 5, 1, 55, 9, 14, 18, 23, 3, 69, 1,
- 1, 1, 1, 24, 3, 2, 16, 2, 4, 11, 6, 2, 6, 2, 6, 9, 7, 1, 7, 1, 43, 1, 14, 6, 123, 21, 0, 12,
- 23, 4, 49, 0, 0, 2, 106, 38, 7, 12, 5, 5, 12, 1, 13, 1, 5, 1, 1, 1, 2, 1, 2, 1, 108, 33, 0,
- 18, 64, 2, 54, 40, 12, 116, 5, 1, 135, 36, 26, 6, 26, 11, 89, 3, 6, 2, 6, 2, 6, 2, 3, 35,
- 12, 1, 26, 1, 19, 1, 2, 1, 15, 2, 14, 34, 123, 69, 53, 0, 29, 3, 49, 47, 32, 13, 30, 5, 43,
- 5, 30, 2, 36, 4, 8, 1, 5, 42, 158, 18, 36, 4, 36, 4, 40, 8, 52, 12, 11, 1, 15, 1, 7, 1, 2,
- 1, 11, 1, 15, 1, 7, 1, 2, 3, 52, 12, 0, 9, 22, 10, 8, 24, 6, 1, 42, 1, 9, 69, 6, 2, 1, 1,
- 44, 1, 2, 3, 1, 2, 23, 10, 23, 9, 31, 65, 19, 1, 2, 10, 22, 10, 26, 6, 26, 38, 56, 6, 2, 64,
- 4, 1, 2, 5, 8, 1, 3, 1, 29, 42, 29, 3, 29, 35, 8, 1, 28, 27, 54, 10, 22, 10, 19, 13, 18,
- 110, 73, 55, 51, 13, 51, 13, 40, 34, 28, 3, 1, 5, 23, 250, 42, 1, 2, 3, 2, 16, 6, 50, 3, 3,
- 29, 10, 1, 8, 22, 42, 18, 46, 21, 27, 23, 9, 70, 43, 5, 10, 57, 9, 1, 13, 25, 23, 51, 17, 4,
- 8, 35, 3, 1, 9, 64, 1, 4, 9, 2, 10, 1, 1, 1, 35, 18, 1, 34, 2, 1, 6, 4, 62, 7, 1, 1, 1, 4,
- 1, 15, 1, 10, 7, 57, 23, 4, 1, 8, 2, 2, 2, 22, 1, 7, 1, 2, 1, 5, 3, 8, 2, 2, 2, 2, 3, 1, 6,
- 1, 5, 7, 28, 10, 1, 1, 2, 1, 1, 38, 1, 10, 1, 1, 2, 1, 1, 4, 1, 2, 3, 1, 1, 1, 44, 66, 1, 3,
- 1, 4, 20, 3, 30, 66, 2, 2, 1, 1, 184, 54, 2, 7, 25, 6, 34, 63, 1, 1, 3, 1, 59, 54, 2, 1, 71,
- 27, 2, 14, 21, 7, 185, 57, 103, 64, 31, 8, 2, 1, 2, 8, 1, 2, 1, 30, 1, 2, 2, 2, 2, 4, 93, 8,
- 2, 46, 2, 6, 1, 1, 1, 2, 27, 51, 2, 10, 17, 72, 5, 1, 18, 73, 103, 8, 88, 33, 31, 9, 1, 45,
- 1, 7, 1, 1, 49, 30, 2, 22, 1, 14, 73, 7, 1, 2, 1, 44, 3, 1, 1, 2, 1, 3, 1, 1, 2, 2, 24, 6,
- 1, 2, 1, 37, 1, 2, 1, 4, 1, 1, 23, 44, 0, 23, 9, 17, 1, 41, 3, 3, 111, 1, 79, 0, 102, 111,
- 17, 196, 0, 97, 15, 0, 17, 6, 25, 0, 5, 0, 0, 47, 0, 0, 7, 31, 17, 79, 17, 30, 18, 48, 16,
- 4, 31, 21, 5, 19, 0, 45, 211, 64, 32, 25, 2, 25, 44, 75, 4, 57, 7, 17, 64, 2, 1, 1, 12, 7,
- 9, 0, 41, 32, 97, 115, 0, 4, 1, 7, 1, 2, 1, 0, 15, 1, 29, 3, 2, 1, 14, 4, 8, 0, 0, 107, 5,
+ 4, 1, 1, 6, 1, 1, 3, 1, 1, 1, 20, 1, 83, 1, 139, 8, 166, 1, 38, 1, 2, 6, 41, 2, 2, 35, 14,
+ 1, 1, 1, 2, 1, 2, 1, 3, 6, 27, 4, 4, 29, 11, 5, 56, 1, 7, 14, 102, 1, 8, 4, 8, 4, 3, 10, 3,
+ 2, 1, 16, 48, 13, 101, 24, 33, 9, 2, 4, 1, 5, 24, 2, 19, 19, 25, 7, 11, 5, 24, 1, 7, 7, 1,
+ 8, 42, 10, 12, 3, 7, 6, 76, 1, 16, 1, 3, 4, 15, 13, 19, 1, 8, 2, 2, 2, 22, 1, 7, 1, 1, 3, 4,
+ 3, 8, 2, 2, 2, 2, 1, 1, 8, 1, 4, 2, 1, 5, 12, 2, 10, 1, 4, 3, 1, 6, 4, 2, 2, 22, 1, 7, 1, 2,
+ 1, 2, 1, 2, 4, 5, 4, 2, 2, 2, 4, 1, 7, 4, 1, 1, 17, 6, 11, 3, 1, 9, 1, 3, 1, 22, 1, 7, 1, 2,
+ 1, 5, 3, 9, 1, 3, 1, 2, 3, 1, 15, 4, 21, 4, 4, 3, 1, 8, 2, 2, 2, 22, 1, 7, 1, 2, 1, 5, 3, 8,
+ 2, 2, 2, 2, 9, 2, 4, 2, 1, 5, 13, 1, 16, 2, 1, 6, 3, 3, 1, 4, 3, 2, 1, 1, 1, 2, 3, 2, 3, 3,
+ 3, 12, 4, 5, 3, 3, 1, 3, 3, 1, 6, 1, 40, 13, 1, 3, 1, 23, 1, 16, 3, 8, 1, 3, 1, 3, 8, 2, 1,
+ 3, 1, 2, 2, 4, 28, 4, 1, 8, 1, 3, 1, 23, 1, 10, 1, 5, 3, 8, 1, 3, 1, 3, 8, 2, 5, 3, 1, 4,
+ 13, 3, 12, 13, 1, 3, 1, 41, 2, 8, 1, 3, 1, 3, 1, 1, 5, 4, 7, 5, 22, 6, 1, 3, 1, 18, 3, 24,
+ 1, 9, 1, 1, 2, 7, 8, 6, 1, 1, 1, 8, 18, 2, 13, 58, 5, 7, 6, 1, 51, 2, 1, 1, 1, 5, 1, 24, 1,
+ 1, 1, 19, 1, 3, 2, 5, 1, 1, 6, 1, 14, 4, 32, 1, 63, 8, 1, 36, 4, 19, 4, 16, 1, 36, 67, 55,
+ 1, 1, 2, 5, 16, 64, 10, 4, 2, 38, 1, 1, 5, 1, 2, 43, 1, 0, 1, 4, 2, 7, 1, 1, 1, 4, 2, 41, 1,
+ 4, 2, 33, 1, 4, 2, 7, 1, 1, 1, 4, 2, 15, 1, 57, 1, 4, 2, 67, 37, 16, 16, 86, 2, 6, 3, 0, 2,
+ 17, 1, 26, 5, 75, 3, 11, 7, 20, 11, 21, 12, 20, 12, 13, 1, 3, 1, 2, 12, 52, 2, 19, 14, 1, 4,
+ 1, 67, 89, 7, 43, 5, 70, 10, 31, 1, 12, 4, 9, 23, 30, 2, 5, 11, 44, 4, 26, 54, 28, 4, 63, 2,
+ 20, 50, 1, 23, 2, 11, 3, 49, 52, 1, 15, 1, 8, 51, 42, 2, 4, 10, 44, 1, 11, 14, 55, 22, 3,
+ 10, 36, 2, 11, 5, 43, 2, 3, 41, 4, 1, 6, 1, 2, 3, 1, 5, 192, 19, 34, 11, 0, 2, 6, 2, 38, 2,
+ 6, 2, 8, 1, 1, 1, 1, 1, 1, 1, 31, 2, 53, 1, 7, 1, 1, 3, 3, 1, 7, 3, 4, 2, 6, 4, 13, 5, 3, 1,
+ 7, 116, 1, 13, 1, 15, 17, 98, 1, 4, 1, 2, 10, 1, 1, 3, 5, 6, 1, 1, 1, 1, 1, 1, 4, 1, 11, 2,
+ 4, 5, 5, 4, 1, 17, 41, 0, 52, 0, 229, 6, 4, 3, 2, 12, 38, 1, 1, 5, 1, 2, 56, 7, 1, 16, 23,
+ 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 32, 47, 1, 0, 3, 25, 9, 7, 5, 2, 5, 4,
+ 86, 6, 3, 1, 90, 1, 4, 5, 43, 1, 94, 17, 32, 48, 16, 0, 0, 64, 0, 67, 46, 2, 0, 3, 16, 10,
+ 2, 20, 47, 5, 8, 3, 113, 39, 9, 2, 103, 2, 83, 4, 1, 14, 21, 1, 33, 24, 52, 12, 68, 1, 1,
+ 44, 6, 3, 1, 1, 3, 10, 33, 5, 35, 13, 29, 3, 51, 1, 12, 15, 1, 16, 16, 10, 5, 1, 55, 9, 14,
+ 18, 23, 3, 69, 1, 1, 1, 1, 24, 3, 2, 16, 2, 4, 11, 6, 2, 6, 2, 6, 9, 7, 1, 7, 1, 43, 1, 14,
+ 2, 2, 2, 123, 21, 0, 12, 23, 4, 49, 0, 0, 2, 106, 38, 7, 12, 5, 5, 12, 1, 13, 1, 5, 1, 1, 1,
+ 2, 1, 2, 1, 108, 33, 0, 18, 64, 2, 54, 40, 12, 116, 5, 1, 135, 36, 26, 6, 26, 11, 89, 3, 6,
+ 2, 6, 2, 6, 2, 3, 35, 12, 1, 26, 1, 19, 1, 2, 1, 15, 2, 14, 34, 123, 69, 53, 0, 29, 3, 49,
+ 47, 32, 13, 30, 5, 43, 5, 30, 2, 36, 4, 8, 1, 5, 42, 158, 18, 36, 4, 36, 4, 40, 8, 52, 12,
+ 11, 1, 15, 1, 7, 1, 2, 1, 11, 1, 15, 1, 7, 1, 2, 3, 52, 12, 0, 9, 22, 10, 8, 24, 6, 1, 42,
+ 1, 14, 64, 6, 2, 1, 1, 44, 1, 2, 3, 1, 2, 23, 10, 23, 9, 31, 65, 19, 1, 2, 10, 22, 10, 26,
+ 6, 26, 38, 56, 6, 2, 64, 4, 1, 2, 5, 8, 1, 3, 1, 29, 42, 29, 3, 29, 35, 8, 1, 28, 27, 54,
+ 10, 22, 10, 19, 13, 18, 110, 73, 55, 51, 13, 51, 13, 40, 34, 28, 3, 1, 5, 23, 250, 42, 1, 2,
+ 3, 2, 16, 6, 3, 3, 11, 22, 4, 1, 1, 1, 1, 2, 1, 3, 3, 29, 10, 1, 8, 22, 42, 18, 46, 21, 27,
+ 23, 9, 70, 43, 5, 10, 57, 9, 1, 13, 25, 23, 51, 17, 4, 8, 35, 3, 1, 9, 64, 1, 4, 9, 2, 10,
+ 1, 1, 1, 35, 18, 1, 34, 2, 1, 6, 4, 62, 7, 1, 1, 1, 4, 1, 15, 1, 10, 7, 57, 23, 4, 1, 8, 2,
+ 2, 2, 22, 1, 7, 1, 2, 1, 5, 3, 8, 2, 2, 2, 2, 3, 1, 6, 1, 5, 7, 28, 10, 1, 1, 2, 1, 1, 38,
+ 1, 10, 1, 1, 2, 1, 1, 4, 1, 2, 3, 1, 1, 1, 44, 66, 1, 3, 1, 4, 20, 3, 30, 66, 2, 2, 1, 1,
+ 184, 54, 2, 7, 25, 6, 34, 63, 1, 1, 3, 1, 59, 54, 2, 1, 71, 27, 2, 14, 21, 7, 185, 57, 103,
+ 64, 31, 8, 2, 1, 2, 8, 1, 2, 1, 30, 1, 2, 2, 2, 2, 4, 93, 8, 2, 46, 2, 6, 1, 1, 1, 2, 27,
+ 51, 2, 10, 17, 72, 5, 1, 18, 73, 17, 1, 85, 8, 88, 33, 31, 9, 1, 45, 1, 7, 1, 1, 49, 30, 2,
+ 22, 1, 14, 73, 7, 1, 2, 1, 44, 3, 1, 1, 2, 1, 3, 1, 1, 2, 2, 24, 6, 1, 2, 1, 37, 1, 2, 1, 4,
+ 1, 1, 23, 44, 20, 2, 238, 23, 9, 17, 1, 41, 3, 3, 111, 1, 79, 0, 102, 112, 5, 207, 12, 0, 0,
+ 97, 15, 0, 17, 6, 25, 0, 5, 0, 0, 47, 0, 0, 7, 31, 17, 79, 17, 30, 18, 48, 16, 4, 31, 21, 5,
+ 19, 0, 45, 211, 64, 32, 25, 2, 25, 44, 75, 4, 57, 7, 17, 64, 2, 1, 1, 12, 7, 9, 0, 36, 34,
+ 95, 115, 13, 0, 14, 51, 0, 4, 1, 7, 1, 2, 1, 0, 9, 1, 29, 3, 2, 1, 14, 5, 7, 0, 0, 107, 5,
13, 3, 9, 7, 10, 4, 1, 0, 85, 1, 71, 1, 2, 2, 1, 2, 2, 2, 4, 1, 12, 1, 1, 1, 7, 1, 65, 1, 4,
- 2, 8, 1, 7, 1, 28, 1, 4, 1, 5, 1, 1, 3, 7, 1, 0, 2, 25, 1, 25, 1, 31, 1, 25, 1, 31, 1, 25,
- 1, 31, 1, 25, 1, 31, 1, 25, 1, 8, 0, 31, 6, 6, 213, 7, 1, 17, 2, 7, 1, 2, 1, 5, 5, 62, 33,
+ 2, 8, 1, 7, 1, 28, 1, 4, 1, 5, 1, 1, 3, 7, 1, 0, 1, 25, 1, 25, 1, 31, 1, 25, 1, 31, 1, 25,
+ 1, 31, 1, 25, 1, 31, 1, 25, 1, 8, 0, 130, 14, 7, 54, 58, 1, 17, 2, 7, 1, 2, 1, 5, 5, 62, 33,
1, 112, 45, 10, 7, 16, 1, 0, 30, 18, 44, 0, 28, 228, 30, 2, 1, 207, 31, 1, 22, 8, 2, 224, 7,
1, 4, 1, 2, 1, 15, 1, 197, 59, 68, 3, 1, 3, 1, 0, 4, 1, 27, 1, 2, 1, 1, 2, 1, 1, 10, 1, 4,
1, 1, 1, 1, 6, 1, 4, 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
1, 2, 4, 1, 7, 1, 4, 1, 4, 1, 1, 1, 10, 1, 17, 5, 3, 1, 5, 1, 17, 0, 26, 6, 26, 6, 26, 0, 0,
- 32, 0, 2, 0, 2, 0, 15, 0, 0, 0, 0, 0, 5, 0, 0,
+ 32, 0, 1, 0, 2, 0, 15, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0,
];
#[inline]
pub fn lookup(c: char) -> bool {
@@ -265,59 +267,59 @@ pub mod case_ignorable {
static SHORT_OFFSET_RUNS: [ShortOffsetRunHeader; 36] = [
ShortOffsetRunHeader::new(0, 688), ShortOffsetRunHeader::new(11, 4957),
- ShortOffsetRunHeader::new(263, 5906), ShortOffsetRunHeader::new(265, 8125),
+ ShortOffsetRunHeader::new(265, 5906), ShortOffsetRunHeader::new(267, 8125),
ShortOffsetRunHeader::new(377, 11388), ShortOffsetRunHeader::new(411, 12293),
ShortOffsetRunHeader::new(423, 40981), ShortOffsetRunHeader::new(435, 42232),
ShortOffsetRunHeader::new(437, 42508), ShortOffsetRunHeader::new(439, 64286),
ShortOffsetRunHeader::new(535, 65024), ShortOffsetRunHeader::new(539, 66045),
ShortOffsetRunHeader::new(569, 67456), ShortOffsetRunHeader::new(575, 68097),
ShortOffsetRunHeader::new(581, 68900), ShortOffsetRunHeader::new(593, 69291),
- ShortOffsetRunHeader::new(601, 71727), ShortOffsetRunHeader::new(727, 71995),
- ShortOffsetRunHeader::new(731, 73459), ShortOffsetRunHeader::new(797, 78896),
- ShortOffsetRunHeader::new(809, 90398), ShortOffsetRunHeader::new(813, 92912),
- ShortOffsetRunHeader::new(817, 93504), ShortOffsetRunHeader::new(823, 94031),
- ShortOffsetRunHeader::new(827, 110576), ShortOffsetRunHeader::new(837, 113821),
- ShortOffsetRunHeader::new(843, 118528), ShortOffsetRunHeader::new(847, 119143),
- ShortOffsetRunHeader::new(851, 121344), ShortOffsetRunHeader::new(861, 122880),
- ShortOffsetRunHeader::new(873, 123566), ShortOffsetRunHeader::new(889, 124139),
- ShortOffsetRunHeader::new(893, 125136), ShortOffsetRunHeader::new(907, 127995),
- ShortOffsetRunHeader::new(911, 917505), ShortOffsetRunHeader::new(913, 2032112),
+ ShortOffsetRunHeader::new(601, 71727), ShortOffsetRunHeader::new(729, 71995),
+ ShortOffsetRunHeader::new(733, 73459), ShortOffsetRunHeader::new(801, 78896),
+ ShortOffsetRunHeader::new(813, 90398), ShortOffsetRunHeader::new(817, 92912),
+ ShortOffsetRunHeader::new(821, 93504), ShortOffsetRunHeader::new(827, 94031),
+ ShortOffsetRunHeader::new(831, 110576), ShortOffsetRunHeader::new(841, 113821),
+ ShortOffsetRunHeader::new(847, 118528), ShortOffsetRunHeader::new(851, 119079),
+ ShortOffsetRunHeader::new(855, 121344), ShortOffsetRunHeader::new(869, 122829),
+ ShortOffsetRunHeader::new(881, 123566), ShortOffsetRunHeader::new(897, 124139),
+ ShortOffsetRunHeader::new(901, 125136), ShortOffsetRunHeader::new(915, 127995),
+ ShortOffsetRunHeader::new(919, 917505), ShortOffsetRunHeader::new(921, 2032112),
];
- static OFFSETS: [u8; 919] = [
- 168, 1, 4, 1, 1, 1, 4, 1, 2, 2, 0, 192, 4, 2, 4, 1, 9, 2, 1, 1, 251, 7, 207, 1, 5, 1, 49,
- 45, 1, 1, 1, 2, 1, 2, 1, 1, 44, 1, 11, 6, 10, 11, 1, 1, 35, 1, 10, 21, 16, 1, 101, 8, 1, 10,
- 1, 4, 33, 1, 1, 1, 30, 27, 91, 11, 58, 11, 4, 1, 2, 1, 24, 24, 43, 3, 44, 1, 7, 2, 5, 9, 41,
- 58, 55, 1, 1, 1, 4, 8, 4, 1, 3, 7, 10, 2, 13, 1, 15, 1, 58, 1, 4, 4, 8, 1, 20, 2, 26, 1, 2,
- 2, 57, 1, 4, 2, 4, 2, 2, 3, 3, 1, 30, 2, 3, 1, 11, 2, 57, 1, 4, 5, 1, 2, 4, 1, 20, 2, 22, 6,
- 1, 1, 58, 1, 2, 1, 1, 4, 8, 1, 7, 2, 11, 2, 30, 1, 61, 1, 12, 1, 50, 1, 3, 1, 55, 1, 1, 3,
- 5, 3, 1, 4, 7, 2, 11, 2, 29, 1, 58, 1, 2, 1, 6, 1, 5, 2, 20, 2, 28, 2, 57, 2, 4, 4, 8, 1,
- 20, 2, 29, 1, 72, 1, 7, 3, 1, 1, 90, 1, 2, 7, 11, 9, 98, 1, 2, 9, 9, 1, 1, 7, 73, 2, 27, 1,
- 1, 1, 1, 1, 55, 14, 1, 5, 1, 2, 5, 11, 1, 36, 9, 1, 102, 4, 1, 6, 1, 2, 2, 2, 25, 2, 4, 3,
- 16, 4, 13, 1, 2, 2, 6, 1, 15, 1, 94, 1, 0, 3, 0, 3, 29, 2, 30, 2, 30, 2, 64, 2, 1, 7, 8, 1,
- 2, 11, 3, 1, 5, 1, 45, 5, 51, 1, 65, 2, 34, 1, 118, 3, 4, 2, 9, 1, 6, 3, 219, 2, 2, 1, 58,
- 1, 1, 7, 1, 1, 1, 1, 2, 8, 6, 10, 2, 1, 39, 1, 8, 46, 2, 12, 20, 4, 48, 1, 1, 5, 1, 1, 5, 1,
+ static OFFSETS: [u8; 927] = [
+ 168, 1, 4, 1, 1, 1, 4, 1, 2, 2, 0, 192, 4, 2, 4, 1, 9, 2, 1, 1, 251, 7, 206, 2, 5, 1, 43,
+ 2, 4, 45, 1, 1, 1, 2, 1, 2, 1, 3, 42, 1, 11, 6, 10, 11, 1, 1, 35, 1, 10, 21, 16, 1, 101, 8,
+ 1, 10, 1, 4, 33, 1, 1, 1, 30, 27, 91, 11, 58, 11, 4, 1, 2, 1, 24, 24, 43, 3, 44, 1, 7, 2, 5,
+ 9, 41, 58, 55, 1, 1, 1, 4, 8, 4, 1, 3, 7, 10, 2, 13, 1, 15, 1, 58, 1, 4, 4, 8, 1, 20, 2, 26,
+ 1, 2, 2, 57, 1, 4, 2, 4, 2, 2, 3, 3, 1, 30, 2, 3, 1, 11, 2, 57, 1, 4, 5, 1, 2, 4, 1, 20, 2,
+ 22, 6, 1, 1, 58, 1, 2, 1, 1, 4, 8, 1, 5, 4, 11, 2, 30, 1, 61, 1, 12, 1, 50, 1, 3, 1, 55, 1,
+ 1, 3, 5, 3, 1, 4, 7, 2, 11, 2, 29, 1, 58, 1, 2, 1, 6, 1, 5, 2, 20, 2, 28, 2, 57, 2, 4, 4, 8,
+ 1, 20, 2, 29, 1, 72, 1, 7, 3, 1, 1, 90, 1, 2, 7, 11, 9, 98, 1, 2, 9, 9, 1, 1, 7, 73, 2, 27,
+ 1, 1, 1, 1, 1, 55, 14, 1, 5, 1, 2, 5, 11, 1, 36, 9, 1, 102, 4, 1, 6, 1, 2, 2, 2, 25, 2, 4,
+ 3, 16, 4, 13, 1, 2, 2, 6, 1, 15, 1, 94, 1, 0, 3, 0, 3, 29, 2, 30, 2, 30, 2, 64, 2, 1, 7, 8,
+ 1, 2, 11, 3, 1, 5, 1, 45, 5, 51, 1, 65, 2, 34, 1, 118, 3, 4, 2, 9, 1, 6, 3, 219, 2, 2, 1,
+ 58, 1, 1, 7, 1, 1, 1, 1, 2, 8, 6, 10, 2, 1, 39, 1, 8, 65, 15, 4, 48, 1, 1, 5, 1, 1, 5, 1,
40, 9, 12, 2, 32, 4, 2, 2, 1, 3, 56, 1, 1, 2, 3, 1, 1, 3, 58, 8, 2, 2, 64, 6, 82, 3, 1, 13,
1, 7, 4, 1, 6, 1, 3, 2, 50, 63, 13, 1, 34, 101, 0, 1, 1, 3, 11, 3, 13, 3, 13, 3, 13, 2, 12,
- 5, 8, 2, 10, 1, 2, 1, 2, 5, 49, 5, 1, 10, 1, 1, 13, 1, 16, 13, 51, 33, 0, 2, 113, 3, 125, 1,
+ 5, 8, 2, 10, 1, 2, 1, 2, 5, 49, 5, 1, 10, 1, 1, 13, 1, 15, 17, 48, 33, 0, 2, 113, 3, 125, 1,
15, 1, 96, 32, 47, 1, 0, 1, 36, 4, 3, 5, 5, 1, 93, 6, 93, 3, 0, 1, 0, 6, 0, 1, 98, 4, 1, 10,
1, 1, 28, 4, 80, 2, 14, 34, 78, 1, 23, 3, 102, 4, 3, 2, 8, 1, 3, 1, 4, 1, 25, 2, 5, 1, 151,
2, 26, 18, 13, 1, 38, 8, 25, 11, 46, 3, 48, 1, 2, 4, 2, 2, 17, 1, 21, 2, 66, 6, 2, 2, 2, 2,
12, 1, 8, 1, 35, 1, 11, 1, 51, 1, 1, 3, 2, 2, 5, 2, 1, 1, 27, 1, 14, 2, 5, 2, 1, 1, 100, 5,
9, 3, 121, 1, 2, 1, 4, 1, 0, 1, 147, 17, 0, 16, 3, 1, 12, 16, 34, 1, 2, 1, 169, 1, 7, 1, 6,
- 1, 11, 1, 35, 1, 1, 1, 47, 1, 45, 2, 67, 1, 21, 3, 0, 1, 226, 1, 149, 5, 0, 6, 1, 42, 1, 9,
- 0, 3, 1, 2, 5, 4, 40, 3, 4, 1, 165, 2, 0, 4, 38, 1, 26, 5, 1, 1, 0, 2, 24, 1, 52, 6, 70, 11,
- 49, 4, 123, 1, 54, 15, 41, 1, 2, 2, 10, 3, 49, 4, 2, 2, 2, 1, 4, 1, 10, 1, 50, 3, 36, 5, 1,
- 8, 62, 1, 12, 2, 52, 9, 10, 4, 2, 1, 95, 3, 2, 1, 1, 2, 6, 1, 2, 1, 157, 1, 3, 8, 21, 2, 57,
- 2, 3, 1, 37, 7, 3, 5, 70, 6, 13, 1, 1, 1, 1, 1, 14, 2, 85, 8, 2, 3, 1, 1, 23, 1, 84, 6, 1,
- 1, 4, 2, 1, 2, 238, 4, 6, 2, 1, 2, 27, 2, 85, 8, 2, 1, 1, 2, 106, 1, 1, 1, 2, 6, 1, 1, 101,
- 1, 1, 1, 2, 4, 1, 5, 0, 9, 1, 2, 0, 2, 1, 1, 4, 1, 144, 4, 2, 2, 4, 1, 32, 10, 40, 6, 2, 4,
- 8, 1, 9, 6, 2, 3, 46, 13, 1, 2, 198, 1, 1, 3, 1, 1, 201, 7, 1, 6, 1, 1, 82, 22, 2, 7, 1, 2,
- 1, 2, 122, 6, 3, 1, 1, 2, 1, 7, 1, 1, 72, 2, 3, 1, 1, 1, 65, 1, 0, 2, 11, 2, 52, 5, 5, 1, 1,
- 1, 23, 1, 0, 17, 6, 15, 0, 12, 3, 3, 0, 5, 59, 7, 9, 4, 0, 3, 40, 2, 0, 1, 63, 17, 64, 2, 1,
- 2, 13, 2, 0, 4, 1, 7, 1, 2, 0, 2, 1, 4, 0, 46, 2, 23, 0, 3, 9, 16, 2, 7, 30, 4, 148, 3, 0,
- 55, 4, 50, 8, 1, 14, 1, 22, 5, 1, 15, 0, 7, 1, 17, 2, 7, 1, 2, 1, 5, 5, 62, 33, 1, 160, 14,
- 0, 1, 61, 4, 0, 5, 254, 2, 243, 1, 2, 1, 7, 2, 5, 1, 9, 1, 0, 7, 109, 8, 0, 5, 0, 1, 30, 96,
- 128, 240, 0,
+ 1, 11, 1, 35, 1, 1, 1, 47, 1, 45, 2, 67, 1, 21, 3, 0, 1, 226, 1, 149, 5, 0, 6, 1, 42, 1, 14,
+ 0, 3, 1, 2, 5, 4, 40, 3, 4, 1, 165, 2, 0, 4, 38, 1, 26, 5, 1, 1, 0, 2, 24, 1, 3, 7, 32, 16,
+ 70, 11, 49, 4, 123, 1, 54, 15, 41, 1, 2, 2, 10, 3, 49, 4, 2, 2, 2, 1, 4, 1, 10, 1, 50, 3,
+ 36, 5, 1, 8, 62, 1, 12, 2, 52, 9, 10, 4, 2, 1, 95, 3, 2, 1, 1, 2, 6, 1, 2, 1, 157, 1, 3, 8,
+ 21, 2, 57, 2, 3, 1, 37, 7, 3, 5, 70, 6, 13, 1, 1, 1, 1, 1, 14, 2, 85, 8, 2, 3, 1, 1, 23, 1,
+ 84, 6, 1, 1, 4, 2, 1, 2, 238, 4, 6, 2, 1, 2, 27, 2, 85, 8, 2, 1, 1, 2, 106, 1, 1, 1, 2, 6,
+ 1, 1, 101, 1, 1, 1, 2, 4, 1, 5, 0, 9, 1, 2, 0, 2, 1, 1, 4, 1, 144, 4, 2, 2, 4, 1, 32, 10,
+ 40, 6, 2, 4, 8, 1, 9, 6, 2, 3, 46, 13, 1, 2, 198, 1, 1, 3, 1, 1, 201, 7, 1, 6, 1, 1, 82, 22,
+ 2, 7, 1, 2, 1, 2, 122, 6, 3, 1, 1, 2, 1, 7, 1, 1, 72, 2, 3, 1, 1, 1, 65, 1, 22, 1, 0, 2, 11,
+ 2, 52, 5, 5, 1, 1, 1, 23, 1, 0, 17, 6, 15, 0, 12, 3, 3, 0, 5, 59, 7, 9, 4, 0, 3, 40, 2, 0,
+ 1, 63, 17, 64, 2, 1, 2, 13, 2, 0, 4, 1, 7, 1, 2, 0, 2, 1, 4, 0, 46, 2, 23, 0, 2, 62, 3, 9,
+ 16, 2, 7, 30, 4, 148, 3, 22, 2, 0, 55, 4, 50, 8, 1, 14, 1, 22, 5, 1, 15, 0, 58, 1, 17, 2, 7,
+ 1, 2, 1, 5, 5, 62, 33, 1, 160, 14, 0, 1, 61, 4, 0, 5, 254, 2, 243, 1, 2, 1, 7, 2, 5, 1, 9,
+ 1, 0, 7, 109, 8, 0, 5, 0, 1, 30, 96, 128, 240, 0,
];
#[inline]
pub fn lookup(c: char) -> bool {
@@ -383,90 +385,93 @@ pub mod cf {
pub mod cn_planes_0_3 {
use super::ShortOffsetRunHeader;
- static SHORT_OFFSET_RUNS: [ShortOffsetRunHeader; 54] = [
+ static SHORT_OFFSET_RUNS: [ShortOffsetRunHeader; 60] = [
ShortOffsetRunHeader::new(0, 888), ShortOffsetRunHeader::new(1, 1328),
- ShortOffsetRunHeader::new(11, 1806), ShortOffsetRunHeader::new(25, 4681),
- ShortOffsetRunHeader::new(325, 5789), ShortOffsetRunHeader::new(365, 7958),
- ShortOffsetRunHeader::new(445, 9258), ShortOffsetRunHeader::new(491, 11124),
- ShortOffsetRunHeader::new(495, 11508), ShortOffsetRunHeader::new(497, 42125),
- ShortOffsetRunHeader::new(549, 42540), ShortOffsetRunHeader::new(553, 55204),
- ShortOffsetRunHeader::new(605, 64110), ShortOffsetRunHeader::new(611, 64976),
- ShortOffsetRunHeader::new(629, 67383), ShortOffsetRunHeader::new(735, 74650),
- ShortOffsetRunHeader::new(1067, 77712), ShortOffsetRunHeader::new(1074, 78934),
- ShortOffsetRunHeader::new(1077, 82939), ShortOffsetRunHeader::new(1079, 83527),
- ShortOffsetRunHeader::new(1081, 90368), ShortOffsetRunHeader::new(1082, 92160),
- ShortOffsetRunHeader::new(1084, 92729), ShortOffsetRunHeader::new(1085, 93504),
- ShortOffsetRunHeader::new(1108, 101590), ShortOffsetRunHeader::new(1127, 110576),
- ShortOffsetRunHeader::new(1132, 110883), ShortOffsetRunHeader::new(1139, 111356),
- ShortOffsetRunHeader::new(1149, 113664), ShortOffsetRunHeader::new(1150, 117760),
- ShortOffsetRunHeader::new(1160, 118452), ShortOffsetRunHeader::new(1163, 120486),
+ ShortOffsetRunHeader::new(11, 1806), ShortOffsetRunHeader::new(23, 4681),
+ ShortOffsetRunHeader::new(323, 5789), ShortOffsetRunHeader::new(363, 7958),
+ ShortOffsetRunHeader::new(441, 9258), ShortOffsetRunHeader::new(483, 11124),
+ ShortOffsetRunHeader::new(487, 11508), ShortOffsetRunHeader::new(489, 42125),
+ ShortOffsetRunHeader::new(543, 42540), ShortOffsetRunHeader::new(547, 55204),
+ ShortOffsetRunHeader::new(601, 64110), ShortOffsetRunHeader::new(607, 64976),
+ ShortOffsetRunHeader::new(625, 67383), ShortOffsetRunHeader::new(731, 74650),
+ ShortOffsetRunHeader::new(1065, 75076), ShortOffsetRunHeader::new(1067, 75399),
+ ShortOffsetRunHeader::new(1069, 77712), ShortOffsetRunHeader::new(1070, 78934),
+ ShortOffsetRunHeader::new(1073, 82939), ShortOffsetRunHeader::new(1075, 83527),
+ ShortOffsetRunHeader::new(1077, 90368), ShortOffsetRunHeader::new(1078, 92160),
+ ShortOffsetRunHeader::new(1080, 92729), ShortOffsetRunHeader::new(1081, 93504),
+ ShortOffsetRunHeader::new(1104, 101595), ShortOffsetRunHeader::new(1123, 102802),
+ ShortOffsetRunHeader::new(1129, 110576), ShortOffsetRunHeader::new(1132, 110889),
+ ShortOffsetRunHeader::new(1139, 111356), ShortOffsetRunHeader::new(1149, 113664),
+ ShortOffsetRunHeader::new(1150, 117760), ShortOffsetRunHeader::new(1160, 118452),
+ ShortOffsetRunHeader::new(1163, 119366), ShortOffsetRunHeader::new(1179, 120487),
ShortOffsetRunHeader::new(1227, 120780), ShortOffsetRunHeader::new(1229, 121484),
- ShortOffsetRunHeader::new(1231, 122624), ShortOffsetRunHeader::new(1236, 123536),
- ShortOffsetRunHeader::new(1262, 124112), ShortOffsetRunHeader::new(1268, 126065),
- ShortOffsetRunHeader::new(1298, 126976), ShortOffsetRunHeader::new(1370, 128729),
- ShortOffsetRunHeader::new(1395, 129624), ShortOffsetRunHeader::new(1423, 131072),
- ShortOffsetRunHeader::new(1444, 173792), ShortOffsetRunHeader::new(1445, 178206),
- ShortOffsetRunHeader::new(1447, 183982), ShortOffsetRunHeader::new(1449, 191457),
- ShortOffsetRunHeader::new(1451, 192094), ShortOffsetRunHeader::new(1453, 194560),
- ShortOffsetRunHeader::new(1454, 195102), ShortOffsetRunHeader::new(1455, 196608),
- ShortOffsetRunHeader::new(1456, 201547), ShortOffsetRunHeader::new(1457, 210042),
+ ShortOffsetRunHeader::new(1231, 122624), ShortOffsetRunHeader::new(1238, 123536),
+ ShortOffsetRunHeader::new(1264, 124112), ShortOffsetRunHeader::new(1270, 126065),
+ ShortOffsetRunHeader::new(1300, 126976), ShortOffsetRunHeader::new(1372, 128730),
+ ShortOffsetRunHeader::new(1397, 129624), ShortOffsetRunHeader::new(1423, 131072),
+ ShortOffsetRunHeader::new(1442, 173792), ShortOffsetRunHeader::new(1443, 178207),
+ ShortOffsetRunHeader::new(1445, 183982), ShortOffsetRunHeader::new(1447, 191457),
+ ShortOffsetRunHeader::new(1449, 192094), ShortOffsetRunHeader::new(1451, 194560),
+ ShortOffsetRunHeader::new(1452, 195102), ShortOffsetRunHeader::new(1453, 196608),
+ ShortOffsetRunHeader::new(1454, 201547), ShortOffsetRunHeader::new(1455, 210042),
+ ShortOffsetRunHeader::new(1457, 249856), ShortOffsetRunHeader::new(1458, 261184),
ShortOffsetRunHeader::new(1459, 262142), ShortOffsetRunHeader::new(1460, 1376254),
];
static OFFSETS: [u8; 1461] = [
- 0, 2, 6, 4, 7, 1, 1, 1, 20, 1, 0, 1, 38, 2, 50, 2, 3, 1, 55, 8, 27, 4, 6, 11, 0, 1, 60, 2,
- 101, 14, 59, 2, 49, 2, 15, 1, 28, 2, 1, 1, 11, 5, 34, 5, 237, 1, 8, 2, 2, 2, 22, 1, 7, 1, 1,
- 3, 4, 2, 9, 2, 2, 2, 4, 8, 1, 4, 2, 1, 5, 2, 25, 2, 3, 1, 6, 4, 2, 2, 22, 1, 7, 1, 2, 1, 2,
- 1, 2, 2, 1, 1, 5, 4, 2, 2, 3, 3, 1, 7, 4, 1, 1, 7, 17, 10, 3, 1, 9, 1, 3, 1, 22, 1, 7, 1, 2,
- 1, 5, 2, 10, 1, 3, 1, 3, 2, 1, 15, 4, 2, 12, 7, 7, 1, 3, 1, 8, 2, 2, 2, 22, 1, 7, 1, 2, 1,
- 5, 2, 9, 2, 2, 2, 3, 7, 3, 4, 2, 1, 5, 2, 18, 10, 2, 1, 6, 3, 3, 1, 4, 3, 2, 1, 1, 1, 2, 3,
- 2, 3, 3, 3, 12, 4, 5, 3, 3, 1, 4, 2, 1, 6, 1, 14, 21, 5, 13, 1, 3, 1, 23, 1, 16, 2, 9, 1, 3,
- 1, 4, 7, 2, 1, 3, 1, 2, 2, 4, 2, 10, 7, 22, 1, 3, 1, 23, 1, 10, 1, 5, 2, 9, 1, 3, 1, 4, 7,
- 2, 5, 3, 1, 4, 2, 10, 1, 3, 12, 13, 1, 3, 1, 51, 1, 3, 1, 6, 4, 16, 2, 26, 1, 3, 1, 18, 3,
- 24, 1, 9, 1, 1, 2, 7, 3, 1, 4, 6, 1, 1, 1, 8, 6, 10, 2, 3, 12, 58, 4, 29, 37, 2, 1, 1, 1, 5,
- 1, 24, 1, 1, 1, 23, 2, 5, 1, 1, 1, 7, 1, 10, 2, 4, 32, 72, 1, 36, 4, 39, 1, 36, 1, 15, 1,
- 13, 37, 198, 1, 1, 5, 1, 2, 0, 1, 4, 2, 7, 1, 1, 1, 4, 2, 41, 1, 4, 2, 33, 1, 4, 2, 7, 1, 1,
- 1, 4, 2, 15, 1, 57, 1, 4, 2, 67, 2, 32, 3, 26, 6, 86, 2, 6, 2, 0, 3, 89, 7, 22, 9, 24, 9,
- 20, 12, 13, 1, 3, 1, 2, 12, 94, 2, 10, 6, 10, 6, 26, 6, 89, 7, 43, 5, 70, 10, 31, 1, 12, 4,
- 12, 4, 1, 3, 42, 2, 5, 11, 44, 4, 26, 6, 11, 3, 62, 2, 65, 1, 29, 2, 11, 6, 10, 6, 14, 2,
- 46, 2, 12, 20, 77, 1, 166, 8, 60, 3, 15, 3, 62, 5, 43, 2, 11, 8, 43, 5, 0, 2, 6, 2, 38, 2,
- 6, 2, 8, 1, 1, 1, 1, 1, 1, 1, 31, 2, 53, 1, 15, 1, 14, 2, 6, 1, 19, 2, 3, 1, 9, 1, 101, 1,
- 12, 2, 27, 1, 13, 3, 34, 14, 33, 15, 140, 4, 0, 22, 11, 21, 0, 2, 0, 5, 45, 1, 1, 5, 1, 2,
- 56, 7, 2, 14, 24, 9, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 126, 34, 26, 1, 89, 12,
- 214, 26, 80, 1, 86, 2, 103, 5, 43, 1, 94, 1, 86, 9, 48, 1, 0, 3, 55, 9, 0, 20, 184, 8, 221,
- 20, 60, 3, 10, 6, 56, 8, 70, 8, 12, 6, 116, 11, 30, 3, 78, 1, 11, 4, 33, 1, 55, 9, 14, 2,
- 10, 2, 103, 24, 28, 10, 6, 2, 6, 2, 6, 9, 7, 1, 7, 1, 60, 4, 126, 2, 10, 6, 0, 12, 23, 4,
- 49, 4, 0, 2, 106, 38, 7, 12, 5, 5, 26, 1, 5, 1, 1, 1, 2, 1, 2, 1, 0, 32, 42, 6, 51, 1, 19,
- 1, 4, 4, 5, 1, 135, 2, 1, 1, 190, 3, 6, 2, 6, 2, 6, 2, 3, 3, 7, 1, 7, 10, 5, 2, 12, 1, 26,
- 1, 19, 1, 2, 1, 15, 2, 14, 34, 123, 5, 3, 4, 45, 3, 88, 1, 13, 3, 1, 47, 46, 130, 29, 3, 49,
- 15, 28, 4, 36, 9, 30, 5, 43, 5, 30, 1, 37, 4, 14, 42, 158, 2, 10, 6, 36, 4, 36, 4, 40, 8,
- 52, 11, 12, 1, 15, 1, 7, 1, 2, 1, 11, 1, 15, 1, 7, 1, 2, 3, 52, 12, 0, 9, 22, 10, 8, 24, 6,
- 1, 42, 1, 9, 69, 6, 2, 1, 1, 44, 1, 2, 3, 1, 2, 23, 1, 72, 8, 9, 48, 19, 1, 2, 5, 33, 3, 27,
- 5, 27, 38, 56, 4, 20, 2, 50, 1, 2, 5, 8, 1, 3, 1, 29, 2, 3, 4, 10, 7, 9, 7, 64, 32, 39, 4,
- 12, 9, 54, 3, 29, 2, 27, 5, 26, 7, 4, 12, 7, 80, 73, 55, 51, 13, 51, 7, 46, 8, 10, 6, 38, 3,
- 29, 8, 2, 208, 31, 1, 42, 1, 3, 2, 2, 16, 6, 8, 9, 33, 46, 8, 42, 22, 26, 38, 28, 20, 23, 9,
- 78, 4, 36, 9, 68, 10, 1, 2, 25, 7, 10, 6, 53, 1, 18, 8, 39, 9, 96, 1, 20, 11, 18, 1, 47, 62,
- 7, 1, 1, 1, 4, 1, 15, 1, 11, 6, 59, 5, 10, 6, 4, 1, 8, 2, 2, 2, 22, 1, 7, 1, 2, 1, 5, 1, 10,
- 2, 2, 2, 3, 2, 1, 6, 1, 5, 7, 2, 7, 3, 5, 11, 10, 1, 1, 2, 1, 1, 38, 1, 10, 1, 1, 2, 1, 1,
- 4, 1, 10, 1, 2, 8, 2, 29, 92, 1, 5, 30, 72, 8, 10, 166, 54, 2, 38, 34, 69, 11, 10, 6, 13,
- 19, 58, 6, 10, 6, 20, 28, 27, 2, 15, 4, 23, 185, 60, 100, 83, 12, 8, 2, 1, 2, 8, 1, 2, 1,
- 30, 1, 2, 2, 12, 9, 10, 70, 8, 2, 46, 2, 11, 27, 72, 8, 83, 13, 73, 7, 10, 86, 8, 88, 34,
- 14, 10, 6, 9, 1, 45, 1, 14, 10, 29, 3, 32, 2, 22, 1, 14, 73, 7, 1, 2, 1, 44, 3, 1, 1, 2, 1,
- 9, 8, 10, 6, 6, 1, 2, 1, 37, 1, 2, 1, 6, 7, 10, 6, 44, 4, 10, 246, 25, 7, 17, 1, 41, 3, 29,
- 85, 1, 15, 50, 13, 0, 102, 111, 1, 5, 11, 196, 0, 99, 13, 0, 10, 0, 5, 0, 0, 58, 0, 0, 7,
- 31, 1, 10, 4, 81, 1, 10, 6, 30, 2, 6, 10, 70, 10, 10, 1, 7, 1, 21, 5, 19, 0, 58, 198, 91, 5,
- 25, 2, 25, 44, 75, 4, 57, 7, 17, 64, 5, 11, 7, 9, 0, 41, 32, 97, 115, 0, 4, 1, 7, 1, 2, 1,
- 0, 15, 1, 29, 3, 2, 1, 14, 4, 8, 0, 0, 107, 5, 13, 3, 9, 7, 10, 2, 8, 0, 253, 3, 0, 6, 23,
- 15, 17, 15, 46, 2, 23, 9, 116, 60, 246, 10, 39, 2, 194, 21, 70, 122, 20, 12, 20, 12, 87, 9,
- 25, 135, 85, 1, 71, 1, 2, 2, 1, 2, 2, 2, 4, 1, 12, 1, 1, 1, 7, 1, 65, 1, 4, 2, 8, 1, 7, 1,
- 28, 1, 4, 1, 5, 1, 1, 3, 7, 1, 0, 2, 0, 2, 0, 15, 5, 1, 15, 0, 31, 6, 6, 213, 7, 1, 17, 2,
- 7, 1, 2, 1, 5, 5, 62, 33, 1, 112, 45, 3, 14, 2, 10, 4, 2, 0, 31, 17, 58, 5, 1, 0, 42, 214,
- 43, 4, 1, 192, 31, 1, 22, 8, 2, 224, 7, 1, 4, 1, 2, 1, 15, 1, 197, 2, 16, 41, 76, 4, 10, 4,
- 2, 0, 68, 76, 61, 194, 4, 1, 27, 1, 2, 1, 1, 2, 1, 1, 10, 1, 4, 1, 1, 1, 1, 6, 1, 4, 1, 1,
- 1, 1, 1, 1, 3, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 4, 1, 7, 1, 4, 1, 4,
- 1, 1, 1, 10, 1, 17, 5, 3, 1, 5, 1, 17, 52, 2, 0, 44, 4, 100, 12, 15, 2, 15, 1, 15, 1, 37,
- 10, 174, 56, 29, 13, 44, 4, 9, 7, 2, 14, 6, 154, 0, 3, 17, 3, 13, 3, 218, 6, 12, 4, 1, 15,
- 12, 4, 56, 8, 10, 6, 40, 8, 30, 2, 12, 4, 2, 14, 9, 39, 0, 8, 14, 2, 13, 3, 11, 3, 57, 1, 1,
- 4, 16, 2, 12, 4, 10, 7, 147, 1, 103, 0, 0, 32, 0, 2, 0, 2, 0, 15, 0, 0, 0, 0, 0, 5, 0, 0, 0,
+ 0, 2, 6, 4, 7, 1, 1, 1, 20, 1, 0, 1, 38, 1, 56, 1, 57, 6, 27, 4, 6, 11, 0, 1, 60, 2, 101,
+ 14, 59, 2, 49, 2, 15, 1, 28, 2, 1, 1, 11, 5, 34, 5, 237, 1, 8, 2, 2, 2, 22, 1, 7, 1, 1, 3,
+ 4, 2, 9, 2, 2, 2, 4, 8, 1, 4, 2, 1, 5, 2, 25, 2, 3, 1, 6, 4, 2, 2, 22, 1, 7, 1, 2, 1, 2, 1,
+ 2, 2, 1, 1, 5, 4, 2, 2, 3, 3, 1, 7, 4, 1, 1, 7, 17, 10, 3, 1, 9, 1, 3, 1, 22, 1, 7, 1, 2, 1,
+ 5, 2, 10, 1, 3, 1, 3, 2, 1, 15, 4, 2, 12, 7, 7, 1, 3, 1, 8, 2, 2, 2, 22, 1, 7, 1, 2, 1, 5,
+ 2, 9, 2, 2, 2, 3, 5, 5, 4, 2, 1, 5, 2, 18, 10, 2, 1, 6, 3, 3, 1, 4, 3, 2, 1, 1, 1, 2, 3, 2,
+ 3, 3, 3, 12, 4, 5, 3, 3, 1, 4, 2, 1, 6, 1, 14, 21, 5, 13, 1, 3, 1, 23, 1, 16, 2, 9, 1, 3, 1,
+ 4, 7, 2, 1, 3, 1, 2, 2, 4, 2, 10, 7, 22, 1, 3, 1, 23, 1, 10, 1, 5, 2, 9, 1, 3, 1, 4, 7, 2,
+ 5, 3, 1, 4, 2, 10, 1, 3, 12, 13, 1, 3, 1, 51, 1, 3, 1, 6, 4, 16, 2, 26, 1, 3, 1, 18, 3, 24,
+ 1, 9, 1, 1, 2, 7, 3, 1, 4, 6, 1, 1, 1, 8, 6, 10, 2, 3, 12, 58, 4, 29, 37, 2, 1, 1, 1, 5, 1,
+ 24, 1, 1, 1, 23, 2, 5, 1, 1, 1, 7, 1, 10, 2, 4, 32, 72, 1, 36, 4, 39, 1, 36, 1, 15, 1, 13,
+ 37, 198, 1, 1, 5, 1, 2, 0, 1, 4, 2, 7, 1, 1, 1, 4, 2, 41, 1, 4, 2, 33, 1, 4, 2, 7, 1, 1, 1,
+ 4, 2, 15, 1, 57, 1, 4, 2, 67, 2, 32, 3, 26, 6, 86, 2, 6, 2, 0, 3, 89, 7, 22, 9, 24, 9, 20,
+ 12, 13, 1, 3, 1, 2, 12, 94, 2, 10, 6, 10, 6, 26, 6, 89, 7, 43, 5, 70, 10, 31, 1, 12, 4, 12,
+ 4, 1, 3, 42, 2, 5, 11, 44, 4, 26, 6, 11, 3, 62, 2, 65, 1, 29, 2, 11, 6, 10, 6, 14, 2, 65,
+ 15, 77, 1, 166, 8, 60, 3, 15, 3, 62, 5, 43, 2, 11, 8, 43, 5, 0, 2, 6, 2, 38, 2, 6, 2, 8, 1,
+ 1, 1, 1, 1, 1, 1, 31, 2, 53, 1, 15, 1, 14, 2, 6, 1, 19, 2, 3, 1, 9, 1, 101, 1, 12, 2, 81,
+ 11, 33, 15, 140, 4, 0, 22, 11, 21, 0, 2, 0, 5, 45, 1, 1, 5, 1, 2, 56, 7, 2, 14, 24, 9, 7, 1,
+ 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 1, 126, 2, 4, 28, 26, 1, 89, 12, 214, 26, 80, 1, 86,
+ 2, 103, 5, 43, 1, 94, 1, 86, 9, 48, 1, 0, 3, 55, 9, 0, 20, 184, 8, 222, 4, 1, 14, 60, 3, 10,
+ 6, 56, 8, 70, 8, 12, 6, 116, 11, 30, 3, 78, 1, 11, 4, 33, 1, 55, 9, 14, 2, 10, 2, 103, 24,
+ 28, 10, 6, 2, 6, 2, 6, 9, 7, 1, 7, 1, 62, 2, 126, 2, 10, 6, 0, 12, 23, 4, 49, 4, 0, 2, 106,
+ 38, 7, 12, 5, 5, 26, 1, 5, 1, 1, 1, 2, 1, 2, 1, 0, 32, 42, 6, 51, 1, 19, 1, 4, 4, 5, 1, 135,
+ 2, 1, 1, 190, 3, 6, 2, 6, 2, 6, 2, 3, 3, 7, 1, 7, 10, 5, 2, 12, 1, 26, 1, 19, 1, 2, 1, 15,
+ 2, 14, 34, 123, 5, 3, 4, 45, 3, 88, 1, 13, 3, 1, 47, 46, 130, 29, 3, 49, 15, 28, 4, 36, 9,
+ 30, 5, 43, 5, 30, 1, 37, 4, 14, 42, 158, 2, 10, 6, 36, 4, 36, 4, 40, 8, 52, 11, 12, 1, 15,
+ 1, 7, 1, 2, 1, 11, 1, 15, 1, 7, 1, 2, 3, 52, 12, 0, 9, 22, 10, 8, 24, 6, 1, 42, 1, 14, 64,
+ 6, 2, 1, 1, 44, 1, 2, 3, 1, 2, 23, 1, 72, 8, 9, 48, 19, 1, 2, 5, 33, 3, 27, 5, 27, 38, 56,
+ 4, 20, 2, 50, 1, 2, 5, 8, 1, 3, 1, 29, 2, 3, 4, 10, 7, 9, 7, 64, 32, 39, 4, 12, 9, 54, 3,
+ 29, 2, 27, 5, 26, 7, 4, 12, 7, 80, 73, 55, 51, 13, 51, 7, 46, 8, 10, 6, 38, 3, 29, 8, 2,
+ 208, 31, 1, 42, 1, 3, 2, 2, 16, 6, 1, 38, 1, 56, 8, 42, 22, 26, 38, 28, 20, 23, 9, 78, 4,
+ 36, 9, 68, 10, 1, 2, 25, 7, 10, 6, 53, 1, 18, 8, 39, 9, 96, 1, 20, 11, 18, 1, 47, 62, 7, 1,
+ 1, 1, 4, 1, 15, 1, 11, 6, 59, 5, 10, 6, 4, 1, 8, 2, 2, 2, 22, 1, 7, 1, 2, 1, 5, 1, 10, 2, 2,
+ 2, 3, 2, 1, 6, 1, 5, 7, 2, 7, 3, 5, 11, 10, 1, 1, 2, 1, 1, 38, 1, 10, 1, 1, 2, 1, 1, 4, 1,
+ 10, 1, 2, 8, 2, 29, 92, 1, 5, 30, 72, 8, 10, 166, 54, 2, 38, 34, 69, 11, 10, 6, 13, 19, 58,
+ 6, 10, 6, 20, 28, 27, 2, 15, 4, 23, 185, 60, 100, 83, 12, 8, 2, 1, 2, 8, 1, 2, 1, 30, 1, 2,
+ 2, 12, 9, 10, 70, 8, 2, 46, 2, 11, 27, 72, 8, 83, 13, 73, 7, 11, 85, 8, 88, 34, 14, 10, 6,
+ 9, 1, 45, 1, 14, 10, 29, 3, 32, 2, 22, 1, 14, 73, 7, 1, 2, 1, 44, 3, 1, 1, 2, 1, 9, 8, 10,
+ 6, 6, 1, 2, 1, 37, 1, 2, 1, 6, 7, 10, 6, 44, 4, 10, 6, 2, 238, 25, 7, 17, 1, 41, 3, 29, 85,
+ 1, 15, 50, 13, 0, 102, 0, 12, 0, 0, 99, 13, 0, 10, 0, 5, 0, 0, 58, 0, 0, 7, 31, 1, 10, 4,
+ 81, 1, 10, 6, 30, 2, 6, 10, 70, 10, 10, 1, 7, 1, 21, 5, 19, 0, 58, 198, 91, 5, 25, 2, 25,
+ 44, 75, 4, 57, 7, 17, 64, 5, 11, 7, 9, 0, 36, 34, 95, 115, 13, 0, 14, 51, 0, 4, 1, 7, 1, 2,
+ 1, 0, 9, 1, 29, 3, 2, 1, 14, 5, 7, 0, 0, 107, 5, 13, 3, 9, 7, 10, 2, 8, 0, 253, 3, 0, 6, 23,
+ 1, 3, 8, 33, 2, 46, 2, 23, 9, 116, 60, 246, 10, 0, 10, 50, 62, 20, 12, 20, 12, 87, 9, 25,
+ 135, 85, 1, 71, 1, 2, 2, 1, 2, 2, 2, 4, 1, 12, 1, 1, 1, 7, 1, 65, 1, 4, 2, 8, 1, 7, 1, 28,
+ 1, 4, 1, 5, 1, 1, 3, 7, 1, 0, 1, 0, 2, 0, 15, 5, 1, 15, 80, 29, 0, 130, 14, 7, 54, 58, 1,
+ 17, 2, 7, 1, 2, 1, 5, 5, 62, 33, 1, 112, 45, 3, 14, 2, 10, 4, 2, 0, 31, 17, 58, 5, 1, 0, 42,
+ 214, 43, 4, 1, 192, 31, 1, 22, 8, 2, 224, 7, 1, 4, 1, 2, 1, 15, 1, 197, 2, 16, 41, 76, 4,
+ 10, 4, 2, 0, 68, 76, 61, 194, 4, 1, 27, 1, 2, 1, 1, 2, 1, 1, 10, 1, 4, 1, 1, 1, 1, 6, 1, 4,
+ 1, 1, 1, 1, 1, 1, 3, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 4, 1, 7, 1, 4,
+ 1, 4, 1, 1, 1, 10, 1, 17, 5, 3, 1, 5, 1, 17, 52, 2, 0, 44, 4, 100, 12, 15, 2, 15, 1, 15, 1,
+ 37, 10, 175, 55, 29, 13, 44, 4, 9, 7, 2, 14, 6, 154, 0, 2, 17, 3, 13, 3, 220, 4, 12, 4, 28,
+ 4, 56, 8, 10, 6, 40, 8, 30, 2, 12, 4, 2, 14, 9, 39, 0, 8, 14, 2, 13, 3, 71, 1, 1, 3, 18, 1,
+ 13, 3, 12, 5, 147, 1, 103, 0, 0, 32, 0, 1, 0, 2, 0, 15, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
];
#[inline]
pub fn lookup(c: char) -> bool {
@@ -536,50 +541,50 @@ pub mod grapheme_extend {
ShortOffsetRunHeader::new(0, 768), ShortOffsetRunHeader::new(1, 1155),
ShortOffsetRunHeader::new(3, 1425), ShortOffsetRunHeader::new(5, 4957),
ShortOffsetRunHeader::new(249, 5906), ShortOffsetRunHeader::new(251, 8204),
- ShortOffsetRunHeader::new(347, 11503), ShortOffsetRunHeader::new(351, 12330),
- ShortOffsetRunHeader::new(357, 42607), ShortOffsetRunHeader::new(361, 43010),
- ShortOffsetRunHeader::new(369, 64286), ShortOffsetRunHeader::new(435, 65024),
- ShortOffsetRunHeader::new(437, 65438), ShortOffsetRunHeader::new(441, 66045),
- ShortOffsetRunHeader::new(443, 68097), ShortOffsetRunHeader::new(449, 68900),
- ShortOffsetRunHeader::new(461, 69291), ShortOffsetRunHeader::new(465, 71727),
- ShortOffsetRunHeader::new(601, 73459), ShortOffsetRunHeader::new(669, 78912),
- ShortOffsetRunHeader::new(679, 90398), ShortOffsetRunHeader::new(683, 92912),
- ShortOffsetRunHeader::new(687, 94031), ShortOffsetRunHeader::new(691, 113821),
- ShortOffsetRunHeader::new(699, 118528), ShortOffsetRunHeader::new(701, 119141),
- ShortOffsetRunHeader::new(705, 121344), ShortOffsetRunHeader::new(717, 122880),
- ShortOffsetRunHeader::new(729, 123566), ShortOffsetRunHeader::new(743, 124140),
- ShortOffsetRunHeader::new(747, 125136), ShortOffsetRunHeader::new(759, 917536),
- ShortOffsetRunHeader::new(763, 2032112),
+ ShortOffsetRunHeader::new(345, 11503), ShortOffsetRunHeader::new(349, 12330),
+ ShortOffsetRunHeader::new(355, 42607), ShortOffsetRunHeader::new(359, 43010),
+ ShortOffsetRunHeader::new(367, 64286), ShortOffsetRunHeader::new(433, 65024),
+ ShortOffsetRunHeader::new(435, 65438), ShortOffsetRunHeader::new(439, 66045),
+ ShortOffsetRunHeader::new(441, 68097), ShortOffsetRunHeader::new(447, 68900),
+ ShortOffsetRunHeader::new(459, 69291), ShortOffsetRunHeader::new(463, 71727),
+ ShortOffsetRunHeader::new(601, 73459), ShortOffsetRunHeader::new(671, 78912),
+ ShortOffsetRunHeader::new(681, 90398), ShortOffsetRunHeader::new(685, 92912),
+ ShortOffsetRunHeader::new(689, 94031), ShortOffsetRunHeader::new(693, 113821),
+ ShortOffsetRunHeader::new(701, 118528), ShortOffsetRunHeader::new(703, 119079),
+ ShortOffsetRunHeader::new(707, 121344), ShortOffsetRunHeader::new(729, 122880),
+ ShortOffsetRunHeader::new(741, 123566), ShortOffsetRunHeader::new(755, 124140),
+ ShortOffsetRunHeader::new(759, 125136), ShortOffsetRunHeader::new(771, 917536),
+ ShortOffsetRunHeader::new(775, 2032112),
];
- static OFFSETS: [u8; 767] = [
- 0, 112, 0, 7, 0, 45, 1, 1, 1, 2, 1, 2, 1, 1, 72, 11, 48, 21, 16, 1, 101, 7, 2, 6, 2, 2, 1,
+ static OFFSETS: [u8; 779] = [
+ 0, 112, 0, 7, 0, 45, 1, 1, 1, 2, 1, 2, 1, 3, 70, 11, 48, 21, 16, 1, 101, 7, 2, 6, 2, 2, 1,
4, 35, 1, 30, 27, 91, 11, 58, 9, 9, 1, 24, 4, 1, 9, 1, 3, 1, 5, 43, 3, 59, 9, 42, 24, 1, 32,
55, 1, 1, 1, 4, 8, 4, 1, 3, 7, 10, 2, 29, 1, 58, 1, 1, 1, 2, 4, 8, 1, 9, 1, 10, 2, 26, 1, 2,
2, 57, 1, 4, 2, 4, 2, 2, 3, 3, 1, 30, 2, 3, 1, 11, 2, 57, 1, 4, 5, 1, 2, 4, 1, 20, 2, 22, 6,
- 1, 1, 58, 1, 1, 2, 1, 4, 8, 1, 7, 3, 10, 2, 30, 1, 59, 1, 1, 1, 12, 1, 9, 1, 40, 1, 3, 1,
+ 1, 1, 58, 1, 1, 2, 1, 4, 8, 1, 5, 5, 10, 2, 30, 1, 59, 1, 1, 1, 12, 1, 9, 1, 40, 1, 3, 1,
55, 1, 1, 3, 5, 3, 1, 4, 7, 2, 11, 2, 29, 1, 58, 1, 2, 2, 1, 1, 3, 3, 1, 4, 7, 2, 11, 2, 28,
2, 57, 2, 1, 1, 2, 4, 8, 1, 9, 1, 10, 2, 29, 1, 72, 1, 4, 1, 2, 3, 1, 1, 8, 1, 81, 1, 2, 7,
12, 8, 98, 1, 2, 9, 11, 7, 73, 2, 27, 1, 1, 1, 1, 1, 55, 14, 1, 5, 1, 2, 5, 11, 1, 36, 9, 1,
102, 4, 1, 6, 1, 2, 2, 2, 25, 2, 4, 3, 16, 4, 13, 1, 2, 2, 6, 1, 15, 1, 0, 3, 0, 4, 28, 3,
29, 2, 30, 2, 64, 2, 1, 7, 8, 1, 2, 11, 9, 1, 45, 3, 1, 1, 117, 2, 34, 1, 118, 3, 4, 2, 9,
- 1, 6, 3, 219, 2, 2, 1, 58, 1, 1, 7, 1, 1, 1, 1, 2, 8, 6, 10, 2, 1, 48, 46, 2, 12, 20, 4, 48,
- 10, 4, 3, 38, 9, 12, 2, 32, 4, 2, 6, 56, 1, 1, 2, 3, 1, 1, 5, 56, 8, 2, 2, 152, 3, 1, 13, 1,
- 7, 4, 1, 6, 1, 3, 2, 198, 64, 0, 1, 195, 33, 0, 3, 141, 1, 96, 32, 0, 6, 105, 2, 0, 4, 1,
- 10, 32, 2, 80, 2, 0, 1, 3, 1, 4, 1, 25, 2, 5, 1, 151, 2, 26, 18, 13, 1, 38, 8, 25, 11, 1, 1,
- 44, 3, 48, 1, 2, 4, 2, 2, 2, 1, 36, 1, 67, 6, 2, 2, 2, 2, 12, 1, 8, 1, 47, 1, 51, 1, 1, 3,
- 2, 2, 5, 2, 1, 1, 42, 2, 8, 1, 238, 1, 2, 1, 4, 1, 0, 1, 0, 16, 16, 16, 0, 2, 0, 1, 226, 1,
- 149, 5, 0, 3, 1, 2, 5, 4, 40, 3, 4, 1, 165, 2, 0, 4, 65, 5, 0, 2, 77, 6, 70, 11, 49, 4, 123,
+ 1, 6, 3, 219, 2, 2, 1, 58, 1, 1, 7, 1, 1, 1, 1, 2, 8, 6, 10, 2, 1, 48, 65, 15, 4, 48, 10, 4,
+ 3, 38, 9, 12, 2, 32, 4, 2, 6, 56, 1, 1, 2, 3, 1, 1, 5, 56, 8, 2, 2, 152, 3, 1, 13, 1, 7, 4,
+ 1, 6, 1, 3, 2, 198, 64, 0, 1, 195, 33, 0, 3, 141, 1, 96, 32, 0, 6, 105, 2, 0, 4, 1, 10, 32,
+ 2, 80, 2, 0, 1, 3, 1, 4, 1, 25, 2, 5, 1, 151, 2, 26, 18, 13, 1, 38, 8, 25, 11, 1, 1, 44, 3,
+ 48, 1, 2, 4, 2, 2, 2, 1, 36, 1, 67, 6, 2, 2, 2, 2, 12, 1, 8, 1, 47, 1, 51, 1, 1, 3, 2, 2, 5,
+ 2, 1, 1, 42, 2, 8, 1, 238, 1, 2, 1, 4, 1, 0, 1, 0, 16, 16, 16, 0, 2, 0, 1, 226, 1, 149, 5,
+ 0, 3, 1, 2, 5, 4, 40, 3, 4, 1, 165, 2, 0, 4, 65, 5, 0, 2, 30, 5, 32, 16, 70, 11, 49, 4, 123,
1, 54, 15, 41, 1, 2, 2, 10, 3, 49, 4, 2, 2, 7, 1, 61, 3, 36, 5, 1, 8, 62, 1, 12, 2, 52, 9,
1, 1, 8, 4, 2, 1, 95, 3, 2, 4, 6, 1, 2, 1, 157, 1, 3, 8, 21, 2, 57, 2, 1, 1, 1, 1, 12, 1, 9,
1, 14, 7, 3, 5, 67, 1, 2, 6, 1, 1, 2, 1, 1, 3, 4, 3, 1, 1, 14, 2, 85, 8, 2, 3, 1, 1, 23, 1,
81, 1, 2, 6, 1, 1, 2, 1, 1, 2, 1, 2, 235, 1, 2, 4, 6, 2, 1, 2, 27, 2, 85, 8, 2, 1, 1, 2,
106, 1, 1, 1, 2, 8, 101, 1, 1, 1, 2, 4, 1, 5, 0, 9, 1, 2, 245, 1, 10, 4, 4, 1, 144, 4, 2, 2,
4, 1, 32, 10, 40, 6, 2, 4, 8, 1, 9, 6, 2, 3, 46, 13, 1, 2, 198, 1, 1, 3, 1, 1, 201, 7, 1, 6,
- 1, 1, 82, 22, 2, 7, 1, 2, 1, 2, 122, 6, 3, 1, 1, 2, 1, 7, 1, 1, 72, 2, 3, 1, 1, 1, 0, 2, 11,
- 2, 52, 5, 5, 3, 23, 1, 0, 1, 6, 15, 0, 12, 3, 3, 0, 5, 59, 7, 0, 1, 63, 4, 81, 1, 11, 2, 0,
- 2, 0, 46, 2, 23, 0, 5, 3, 6, 8, 8, 2, 7, 30, 4, 148, 3, 0, 55, 4, 50, 8, 1, 14, 1, 22, 5, 1,
- 15, 0, 7, 1, 17, 2, 7, 1, 2, 1, 5, 100, 1, 160, 7, 0, 1, 61, 4, 0, 4, 254, 2, 243, 1, 2, 1,
- 7, 2, 5, 1, 0, 7, 109, 7, 0, 96, 128, 240, 0,
+ 1, 1, 82, 22, 2, 7, 1, 2, 1, 2, 122, 6, 3, 1, 1, 2, 1, 7, 1, 1, 72, 2, 3, 1, 1, 1, 88, 1, 0,
+ 2, 11, 2, 52, 5, 5, 3, 23, 1, 0, 1, 6, 15, 0, 12, 3, 3, 0, 5, 59, 7, 0, 1, 63, 4, 81, 1, 11,
+ 2, 0, 2, 0, 46, 2, 23, 0, 2, 60, 5, 3, 6, 8, 8, 2, 7, 30, 4, 148, 3, 11, 3, 8, 2, 2, 1, 32,
+ 2, 0, 55, 4, 50, 8, 1, 14, 1, 22, 5, 1, 15, 0, 7, 1, 17, 2, 7, 1, 2, 1, 5, 100, 1, 160, 7,
+ 0, 1, 61, 4, 0, 4, 254, 2, 243, 1, 2, 1, 7, 2, 5, 1, 0, 7, 109, 7, 0, 96, 128, 240, 0,
];
#[inline]
pub fn lookup(c: char) -> bool {
@@ -606,43 +611,43 @@ pub mod grapheme_extend {
#[rustfmt::skip]
pub mod lowercase {
static BITSET_CHUNKS_MAP: [u8; 123] = [
- 12, 17, 0, 0, 9, 0, 0, 13, 14, 10, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 4, 1, 0, 15, 0, 8, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0,
- 3, 18, 0, 7,
+ 12, 17, 0, 0, 8, 0, 0, 13, 14, 9, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4, 1, 0, 15, 0, 11, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 2,
+ 18, 0, 7,
];
static BITSET_INDEX_CHUNKS: [[u8; 16]; 20] = [
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0],
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 14, 57, 0],
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0],
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0],
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 19, 62, 0, 0, 0, 0],
- [0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 44, 0, 53, 49, 51, 34],
- [0, 0, 0, 0, 9, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- [0, 0, 0, 3, 0, 16, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- [0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28],
- [0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- [0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- [0, 0, 35, 17, 24, 54, 55, 50, 48, 7, 36, 43, 0, 29, 12, 32],
- [0, 0, 47, 0, 57, 57, 57, 0, 23, 23, 71, 23, 37, 26, 25, 38],
- [0, 5, 72, 0, 30, 15, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- [10, 61, 0, 6, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 33, 0],
- [16, 27, 23, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- [16, 52, 2, 22, 70, 8, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- [16, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
- [67, 42, 56, 11, 68, 65, 18, 13, 1, 66, 78, 21, 75, 76, 4, 46],
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0],
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 58, 48, 5],
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 14, 62, 0],
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0],
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 20, 66, 0, 0, 0, 0],
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 46, 0, 57, 53, 55, 36],
+ [0, 0, 0, 0, 9, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ [0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30],
+ [0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ [0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ [0, 0, 0, 76, 0, 16, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ [0, 0, 37, 18, 26, 59, 60, 54, 52, 6, 38, 45, 0, 31, 12, 34],
+ [0, 0, 51, 0, 62, 62, 62, 0, 24, 24, 82, 24, 39, 28, 27, 40],
+ [0, 25, 77, 0, 32, 15, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ [10, 65, 0, 35, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 17, 0],
+ [16, 29, 24, 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ [16, 56, 4, 23, 81, 7, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ [16, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+ [71, 43, 61, 11, 72, 69, 19, 13, 1, 70, 44, 22, 78, 3, 79, 50],
];
- static BITSET_CANONICAL: [u64; 57] = [
+ static BITSET_CANONICAL: [u64; 62] = [
0b0000000000000000000000000000000000000000000000000000000000000000,
0b0000111111111111111111111111110000000000000000000000000011111111,
+ 0b1111111111111111111111111111111111111111111111111111101111111111,
+ 0b1111111111111111000000000000000000000000001111110111111111111111,
0b1010101010101010101010101010101010101010101010101010100000000010,
- 0b0000000000000111111111111111111111111111111111111111111111111111,
- 0b1111111111111111111111000000000000000000000000001111110111111111,
- 0b1000000000000010000000000000000000000000000000000000000000000000,
- 0b0000111111111111111111111111111111111111000000000000000000000000,
+ 0b1111111111111111111111111111111111111111111111111110000000000000,
0b1111111111111111111111111111111111111111111111111010101010000101,
+ 0b1111111111111111111111111111111100000001000000000000000000000000,
0b1111111111111111111111111111111100000000000000000000000000000000,
0b1111111111111111111111111111110000000000000000000000000000000000,
0b1111111111111111111111110000000000000000000000000000000000000000,
@@ -652,6 +657,7 @@ pub mod lowercase {
0b1111111111111111000000111111111111110111111111111111111111111111,
0b1111111111111111000000000000000000000000000000000100001111000000,
0b1111111111111111000000000000000000000000000000000000000000000000,
+ 0b1111111111111101111111111111111111111111111111111111111110111001,
0b1111111101111111111111111111111110000000000000000000000000000000,
0b1111110000000000000000000000000011111111111111111111111111000000,
0b1111100000000000000000000000000000000000000000000000000000000000,
@@ -659,6 +665,7 @@ pub mod lowercase {
0b1111000000000000000000000000001111110111111111111111111111111100,
0b1010101010101010101010101010101010101010101010101101010101010100,
0b1010101010101010101010101010101010101010101010101010101010101010,
+ 0b1000000000000010000000000000000000000000000000000000000000000000,
0b0101010110101010101010101010101010101010101010101010101010101010,
0b0100000011011111000000001111111100000000111111110000000011111111,
0b0011111111111111000000001111111100000000111111110000000000111111,
@@ -668,7 +675,7 @@ pub mod lowercase {
0b0011001000010000100000000000000000000000000010001100010000000000,
0b0001101111111011111111111111101111111111100000000000000000000000,
0b0001100100101111101010101010101010101010111000110111111111111111,
- 0b0000011111111101111111111111111111111111111111111111111110111001,
+ 0b0000111111111111111111111111111111111111000000000000000000000000,
0b0000011101011110000000000000000000001010101010101010010100001010,
0b0000010000100000000001000000000000000000000000000000000000000000,
0b0000000111111111111111111111111111111111110011111111111111111111,
@@ -676,11 +683,13 @@ pub mod lowercase {
0b0000000011011100000000001111111100000000110011110000000011011100,
0b0000000000001000010100000001101010101010101010101010101010101010,
0b0000000000000000001000001011111111111111111111111111111111111111,
- 0b0000000000000000000001111110000001111111111111111111101111111111,
0b0000000000000000000000001111111111111111110111111100000000000000,
+ 0b0000000000000000000000000111111111111111111111111111110000000000,
0b0000000000000000000000000001111100000000000000000000000000000011,
0b0000000000000000000000000000000000111010101010101010101010101010,
0b0000000000000000000000000000000000000000111110000000000001111111,
+ 0b0000000000000000000000000000000000000000011111110000000000000000,
+ 0b0000000000000000000000000000000000000000000000000001100111111111,
0b0000000000000000000000000000000000000000000000000000101111110111,
0b0000000000000000000000000000000000000000000000000000010111111111,
0b1001001111111010101010101010101010101010101010101010101010101010,
@@ -689,14 +698,15 @@ pub mod lowercase {
0b1010101010100000100000101010101010101010101110100101000010101010,
0b1010101010101010101010101010101011111111111111111111111111111111,
0b1010101010101011101010101010100000000000000000000000000000000000,
+ 0b1010101010101011101010101111111111111111111111011101101011111110,
0b1101010010101010101010101010101010101010101010101010101101010101,
0b1110011001010001001011010010101001001110001001000011000100101001,
0b1110101111000000000000000000000000001111111111111111111111111100,
];
- static BITSET_MAPPING: [(u8, u8); 22] = [
- (0, 64), (1, 184), (1, 182), (1, 179), (1, 172), (1, 168), (1, 161), (1, 146), (1, 144),
- (1, 140), (1, 136), (1, 132), (2, 146), (2, 144), (2, 83), (3, 93), (3, 147), (3, 133),
- (4, 12), (4, 6), (5, 187), (6, 78),
+ static BITSET_MAPPING: [(u8, u8); 21] = [
+ (0, 64), (1, 184), (1, 182), (1, 172), (1, 168), (1, 161), (1, 146), (1, 144), (1, 140),
+ (1, 136), (1, 132), (2, 122), (2, 160), (2, 146), (2, 141), (3, 160), (3, 6), (3, 58),
+ (4, 146), (4, 144), (4, 83),
];
pub const fn lookup(c: char) -> bool {
@@ -749,7 +759,7 @@ pub mod lt {
pub mod n {
use super::ShortOffsetRunHeader;
- static SHORT_OFFSET_RUNS: [ShortOffsetRunHeader; 43] = [
+ static SHORT_OFFSET_RUNS: [ShortOffsetRunHeader; 44] = [
ShortOffsetRunHeader::new(0, 1632), ShortOffsetRunHeader::new(7, 2406),
ShortOffsetRunHeader::new(13, 4160), ShortOffsetRunHeader::new(47, 4969),
ShortOffsetRunHeader::new(51, 5870), ShortOffsetRunHeader::new(53, 6470),
@@ -763,17 +773,17 @@ pub mod n {
ShortOffsetRunHeader::new(181, 69216), ShortOffsetRunHeader::new(187, 70736),
ShortOffsetRunHeader::new(207, 71248), ShortOffsetRunHeader::new(211, 71904),
ShortOffsetRunHeader::new(219, 72688), ShortOffsetRunHeader::new(223, 73552),
- ShortOffsetRunHeader::new(233, 74752), ShortOffsetRunHeader::new(237, 90416),
- ShortOffsetRunHeader::new(239, 92768), ShortOffsetRunHeader::new(241, 93552),
- ShortOffsetRunHeader::new(249, 93824), ShortOffsetRunHeader::new(251, 94196),
- ShortOffsetRunHeader::new(253, 118000), ShortOffsetRunHeader::new(255, 119488),
- ShortOffsetRunHeader::new(257, 120782), ShortOffsetRunHeader::new(263, 123200),
- ShortOffsetRunHeader::new(265, 123632), ShortOffsetRunHeader::new(267, 124144),
- ShortOffsetRunHeader::new(269, 125127), ShortOffsetRunHeader::new(273, 126065),
- ShortOffsetRunHeader::new(277, 127232), ShortOffsetRunHeader::new(287, 130032),
- ShortOffsetRunHeader::new(289, 1244154),
+ ShortOffsetRunHeader::new(233, 74752), ShortOffsetRunHeader::new(237, 75399),
+ ShortOffsetRunHeader::new(242, 90416), ShortOffsetRunHeader::new(243, 92768),
+ ShortOffsetRunHeader::new(245, 93552), ShortOffsetRunHeader::new(253, 93824),
+ ShortOffsetRunHeader::new(255, 94196), ShortOffsetRunHeader::new(257, 118000),
+ ShortOffsetRunHeader::new(259, 119488), ShortOffsetRunHeader::new(261, 120782),
+ ShortOffsetRunHeader::new(267, 123200), ShortOffsetRunHeader::new(269, 123632),
+ ShortOffsetRunHeader::new(271, 124144), ShortOffsetRunHeader::new(273, 125127),
+ ShortOffsetRunHeader::new(277, 126065), ShortOffsetRunHeader::new(281, 127232),
+ ShortOffsetRunHeader::new(291, 130032), ShortOffsetRunHeader::new(293, 1244154),
];
- static OFFSETS: [u8; 291] = [
+ static OFFSETS: [u8; 295] = [
178, 2, 5, 1, 2, 3, 0, 10, 134, 10, 198, 10, 0, 10, 118, 10, 4, 6, 108, 10, 118, 10, 118,
10, 2, 6, 110, 13, 115, 10, 8, 7, 103, 10, 104, 7, 7, 19, 109, 10, 96, 10, 118, 10, 70, 20,
0, 10, 70, 10, 0, 20, 0, 3, 239, 10, 6, 10, 22, 10, 0, 10, 128, 11, 165, 10, 6, 10, 182, 10,
@@ -783,9 +793,10 @@ pub mod n {
1, 134, 5, 202, 10, 0, 8, 25, 7, 39, 9, 75, 5, 22, 6, 160, 2, 2, 16, 2, 46, 64, 9, 52, 2,
30, 3, 75, 5, 104, 8, 24, 8, 41, 7, 0, 6, 48, 10, 6, 10, 0, 31, 158, 10, 42, 4, 112, 7, 134,
30, 128, 10, 60, 10, 144, 10, 7, 20, 251, 10, 0, 10, 118, 10, 0, 10, 102, 10, 6, 20, 76, 12,
- 0, 19, 93, 10, 0, 10, 86, 29, 227, 10, 70, 10, 54, 10, 0, 10, 102, 21, 0, 111, 0, 10, 0, 10,
- 86, 10, 134, 10, 1, 7, 0, 10, 0, 23, 0, 3, 0, 10, 0, 20, 12, 20, 108, 25, 0, 50, 0, 10, 0,
- 10, 0, 10, 247, 10, 0, 9, 128, 10, 0, 59, 1, 3, 1, 4, 76, 45, 1, 15, 0, 13, 0, 10, 0,
+ 0, 19, 93, 10, 0, 10, 86, 29, 227, 10, 70, 10, 54, 10, 0, 10, 102, 21, 0, 112, 5, 11, 208,
+ 0, 0, 10, 0, 10, 86, 10, 134, 10, 1, 7, 0, 10, 0, 23, 0, 3, 0, 10, 0, 20, 12, 20, 108, 25,
+ 0, 50, 0, 10, 0, 10, 0, 10, 247, 10, 0, 9, 128, 10, 0, 59, 1, 3, 1, 4, 76, 45, 1, 15, 0, 13,
+ 0, 10, 0,
];
#[inline]
pub fn lookup(c: char) -> bool {
@@ -812,37 +823,39 @@ pub mod n {
#[rustfmt::skip]
pub mod uppercase {
static BITSET_CHUNKS_MAP: [u8; 125] = [
- 3, 14, 6, 6, 0, 6, 6, 2, 5, 12, 6, 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 6, 6, 7, 6, 13, 6, 11, 6, 6, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
- 6, 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 16, 6, 6,
- 6, 6, 10, 6, 4,
+ 3, 16, 8, 8, 0, 8, 8, 2, 5, 14, 8, 17, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 11, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 8, 8, 9, 8, 15, 8, 13, 8, 8, 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
+ 8, 8, 10, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 18, 8,
+ 6, 8, 8, 12, 8, 4,
];
- static BITSET_INDEX_CHUNKS: [[u8; 16]; 17] = [
- [44, 44, 5, 35, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 5, 0],
- [44, 44, 5, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44],
- [44, 44, 40, 44, 44, 44, 44, 44, 17, 17, 66, 17, 43, 29, 24, 23],
- [44, 44, 44, 32, 36, 21, 22, 15, 13, 34, 44, 44, 44, 11, 30, 39],
- [44, 44, 44, 44, 9, 8, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44],
- [44, 44, 44, 44, 37, 28, 67, 44, 44, 44, 44, 44, 44, 44, 44, 44],
- [44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44],
- [44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 57, 44, 44, 44],
- [44, 44, 44, 44, 44, 44, 44, 44, 44, 49, 63, 44, 44, 44, 44, 44],
- [44, 44, 44, 44, 44, 44, 44, 44, 44, 65, 64, 44, 20, 14, 16, 4],
- [44, 44, 44, 44, 50, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44],
- [44, 44, 53, 44, 44, 31, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44],
- [44, 44, 54, 46, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44],
- [51, 44, 9, 47, 44, 42, 33, 44, 44, 44, 44, 44, 44, 44, 44, 44],
- [52, 19, 3, 18, 10, 48, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44],
- [52, 38, 17, 27, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44],
- [58, 1, 26, 55, 12, 7, 25, 56, 41, 59, 6, 2, 62, 61, 60, 68],
+ static BITSET_INDEX_CHUNKS: [[u8; 16]; 19] = [
+ [46, 46, 5, 37, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 5, 0],
+ [46, 46, 5, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46],
+ [46, 46, 42, 46, 46, 46, 46, 46, 17, 17, 68, 17, 45, 30, 25, 24],
+ [46, 46, 46, 34, 38, 22, 23, 15, 13, 36, 46, 46, 46, 11, 32, 41],
+ [46, 46, 46, 46, 9, 8, 47, 46, 46, 46, 46, 46, 46, 46, 46, 46],
+ [46, 46, 46, 46, 39, 29, 69, 46, 46, 46, 46, 46, 46, 46, 46, 46],
+ [46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 21, 46, 46],
+ [46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 31, 46, 46],
+ [46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46],
+ [46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 59, 46, 46, 46],
+ [46, 46, 46, 46, 46, 46, 46, 46, 46, 51, 65, 46, 46, 46, 46, 46],
+ [46, 46, 46, 46, 46, 46, 46, 46, 46, 67, 66, 46, 20, 14, 16, 4],
+ [46, 46, 46, 46, 52, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46],
+ [46, 46, 55, 46, 46, 33, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46],
+ [46, 46, 56, 48, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46],
+ [53, 46, 9, 49, 46, 44, 35, 46, 46, 46, 46, 46, 46, 46, 46, 46],
+ [54, 19, 3, 18, 10, 50, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46],
+ [54, 40, 17, 28, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46],
+ [60, 1, 27, 57, 12, 7, 26, 58, 43, 61, 6, 2, 64, 63, 62, 70],
];
- static BITSET_CANONICAL: [u64; 44] = [
+ static BITSET_CANONICAL: [u64; 46] = [
0b0000000000111111111111111111111111111111111111111111111111111111,
0b1111111111111111111111110000000000000000000000000011111111111111,
0b0000011111111111111111111111110000000000000000000000000000000001,
0b0101010101010101010101010101010101010101010101010101010000000001,
- 0b0000000000100000000000000000000000010101010101010101101011110101,
+ 0b0000000000100000000000000000010000110101010101010101101011110101,
0b1111111111111111111111111111111100000000000000000000000000000000,
0b1111111111111111111111110000000000000000000000000000001111111111,
0b1111111111111111111100000000000000000000000000011111110001011111,
@@ -859,6 +872,7 @@ pub mod uppercase {
0b0101010101010101010101010101010101010101010101010010101010101011,
0b0101010101010101010101010101010100000000000000000000000000000000,
0b0101010101010100010101010101010000000000000000000000000000000000,
+ 0b0101010101010100010101010000000000000000000000100010010100000001,
0b0010101101010101010101010101010101010101010101010101010010101010,
0b0001000110101110110100101101010110110001110110111100111011010110,
0b0000111100000000000111110000000000001111000000000000111100000000,
@@ -868,6 +882,7 @@ pub mod uppercase {
0b0000000000000100001010000000010101010101010101010101010101010101,
0b0000000000000000111111111111111100000000000000000000000000100000,
0b0000000000000000111111110000000010101010000000000011111100000000,
+ 0b0000000000000000001100000000000000000000000000000000000000000000,
0b0000000000000000000011111111101111111111111111101101011101000000,
0b0000000000000000000000000011111111111111111111110000000000000000,
0b0000000000000000000000000000000001111111011111111111111111111111,
@@ -941,6 +956,7 @@ pub mod conversions {
struct L2Lut {
singles: &'static [(Range, i16)],
multis: &'static [(u16, [u16; 3])],
+ exceptions: &'static [(u16, [char; 3])],
}
#[derive(Copy, Clone)]
@@ -1033,6 +1049,12 @@ pub mod conversions {
return Some(output);
};
+ for &(key, output) in l2_lut.exceptions {
+ if key == input_low {
+ return Some(output)
+ }
+ }
+
None
}
@@ -1148,7 +1170,7 @@ pub mod conversions {
static LOWERCASE_LUT: L1Lut = L1Lut {
l2_luts: [
L2Lut {
- singles: &[ // 172 entries, 1032 bytes
+ singles: &[ // 175 entries, 1050 bytes
(Range::step_by_1(0x00c0..=0x00d6), 32), (Range::step_by_1(0x00d8..=0x00de), 32),
(Range::step_by_2(0x0100..=0x012e), 1), (Range::step_by_2(0x0132..=0x0136), 1),
(Range::step_by_2(0x0139..=0x0147), 1), (Range::step_by_2(0x014a..=0x0176), 1),
@@ -1233,23 +1255,32 @@ pub mod conversions {
(Range::singleton(0xa7c5), 23229), (Range::singleton(0xa7c6), 30152),
(Range::step_by_2(0xa7c7..=0xa7c9), 1), (Range::singleton(0xa7cb), 23193),
(Range::step_by_2(0xa7cc..=0xa7da), 1), (Range::singleton(0xa7dc), 22975),
- (Range::singleton(0xa7f5), 1), (Range::step_by_1(0xff21..=0xff3a), 32),
+ (Range::singleton(0xa7dd), 23194), (Range::singleton(0xa7e2), 23194),
+ (Range::singleton(0xa7f5), 1), (Range::step_by_1(0xab6c..=0xab6d), -33),
+ (Range::step_by_1(0xff21..=0xff3a), 32),
],
multis: &[ // 1 entries, 8 bytes
(0x0130, [0x0069, 0x0307, 0x0000]),
],
+ exceptions: &[ // 0 entries, 0 bytes
+ ],
},
L2Lut {
- singles: &[ // 12 entries, 72 bytes
+ singles: &[ // 18 entries, 108 bytes
(Range::step_by_1(0x0400..=0x0427), 40), (Range::step_by_1(0x04b0..=0x04d3), 40),
(Range::step_by_1(0x0570..=0x057a), 39), (Range::step_by_1(0x057c..=0x058a), 39),
(Range::step_by_1(0x058c..=0x0592), 39), (Range::step_by_1(0x0594..=0x0595), 39),
(Range::step_by_1(0x0c80..=0x0cb2), 64), (Range::step_by_1(0x0d50..=0x0d65), 32),
(Range::step_by_1(0x18a0..=0x18bf), 32), (Range::step_by_1(0x6e40..=0x6e5f), 32),
- (Range::step_by_1(0x6ea0..=0x6eb8), 27), (Range::step_by_1(0xe900..=0xe921), 34),
+ (Range::step_by_1(0x6ea0..=0x6eb8), 27), (Range::singleton(0xdf40), 1),
+ (Range::step_by_2(0xdf48..=0xdf4a), 1), (Range::singleton(0xdf4d), 1),
+ (Range::singleton(0xdf51), 1), (Range::step_by_2(0xdf68..=0xdf6e), 1),
+ (Range::step_by_2(0xdf72..=0xdf7e), 1), (Range::step_by_1(0xe900..=0xe921), 34),
],
multis: &[ // 0 entries, 0 bytes
],
+ exceptions: &[ // 0 entries, 0 bytes
+ ],
},
],
};
@@ -1257,7 +1288,7 @@ pub mod conversions {
static UPPERCASE_LUT: L1Lut = L1Lut {
l2_luts: [
L2Lut {
- singles: &[ // 185 entries, 1110 bytes
+ singles: &[ // 188 entries, 1128 bytes
(Range::singleton(0x00b5), 743), (Range::step_by_1(0x00e0..=0x00f6), -32),
(Range::step_by_1(0x00f8..=0x00fe), -32), (Range::singleton(0x00ff), 121),
(Range::step_by_2(0x0101..=0x012f), -1), (Range::singleton(0x0131), -232),
@@ -1293,7 +1324,8 @@ pub mod conversions {
(Range::singleton(0x026a), -23228), (Range::singleton(0x026b), 10743),
(Range::singleton(0x026c), -23231), (Range::singleton(0x026f), -211),
(Range::singleton(0x0271), 10749), (Range::singleton(0x0272), -213),
- (Range::singleton(0x0275), -214), (Range::singleton(0x027d), 10727),
+ (Range::singleton(0x0275), -214), (Range::singleton(0x0277), -23194),
+ (Range::singleton(0x027c), -23194), (Range::singleton(0x027d), 10727),
(Range::singleton(0x0280), -218), (Range::singleton(0x0282), -23229),
(Range::singleton(0x0283), -218), (Range::singleton(0x0287), -23254),
(Range::singleton(0x0288), -218), (Range::singleton(0x0289), -69),
@@ -1349,8 +1381,8 @@ pub mod conversions {
(Range::singleton(0xa794), 48), (Range::step_by_2(0xa797..=0xa7a9), -1),
(Range::step_by_2(0xa7b5..=0xa7c3), -1), (Range::step_by_2(0xa7c8..=0xa7ca), -1),
(Range::step_by_2(0xa7cd..=0xa7db), -1), (Range::singleton(0xa7f6), -1),
- (Range::singleton(0xab53), -928), (Range::step_by_1(0xab70..=0xabbf), 26672),
- (Range::step_by_1(0xff41..=0xff5a), -32),
+ (Range::step_by_1(0xab4b..=0xab4c), 33), (Range::singleton(0xab53), -928),
+ (Range::step_by_1(0xab70..=0xabbf), 26672), (Range::step_by_1(0xff41..=0xff5a), -32),
],
multis: &[ // 102 entries, 816 bytes
(0x00df, [0x0053, 0x0053, 0x0000]), (0x0149, [0x02bc, 0x004e, 0x0000]),
@@ -1405,18 +1437,26 @@ pub mod conversions {
(0xfb14, [0x0544, 0x0535, 0x0000]), (0xfb15, [0x0544, 0x053b, 0x0000]),
(0xfb16, [0x054e, 0x0546, 0x0000]), (0xfb17, [0x0544, 0x053d, 0x0000]),
],
+ exceptions: &[ // 0 entries, 0 bytes
+ ],
},
L2Lut {
- singles: &[ // 12 entries, 72 bytes
+ singles: &[ // 18 entries, 108 bytes
(Range::step_by_1(0x0428..=0x044f), -40), (Range::step_by_1(0x04d8..=0x04fb), -40),
(Range::step_by_1(0x0597..=0x05a1), -39), (Range::step_by_1(0x05a3..=0x05b1), -39),
(Range::step_by_1(0x05b3..=0x05b9), -39), (Range::step_by_1(0x05bb..=0x05bc), -39),
(Range::step_by_1(0x0cc0..=0x0cf2), -64), (Range::step_by_1(0x0d70..=0x0d85), -32),
(Range::step_by_1(0x18c0..=0x18df), -32), (Range::step_by_1(0x6e60..=0x6e7f), -32),
- (Range::step_by_1(0x6ebb..=0x6ed3), -27), (Range::step_by_1(0xe922..=0xe943), -34),
+ (Range::step_by_1(0x6ebb..=0x6ed3), -27), (Range::singleton(0xdf41), -1),
+ (Range::step_by_2(0xdf49..=0xdf4b), -1), (Range::singleton(0xdf4e), -1),
+ (Range::singleton(0xdf52), -1), (Range::step_by_2(0xdf69..=0xdf6f), -1),
+ (Range::step_by_2(0xdf73..=0xdf7f), -1), (Range::step_by_1(0xe922..=0xe943), -34),
],
multis: &[ // 0 entries, 0 bytes
],
+ exceptions: &[ // 1 entries, 16 bytes
+ (0xdf95, ['S', 'S', '\u{0}']),
+ ],
},
],
};
@@ -1452,12 +1492,17 @@ pub mod conversions {
(0xfb15, [0x0544, 0x056b, 0x0000]), (0xfb16, [0x054e, 0x0576, 0x0000]),
(0xfb17, [0x0544, 0x056d, 0x0000]),
],
+ exceptions: &[ // 0 entries, 0 bytes
+ ],
},
L2Lut {
singles: &[ // 0 entries, 0 bytes
],
multis: &[ // 0 entries, 0 bytes
],
+ exceptions: &[ // 1 entries, 16 bytes
+ (0xdf95, ['S', 's', '\u{0}']),
+ ],
},
],
};
@@ -1472,12 +1517,16 @@ pub mod conversions {
multis: &[ // 1 entries, 8 bytes
(0x1e9e, [0x0073, 0x0073, 0x0000]),
],
+ exceptions: &[ // 0 entries, 0 bytes
+ ],
},
L2Lut {
singles: &[ // 0 entries, 0 bytes
],
multis: &[ // 0 entries, 0 bytes
],
+ exceptions: &[ // 0 entries, 0 bytes
+ ],
},
],
};
diff --git a/library/coretests/tests/num/bignum.rs b/library/coretests/tests/num/bignum.rs
index 2b4c30cc261cb..cabc88821a907 100644
--- a/library/coretests/tests/num/bignum.rs
+++ b/library/coretests/tests/num/bignum.rs
@@ -1,4 +1,4 @@
-use core::num::imp::bignum::Big32x40;
+use core::num::imp::bignum::Big as BigFull;
use core::num::imp::bignum::tests::Big8x3 as Big;
#[test]
@@ -216,27 +216,27 @@ fn test_bit_length() {
}
#[test]
-fn test_bit_length_32x40() {
+fn test_bit_length_big() {
for i in 0..32 * 40 {
// 010000...000
- assert_eq!(Big32x40::from_small(1).mul_pow2(i).bit_length(), i + 1);
+ assert_eq!(BigFull::from_small(1).mul_pow2(i).bit_length(), i + 1);
}
for i in 1..32 * 40 - 1 {
// 010000...001
assert_eq!(
- Big32x40::from_small(1).mul_pow2(i).add(&Big32x40::from_small(1)).bit_length(),
+ BigFull::from_small(1).mul_pow2(i).add(&BigFull::from_small(1)).bit_length(),
i + 1
);
// 110000...000
- assert_eq!(Big32x40::from_small(3).mul_pow2(i).bit_length(), i + 2);
+ assert_eq!(BigFull::from_small(3).mul_pow2(i).bit_length(), i + 2);
}
- assert_eq!(Big32x40::from_small(0).bit_length(), 0);
- assert_eq!(Big32x40::from_small(1).bit_length(), 1);
- assert_eq!(Big32x40::from_small(5).bit_length(), 3);
- assert_eq!(Big32x40::from_small(0x18).bit_length(), 5);
- assert_eq!(Big32x40::from_u64(0x4073).bit_length(), 15);
- assert_eq!(Big32x40::from_u64(0xffffff).bit_length(), 24);
- assert_eq!(Big32x40::from_u64(0xffffffffffffffff).bit_length(), 64);
+ assert_eq!(BigFull::from_small(0).bit_length(), 0);
+ assert_eq!(BigFull::from_small(1).bit_length(), 1);
+ assert_eq!(BigFull::from_small(5).bit_length(), 3);
+ assert_eq!(BigFull::from_small(0x18).bit_length(), 5);
+ assert_eq!(BigFull::from_u64(0x4073).bit_length(), 15);
+ assert_eq!(BigFull::from_u64(0xffffff).bit_length(), 24);
+ assert_eq!(BigFull::from_u64(0xffffffffffffffff).bit_length(), 64);
}
#[test]
diff --git a/library/coretests/tests/num/flt2dec/strategy/dragon.rs b/library/coretests/tests/num/flt2dec/strategy/dragon.rs
index 886f50064a503..395f8e082e655 100644
--- a/library/coretests/tests/num/flt2dec/strategy/dragon.rs
+++ b/library/coretests/tests/num/flt2dec/strategy/dragon.rs
@@ -1,4 +1,4 @@
-use core::num::imp::bignum::Big32x40 as Big;
+use core::num::imp::bignum::Big;
use core::num::imp::flt2dec::strategy::dragon::*;
use super::super::*;
diff --git a/library/coretests/tests/unicode.rs b/library/coretests/tests/unicode.rs
index 548f38cb53932..70f12c839ef17 100644
--- a/library/coretests/tests/unicode.rs
+++ b/library/coretests/tests/unicode.rs
@@ -15,15 +15,15 @@ fn test_boolean_property(ranges: &[RangeInclusive], lookup: fn(char) -> bo
let mut start = '\u{80}';
for range in ranges {
for c in start..*range.start() {
- assert!(!lookup(c), "{c:?}");
+ assert!(!lookup(c), "{c:?} (U+{:06x})", u32::from(c));
}
for c in range.clone() {
- assert!(lookup(c), "{c:?}");
+ assert!(lookup(c), "{c:?} (U+{:06x})", u32::from(c));
}
start = Step::forward(*range.end(), 1);
}
for c in start..=char::MAX {
- assert!(!lookup(c), "{c:?}");
+ assert!(!lookup(c), "{c:?} (U+{:06x})", u32::from(c));
}
}
@@ -36,13 +36,13 @@ fn test_case_mapping(
let mut start = '\u{80}';
for &(key, val) in ranges {
for c in start..key {
- assert_eq!(lookup(c), fallback(c), "{c:?}");
+ assert_eq!(lookup(c), fallback(c), "{c:?} (U+{:06x})", u32::from(c));
}
- assert_eq!(lookup(key), val, "{key:?}");
+ assert_eq!(lookup(key), val, "{key:?} (U+{:06x})", u32::from(key));
start = char::from_u32(key as u32 + 1).unwrap();
}
for c in start..=char::MAX {
- assert_eq!(lookup(c), fallback(c), "{c:?}");
+ assert_eq!(lookup(c), fallback(c), "{c:?} (U+{:06x})", u32::from(c));
}
}
diff --git a/library/coretests/tests/unicode/test_data.rs b/library/coretests/tests/unicode/test_data.rs
index 02576ed9f5876..b8a01185e27e7 100644
--- a/library/coretests/tests/unicode/test_data.rs
+++ b/library/coretests/tests/unicode/test_data.rs
@@ -4,120 +4,121 @@
use std::ops::RangeInclusive;
#[rustfmt::skip]
-pub(super) static ALPHABETIC: &[RangeInclusive; 759] = &[
+pub(super) static ALPHABETIC: &[RangeInclusive; 773] = &[
'\u{aa}'..='\u{aa}', '\u{b5}'..='\u{b5}', '\u{ba}'..='\u{ba}', '\u{c0}'..='\u{d6}',
'\u{d8}'..='\u{f6}', '\u{f8}'..='\u{2c1}', '\u{2c6}'..='\u{2d1}', '\u{2e0}'..='\u{2e4}',
'\u{2ec}'..='\u{2ec}', '\u{2ee}'..='\u{2ee}', '\u{345}'..='\u{345}', '\u{363}'..='\u{374}',
'\u{376}'..='\u{377}', '\u{37a}'..='\u{37d}', '\u{37f}'..='\u{37f}', '\u{386}'..='\u{386}',
'\u{388}'..='\u{38a}', '\u{38c}'..='\u{38c}', '\u{38e}'..='\u{3a1}', '\u{3a3}'..='\u{3f5}',
- '\u{3f7}'..='\u{481}', '\u{48a}'..='\u{52f}', '\u{531}'..='\u{556}', '\u{559}'..='\u{559}',
- '\u{560}'..='\u{588}', '\u{5b0}'..='\u{5bd}', '\u{5bf}'..='\u{5bf}', '\u{5c1}'..='\u{5c2}',
- '\u{5c4}'..='\u{5c5}', '\u{5c7}'..='\u{5c7}', '\u{5d0}'..='\u{5ea}', '\u{5ef}'..='\u{5f2}',
- '\u{610}'..='\u{61a}', '\u{620}'..='\u{657}', '\u{659}'..='\u{65f}', '\u{66e}'..='\u{6d3}',
- '\u{6d5}'..='\u{6dc}', '\u{6e1}'..='\u{6e8}', '\u{6ed}'..='\u{6ef}', '\u{6fa}'..='\u{6fc}',
- '\u{6ff}'..='\u{6ff}', '\u{710}'..='\u{73f}', '\u{74d}'..='\u{7b1}', '\u{7ca}'..='\u{7ea}',
- '\u{7f4}'..='\u{7f5}', '\u{7fa}'..='\u{7fa}', '\u{800}'..='\u{817}', '\u{81a}'..='\u{82c}',
- '\u{840}'..='\u{858}', '\u{860}'..='\u{86a}', '\u{870}'..='\u{887}', '\u{889}'..='\u{88f}',
- '\u{897}'..='\u{897}', '\u{8a0}'..='\u{8c9}', '\u{8d4}'..='\u{8df}', '\u{8e3}'..='\u{8e9}',
- '\u{8f0}'..='\u{93b}', '\u{93d}'..='\u{94c}', '\u{94e}'..='\u{950}', '\u{955}'..='\u{963}',
- '\u{971}'..='\u{983}', '\u{985}'..='\u{98c}', '\u{98f}'..='\u{990}', '\u{993}'..='\u{9a8}',
- '\u{9aa}'..='\u{9b0}', '\u{9b2}'..='\u{9b2}', '\u{9b6}'..='\u{9b9}', '\u{9bd}'..='\u{9c4}',
- '\u{9c7}'..='\u{9c8}', '\u{9cb}'..='\u{9cc}', '\u{9ce}'..='\u{9ce}', '\u{9d7}'..='\u{9d7}',
- '\u{9dc}'..='\u{9dd}', '\u{9df}'..='\u{9e3}', '\u{9f0}'..='\u{9f1}', '\u{9fc}'..='\u{9fc}',
- '\u{a01}'..='\u{a03}', '\u{a05}'..='\u{a0a}', '\u{a0f}'..='\u{a10}', '\u{a13}'..='\u{a28}',
- '\u{a2a}'..='\u{a30}', '\u{a32}'..='\u{a33}', '\u{a35}'..='\u{a36}', '\u{a38}'..='\u{a39}',
- '\u{a3e}'..='\u{a42}', '\u{a47}'..='\u{a48}', '\u{a4b}'..='\u{a4c}', '\u{a51}'..='\u{a51}',
- '\u{a59}'..='\u{a5c}', '\u{a5e}'..='\u{a5e}', '\u{a70}'..='\u{a75}', '\u{a81}'..='\u{a83}',
- '\u{a85}'..='\u{a8d}', '\u{a8f}'..='\u{a91}', '\u{a93}'..='\u{aa8}', '\u{aaa}'..='\u{ab0}',
- '\u{ab2}'..='\u{ab3}', '\u{ab5}'..='\u{ab9}', '\u{abd}'..='\u{ac5}', '\u{ac7}'..='\u{ac9}',
- '\u{acb}'..='\u{acc}', '\u{ad0}'..='\u{ad0}', '\u{ae0}'..='\u{ae3}', '\u{af9}'..='\u{afc}',
- '\u{b01}'..='\u{b03}', '\u{b05}'..='\u{b0c}', '\u{b0f}'..='\u{b10}', '\u{b13}'..='\u{b28}',
- '\u{b2a}'..='\u{b30}', '\u{b32}'..='\u{b33}', '\u{b35}'..='\u{b39}', '\u{b3d}'..='\u{b44}',
- '\u{b47}'..='\u{b48}', '\u{b4b}'..='\u{b4c}', '\u{b56}'..='\u{b57}', '\u{b5c}'..='\u{b5d}',
- '\u{b5f}'..='\u{b63}', '\u{b71}'..='\u{b71}', '\u{b82}'..='\u{b83}', '\u{b85}'..='\u{b8a}',
- '\u{b8e}'..='\u{b90}', '\u{b92}'..='\u{b95}', '\u{b99}'..='\u{b9a}', '\u{b9c}'..='\u{b9c}',
- '\u{b9e}'..='\u{b9f}', '\u{ba3}'..='\u{ba4}', '\u{ba8}'..='\u{baa}', '\u{bae}'..='\u{bb9}',
- '\u{bbe}'..='\u{bc2}', '\u{bc6}'..='\u{bc8}', '\u{bca}'..='\u{bcc}', '\u{bd0}'..='\u{bd0}',
- '\u{bd7}'..='\u{bd7}', '\u{c00}'..='\u{c0c}', '\u{c0e}'..='\u{c10}', '\u{c12}'..='\u{c28}',
- '\u{c2a}'..='\u{c39}', '\u{c3d}'..='\u{c44}', '\u{c46}'..='\u{c48}', '\u{c4a}'..='\u{c4c}',
- '\u{c55}'..='\u{c56}', '\u{c58}'..='\u{c5a}', '\u{c5c}'..='\u{c5d}', '\u{c60}'..='\u{c63}',
- '\u{c80}'..='\u{c83}', '\u{c85}'..='\u{c8c}', '\u{c8e}'..='\u{c90}', '\u{c92}'..='\u{ca8}',
- '\u{caa}'..='\u{cb3}', '\u{cb5}'..='\u{cb9}', '\u{cbd}'..='\u{cc4}', '\u{cc6}'..='\u{cc8}',
- '\u{cca}'..='\u{ccc}', '\u{cd5}'..='\u{cd6}', '\u{cdc}'..='\u{cde}', '\u{ce0}'..='\u{ce3}',
- '\u{cf1}'..='\u{cf3}', '\u{d00}'..='\u{d0c}', '\u{d0e}'..='\u{d10}', '\u{d12}'..='\u{d3a}',
- '\u{d3d}'..='\u{d44}', '\u{d46}'..='\u{d48}', '\u{d4a}'..='\u{d4c}', '\u{d4e}'..='\u{d4e}',
- '\u{d54}'..='\u{d57}', '\u{d5f}'..='\u{d63}', '\u{d7a}'..='\u{d7f}', '\u{d81}'..='\u{d83}',
- '\u{d85}'..='\u{d96}', '\u{d9a}'..='\u{db1}', '\u{db3}'..='\u{dbb}', '\u{dbd}'..='\u{dbd}',
- '\u{dc0}'..='\u{dc6}', '\u{dcf}'..='\u{dd4}', '\u{dd6}'..='\u{dd6}', '\u{dd8}'..='\u{ddf}',
- '\u{df2}'..='\u{df3}', '\u{e01}'..='\u{e3a}', '\u{e40}'..='\u{e46}', '\u{e4d}'..='\u{e4d}',
- '\u{e81}'..='\u{e82}', '\u{e84}'..='\u{e84}', '\u{e86}'..='\u{e8a}', '\u{e8c}'..='\u{ea3}',
- '\u{ea5}'..='\u{ea5}', '\u{ea7}'..='\u{eb9}', '\u{ebb}'..='\u{ebd}', '\u{ec0}'..='\u{ec4}',
- '\u{ec6}'..='\u{ec6}', '\u{ecd}'..='\u{ecd}', '\u{edc}'..='\u{edf}', '\u{f00}'..='\u{f00}',
- '\u{f40}'..='\u{f47}', '\u{f49}'..='\u{f6c}', '\u{f71}'..='\u{f83}', '\u{f88}'..='\u{f97}',
- '\u{f99}'..='\u{fbc}', '\u{1000}'..='\u{1036}', '\u{1038}'..='\u{1038}',
- '\u{103b}'..='\u{103f}', '\u{1050}'..='\u{108f}', '\u{109a}'..='\u{109d}',
- '\u{10a0}'..='\u{10c5}', '\u{10c7}'..='\u{10c7}', '\u{10cd}'..='\u{10cd}',
- '\u{10d0}'..='\u{10fa}', '\u{10fc}'..='\u{1248}', '\u{124a}'..='\u{124d}',
- '\u{1250}'..='\u{1256}', '\u{1258}'..='\u{1258}', '\u{125a}'..='\u{125d}',
- '\u{1260}'..='\u{1288}', '\u{128a}'..='\u{128d}', '\u{1290}'..='\u{12b0}',
- '\u{12b2}'..='\u{12b5}', '\u{12b8}'..='\u{12be}', '\u{12c0}'..='\u{12c0}',
- '\u{12c2}'..='\u{12c5}', '\u{12c8}'..='\u{12d6}', '\u{12d8}'..='\u{1310}',
- '\u{1312}'..='\u{1315}', '\u{1318}'..='\u{135a}', '\u{1380}'..='\u{138f}',
- '\u{13a0}'..='\u{13f5}', '\u{13f8}'..='\u{13fd}', '\u{1401}'..='\u{166c}',
- '\u{166f}'..='\u{167f}', '\u{1681}'..='\u{169a}', '\u{16a0}'..='\u{16ea}',
- '\u{16ee}'..='\u{16f8}', '\u{1700}'..='\u{1713}', '\u{171f}'..='\u{1733}',
- '\u{1740}'..='\u{1753}', '\u{1760}'..='\u{176c}', '\u{176e}'..='\u{1770}',
- '\u{1772}'..='\u{1773}', '\u{1780}'..='\u{17b3}', '\u{17b6}'..='\u{17c8}',
- '\u{17d7}'..='\u{17d7}', '\u{17dc}'..='\u{17dc}', '\u{1820}'..='\u{1878}',
- '\u{1880}'..='\u{18aa}', '\u{18b0}'..='\u{18f5}', '\u{1900}'..='\u{191e}',
- '\u{1920}'..='\u{192b}', '\u{1930}'..='\u{1938}', '\u{1950}'..='\u{196d}',
- '\u{1970}'..='\u{1974}', '\u{1980}'..='\u{19ab}', '\u{19b0}'..='\u{19c9}',
- '\u{1a00}'..='\u{1a1b}', '\u{1a20}'..='\u{1a5e}', '\u{1a61}'..='\u{1a74}',
- '\u{1aa7}'..='\u{1aa7}', '\u{1abf}'..='\u{1ac0}', '\u{1acc}'..='\u{1ace}',
- '\u{1b00}'..='\u{1b33}', '\u{1b35}'..='\u{1b43}', '\u{1b45}'..='\u{1b4c}',
- '\u{1b80}'..='\u{1ba9}', '\u{1bac}'..='\u{1baf}', '\u{1bba}'..='\u{1be5}',
- '\u{1be7}'..='\u{1bf1}', '\u{1c00}'..='\u{1c36}', '\u{1c4d}'..='\u{1c4f}',
- '\u{1c5a}'..='\u{1c7d}', '\u{1c80}'..='\u{1c8a}', '\u{1c90}'..='\u{1cba}',
- '\u{1cbd}'..='\u{1cbf}', '\u{1ce9}'..='\u{1cec}', '\u{1cee}'..='\u{1cf3}',
- '\u{1cf5}'..='\u{1cf6}', '\u{1cfa}'..='\u{1cfa}', '\u{1d00}'..='\u{1dbf}',
- '\u{1dd3}'..='\u{1df4}', '\u{1e00}'..='\u{1f15}', '\u{1f18}'..='\u{1f1d}',
- '\u{1f20}'..='\u{1f45}', '\u{1f48}'..='\u{1f4d}', '\u{1f50}'..='\u{1f57}',
- '\u{1f59}'..='\u{1f59}', '\u{1f5b}'..='\u{1f5b}', '\u{1f5d}'..='\u{1f5d}',
- '\u{1f5f}'..='\u{1f7d}', '\u{1f80}'..='\u{1fb4}', '\u{1fb6}'..='\u{1fbc}',
- '\u{1fbe}'..='\u{1fbe}', '\u{1fc2}'..='\u{1fc4}', '\u{1fc6}'..='\u{1fcc}',
- '\u{1fd0}'..='\u{1fd3}', '\u{1fd6}'..='\u{1fdb}', '\u{1fe0}'..='\u{1fec}',
- '\u{1ff2}'..='\u{1ff4}', '\u{1ff6}'..='\u{1ffc}', '\u{2071}'..='\u{2071}',
- '\u{207f}'..='\u{207f}', '\u{2090}'..='\u{209c}', '\u{2102}'..='\u{2102}',
- '\u{2107}'..='\u{2107}', '\u{210a}'..='\u{2113}', '\u{2115}'..='\u{2115}',
- '\u{2119}'..='\u{211d}', '\u{2124}'..='\u{2124}', '\u{2126}'..='\u{2126}',
- '\u{2128}'..='\u{2128}', '\u{212a}'..='\u{212d}', '\u{212f}'..='\u{2139}',
- '\u{213c}'..='\u{213f}', '\u{2145}'..='\u{2149}', '\u{214e}'..='\u{214e}',
- '\u{2160}'..='\u{2188}', '\u{24b6}'..='\u{24e9}', '\u{2c00}'..='\u{2ce4}',
- '\u{2ceb}'..='\u{2cee}', '\u{2cf2}'..='\u{2cf3}', '\u{2d00}'..='\u{2d25}',
- '\u{2d27}'..='\u{2d27}', '\u{2d2d}'..='\u{2d2d}', '\u{2d30}'..='\u{2d67}',
- '\u{2d6f}'..='\u{2d6f}', '\u{2d80}'..='\u{2d96}', '\u{2da0}'..='\u{2da6}',
- '\u{2da8}'..='\u{2dae}', '\u{2db0}'..='\u{2db6}', '\u{2db8}'..='\u{2dbe}',
- '\u{2dc0}'..='\u{2dc6}', '\u{2dc8}'..='\u{2dce}', '\u{2dd0}'..='\u{2dd6}',
- '\u{2dd8}'..='\u{2dde}', '\u{2de0}'..='\u{2dff}', '\u{2e2f}'..='\u{2e2f}',
- '\u{3005}'..='\u{3007}', '\u{3021}'..='\u{3029}', '\u{3031}'..='\u{3035}',
- '\u{3038}'..='\u{303c}', '\u{3041}'..='\u{3096}', '\u{309d}'..='\u{309f}',
- '\u{30a1}'..='\u{30fa}', '\u{30fc}'..='\u{30ff}', '\u{3105}'..='\u{312f}',
- '\u{3131}'..='\u{318e}', '\u{31a0}'..='\u{31bf}', '\u{31f0}'..='\u{31ff}',
- '\u{3400}'..='\u{4dbf}', '\u{4e00}'..='\u{a48c}', '\u{a4d0}'..='\u{a4fd}',
- '\u{a500}'..='\u{a60c}', '\u{a610}'..='\u{a61f}', '\u{a62a}'..='\u{a62b}',
- '\u{a640}'..='\u{a66e}', '\u{a674}'..='\u{a67b}', '\u{a67f}'..='\u{a6ef}',
- '\u{a717}'..='\u{a71f}', '\u{a722}'..='\u{a788}', '\u{a78b}'..='\u{a7dc}',
- '\u{a7f1}'..='\u{a805}', '\u{a807}'..='\u{a827}', '\u{a840}'..='\u{a873}',
- '\u{a880}'..='\u{a8c3}', '\u{a8c5}'..='\u{a8c5}', '\u{a8f2}'..='\u{a8f7}',
- '\u{a8fb}'..='\u{a8fb}', '\u{a8fd}'..='\u{a8ff}', '\u{a90a}'..='\u{a92a}',
- '\u{a930}'..='\u{a952}', '\u{a960}'..='\u{a97c}', '\u{a980}'..='\u{a9b2}',
- '\u{a9b4}'..='\u{a9bf}', '\u{a9cf}'..='\u{a9cf}', '\u{a9e0}'..='\u{a9ef}',
- '\u{a9fa}'..='\u{a9fe}', '\u{aa00}'..='\u{aa36}', '\u{aa40}'..='\u{aa4d}',
- '\u{aa60}'..='\u{aa76}', '\u{aa7a}'..='\u{aabe}', '\u{aac0}'..='\u{aac0}',
- '\u{aac2}'..='\u{aac2}', '\u{aadb}'..='\u{aadd}', '\u{aae0}'..='\u{aaef}',
- '\u{aaf2}'..='\u{aaf5}', '\u{ab01}'..='\u{ab06}', '\u{ab09}'..='\u{ab0e}',
- '\u{ab11}'..='\u{ab16}', '\u{ab20}'..='\u{ab26}', '\u{ab28}'..='\u{ab2e}',
- '\u{ab30}'..='\u{ab5a}', '\u{ab5c}'..='\u{ab69}', '\u{ab70}'..='\u{abea}',
+ '\u{3f7}'..='\u{481}', '\u{48a}'..='\u{52f}', '\u{531}'..='\u{556}', '\u{558}'..='\u{559}',
+ '\u{560}'..='\u{588}', '\u{58b}'..='\u{58c}', '\u{5b0}'..='\u{5bd}', '\u{5bf}'..='\u{5bf}',
+ '\u{5c1}'..='\u{5c2}', '\u{5c4}'..='\u{5c5}', '\u{5c7}'..='\u{5c9}', '\u{5d0}'..='\u{5ea}',
+ '\u{5ef}'..='\u{5f2}', '\u{610}'..='\u{61a}', '\u{620}'..='\u{657}', '\u{659}'..='\u{65f}',
+ '\u{66e}'..='\u{6d3}', '\u{6d5}'..='\u{6dc}', '\u{6e1}'..='\u{6e8}', '\u{6ed}'..='\u{6ef}',
+ '\u{6fa}'..='\u{6fc}', '\u{6ff}'..='\u{6ff}', '\u{710}'..='\u{73f}', '\u{74d}'..='\u{7b1}',
+ '\u{7ca}'..='\u{7ea}', '\u{7f4}'..='\u{7f5}', '\u{7fa}'..='\u{7fa}', '\u{800}'..='\u{817}',
+ '\u{81a}'..='\u{82c}', '\u{840}'..='\u{858}', '\u{860}'..='\u{86a}', '\u{870}'..='\u{887}',
+ '\u{889}'..='\u{88f}', '\u{897}'..='\u{897}', '\u{8a0}'..='\u{8c9}', '\u{8d4}'..='\u{8df}',
+ '\u{8e3}'..='\u{8e9}', '\u{8f0}'..='\u{93b}', '\u{93d}'..='\u{94c}', '\u{94e}'..='\u{950}',
+ '\u{955}'..='\u{963}', '\u{971}'..='\u{983}', '\u{985}'..='\u{98c}', '\u{98f}'..='\u{990}',
+ '\u{993}'..='\u{9a8}', '\u{9aa}'..='\u{9b0}', '\u{9b2}'..='\u{9b2}', '\u{9b6}'..='\u{9b9}',
+ '\u{9bd}'..='\u{9c4}', '\u{9c7}'..='\u{9c8}', '\u{9cb}'..='\u{9cc}', '\u{9ce}'..='\u{9ce}',
+ '\u{9d7}'..='\u{9d7}', '\u{9dc}'..='\u{9dd}', '\u{9df}'..='\u{9e3}', '\u{9f0}'..='\u{9f1}',
+ '\u{9fc}'..='\u{9fc}', '\u{a01}'..='\u{a03}', '\u{a05}'..='\u{a0a}', '\u{a0f}'..='\u{a10}',
+ '\u{a13}'..='\u{a28}', '\u{a2a}'..='\u{a30}', '\u{a32}'..='\u{a33}', '\u{a35}'..='\u{a36}',
+ '\u{a38}'..='\u{a39}', '\u{a3e}'..='\u{a42}', '\u{a47}'..='\u{a48}', '\u{a4b}'..='\u{a4c}',
+ '\u{a51}'..='\u{a51}', '\u{a59}'..='\u{a5c}', '\u{a5e}'..='\u{a5e}', '\u{a70}'..='\u{a75}',
+ '\u{a81}'..='\u{a83}', '\u{a85}'..='\u{a8d}', '\u{a8f}'..='\u{a91}', '\u{a93}'..='\u{aa8}',
+ '\u{aaa}'..='\u{ab0}', '\u{ab2}'..='\u{ab3}', '\u{ab5}'..='\u{ab9}', '\u{abd}'..='\u{ac5}',
+ '\u{ac7}'..='\u{ac9}', '\u{acb}'..='\u{acc}', '\u{ad0}'..='\u{ad0}', '\u{ae0}'..='\u{ae3}',
+ '\u{af9}'..='\u{afc}', '\u{b01}'..='\u{b03}', '\u{b05}'..='\u{b0c}', '\u{b0f}'..='\u{b10}',
+ '\u{b13}'..='\u{b28}', '\u{b2a}'..='\u{b30}', '\u{b32}'..='\u{b33}', '\u{b35}'..='\u{b39}',
+ '\u{b3d}'..='\u{b44}', '\u{b47}'..='\u{b48}', '\u{b4b}'..='\u{b4c}', '\u{b56}'..='\u{b57}',
+ '\u{b5c}'..='\u{b5d}', '\u{b5f}'..='\u{b63}', '\u{b71}'..='\u{b71}', '\u{b82}'..='\u{b83}',
+ '\u{b85}'..='\u{b8a}', '\u{b8e}'..='\u{b90}', '\u{b92}'..='\u{b95}', '\u{b99}'..='\u{b9a}',
+ '\u{b9c}'..='\u{b9c}', '\u{b9e}'..='\u{b9f}', '\u{ba3}'..='\u{ba4}', '\u{ba8}'..='\u{baa}',
+ '\u{bae}'..='\u{bb9}', '\u{bbe}'..='\u{bc2}', '\u{bc6}'..='\u{bc8}', '\u{bca}'..='\u{bcc}',
+ '\u{bd0}'..='\u{bd0}', '\u{bd7}'..='\u{bd7}', '\u{c00}'..='\u{c0c}', '\u{c0e}'..='\u{c10}',
+ '\u{c12}'..='\u{c28}', '\u{c2a}'..='\u{c39}', '\u{c3d}'..='\u{c44}', '\u{c46}'..='\u{c48}',
+ '\u{c4a}'..='\u{c4c}', '\u{c55}'..='\u{c56}', '\u{c58}'..='\u{c5a}', '\u{c5c}'..='\u{c5d}',
+ '\u{c60}'..='\u{c63}', '\u{c80}'..='\u{c83}', '\u{c85}'..='\u{c8c}', '\u{c8e}'..='\u{c90}',
+ '\u{c92}'..='\u{ca8}', '\u{caa}'..='\u{cb3}', '\u{cb5}'..='\u{cb9}', '\u{cbd}'..='\u{cc4}',
+ '\u{cc6}'..='\u{cc8}', '\u{cca}'..='\u{ccc}', '\u{cd5}'..='\u{cd6}', '\u{cdc}'..='\u{cde}',
+ '\u{ce0}'..='\u{ce3}', '\u{cf1}'..='\u{cf3}', '\u{d00}'..='\u{d0c}', '\u{d0e}'..='\u{d10}',
+ '\u{d12}'..='\u{d3a}', '\u{d3d}'..='\u{d44}', '\u{d46}'..='\u{d48}', '\u{d4a}'..='\u{d4c}',
+ '\u{d4e}'..='\u{d4e}', '\u{d54}'..='\u{d57}', '\u{d5f}'..='\u{d63}', '\u{d7a}'..='\u{d7f}',
+ '\u{d81}'..='\u{d83}', '\u{d85}'..='\u{d96}', '\u{d9a}'..='\u{db1}', '\u{db3}'..='\u{dbb}',
+ '\u{dbd}'..='\u{dbd}', '\u{dc0}'..='\u{dc6}', '\u{dcf}'..='\u{dd4}', '\u{dd6}'..='\u{dd6}',
+ '\u{dd8}'..='\u{ddf}', '\u{df2}'..='\u{df3}', '\u{e01}'..='\u{e3a}', '\u{e40}'..='\u{e46}',
+ '\u{e4d}'..='\u{e4d}', '\u{e81}'..='\u{e82}', '\u{e84}'..='\u{e84}', '\u{e86}'..='\u{e8a}',
+ '\u{e8c}'..='\u{ea3}', '\u{ea5}'..='\u{ea5}', '\u{ea7}'..='\u{eb9}', '\u{ebb}'..='\u{ebd}',
+ '\u{ec0}'..='\u{ec4}', '\u{ec6}'..='\u{ec6}', '\u{ecd}'..='\u{ecd}', '\u{edc}'..='\u{edf}',
+ '\u{f00}'..='\u{f00}', '\u{f40}'..='\u{f47}', '\u{f49}'..='\u{f6c}', '\u{f71}'..='\u{f83}',
+ '\u{f88}'..='\u{f97}', '\u{f99}'..='\u{fbc}', '\u{1000}'..='\u{1036}',
+ '\u{1038}'..='\u{1038}', '\u{103b}'..='\u{103f}', '\u{1050}'..='\u{108f}',
+ '\u{109a}'..='\u{109d}', '\u{10a0}'..='\u{10c5}', '\u{10c7}'..='\u{10c7}',
+ '\u{10cd}'..='\u{10cd}', '\u{10d0}'..='\u{10fa}', '\u{10fc}'..='\u{1248}',
+ '\u{124a}'..='\u{124d}', '\u{1250}'..='\u{1256}', '\u{1258}'..='\u{1258}',
+ '\u{125a}'..='\u{125d}', '\u{1260}'..='\u{1288}', '\u{128a}'..='\u{128d}',
+ '\u{1290}'..='\u{12b0}', '\u{12b2}'..='\u{12b5}', '\u{12b8}'..='\u{12be}',
+ '\u{12c0}'..='\u{12c0}', '\u{12c2}'..='\u{12c5}', '\u{12c8}'..='\u{12d6}',
+ '\u{12d8}'..='\u{1310}', '\u{1312}'..='\u{1315}', '\u{1318}'..='\u{135a}',
+ '\u{1380}'..='\u{138f}', '\u{13a0}'..='\u{13f5}', '\u{13f8}'..='\u{13fd}',
+ '\u{1401}'..='\u{166c}', '\u{166f}'..='\u{167f}', '\u{1681}'..='\u{169a}',
+ '\u{16a0}'..='\u{16ea}', '\u{16ee}'..='\u{16f8}', '\u{1700}'..='\u{1713}',
+ '\u{171f}'..='\u{1733}', '\u{1740}'..='\u{1753}', '\u{1760}'..='\u{176c}',
+ '\u{176e}'..='\u{1770}', '\u{1772}'..='\u{1773}', '\u{1780}'..='\u{17b3}',
+ '\u{17b6}'..='\u{17c8}', '\u{17d7}'..='\u{17d7}', '\u{17dc}'..='\u{17dc}',
+ '\u{1820}'..='\u{1878}', '\u{1880}'..='\u{18aa}', '\u{18b0}'..='\u{18f5}',
+ '\u{1900}'..='\u{191e}', '\u{1920}'..='\u{192b}', '\u{1930}'..='\u{1938}',
+ '\u{1950}'..='\u{196d}', '\u{1970}'..='\u{1974}', '\u{1980}'..='\u{19ab}',
+ '\u{19b0}'..='\u{19c9}', '\u{1a00}'..='\u{1a1b}', '\u{1a20}'..='\u{1a5e}',
+ '\u{1a61}'..='\u{1a74}', '\u{1aa7}'..='\u{1aa7}', '\u{1abf}'..='\u{1ac0}',
+ '\u{1acc}'..='\u{1ace}', '\u{1b00}'..='\u{1b33}', '\u{1b35}'..='\u{1b43}',
+ '\u{1b45}'..='\u{1b4c}', '\u{1b80}'..='\u{1ba9}', '\u{1bac}'..='\u{1baf}',
+ '\u{1bba}'..='\u{1be5}', '\u{1be7}'..='\u{1bf1}', '\u{1c00}'..='\u{1c36}',
+ '\u{1c4d}'..='\u{1c4f}', '\u{1c5a}'..='\u{1c7d}', '\u{1c80}'..='\u{1c8a}',
+ '\u{1c90}'..='\u{1cba}', '\u{1cbd}'..='\u{1cbf}', '\u{1ce9}'..='\u{1cec}',
+ '\u{1cee}'..='\u{1cf3}', '\u{1cf5}'..='\u{1cf6}', '\u{1cfa}'..='\u{1cfa}',
+ '\u{1d00}'..='\u{1dbf}', '\u{1dd3}'..='\u{1df4}', '\u{1e00}'..='\u{1f15}',
+ '\u{1f18}'..='\u{1f1d}', '\u{1f20}'..='\u{1f45}', '\u{1f48}'..='\u{1f4d}',
+ '\u{1f50}'..='\u{1f57}', '\u{1f59}'..='\u{1f59}', '\u{1f5b}'..='\u{1f5b}',
+ '\u{1f5d}'..='\u{1f5d}', '\u{1f5f}'..='\u{1f7d}', '\u{1f80}'..='\u{1fb4}',
+ '\u{1fb6}'..='\u{1fbc}', '\u{1fbe}'..='\u{1fbe}', '\u{1fc2}'..='\u{1fc4}',
+ '\u{1fc6}'..='\u{1fcc}', '\u{1fd0}'..='\u{1fd3}', '\u{1fd6}'..='\u{1fdb}',
+ '\u{1fe0}'..='\u{1fec}', '\u{1ff2}'..='\u{1ff4}', '\u{1ff6}'..='\u{1ffc}',
+ '\u{2071}'..='\u{2071}', '\u{207f}'..='\u{207f}', '\u{208f}'..='\u{209f}',
+ '\u{2102}'..='\u{2102}', '\u{2107}'..='\u{2107}', '\u{210a}'..='\u{2113}',
+ '\u{2115}'..='\u{2115}', '\u{2119}'..='\u{211d}', '\u{2124}'..='\u{2124}',
+ '\u{2126}'..='\u{2126}', '\u{2128}'..='\u{2128}', '\u{212a}'..='\u{212d}',
+ '\u{212f}'..='\u{2139}', '\u{213c}'..='\u{213f}', '\u{2145}'..='\u{2149}',
+ '\u{214e}'..='\u{214e}', '\u{2160}'..='\u{2188}', '\u{24b6}'..='\u{24e9}',
+ '\u{2c00}'..='\u{2ce4}', '\u{2ceb}'..='\u{2cee}', '\u{2cf2}'..='\u{2cf3}',
+ '\u{2d00}'..='\u{2d25}', '\u{2d27}'..='\u{2d27}', '\u{2d2d}'..='\u{2d2d}',
+ '\u{2d30}'..='\u{2d67}', '\u{2d6f}'..='\u{2d6f}', '\u{2d80}'..='\u{2d96}',
+ '\u{2da0}'..='\u{2da6}', '\u{2da8}'..='\u{2dae}', '\u{2db0}'..='\u{2db6}',
+ '\u{2db8}'..='\u{2dbe}', '\u{2dc0}'..='\u{2dc6}', '\u{2dc8}'..='\u{2dce}',
+ '\u{2dd0}'..='\u{2dd6}', '\u{2dd8}'..='\u{2dde}', '\u{2de0}'..='\u{2dff}',
+ '\u{2e2f}'..='\u{2e2f}', '\u{3005}'..='\u{3007}', '\u{3021}'..='\u{3029}',
+ '\u{3031}'..='\u{3035}', '\u{3038}'..='\u{303c}', '\u{3041}'..='\u{3096}',
+ '\u{309d}'..='\u{309f}', '\u{30a1}'..='\u{30fa}', '\u{30fc}'..='\u{30ff}',
+ '\u{3105}'..='\u{312f}', '\u{3131}'..='\u{318e}', '\u{31a0}'..='\u{31bf}',
+ '\u{31f0}'..='\u{31ff}', '\u{3400}'..='\u{4dbf}', '\u{4e00}'..='\u{a48c}',
+ '\u{a4d0}'..='\u{a4fd}', '\u{a500}'..='\u{a60c}', '\u{a610}'..='\u{a61f}',
+ '\u{a62a}'..='\u{a62b}', '\u{a640}'..='\u{a66e}', '\u{a674}'..='\u{a67b}',
+ '\u{a67f}'..='\u{a6ef}', '\u{a717}'..='\u{a71f}', '\u{a722}'..='\u{a788}',
+ '\u{a78b}'..='\u{a7dd}', '\u{a7e2}'..='\u{a7e2}', '\u{a7f1}'..='\u{a805}',
+ '\u{a807}'..='\u{a827}', '\u{a840}'..='\u{a873}', '\u{a880}'..='\u{a8c3}',
+ '\u{a8c5}'..='\u{a8c5}', '\u{a8f2}'..='\u{a8f7}', '\u{a8fb}'..='\u{a8fb}',
+ '\u{a8fd}'..='\u{a8ff}', '\u{a90a}'..='\u{a92a}', '\u{a930}'..='\u{a952}',
+ '\u{a960}'..='\u{a97c}', '\u{a980}'..='\u{a9b2}', '\u{a9b4}'..='\u{a9bf}',
+ '\u{a9cf}'..='\u{a9cf}', '\u{a9e0}'..='\u{a9ef}', '\u{a9fa}'..='\u{a9fe}',
+ '\u{aa00}'..='\u{aa36}', '\u{aa40}'..='\u{aa4d}', '\u{aa60}'..='\u{aa76}',
+ '\u{aa7a}'..='\u{aabe}', '\u{aac0}'..='\u{aac0}', '\u{aac2}'..='\u{aac2}',
+ '\u{aadb}'..='\u{aadd}', '\u{aae0}'..='\u{aaef}', '\u{aaf2}'..='\u{aaf5}',
+ '\u{ab01}'..='\u{ab06}', '\u{ab09}'..='\u{ab0e}', '\u{ab11}'..='\u{ab16}',
+ '\u{ab20}'..='\u{ab26}', '\u{ab28}'..='\u{ab2e}', '\u{ab30}'..='\u{ab5a}',
+ '\u{ab5c}'..='\u{ab69}', '\u{ab6c}'..='\u{ab6d}', '\u{ab70}'..='\u{abea}',
'\u{ac00}'..='\u{d7a3}', '\u{d7b0}'..='\u{d7c6}', '\u{d7cb}'..='\u{d7fb}',
'\u{f900}'..='\u{fa6d}', '\u{fa70}'..='\u{fad9}', '\u{fb00}'..='\u{fb06}',
'\u{fb13}'..='\u{fb17}', '\u{fb1d}'..='\u{fb28}', '\u{fb2a}'..='\u{fb36}',
@@ -139,7 +140,7 @@ pub(super) static ALPHABETIC: &[RangeInclusive; 759] = &[
'\u{105a3}'..='\u{105b1}', '\u{105b3}'..='\u{105b9}', '\u{105bb}'..='\u{105bc}',
'\u{105c0}'..='\u{105f3}', '\u{10600}'..='\u{10736}', '\u{10740}'..='\u{10755}',
'\u{10760}'..='\u{10767}', '\u{10780}'..='\u{10785}', '\u{10787}'..='\u{107b0}',
- '\u{107b2}'..='\u{107ba}', '\u{10800}'..='\u{10805}', '\u{10808}'..='\u{10808}',
+ '\u{107b2}'..='\u{107bf}', '\u{10800}'..='\u{10805}', '\u{10808}'..='\u{10808}',
'\u{1080a}'..='\u{10835}', '\u{10837}'..='\u{10838}', '\u{1083c}'..='\u{1083c}',
'\u{1083f}'..='\u{10855}', '\u{10860}'..='\u{10876}', '\u{10880}'..='\u{1089e}',
'\u{108e0}'..='\u{108f2}', '\u{108f4}'..='\u{108f5}', '\u{10900}'..='\u{10915}',
@@ -152,38 +153,40 @@ pub(super) static ALPHABETIC: &[RangeInclusive; 759] = &[
'\u{10c80}'..='\u{10cb2}', '\u{10cc0}'..='\u{10cf2}', '\u{10d00}'..='\u{10d27}',
'\u{10d4a}'..='\u{10d65}', '\u{10d69}'..='\u{10d69}', '\u{10d6f}'..='\u{10d85}',
'\u{10e80}'..='\u{10ea9}', '\u{10eab}'..='\u{10eac}', '\u{10eb0}'..='\u{10eb1}',
- '\u{10ec2}'..='\u{10ec7}', '\u{10efa}'..='\u{10efc}', '\u{10f00}'..='\u{10f1c}',
- '\u{10f27}'..='\u{10f27}', '\u{10f30}'..='\u{10f45}', '\u{10f70}'..='\u{10f81}',
- '\u{10fb0}'..='\u{10fc4}', '\u{10fe0}'..='\u{10ff6}', '\u{11000}'..='\u{11045}',
- '\u{11071}'..='\u{11075}', '\u{11080}'..='\u{110b8}', '\u{110c2}'..='\u{110c2}',
- '\u{110d0}'..='\u{110e8}', '\u{11100}'..='\u{11132}', '\u{11144}'..='\u{11147}',
- '\u{11150}'..='\u{11172}', '\u{11176}'..='\u{11176}', '\u{11180}'..='\u{111bf}',
- '\u{111c1}'..='\u{111c4}', '\u{111ce}'..='\u{111cf}', '\u{111da}'..='\u{111da}',
- '\u{111dc}'..='\u{111dc}', '\u{11200}'..='\u{11211}', '\u{11213}'..='\u{11234}',
- '\u{11237}'..='\u{11237}', '\u{1123e}'..='\u{11241}', '\u{11280}'..='\u{11286}',
- '\u{11288}'..='\u{11288}', '\u{1128a}'..='\u{1128d}', '\u{1128f}'..='\u{1129d}',
- '\u{1129f}'..='\u{112a8}', '\u{112b0}'..='\u{112e8}', '\u{11300}'..='\u{11303}',
- '\u{11305}'..='\u{1130c}', '\u{1130f}'..='\u{11310}', '\u{11313}'..='\u{11328}',
- '\u{1132a}'..='\u{11330}', '\u{11332}'..='\u{11333}', '\u{11335}'..='\u{11339}',
- '\u{1133d}'..='\u{11344}', '\u{11347}'..='\u{11348}', '\u{1134b}'..='\u{1134c}',
- '\u{11350}'..='\u{11350}', '\u{11357}'..='\u{11357}', '\u{1135d}'..='\u{11363}',
- '\u{11380}'..='\u{11389}', '\u{1138b}'..='\u{1138b}', '\u{1138e}'..='\u{1138e}',
- '\u{11390}'..='\u{113b5}', '\u{113b7}'..='\u{113c0}', '\u{113c2}'..='\u{113c2}',
- '\u{113c5}'..='\u{113c5}', '\u{113c7}'..='\u{113ca}', '\u{113cc}'..='\u{113cd}',
- '\u{113d1}'..='\u{113d1}', '\u{113d3}'..='\u{113d3}', '\u{11400}'..='\u{11441}',
- '\u{11443}'..='\u{11445}', '\u{11447}'..='\u{1144a}', '\u{1145f}'..='\u{11461}',
- '\u{11480}'..='\u{114c1}', '\u{114c4}'..='\u{114c5}', '\u{114c7}'..='\u{114c7}',
- '\u{11580}'..='\u{115b5}', '\u{115b8}'..='\u{115be}', '\u{115d8}'..='\u{115dd}',
- '\u{11600}'..='\u{1163e}', '\u{11640}'..='\u{11640}', '\u{11644}'..='\u{11644}',
- '\u{11680}'..='\u{116b5}', '\u{116b8}'..='\u{116b8}', '\u{11700}'..='\u{1171a}',
- '\u{1171d}'..='\u{1172a}', '\u{11740}'..='\u{11746}', '\u{11800}'..='\u{11838}',
- '\u{118a0}'..='\u{118df}', '\u{118ff}'..='\u{11906}', '\u{11909}'..='\u{11909}',
- '\u{1190c}'..='\u{11913}', '\u{11915}'..='\u{11916}', '\u{11918}'..='\u{11935}',
- '\u{11937}'..='\u{11938}', '\u{1193b}'..='\u{1193c}', '\u{1193f}'..='\u{11942}',
- '\u{119a0}'..='\u{119a7}', '\u{119aa}'..='\u{119d7}', '\u{119da}'..='\u{119df}',
- '\u{119e1}'..='\u{119e1}', '\u{119e3}'..='\u{119e4}', '\u{11a00}'..='\u{11a32}',
- '\u{11a35}'..='\u{11a3e}', '\u{11a50}'..='\u{11a97}', '\u{11a9d}'..='\u{11a9d}',
- '\u{11ab0}'..='\u{11af8}', '\u{11b60}'..='\u{11b67}', '\u{11bc0}'..='\u{11be0}',
+ '\u{10ec2}'..='\u{10ec7}', '\u{10ecb}'..='\u{10ecd}', '\u{10ed9}'..='\u{10eee}',
+ '\u{10ef3}'..='\u{10ef3}', '\u{10ef5}'..='\u{10ef5}', '\u{10ef7}'..='\u{10ef8}',
+ '\u{10efa}'..='\u{10efc}', '\u{10f00}'..='\u{10f1c}', '\u{10f27}'..='\u{10f27}',
+ '\u{10f30}'..='\u{10f45}', '\u{10f70}'..='\u{10f81}', '\u{10fb0}'..='\u{10fc4}',
+ '\u{10fe0}'..='\u{10ff6}', '\u{11000}'..='\u{11045}', '\u{11071}'..='\u{11075}',
+ '\u{11080}'..='\u{110b8}', '\u{110c2}'..='\u{110c2}', '\u{110d0}'..='\u{110e8}',
+ '\u{11100}'..='\u{11132}', '\u{11144}'..='\u{11147}', '\u{11150}'..='\u{11172}',
+ '\u{11176}'..='\u{11176}', '\u{11180}'..='\u{111bf}', '\u{111c1}'..='\u{111c4}',
+ '\u{111ce}'..='\u{111cf}', '\u{111da}'..='\u{111da}', '\u{111dc}'..='\u{111dc}',
+ '\u{11200}'..='\u{11211}', '\u{11213}'..='\u{11234}', '\u{11237}'..='\u{11237}',
+ '\u{1123e}'..='\u{11241}', '\u{11280}'..='\u{11286}', '\u{11288}'..='\u{11288}',
+ '\u{1128a}'..='\u{1128d}', '\u{1128f}'..='\u{1129d}', '\u{1129f}'..='\u{112a8}',
+ '\u{112b0}'..='\u{112e8}', '\u{11300}'..='\u{11303}', '\u{11305}'..='\u{1130c}',
+ '\u{1130f}'..='\u{11310}', '\u{11313}'..='\u{11328}', '\u{1132a}'..='\u{11330}',
+ '\u{11332}'..='\u{11333}', '\u{11335}'..='\u{11339}', '\u{1133d}'..='\u{11344}',
+ '\u{11347}'..='\u{11348}', '\u{1134b}'..='\u{1134c}', '\u{11350}'..='\u{11350}',
+ '\u{11357}'..='\u{11357}', '\u{1135d}'..='\u{11363}', '\u{11380}'..='\u{11389}',
+ '\u{1138b}'..='\u{1138b}', '\u{1138e}'..='\u{1138e}', '\u{11390}'..='\u{113b5}',
+ '\u{113b7}'..='\u{113c0}', '\u{113c2}'..='\u{113c2}', '\u{113c5}'..='\u{113c5}',
+ '\u{113c7}'..='\u{113ca}', '\u{113cc}'..='\u{113cd}', '\u{113d1}'..='\u{113d1}',
+ '\u{113d3}'..='\u{113d3}', '\u{11400}'..='\u{11441}', '\u{11443}'..='\u{11445}',
+ '\u{11447}'..='\u{1144a}', '\u{1145f}'..='\u{11461}', '\u{11480}'..='\u{114c1}',
+ '\u{114c4}'..='\u{114c5}', '\u{114c7}'..='\u{114c7}', '\u{11580}'..='\u{115b5}',
+ '\u{115b8}'..='\u{115be}', '\u{115d8}'..='\u{115dd}', '\u{11600}'..='\u{1163e}',
+ '\u{11640}'..='\u{11640}', '\u{11644}'..='\u{11644}', '\u{11680}'..='\u{116b5}',
+ '\u{116b8}'..='\u{116b8}', '\u{11700}'..='\u{1171a}', '\u{1171d}'..='\u{1172a}',
+ '\u{11740}'..='\u{11746}', '\u{11800}'..='\u{11838}', '\u{118a0}'..='\u{118df}',
+ '\u{118ff}'..='\u{11906}', '\u{11909}'..='\u{11909}', '\u{1190c}'..='\u{11913}',
+ '\u{11915}'..='\u{11916}', '\u{11918}'..='\u{11935}', '\u{11937}'..='\u{11938}',
+ '\u{1193b}'..='\u{1193c}', '\u{1193f}'..='\u{11942}', '\u{119a0}'..='\u{119a7}',
+ '\u{119aa}'..='\u{119d7}', '\u{119da}'..='\u{119df}', '\u{119e1}'..='\u{119e1}',
+ '\u{119e3}'..='\u{119e4}', '\u{11a00}'..='\u{11a32}', '\u{11a35}'..='\u{11a3e}',
+ '\u{11a50}'..='\u{11a97}', '\u{11a9d}'..='\u{11a9d}', '\u{11ab0}'..='\u{11af8}',
+ '\u{11b0a}'..='\u{11b0a}', '\u{11b60}'..='\u{11b67}', '\u{11bc0}'..='\u{11be0}',
'\u{11c00}'..='\u{11c08}', '\u{11c0a}'..='\u{11c36}', '\u{11c38}'..='\u{11c3e}',
'\u{11c40}'..='\u{11c40}', '\u{11c72}'..='\u{11c8f}', '\u{11c92}'..='\u{11ca7}',
'\u{11ca9}'..='\u{11cb6}', '\u{11d00}'..='\u{11d06}', '\u{11d08}'..='\u{11d09}',
@@ -191,91 +194,93 @@ pub(super) static ALPHABETIC: &[RangeInclusive; 759] = &[
'\u{11d3f}'..='\u{11d41}', '\u{11d43}'..='\u{11d43}', '\u{11d46}'..='\u{11d47}',
'\u{11d60}'..='\u{11d65}', '\u{11d67}'..='\u{11d68}', '\u{11d6a}'..='\u{11d8e}',
'\u{11d90}'..='\u{11d91}', '\u{11d93}'..='\u{11d96}', '\u{11d98}'..='\u{11d98}',
- '\u{11db0}'..='\u{11ddb}', '\u{11ee0}'..='\u{11ef6}', '\u{11f00}'..='\u{11f10}',
- '\u{11f12}'..='\u{11f3a}', '\u{11f3e}'..='\u{11f40}', '\u{11fb0}'..='\u{11fb0}',
- '\u{12000}'..='\u{12399}', '\u{12400}'..='\u{1246e}', '\u{12480}'..='\u{12543}',
- '\u{12f90}'..='\u{12ff0}', '\u{13000}'..='\u{1342f}', '\u{13441}'..='\u{13446}',
- '\u{13460}'..='\u{143fa}', '\u{14400}'..='\u{14646}', '\u{16100}'..='\u{1612e}',
- '\u{16800}'..='\u{16a38}', '\u{16a40}'..='\u{16a5e}', '\u{16a70}'..='\u{16abe}',
- '\u{16ad0}'..='\u{16aed}', '\u{16b00}'..='\u{16b2f}', '\u{16b40}'..='\u{16b43}',
- '\u{16b63}'..='\u{16b77}', '\u{16b7d}'..='\u{16b8f}', '\u{16d40}'..='\u{16d6c}',
- '\u{16e40}'..='\u{16e7f}', '\u{16ea0}'..='\u{16eb8}', '\u{16ebb}'..='\u{16ed3}',
- '\u{16f00}'..='\u{16f4a}', '\u{16f4f}'..='\u{16f87}', '\u{16f8f}'..='\u{16f9f}',
- '\u{16fe0}'..='\u{16fe1}', '\u{16fe3}'..='\u{16fe3}', '\u{16ff0}'..='\u{16ff6}',
- '\u{17000}'..='\u{18cd5}', '\u{18cff}'..='\u{18d1e}', '\u{18d80}'..='\u{18df2}',
- '\u{1aff0}'..='\u{1aff3}', '\u{1aff5}'..='\u{1affb}', '\u{1affd}'..='\u{1affe}',
- '\u{1b000}'..='\u{1b122}', '\u{1b132}'..='\u{1b132}', '\u{1b150}'..='\u{1b152}',
- '\u{1b155}'..='\u{1b155}', '\u{1b164}'..='\u{1b167}', '\u{1b170}'..='\u{1b2fb}',
- '\u{1bc00}'..='\u{1bc6a}', '\u{1bc70}'..='\u{1bc7c}', '\u{1bc80}'..='\u{1bc88}',
- '\u{1bc90}'..='\u{1bc99}', '\u{1bc9e}'..='\u{1bc9e}', '\u{1d400}'..='\u{1d454}',
- '\u{1d456}'..='\u{1d49c}', '\u{1d49e}'..='\u{1d49f}', '\u{1d4a2}'..='\u{1d4a2}',
- '\u{1d4a5}'..='\u{1d4a6}', '\u{1d4a9}'..='\u{1d4ac}', '\u{1d4ae}'..='\u{1d4b9}',
- '\u{1d4bb}'..='\u{1d4bb}', '\u{1d4bd}'..='\u{1d4c3}', '\u{1d4c5}'..='\u{1d505}',
- '\u{1d507}'..='\u{1d50a}', '\u{1d50d}'..='\u{1d514}', '\u{1d516}'..='\u{1d51c}',
- '\u{1d51e}'..='\u{1d539}', '\u{1d53b}'..='\u{1d53e}', '\u{1d540}'..='\u{1d544}',
- '\u{1d546}'..='\u{1d546}', '\u{1d54a}'..='\u{1d550}', '\u{1d552}'..='\u{1d6a5}',
- '\u{1d6a8}'..='\u{1d6c0}', '\u{1d6c2}'..='\u{1d6da}', '\u{1d6dc}'..='\u{1d6fa}',
- '\u{1d6fc}'..='\u{1d714}', '\u{1d716}'..='\u{1d734}', '\u{1d736}'..='\u{1d74e}',
- '\u{1d750}'..='\u{1d76e}', '\u{1d770}'..='\u{1d788}', '\u{1d78a}'..='\u{1d7a8}',
- '\u{1d7aa}'..='\u{1d7c2}', '\u{1d7c4}'..='\u{1d7cb}', '\u{1df00}'..='\u{1df1e}',
- '\u{1df25}'..='\u{1df2a}', '\u{1e000}'..='\u{1e006}', '\u{1e008}'..='\u{1e018}',
- '\u{1e01b}'..='\u{1e021}', '\u{1e023}'..='\u{1e024}', '\u{1e026}'..='\u{1e02a}',
- '\u{1e030}'..='\u{1e06d}', '\u{1e08f}'..='\u{1e08f}', '\u{1e100}'..='\u{1e12c}',
- '\u{1e137}'..='\u{1e13d}', '\u{1e14e}'..='\u{1e14e}', '\u{1e290}'..='\u{1e2ad}',
- '\u{1e2c0}'..='\u{1e2eb}', '\u{1e4d0}'..='\u{1e4eb}', '\u{1e5d0}'..='\u{1e5ed}',
- '\u{1e5f0}'..='\u{1e5f0}', '\u{1e6c0}'..='\u{1e6de}', '\u{1e6e0}'..='\u{1e6f5}',
- '\u{1e6fe}'..='\u{1e6ff}', '\u{1e7e0}'..='\u{1e7e6}', '\u{1e7e8}'..='\u{1e7eb}',
- '\u{1e7ed}'..='\u{1e7ee}', '\u{1e7f0}'..='\u{1e7fe}', '\u{1e800}'..='\u{1e8c4}',
- '\u{1e900}'..='\u{1e943}', '\u{1e947}'..='\u{1e947}', '\u{1e94b}'..='\u{1e94b}',
- '\u{1ee00}'..='\u{1ee03}', '\u{1ee05}'..='\u{1ee1f}', '\u{1ee21}'..='\u{1ee22}',
- '\u{1ee24}'..='\u{1ee24}', '\u{1ee27}'..='\u{1ee27}', '\u{1ee29}'..='\u{1ee32}',
- '\u{1ee34}'..='\u{1ee37}', '\u{1ee39}'..='\u{1ee39}', '\u{1ee3b}'..='\u{1ee3b}',
- '\u{1ee42}'..='\u{1ee42}', '\u{1ee47}'..='\u{1ee47}', '\u{1ee49}'..='\u{1ee49}',
- '\u{1ee4b}'..='\u{1ee4b}', '\u{1ee4d}'..='\u{1ee4f}', '\u{1ee51}'..='\u{1ee52}',
- '\u{1ee54}'..='\u{1ee54}', '\u{1ee57}'..='\u{1ee57}', '\u{1ee59}'..='\u{1ee59}',
- '\u{1ee5b}'..='\u{1ee5b}', '\u{1ee5d}'..='\u{1ee5d}', '\u{1ee5f}'..='\u{1ee5f}',
- '\u{1ee61}'..='\u{1ee62}', '\u{1ee64}'..='\u{1ee64}', '\u{1ee67}'..='\u{1ee6a}',
- '\u{1ee6c}'..='\u{1ee72}', '\u{1ee74}'..='\u{1ee77}', '\u{1ee79}'..='\u{1ee7c}',
- '\u{1ee7e}'..='\u{1ee7e}', '\u{1ee80}'..='\u{1ee89}', '\u{1ee8b}'..='\u{1ee9b}',
- '\u{1eea1}'..='\u{1eea3}', '\u{1eea5}'..='\u{1eea9}', '\u{1eeab}'..='\u{1eebb}',
- '\u{1f130}'..='\u{1f149}', '\u{1f150}'..='\u{1f169}', '\u{1f170}'..='\u{1f189}',
- '\u{20000}'..='\u{2a6df}', '\u{2a700}'..='\u{2b81d}', '\u{2b820}'..='\u{2cead}',
- '\u{2ceb0}'..='\u{2ebe0}', '\u{2ebf0}'..='\u{2ee5d}', '\u{2f800}'..='\u{2fa1d}',
- '\u{30000}'..='\u{3134a}', '\u{31350}'..='\u{33479}',
+ '\u{11db0}'..='\u{11ddb}', '\u{11df0}'..='\u{11df1}', '\u{11ee0}'..='\u{11ef6}',
+ '\u{11f00}'..='\u{11f10}', '\u{11f12}'..='\u{11f3a}', '\u{11f3e}'..='\u{11f40}',
+ '\u{11fb0}'..='\u{11fb0}', '\u{12000}'..='\u{12399}', '\u{12400}'..='\u{1246f}',
+ '\u{12475}'..='\u{12543}', '\u{12550}'..='\u{12686}', '\u{12f90}'..='\u{12ff0}',
+ '\u{13000}'..='\u{1342f}', '\u{13441}'..='\u{13446}', '\u{13460}'..='\u{143fa}',
+ '\u{14400}'..='\u{14646}', '\u{16100}'..='\u{1612e}', '\u{16800}'..='\u{16a38}',
+ '\u{16a40}'..='\u{16a5e}', '\u{16a70}'..='\u{16abe}', '\u{16ad0}'..='\u{16aed}',
+ '\u{16b00}'..='\u{16b2f}', '\u{16b40}'..='\u{16b43}', '\u{16b63}'..='\u{16b77}',
+ '\u{16b7d}'..='\u{16b8f}', '\u{16d40}'..='\u{16d6c}', '\u{16e40}'..='\u{16e7f}',
+ '\u{16ea0}'..='\u{16eb8}', '\u{16ebb}'..='\u{16ed3}', '\u{16f00}'..='\u{16f4a}',
+ '\u{16f4f}'..='\u{16f87}', '\u{16f8f}'..='\u{16f9f}', '\u{16fe0}'..='\u{16fe1}',
+ '\u{16fe3}'..='\u{16fe3}', '\u{16ff0}'..='\u{16ff6}', '\u{17000}'..='\u{18cda}',
+ '\u{18cff}'..='\u{18d20}', '\u{18d80}'..='\u{18df2}', '\u{18e00}'..='\u{19191}',
+ '\u{191a0}'..='\u{191d2}', '\u{1aff0}'..='\u{1aff3}', '\u{1aff5}'..='\u{1affb}',
+ '\u{1affd}'..='\u{1affe}', '\u{1b000}'..='\u{1b128}', '\u{1b132}'..='\u{1b132}',
+ '\u{1b150}'..='\u{1b152}', '\u{1b155}'..='\u{1b155}', '\u{1b164}'..='\u{1b168}',
+ '\u{1b170}'..='\u{1b2fb}', '\u{1bc00}'..='\u{1bc6a}', '\u{1bc70}'..='\u{1bc7c}',
+ '\u{1bc80}'..='\u{1bc88}', '\u{1bc90}'..='\u{1bc99}', '\u{1bc9e}'..='\u{1bc9e}',
+ '\u{1d400}'..='\u{1d454}', '\u{1d456}'..='\u{1d49c}', '\u{1d49e}'..='\u{1d49f}',
+ '\u{1d4a2}'..='\u{1d4a2}', '\u{1d4a5}'..='\u{1d4a6}', '\u{1d4a9}'..='\u{1d4ac}',
+ '\u{1d4ae}'..='\u{1d4b9}', '\u{1d4bb}'..='\u{1d4bb}', '\u{1d4bd}'..='\u{1d4c3}',
+ '\u{1d4c5}'..='\u{1d505}', '\u{1d507}'..='\u{1d50a}', '\u{1d50d}'..='\u{1d514}',
+ '\u{1d516}'..='\u{1d51c}', '\u{1d51e}'..='\u{1d539}', '\u{1d53b}'..='\u{1d53e}',
+ '\u{1d540}'..='\u{1d544}', '\u{1d546}'..='\u{1d546}', '\u{1d54a}'..='\u{1d550}',
+ '\u{1d552}'..='\u{1d6a6}', '\u{1d6a8}'..='\u{1d6c0}', '\u{1d6c2}'..='\u{1d6da}',
+ '\u{1d6dc}'..='\u{1d6fa}', '\u{1d6fc}'..='\u{1d714}', '\u{1d716}'..='\u{1d734}',
+ '\u{1d736}'..='\u{1d74e}', '\u{1d750}'..='\u{1d76e}', '\u{1d770}'..='\u{1d788}',
+ '\u{1d78a}'..='\u{1d7a8}', '\u{1d7aa}'..='\u{1d7c2}', '\u{1d7c4}'..='\u{1d7cb}',
+ '\u{1df00}'..='\u{1df81}', '\u{1df90}'..='\u{1df96}', '\u{1dfcd}'..='\u{1e006}',
+ '\u{1e008}'..='\u{1e018}', '\u{1e01b}'..='\u{1e021}', '\u{1e023}'..='\u{1e024}',
+ '\u{1e026}'..='\u{1e02a}', '\u{1e030}'..='\u{1e06d}', '\u{1e08f}'..='\u{1e08f}',
+ '\u{1e100}'..='\u{1e12c}', '\u{1e137}'..='\u{1e13d}', '\u{1e14e}'..='\u{1e14e}',
+ '\u{1e290}'..='\u{1e2ad}', '\u{1e2c0}'..='\u{1e2eb}', '\u{1e4d0}'..='\u{1e4eb}',
+ '\u{1e5d0}'..='\u{1e5ed}', '\u{1e5f0}'..='\u{1e5f0}', '\u{1e6c0}'..='\u{1e6de}',
+ '\u{1e6e0}'..='\u{1e6f5}', '\u{1e6fe}'..='\u{1e6ff}', '\u{1e7e0}'..='\u{1e7e6}',
+ '\u{1e7e8}'..='\u{1e7eb}', '\u{1e7ed}'..='\u{1e7ee}', '\u{1e7f0}'..='\u{1e7fe}',
+ '\u{1e800}'..='\u{1e8c4}', '\u{1e900}'..='\u{1e943}', '\u{1e947}'..='\u{1e947}',
+ '\u{1e94b}'..='\u{1e94b}', '\u{1ee00}'..='\u{1ee03}', '\u{1ee05}'..='\u{1ee1f}',
+ '\u{1ee21}'..='\u{1ee22}', '\u{1ee24}'..='\u{1ee24}', '\u{1ee27}'..='\u{1ee27}',
+ '\u{1ee29}'..='\u{1ee32}', '\u{1ee34}'..='\u{1ee37}', '\u{1ee39}'..='\u{1ee39}',
+ '\u{1ee3b}'..='\u{1ee3b}', '\u{1ee42}'..='\u{1ee42}', '\u{1ee47}'..='\u{1ee47}',
+ '\u{1ee49}'..='\u{1ee49}', '\u{1ee4b}'..='\u{1ee4b}', '\u{1ee4d}'..='\u{1ee4f}',
+ '\u{1ee51}'..='\u{1ee52}', '\u{1ee54}'..='\u{1ee54}', '\u{1ee57}'..='\u{1ee57}',
+ '\u{1ee59}'..='\u{1ee59}', '\u{1ee5b}'..='\u{1ee5b}', '\u{1ee5d}'..='\u{1ee5d}',
+ '\u{1ee5f}'..='\u{1ee5f}', '\u{1ee61}'..='\u{1ee62}', '\u{1ee64}'..='\u{1ee64}',
+ '\u{1ee67}'..='\u{1ee6a}', '\u{1ee6c}'..='\u{1ee72}', '\u{1ee74}'..='\u{1ee77}',
+ '\u{1ee79}'..='\u{1ee7c}', '\u{1ee7e}'..='\u{1ee7e}', '\u{1ee80}'..='\u{1ee89}',
+ '\u{1ee8b}'..='\u{1ee9b}', '\u{1eea1}'..='\u{1eea3}', '\u{1eea5}'..='\u{1eea9}',
+ '\u{1eeab}'..='\u{1eebb}', '\u{1f130}'..='\u{1f149}', '\u{1f150}'..='\u{1f169}',
+ '\u{1f170}'..='\u{1f189}', '\u{20000}'..='\u{2a6df}', '\u{2a700}'..='\u{2b81e}',
+ '\u{2b820}'..='\u{2cead}', '\u{2ceb0}'..='\u{2ebe0}', '\u{2ebf0}'..='\u{2ee5d}',
+ '\u{2f800}'..='\u{2fa1d}', '\u{30000}'..='\u{3134a}', '\u{31350}'..='\u{33479}',
+ '\u{3d000}'..='\u{3fc3f}',
];
#[rustfmt::skip]
-pub(super) static CASE_IGNORABLE: &[RangeInclusive; 459] = &[
+pub(super) static CASE_IGNORABLE: &[RangeInclusive; 463] = &[
'\u{a8}'..='\u{a8}', '\u{ad}'..='\u{ad}', '\u{af}'..='\u{af}', '\u{b4}'..='\u{b4}',
'\u{b7}'..='\u{b8}', '\u{2b0}'..='\u{36f}', '\u{374}'..='\u{375}', '\u{37a}'..='\u{37a}',
- '\u{384}'..='\u{385}', '\u{387}'..='\u{387}', '\u{483}'..='\u{489}', '\u{559}'..='\u{559}',
- '\u{55f}'..='\u{55f}', '\u{591}'..='\u{5bd}', '\u{5bf}'..='\u{5bf}', '\u{5c1}'..='\u{5c2}',
- '\u{5c4}'..='\u{5c5}', '\u{5c7}'..='\u{5c7}', '\u{5f4}'..='\u{5f4}', '\u{600}'..='\u{605}',
- '\u{610}'..='\u{61a}', '\u{61c}'..='\u{61c}', '\u{640}'..='\u{640}', '\u{64b}'..='\u{65f}',
- '\u{670}'..='\u{670}', '\u{6d6}'..='\u{6dd}', '\u{6df}'..='\u{6e8}', '\u{6ea}'..='\u{6ed}',
- '\u{70f}'..='\u{70f}', '\u{711}'..='\u{711}', '\u{730}'..='\u{74a}', '\u{7a6}'..='\u{7b0}',
- '\u{7eb}'..='\u{7f5}', '\u{7fa}'..='\u{7fa}', '\u{7fd}'..='\u{7fd}', '\u{816}'..='\u{82d}',
- '\u{859}'..='\u{85b}', '\u{888}'..='\u{888}', '\u{890}'..='\u{891}', '\u{897}'..='\u{89f}',
- '\u{8c9}'..='\u{902}', '\u{93a}'..='\u{93a}', '\u{93c}'..='\u{93c}', '\u{941}'..='\u{948}',
- '\u{94d}'..='\u{94d}', '\u{951}'..='\u{957}', '\u{962}'..='\u{963}', '\u{971}'..='\u{971}',
- '\u{981}'..='\u{981}', '\u{9bc}'..='\u{9bc}', '\u{9c1}'..='\u{9c4}', '\u{9cd}'..='\u{9cd}',
- '\u{9e2}'..='\u{9e3}', '\u{9fe}'..='\u{9fe}', '\u{a01}'..='\u{a02}', '\u{a3c}'..='\u{a3c}',
- '\u{a41}'..='\u{a42}', '\u{a47}'..='\u{a48}', '\u{a4b}'..='\u{a4d}', '\u{a51}'..='\u{a51}',
- '\u{a70}'..='\u{a71}', '\u{a75}'..='\u{a75}', '\u{a81}'..='\u{a82}', '\u{abc}'..='\u{abc}',
- '\u{ac1}'..='\u{ac5}', '\u{ac7}'..='\u{ac8}', '\u{acd}'..='\u{acd}', '\u{ae2}'..='\u{ae3}',
- '\u{afa}'..='\u{aff}', '\u{b01}'..='\u{b01}', '\u{b3c}'..='\u{b3c}', '\u{b3f}'..='\u{b3f}',
- '\u{b41}'..='\u{b44}', '\u{b4d}'..='\u{b4d}', '\u{b55}'..='\u{b56}', '\u{b62}'..='\u{b63}',
- '\u{b82}'..='\u{b82}', '\u{bc0}'..='\u{bc0}', '\u{bcd}'..='\u{bcd}', '\u{c00}'..='\u{c00}',
- '\u{c04}'..='\u{c04}', '\u{c3c}'..='\u{c3c}', '\u{c3e}'..='\u{c40}', '\u{c46}'..='\u{c48}',
- '\u{c4a}'..='\u{c4d}', '\u{c55}'..='\u{c56}', '\u{c62}'..='\u{c63}', '\u{c81}'..='\u{c81}',
- '\u{cbc}'..='\u{cbc}', '\u{cbf}'..='\u{cbf}', '\u{cc6}'..='\u{cc6}', '\u{ccc}'..='\u{ccd}',
- '\u{ce2}'..='\u{ce3}', '\u{d00}'..='\u{d01}', '\u{d3b}'..='\u{d3c}', '\u{d41}'..='\u{d44}',
- '\u{d4d}'..='\u{d4d}', '\u{d62}'..='\u{d63}', '\u{d81}'..='\u{d81}', '\u{dca}'..='\u{dca}',
- '\u{dd2}'..='\u{dd4}', '\u{dd6}'..='\u{dd6}', '\u{e31}'..='\u{e31}', '\u{e34}'..='\u{e3a}',
- '\u{e46}'..='\u{e4e}', '\u{eb1}'..='\u{eb1}', '\u{eb4}'..='\u{ebc}', '\u{ec6}'..='\u{ec6}',
- '\u{ec8}'..='\u{ece}', '\u{f18}'..='\u{f19}', '\u{f35}'..='\u{f35}', '\u{f37}'..='\u{f37}',
- '\u{f39}'..='\u{f39}', '\u{f71}'..='\u{f7e}', '\u{f80}'..='\u{f84}', '\u{f86}'..='\u{f87}',
- '\u{f8d}'..='\u{f97}', '\u{f99}'..='\u{fbc}', '\u{fc6}'..='\u{fc6}',
+ '\u{384}'..='\u{385}', '\u{387}'..='\u{387}', '\u{483}'..='\u{489}', '\u{558}'..='\u{559}',
+ '\u{55f}'..='\u{55f}', '\u{58b}'..='\u{58c}', '\u{591}'..='\u{5bd}', '\u{5bf}'..='\u{5bf}',
+ '\u{5c1}'..='\u{5c2}', '\u{5c4}'..='\u{5c5}', '\u{5c7}'..='\u{5c9}', '\u{5f4}'..='\u{5f4}',
+ '\u{600}'..='\u{605}', '\u{610}'..='\u{61a}', '\u{61c}'..='\u{61c}', '\u{640}'..='\u{640}',
+ '\u{64b}'..='\u{65f}', '\u{670}'..='\u{670}', '\u{6d6}'..='\u{6dd}', '\u{6df}'..='\u{6e8}',
+ '\u{6ea}'..='\u{6ed}', '\u{70f}'..='\u{70f}', '\u{711}'..='\u{711}', '\u{730}'..='\u{74a}',
+ '\u{7a6}'..='\u{7b0}', '\u{7eb}'..='\u{7f5}', '\u{7fa}'..='\u{7fa}', '\u{7fd}'..='\u{7fd}',
+ '\u{816}'..='\u{82d}', '\u{859}'..='\u{85b}', '\u{888}'..='\u{888}', '\u{890}'..='\u{891}',
+ '\u{897}'..='\u{89f}', '\u{8c9}'..='\u{902}', '\u{93a}'..='\u{93a}', '\u{93c}'..='\u{93c}',
+ '\u{941}'..='\u{948}', '\u{94d}'..='\u{94d}', '\u{951}'..='\u{957}', '\u{962}'..='\u{963}',
+ '\u{971}'..='\u{971}', '\u{981}'..='\u{981}', '\u{9bc}'..='\u{9bc}', '\u{9c1}'..='\u{9c4}',
+ '\u{9cd}'..='\u{9cd}', '\u{9e2}'..='\u{9e3}', '\u{9fe}'..='\u{9fe}', '\u{a01}'..='\u{a02}',
+ '\u{a3c}'..='\u{a3c}', '\u{a41}'..='\u{a42}', '\u{a47}'..='\u{a48}', '\u{a4b}'..='\u{a4d}',
+ '\u{a51}'..='\u{a51}', '\u{a70}'..='\u{a71}', '\u{a75}'..='\u{a75}', '\u{a81}'..='\u{a82}',
+ '\u{abc}'..='\u{abc}', '\u{ac1}'..='\u{ac5}', '\u{ac7}'..='\u{ac8}', '\u{acd}'..='\u{acd}',
+ '\u{ae2}'..='\u{ae3}', '\u{afa}'..='\u{aff}', '\u{b01}'..='\u{b01}', '\u{b3c}'..='\u{b3c}',
+ '\u{b3f}'..='\u{b3f}', '\u{b41}'..='\u{b44}', '\u{b4d}'..='\u{b4d}', '\u{b53}'..='\u{b56}',
+ '\u{b62}'..='\u{b63}', '\u{b82}'..='\u{b82}', '\u{bc0}'..='\u{bc0}', '\u{bcd}'..='\u{bcd}',
+ '\u{c00}'..='\u{c00}', '\u{c04}'..='\u{c04}', '\u{c3c}'..='\u{c3c}', '\u{c3e}'..='\u{c40}',
+ '\u{c46}'..='\u{c48}', '\u{c4a}'..='\u{c4d}', '\u{c55}'..='\u{c56}', '\u{c62}'..='\u{c63}',
+ '\u{c81}'..='\u{c81}', '\u{cbc}'..='\u{cbc}', '\u{cbf}'..='\u{cbf}', '\u{cc6}'..='\u{cc6}',
+ '\u{ccc}'..='\u{ccd}', '\u{ce2}'..='\u{ce3}', '\u{d00}'..='\u{d01}', '\u{d3b}'..='\u{d3c}',
+ '\u{d41}'..='\u{d44}', '\u{d4d}'..='\u{d4d}', '\u{d62}'..='\u{d63}', '\u{d81}'..='\u{d81}',
+ '\u{dca}'..='\u{dca}', '\u{dd2}'..='\u{dd4}', '\u{dd6}'..='\u{dd6}', '\u{e31}'..='\u{e31}',
+ '\u{e34}'..='\u{e3a}', '\u{e46}'..='\u{e4e}', '\u{eb1}'..='\u{eb1}', '\u{eb4}'..='\u{ebc}',
+ '\u{ec6}'..='\u{ec6}', '\u{ec8}'..='\u{ece}', '\u{f18}'..='\u{f19}', '\u{f35}'..='\u{f35}',
+ '\u{f37}'..='\u{f37}', '\u{f39}'..='\u{f39}', '\u{f71}'..='\u{f7e}', '\u{f80}'..='\u{f84}',
+ '\u{f86}'..='\u{f87}', '\u{f8d}'..='\u{f97}', '\u{f99}'..='\u{fbc}', '\u{fc6}'..='\u{fc6}',
'\u{102d}'..='\u{1030}', '\u{1032}'..='\u{1037}', '\u{1039}'..='\u{103a}',
'\u{103d}'..='\u{103e}', '\u{1058}'..='\u{1059}', '\u{105e}'..='\u{1060}',
'\u{1071}'..='\u{1074}', '\u{1082}'..='\u{1082}', '\u{1085}'..='\u{1086}',
@@ -289,55 +294,55 @@ pub(super) static CASE_IGNORABLE: &[RangeInclusive; 459] = &[
'\u{1939}'..='\u{193b}', '\u{1a17}'..='\u{1a18}', '\u{1a1b}'..='\u{1a1b}',
'\u{1a56}'..='\u{1a56}', '\u{1a58}'..='\u{1a5e}', '\u{1a60}'..='\u{1a60}',
'\u{1a62}'..='\u{1a62}', '\u{1a65}'..='\u{1a6c}', '\u{1a73}'..='\u{1a7c}',
- '\u{1a7f}'..='\u{1a7f}', '\u{1aa7}'..='\u{1aa7}', '\u{1ab0}'..='\u{1add}',
- '\u{1ae0}'..='\u{1aeb}', '\u{1b00}'..='\u{1b03}', '\u{1b34}'..='\u{1b34}',
- '\u{1b36}'..='\u{1b3a}', '\u{1b3c}'..='\u{1b3c}', '\u{1b42}'..='\u{1b42}',
- '\u{1b6b}'..='\u{1b73}', '\u{1b80}'..='\u{1b81}', '\u{1ba2}'..='\u{1ba5}',
- '\u{1ba8}'..='\u{1ba9}', '\u{1bab}'..='\u{1bad}', '\u{1be6}'..='\u{1be6}',
- '\u{1be8}'..='\u{1be9}', '\u{1bed}'..='\u{1bed}', '\u{1bef}'..='\u{1bf1}',
- '\u{1c2c}'..='\u{1c33}', '\u{1c36}'..='\u{1c37}', '\u{1c78}'..='\u{1c7d}',
- '\u{1cd0}'..='\u{1cd2}', '\u{1cd4}'..='\u{1ce0}', '\u{1ce2}'..='\u{1ce8}',
- '\u{1ced}'..='\u{1ced}', '\u{1cf4}'..='\u{1cf4}', '\u{1cf8}'..='\u{1cf9}',
- '\u{1d2c}'..='\u{1d6a}', '\u{1d78}'..='\u{1d78}', '\u{1d9b}'..='\u{1dff}',
- '\u{1fbd}'..='\u{1fbd}', '\u{1fbf}'..='\u{1fc1}', '\u{1fcd}'..='\u{1fcf}',
- '\u{1fdd}'..='\u{1fdf}', '\u{1fed}'..='\u{1fef}', '\u{1ffd}'..='\u{1ffe}',
- '\u{200b}'..='\u{200f}', '\u{2018}'..='\u{2019}', '\u{2024}'..='\u{2024}',
- '\u{2027}'..='\u{2027}', '\u{202a}'..='\u{202e}', '\u{2060}'..='\u{2064}',
- '\u{2066}'..='\u{206f}', '\u{2071}'..='\u{2071}', '\u{207f}'..='\u{207f}',
- '\u{2090}'..='\u{209c}', '\u{20d0}'..='\u{20f0}', '\u{2c7c}'..='\u{2c7d}',
- '\u{2cef}'..='\u{2cf1}', '\u{2d6f}'..='\u{2d6f}', '\u{2d7f}'..='\u{2d7f}',
- '\u{2de0}'..='\u{2dff}', '\u{2e2f}'..='\u{2e2f}', '\u{3005}'..='\u{3005}',
- '\u{302a}'..='\u{302d}', '\u{3031}'..='\u{3035}', '\u{303b}'..='\u{303b}',
- '\u{3099}'..='\u{309e}', '\u{30fc}'..='\u{30fe}', '\u{a015}'..='\u{a015}',
- '\u{a4f8}'..='\u{a4fd}', '\u{a60c}'..='\u{a60c}', '\u{a66f}'..='\u{a672}',
- '\u{a674}'..='\u{a67d}', '\u{a67f}'..='\u{a67f}', '\u{a69c}'..='\u{a69f}',
- '\u{a6f0}'..='\u{a6f1}', '\u{a700}'..='\u{a721}', '\u{a770}'..='\u{a770}',
- '\u{a788}'..='\u{a78a}', '\u{a7f1}'..='\u{a7f4}', '\u{a7f8}'..='\u{a7f9}',
- '\u{a802}'..='\u{a802}', '\u{a806}'..='\u{a806}', '\u{a80b}'..='\u{a80b}',
- '\u{a825}'..='\u{a826}', '\u{a82c}'..='\u{a82c}', '\u{a8c4}'..='\u{a8c5}',
- '\u{a8e0}'..='\u{a8f1}', '\u{a8ff}'..='\u{a8ff}', '\u{a926}'..='\u{a92d}',
- '\u{a947}'..='\u{a951}', '\u{a980}'..='\u{a982}', '\u{a9b3}'..='\u{a9b3}',
- '\u{a9b6}'..='\u{a9b9}', '\u{a9bc}'..='\u{a9bd}', '\u{a9cf}'..='\u{a9cf}',
- '\u{a9e5}'..='\u{a9e6}', '\u{aa29}'..='\u{aa2e}', '\u{aa31}'..='\u{aa32}',
- '\u{aa35}'..='\u{aa36}', '\u{aa43}'..='\u{aa43}', '\u{aa4c}'..='\u{aa4c}',
- '\u{aa70}'..='\u{aa70}', '\u{aa7c}'..='\u{aa7c}', '\u{aab0}'..='\u{aab0}',
- '\u{aab2}'..='\u{aab4}', '\u{aab7}'..='\u{aab8}', '\u{aabe}'..='\u{aabf}',
- '\u{aac1}'..='\u{aac1}', '\u{aadd}'..='\u{aadd}', '\u{aaec}'..='\u{aaed}',
- '\u{aaf3}'..='\u{aaf4}', '\u{aaf6}'..='\u{aaf6}', '\u{ab5b}'..='\u{ab5f}',
- '\u{ab69}'..='\u{ab6b}', '\u{abe5}'..='\u{abe5}', '\u{abe8}'..='\u{abe8}',
- '\u{abed}'..='\u{abed}', '\u{fb1e}'..='\u{fb1e}', '\u{fbb2}'..='\u{fbc2}',
- '\u{fe00}'..='\u{fe0f}', '\u{fe13}'..='\u{fe13}', '\u{fe20}'..='\u{fe2f}',
- '\u{fe52}'..='\u{fe52}', '\u{fe55}'..='\u{fe55}', '\u{feff}'..='\u{feff}',
- '\u{ff07}'..='\u{ff07}', '\u{ff0e}'..='\u{ff0e}', '\u{ff1a}'..='\u{ff1a}',
- '\u{ff3e}'..='\u{ff3e}', '\u{ff40}'..='\u{ff40}', '\u{ff70}'..='\u{ff70}',
- '\u{ff9e}'..='\u{ff9f}', '\u{ffe3}'..='\u{ffe3}', '\u{fff9}'..='\u{fffb}',
- '\u{101fd}'..='\u{101fd}', '\u{102e0}'..='\u{102e0}', '\u{10376}'..='\u{1037a}',
- '\u{10780}'..='\u{10785}', '\u{10787}'..='\u{107b0}', '\u{107b2}'..='\u{107ba}',
- '\u{10a01}'..='\u{10a03}', '\u{10a05}'..='\u{10a06}', '\u{10a0c}'..='\u{10a0f}',
- '\u{10a38}'..='\u{10a3a}', '\u{10a3f}'..='\u{10a3f}', '\u{10ae5}'..='\u{10ae6}',
- '\u{10d24}'..='\u{10d27}', '\u{10d4e}'..='\u{10d4e}', '\u{10d69}'..='\u{10d6d}',
- '\u{10d6f}'..='\u{10d6f}', '\u{10eab}'..='\u{10eac}', '\u{10ec5}'..='\u{10ec5}',
- '\u{10efa}'..='\u{10eff}', '\u{10f46}'..='\u{10f50}', '\u{10f82}'..='\u{10f85}',
+ '\u{1a7f}'..='\u{1a7f}', '\u{1aa7}'..='\u{1aa7}', '\u{1ab0}'..='\u{1af0}',
+ '\u{1b00}'..='\u{1b03}', '\u{1b34}'..='\u{1b34}', '\u{1b36}'..='\u{1b3a}',
+ '\u{1b3c}'..='\u{1b3c}', '\u{1b42}'..='\u{1b42}', '\u{1b6b}'..='\u{1b73}',
+ '\u{1b80}'..='\u{1b81}', '\u{1ba2}'..='\u{1ba5}', '\u{1ba8}'..='\u{1ba9}',
+ '\u{1bab}'..='\u{1bad}', '\u{1be6}'..='\u{1be6}', '\u{1be8}'..='\u{1be9}',
+ '\u{1bed}'..='\u{1bed}', '\u{1bef}'..='\u{1bf1}', '\u{1c2c}'..='\u{1c33}',
+ '\u{1c36}'..='\u{1c37}', '\u{1c78}'..='\u{1c7d}', '\u{1cd0}'..='\u{1cd2}',
+ '\u{1cd4}'..='\u{1ce0}', '\u{1ce2}'..='\u{1ce8}', '\u{1ced}'..='\u{1ced}',
+ '\u{1cf4}'..='\u{1cf4}', '\u{1cf8}'..='\u{1cf9}', '\u{1d2c}'..='\u{1d6a}',
+ '\u{1d78}'..='\u{1d78}', '\u{1d9b}'..='\u{1dff}', '\u{1fbd}'..='\u{1fbd}',
+ '\u{1fbf}'..='\u{1fc1}', '\u{1fcd}'..='\u{1fcf}', '\u{1fdd}'..='\u{1fdf}',
+ '\u{1fed}'..='\u{1fef}', '\u{1ffd}'..='\u{1ffe}', '\u{200b}'..='\u{200f}',
+ '\u{2018}'..='\u{2019}', '\u{2024}'..='\u{2024}', '\u{2027}'..='\u{2027}',
+ '\u{202a}'..='\u{202e}', '\u{2060}'..='\u{2064}', '\u{2066}'..='\u{206f}',
+ '\u{2071}'..='\u{2071}', '\u{207f}'..='\u{207f}', '\u{208f}'..='\u{209f}',
+ '\u{20d0}'..='\u{20f0}', '\u{2c7c}'..='\u{2c7d}', '\u{2cef}'..='\u{2cf1}',
+ '\u{2d6f}'..='\u{2d6f}', '\u{2d7f}'..='\u{2d7f}', '\u{2de0}'..='\u{2dff}',
+ '\u{2e2f}'..='\u{2e2f}', '\u{3005}'..='\u{3005}', '\u{302a}'..='\u{302d}',
+ '\u{3031}'..='\u{3035}', '\u{303b}'..='\u{303b}', '\u{3099}'..='\u{309e}',
+ '\u{30fc}'..='\u{30fe}', '\u{a015}'..='\u{a015}', '\u{a4f8}'..='\u{a4fd}',
+ '\u{a60c}'..='\u{a60c}', '\u{a66f}'..='\u{a672}', '\u{a674}'..='\u{a67d}',
+ '\u{a67f}'..='\u{a67f}', '\u{a69c}'..='\u{a69f}', '\u{a6f0}'..='\u{a6f1}',
+ '\u{a700}'..='\u{a721}', '\u{a770}'..='\u{a770}', '\u{a788}'..='\u{a78a}',
+ '\u{a7f1}'..='\u{a7f4}', '\u{a7f8}'..='\u{a7f9}', '\u{a802}'..='\u{a802}',
+ '\u{a806}'..='\u{a806}', '\u{a80b}'..='\u{a80b}', '\u{a825}'..='\u{a826}',
+ '\u{a82c}'..='\u{a82c}', '\u{a8c4}'..='\u{a8c5}', '\u{a8e0}'..='\u{a8f1}',
+ '\u{a8ff}'..='\u{a8ff}', '\u{a926}'..='\u{a92d}', '\u{a947}'..='\u{a951}',
+ '\u{a980}'..='\u{a982}', '\u{a9b3}'..='\u{a9b3}', '\u{a9b6}'..='\u{a9b9}',
+ '\u{a9bc}'..='\u{a9bd}', '\u{a9cf}'..='\u{a9cf}', '\u{a9e5}'..='\u{a9e6}',
+ '\u{aa29}'..='\u{aa2e}', '\u{aa31}'..='\u{aa32}', '\u{aa35}'..='\u{aa36}',
+ '\u{aa43}'..='\u{aa43}', '\u{aa4c}'..='\u{aa4c}', '\u{aa70}'..='\u{aa70}',
+ '\u{aa7c}'..='\u{aa7c}', '\u{aab0}'..='\u{aab0}', '\u{aab2}'..='\u{aab4}',
+ '\u{aab7}'..='\u{aab8}', '\u{aabe}'..='\u{aabf}', '\u{aac1}'..='\u{aac1}',
+ '\u{aadd}'..='\u{aadd}', '\u{aaec}'..='\u{aaed}', '\u{aaf3}'..='\u{aaf4}',
+ '\u{aaf6}'..='\u{aaf6}', '\u{ab5b}'..='\u{ab5f}', '\u{ab69}'..='\u{ab6b}',
+ '\u{abe5}'..='\u{abe5}', '\u{abe8}'..='\u{abe8}', '\u{abed}'..='\u{abed}',
+ '\u{fb1e}'..='\u{fb1e}', '\u{fbb2}'..='\u{fbc2}', '\u{fe00}'..='\u{fe0f}',
+ '\u{fe13}'..='\u{fe13}', '\u{fe20}'..='\u{fe2f}', '\u{fe52}'..='\u{fe52}',
+ '\u{fe55}'..='\u{fe55}', '\u{feff}'..='\u{feff}', '\u{ff07}'..='\u{ff07}',
+ '\u{ff0e}'..='\u{ff0e}', '\u{ff1a}'..='\u{ff1a}', '\u{ff3e}'..='\u{ff3e}',
+ '\u{ff40}'..='\u{ff40}', '\u{ff70}'..='\u{ff70}', '\u{ff9e}'..='\u{ff9f}',
+ '\u{ffe3}'..='\u{ffe3}', '\u{fff9}'..='\u{fffb}', '\u{101fd}'..='\u{101fd}',
+ '\u{102e0}'..='\u{102e0}', '\u{10376}'..='\u{1037a}', '\u{10780}'..='\u{10785}',
+ '\u{10787}'..='\u{107b0}', '\u{107b2}'..='\u{107bf}', '\u{10a01}'..='\u{10a03}',
+ '\u{10a05}'..='\u{10a06}', '\u{10a0c}'..='\u{10a0f}', '\u{10a38}'..='\u{10a3a}',
+ '\u{10a3f}'..='\u{10a3f}', '\u{10ae5}'..='\u{10ae6}', '\u{10d24}'..='\u{10d27}',
+ '\u{10d4e}'..='\u{10d4e}', '\u{10d69}'..='\u{10d6d}', '\u{10d6f}'..='\u{10d6f}',
+ '\u{10eab}'..='\u{10eac}', '\u{10ec5}'..='\u{10ec5}', '\u{10ec9}'..='\u{10ecf}',
+ '\u{10ef0}'..='\u{10eff}', '\u{10f46}'..='\u{10f50}', '\u{10f82}'..='\u{10f85}',
'\u{11001}'..='\u{11001}', '\u{11038}'..='\u{11046}', '\u{11070}'..='\u{11070}',
'\u{11073}'..='\u{11074}', '\u{1107f}'..='\u{11081}', '\u{110b3}'..='\u{110b6}',
'\u{110b9}'..='\u{110ba}', '\u{110bd}'..='\u{110bd}', '\u{110c2}'..='\u{110c2}',
@@ -369,19 +374,20 @@ pub(super) static CASE_IGNORABLE: &[RangeInclusive; 459] = &[
'\u{11d31}'..='\u{11d36}', '\u{11d3a}'..='\u{11d3a}', '\u{11d3c}'..='\u{11d3d}',
'\u{11d3f}'..='\u{11d45}', '\u{11d47}'..='\u{11d47}', '\u{11d90}'..='\u{11d91}',
'\u{11d95}'..='\u{11d95}', '\u{11d97}'..='\u{11d97}', '\u{11dd9}'..='\u{11dd9}',
- '\u{11ef3}'..='\u{11ef4}', '\u{11f00}'..='\u{11f01}', '\u{11f36}'..='\u{11f3a}',
- '\u{11f40}'..='\u{11f40}', '\u{11f42}'..='\u{11f42}', '\u{11f5a}'..='\u{11f5a}',
- '\u{13430}'..='\u{13440}', '\u{13447}'..='\u{13455}', '\u{1611e}'..='\u{16129}',
- '\u{1612d}'..='\u{1612f}', '\u{16af0}'..='\u{16af4}', '\u{16b30}'..='\u{16b36}',
- '\u{16b40}'..='\u{16b43}', '\u{16d40}'..='\u{16d42}', '\u{16d6b}'..='\u{16d6c}',
- '\u{16f4f}'..='\u{16f4f}', '\u{16f8f}'..='\u{16f9f}', '\u{16fe0}'..='\u{16fe1}',
- '\u{16fe3}'..='\u{16fe4}', '\u{16ff2}'..='\u{16ff3}', '\u{1aff0}'..='\u{1aff3}',
- '\u{1aff5}'..='\u{1affb}', '\u{1affd}'..='\u{1affe}', '\u{1bc9d}'..='\u{1bc9e}',
- '\u{1bca0}'..='\u{1bca3}', '\u{1cf00}'..='\u{1cf2d}', '\u{1cf30}'..='\u{1cf46}',
- '\u{1d167}'..='\u{1d169}', '\u{1d173}'..='\u{1d182}', '\u{1d185}'..='\u{1d18b}',
- '\u{1d1aa}'..='\u{1d1ad}', '\u{1d242}'..='\u{1d244}', '\u{1da00}'..='\u{1da36}',
+ '\u{11df0}'..='\u{11df0}', '\u{11ef3}'..='\u{11ef4}', '\u{11f00}'..='\u{11f01}',
+ '\u{11f36}'..='\u{11f3a}', '\u{11f40}'..='\u{11f40}', '\u{11f42}'..='\u{11f42}',
+ '\u{11f5a}'..='\u{11f5a}', '\u{13430}'..='\u{13440}', '\u{13447}'..='\u{13455}',
+ '\u{1611e}'..='\u{16129}', '\u{1612d}'..='\u{1612f}', '\u{16af0}'..='\u{16af4}',
+ '\u{16b30}'..='\u{16b36}', '\u{16b40}'..='\u{16b43}', '\u{16d40}'..='\u{16d42}',
+ '\u{16d6b}'..='\u{16d6c}', '\u{16f4f}'..='\u{16f4f}', '\u{16f8f}'..='\u{16f9f}',
+ '\u{16fe0}'..='\u{16fe1}', '\u{16fe3}'..='\u{16fe4}', '\u{16ff2}'..='\u{16ff3}',
+ '\u{1aff0}'..='\u{1aff3}', '\u{1aff5}'..='\u{1affb}', '\u{1affd}'..='\u{1affe}',
+ '\u{1bc9d}'..='\u{1bc9e}', '\u{1bca0}'..='\u{1bca3}', '\u{1cf00}'..='\u{1cf2d}',
+ '\u{1cf30}'..='\u{1cf46}', '\u{1d127}'..='\u{1d128}', '\u{1d167}'..='\u{1d169}',
+ '\u{1d173}'..='\u{1d182}', '\u{1d185}'..='\u{1d18b}', '\u{1d1aa}'..='\u{1d1ad}',
+ '\u{1d242}'..='\u{1d244}', '\u{1d25b}'..='\u{1d25c}', '\u{1da00}'..='\u{1da36}',
'\u{1da3b}'..='\u{1da6c}', '\u{1da75}'..='\u{1da75}', '\u{1da84}'..='\u{1da84}',
- '\u{1da9b}'..='\u{1da9f}', '\u{1daa1}'..='\u{1daaf}', '\u{1e000}'..='\u{1e006}',
+ '\u{1da9b}'..='\u{1da9f}', '\u{1daa1}'..='\u{1daaf}', '\u{1dfcd}'..='\u{1e006}',
'\u{1e008}'..='\u{1e018}', '\u{1e01b}'..='\u{1e021}', '\u{1e023}'..='\u{1e024}',
'\u{1e026}'..='\u{1e02a}', '\u{1e030}'..='\u{1e06d}', '\u{1e08f}'..='\u{1e08f}',
'\u{1e130}'..='\u{1e13d}', '\u{1e2ae}'..='\u{1e2ae}', '\u{1e2ec}'..='\u{1e2ef}',
@@ -406,189 +412,189 @@ pub(super) static CF: &[RangeInclusive; 21] = &[
#[rustfmt::skip]
pub(super) static CN_PLANES_0_3: &[RangeInclusive; 730] = &[
'\u{378}'..='\u{379}', '\u{380}'..='\u{383}', '\u{38b}'..='\u{38b}', '\u{38d}'..='\u{38d}',
- '\u{3a2}'..='\u{3a2}', '\u{530}'..='\u{530}', '\u{557}'..='\u{558}', '\u{58b}'..='\u{58c}',
- '\u{590}'..='\u{590}', '\u{5c8}'..='\u{5cf}', '\u{5eb}'..='\u{5ee}', '\u{5f5}'..='\u{5ff}',
- '\u{70e}'..='\u{70e}', '\u{74b}'..='\u{74c}', '\u{7b2}'..='\u{7bf}', '\u{7fb}'..='\u{7fc}',
- '\u{82e}'..='\u{82f}', '\u{83f}'..='\u{83f}', '\u{85c}'..='\u{85d}', '\u{85f}'..='\u{85f}',
- '\u{86b}'..='\u{86f}', '\u{892}'..='\u{896}', '\u{984}'..='\u{984}', '\u{98d}'..='\u{98e}',
- '\u{991}'..='\u{992}', '\u{9a9}'..='\u{9a9}', '\u{9b1}'..='\u{9b1}', '\u{9b3}'..='\u{9b5}',
- '\u{9ba}'..='\u{9bb}', '\u{9c5}'..='\u{9c6}', '\u{9c9}'..='\u{9ca}', '\u{9cf}'..='\u{9d6}',
- '\u{9d8}'..='\u{9db}', '\u{9de}'..='\u{9de}', '\u{9e4}'..='\u{9e5}', '\u{9ff}'..='\u{a00}',
- '\u{a04}'..='\u{a04}', '\u{a0b}'..='\u{a0e}', '\u{a11}'..='\u{a12}', '\u{a29}'..='\u{a29}',
- '\u{a31}'..='\u{a31}', '\u{a34}'..='\u{a34}', '\u{a37}'..='\u{a37}', '\u{a3a}'..='\u{a3b}',
- '\u{a3d}'..='\u{a3d}', '\u{a43}'..='\u{a46}', '\u{a49}'..='\u{a4a}', '\u{a4e}'..='\u{a50}',
- '\u{a52}'..='\u{a58}', '\u{a5d}'..='\u{a5d}', '\u{a5f}'..='\u{a65}', '\u{a77}'..='\u{a80}',
- '\u{a84}'..='\u{a84}', '\u{a8e}'..='\u{a8e}', '\u{a92}'..='\u{a92}', '\u{aa9}'..='\u{aa9}',
- '\u{ab1}'..='\u{ab1}', '\u{ab4}'..='\u{ab4}', '\u{aba}'..='\u{abb}', '\u{ac6}'..='\u{ac6}',
- '\u{aca}'..='\u{aca}', '\u{ace}'..='\u{acf}', '\u{ad1}'..='\u{adf}', '\u{ae4}'..='\u{ae5}',
- '\u{af2}'..='\u{af8}', '\u{b00}'..='\u{b00}', '\u{b04}'..='\u{b04}', '\u{b0d}'..='\u{b0e}',
- '\u{b11}'..='\u{b12}', '\u{b29}'..='\u{b29}', '\u{b31}'..='\u{b31}', '\u{b34}'..='\u{b34}',
- '\u{b3a}'..='\u{b3b}', '\u{b45}'..='\u{b46}', '\u{b49}'..='\u{b4a}', '\u{b4e}'..='\u{b54}',
- '\u{b58}'..='\u{b5b}', '\u{b5e}'..='\u{b5e}', '\u{b64}'..='\u{b65}', '\u{b78}'..='\u{b81}',
- '\u{b84}'..='\u{b84}', '\u{b8b}'..='\u{b8d}', '\u{b91}'..='\u{b91}', '\u{b96}'..='\u{b98}',
- '\u{b9b}'..='\u{b9b}', '\u{b9d}'..='\u{b9d}', '\u{ba0}'..='\u{ba2}', '\u{ba5}'..='\u{ba7}',
- '\u{bab}'..='\u{bad}', '\u{bba}'..='\u{bbd}', '\u{bc3}'..='\u{bc5}', '\u{bc9}'..='\u{bc9}',
- '\u{bce}'..='\u{bcf}', '\u{bd1}'..='\u{bd6}', '\u{bd8}'..='\u{be5}', '\u{bfb}'..='\u{bff}',
- '\u{c0d}'..='\u{c0d}', '\u{c11}'..='\u{c11}', '\u{c29}'..='\u{c29}', '\u{c3a}'..='\u{c3b}',
- '\u{c45}'..='\u{c45}', '\u{c49}'..='\u{c49}', '\u{c4e}'..='\u{c54}', '\u{c57}'..='\u{c57}',
- '\u{c5b}'..='\u{c5b}', '\u{c5e}'..='\u{c5f}', '\u{c64}'..='\u{c65}', '\u{c70}'..='\u{c76}',
- '\u{c8d}'..='\u{c8d}', '\u{c91}'..='\u{c91}', '\u{ca9}'..='\u{ca9}', '\u{cb4}'..='\u{cb4}',
- '\u{cba}'..='\u{cbb}', '\u{cc5}'..='\u{cc5}', '\u{cc9}'..='\u{cc9}', '\u{cce}'..='\u{cd4}',
- '\u{cd7}'..='\u{cdb}', '\u{cdf}'..='\u{cdf}', '\u{ce4}'..='\u{ce5}', '\u{cf0}'..='\u{cf0}',
- '\u{cf4}'..='\u{cff}', '\u{d0d}'..='\u{d0d}', '\u{d11}'..='\u{d11}', '\u{d45}'..='\u{d45}',
- '\u{d49}'..='\u{d49}', '\u{d50}'..='\u{d53}', '\u{d64}'..='\u{d65}', '\u{d80}'..='\u{d80}',
- '\u{d84}'..='\u{d84}', '\u{d97}'..='\u{d99}', '\u{db2}'..='\u{db2}', '\u{dbc}'..='\u{dbc}',
- '\u{dbe}'..='\u{dbf}', '\u{dc7}'..='\u{dc9}', '\u{dcb}'..='\u{dce}', '\u{dd5}'..='\u{dd5}',
- '\u{dd7}'..='\u{dd7}', '\u{de0}'..='\u{de5}', '\u{df0}'..='\u{df1}', '\u{df5}'..='\u{e00}',
- '\u{e3b}'..='\u{e3e}', '\u{e5c}'..='\u{e80}', '\u{e83}'..='\u{e83}', '\u{e85}'..='\u{e85}',
- '\u{e8b}'..='\u{e8b}', '\u{ea4}'..='\u{ea4}', '\u{ea6}'..='\u{ea6}', '\u{ebe}'..='\u{ebf}',
- '\u{ec5}'..='\u{ec5}', '\u{ec7}'..='\u{ec7}', '\u{ecf}'..='\u{ecf}', '\u{eda}'..='\u{edb}',
- '\u{ee0}'..='\u{eff}', '\u{f48}'..='\u{f48}', '\u{f6d}'..='\u{f70}', '\u{f98}'..='\u{f98}',
- '\u{fbd}'..='\u{fbd}', '\u{fcd}'..='\u{fcd}', '\u{fdb}'..='\u{fff}',
- '\u{10c6}'..='\u{10c6}', '\u{10c8}'..='\u{10cc}', '\u{10ce}'..='\u{10cf}',
- '\u{1249}'..='\u{1249}', '\u{124e}'..='\u{124f}', '\u{1257}'..='\u{1257}',
- '\u{1259}'..='\u{1259}', '\u{125e}'..='\u{125f}', '\u{1289}'..='\u{1289}',
- '\u{128e}'..='\u{128f}', '\u{12b1}'..='\u{12b1}', '\u{12b6}'..='\u{12b7}',
- '\u{12bf}'..='\u{12bf}', '\u{12c1}'..='\u{12c1}', '\u{12c6}'..='\u{12c7}',
- '\u{12d7}'..='\u{12d7}', '\u{1311}'..='\u{1311}', '\u{1316}'..='\u{1317}',
- '\u{135b}'..='\u{135c}', '\u{137d}'..='\u{137f}', '\u{139a}'..='\u{139f}',
- '\u{13f6}'..='\u{13f7}', '\u{13fe}'..='\u{13ff}', '\u{169d}'..='\u{169f}',
- '\u{16f9}'..='\u{16ff}', '\u{1716}'..='\u{171e}', '\u{1737}'..='\u{173f}',
- '\u{1754}'..='\u{175f}', '\u{176d}'..='\u{176d}', '\u{1771}'..='\u{1771}',
- '\u{1774}'..='\u{177f}', '\u{17de}'..='\u{17df}', '\u{17ea}'..='\u{17ef}',
- '\u{17fa}'..='\u{17ff}', '\u{181a}'..='\u{181f}', '\u{1879}'..='\u{187f}',
- '\u{18ab}'..='\u{18af}', '\u{18f6}'..='\u{18ff}', '\u{191f}'..='\u{191f}',
- '\u{192c}'..='\u{192f}', '\u{193c}'..='\u{193f}', '\u{1941}'..='\u{1943}',
- '\u{196e}'..='\u{196f}', '\u{1975}'..='\u{197f}', '\u{19ac}'..='\u{19af}',
- '\u{19ca}'..='\u{19cf}', '\u{19db}'..='\u{19dd}', '\u{1a1c}'..='\u{1a1d}',
- '\u{1a5f}'..='\u{1a5f}', '\u{1a7d}'..='\u{1a7e}', '\u{1a8a}'..='\u{1a8f}',
- '\u{1a9a}'..='\u{1a9f}', '\u{1aae}'..='\u{1aaf}', '\u{1ade}'..='\u{1adf}',
- '\u{1aec}'..='\u{1aff}', '\u{1b4d}'..='\u{1b4d}', '\u{1bf4}'..='\u{1bfb}',
- '\u{1c38}'..='\u{1c3a}', '\u{1c4a}'..='\u{1c4c}', '\u{1c8b}'..='\u{1c8f}',
- '\u{1cbb}'..='\u{1cbc}', '\u{1cc8}'..='\u{1ccf}', '\u{1cfb}'..='\u{1cff}',
- '\u{1f16}'..='\u{1f17}', '\u{1f1e}'..='\u{1f1f}', '\u{1f46}'..='\u{1f47}',
- '\u{1f4e}'..='\u{1f4f}', '\u{1f58}'..='\u{1f58}', '\u{1f5a}'..='\u{1f5a}',
- '\u{1f5c}'..='\u{1f5c}', '\u{1f5e}'..='\u{1f5e}', '\u{1f7e}'..='\u{1f7f}',
- '\u{1fb5}'..='\u{1fb5}', '\u{1fc5}'..='\u{1fc5}', '\u{1fd4}'..='\u{1fd5}',
- '\u{1fdc}'..='\u{1fdc}', '\u{1ff0}'..='\u{1ff1}', '\u{1ff5}'..='\u{1ff5}',
- '\u{1fff}'..='\u{1fff}', '\u{2065}'..='\u{2065}', '\u{2072}'..='\u{2073}',
- '\u{208f}'..='\u{208f}', '\u{209d}'..='\u{209f}', '\u{20c2}'..='\u{20cf}',
- '\u{20f1}'..='\u{20ff}', '\u{218c}'..='\u{218f}', '\u{242a}'..='\u{243f}',
- '\u{244b}'..='\u{245f}', '\u{2b74}'..='\u{2b75}', '\u{2cf4}'..='\u{2cf8}',
- '\u{2d26}'..='\u{2d26}', '\u{2d28}'..='\u{2d2c}', '\u{2d2e}'..='\u{2d2f}',
- '\u{2d68}'..='\u{2d6e}', '\u{2d71}'..='\u{2d7e}', '\u{2d97}'..='\u{2d9f}',
- '\u{2da7}'..='\u{2da7}', '\u{2daf}'..='\u{2daf}', '\u{2db7}'..='\u{2db7}',
- '\u{2dbf}'..='\u{2dbf}', '\u{2dc7}'..='\u{2dc7}', '\u{2dcf}'..='\u{2dcf}',
- '\u{2dd7}'..='\u{2dd7}', '\u{2ddf}'..='\u{2ddf}', '\u{2e5e}'..='\u{2e7f}',
+ '\u{3a2}'..='\u{3a2}', '\u{530}'..='\u{530}', '\u{557}'..='\u{557}', '\u{590}'..='\u{590}',
+ '\u{5ca}'..='\u{5cf}', '\u{5eb}'..='\u{5ee}', '\u{5f5}'..='\u{5ff}', '\u{70e}'..='\u{70e}',
+ '\u{74b}'..='\u{74c}', '\u{7b2}'..='\u{7bf}', '\u{7fb}'..='\u{7fc}', '\u{82e}'..='\u{82f}',
+ '\u{83f}'..='\u{83f}', '\u{85c}'..='\u{85d}', '\u{85f}'..='\u{85f}', '\u{86b}'..='\u{86f}',
+ '\u{892}'..='\u{896}', '\u{984}'..='\u{984}', '\u{98d}'..='\u{98e}', '\u{991}'..='\u{992}',
+ '\u{9a9}'..='\u{9a9}', '\u{9b1}'..='\u{9b1}', '\u{9b3}'..='\u{9b5}', '\u{9ba}'..='\u{9bb}',
+ '\u{9c5}'..='\u{9c6}', '\u{9c9}'..='\u{9ca}', '\u{9cf}'..='\u{9d6}', '\u{9d8}'..='\u{9db}',
+ '\u{9de}'..='\u{9de}', '\u{9e4}'..='\u{9e5}', '\u{9ff}'..='\u{a00}', '\u{a04}'..='\u{a04}',
+ '\u{a0b}'..='\u{a0e}', '\u{a11}'..='\u{a12}', '\u{a29}'..='\u{a29}', '\u{a31}'..='\u{a31}',
+ '\u{a34}'..='\u{a34}', '\u{a37}'..='\u{a37}', '\u{a3a}'..='\u{a3b}', '\u{a3d}'..='\u{a3d}',
+ '\u{a43}'..='\u{a46}', '\u{a49}'..='\u{a4a}', '\u{a4e}'..='\u{a50}', '\u{a52}'..='\u{a58}',
+ '\u{a5d}'..='\u{a5d}', '\u{a5f}'..='\u{a65}', '\u{a77}'..='\u{a80}', '\u{a84}'..='\u{a84}',
+ '\u{a8e}'..='\u{a8e}', '\u{a92}'..='\u{a92}', '\u{aa9}'..='\u{aa9}', '\u{ab1}'..='\u{ab1}',
+ '\u{ab4}'..='\u{ab4}', '\u{aba}'..='\u{abb}', '\u{ac6}'..='\u{ac6}', '\u{aca}'..='\u{aca}',
+ '\u{ace}'..='\u{acf}', '\u{ad1}'..='\u{adf}', '\u{ae4}'..='\u{ae5}', '\u{af2}'..='\u{af8}',
+ '\u{b00}'..='\u{b00}', '\u{b04}'..='\u{b04}', '\u{b0d}'..='\u{b0e}', '\u{b11}'..='\u{b12}',
+ '\u{b29}'..='\u{b29}', '\u{b31}'..='\u{b31}', '\u{b34}'..='\u{b34}', '\u{b3a}'..='\u{b3b}',
+ '\u{b45}'..='\u{b46}', '\u{b49}'..='\u{b4a}', '\u{b4e}'..='\u{b52}', '\u{b58}'..='\u{b5b}',
+ '\u{b5e}'..='\u{b5e}', '\u{b64}'..='\u{b65}', '\u{b78}'..='\u{b81}', '\u{b84}'..='\u{b84}',
+ '\u{b8b}'..='\u{b8d}', '\u{b91}'..='\u{b91}', '\u{b96}'..='\u{b98}', '\u{b9b}'..='\u{b9b}',
+ '\u{b9d}'..='\u{b9d}', '\u{ba0}'..='\u{ba2}', '\u{ba5}'..='\u{ba7}', '\u{bab}'..='\u{bad}',
+ '\u{bba}'..='\u{bbd}', '\u{bc3}'..='\u{bc5}', '\u{bc9}'..='\u{bc9}', '\u{bce}'..='\u{bcf}',
+ '\u{bd1}'..='\u{bd6}', '\u{bd8}'..='\u{be5}', '\u{bfb}'..='\u{bff}', '\u{c0d}'..='\u{c0d}',
+ '\u{c11}'..='\u{c11}', '\u{c29}'..='\u{c29}', '\u{c3a}'..='\u{c3b}', '\u{c45}'..='\u{c45}',
+ '\u{c49}'..='\u{c49}', '\u{c4e}'..='\u{c54}', '\u{c57}'..='\u{c57}', '\u{c5b}'..='\u{c5b}',
+ '\u{c5e}'..='\u{c5f}', '\u{c64}'..='\u{c65}', '\u{c70}'..='\u{c76}', '\u{c8d}'..='\u{c8d}',
+ '\u{c91}'..='\u{c91}', '\u{ca9}'..='\u{ca9}', '\u{cb4}'..='\u{cb4}', '\u{cba}'..='\u{cbb}',
+ '\u{cc5}'..='\u{cc5}', '\u{cc9}'..='\u{cc9}', '\u{cce}'..='\u{cd4}', '\u{cd7}'..='\u{cdb}',
+ '\u{cdf}'..='\u{cdf}', '\u{ce4}'..='\u{ce5}', '\u{cf0}'..='\u{cf0}', '\u{cf4}'..='\u{cff}',
+ '\u{d0d}'..='\u{d0d}', '\u{d11}'..='\u{d11}', '\u{d45}'..='\u{d45}', '\u{d49}'..='\u{d49}',
+ '\u{d50}'..='\u{d53}', '\u{d64}'..='\u{d65}', '\u{d80}'..='\u{d80}', '\u{d84}'..='\u{d84}',
+ '\u{d97}'..='\u{d99}', '\u{db2}'..='\u{db2}', '\u{dbc}'..='\u{dbc}', '\u{dbe}'..='\u{dbf}',
+ '\u{dc7}'..='\u{dc9}', '\u{dcb}'..='\u{dce}', '\u{dd5}'..='\u{dd5}', '\u{dd7}'..='\u{dd7}',
+ '\u{de0}'..='\u{de5}', '\u{df0}'..='\u{df1}', '\u{df5}'..='\u{e00}', '\u{e3b}'..='\u{e3e}',
+ '\u{e5c}'..='\u{e80}', '\u{e83}'..='\u{e83}', '\u{e85}'..='\u{e85}', '\u{e8b}'..='\u{e8b}',
+ '\u{ea4}'..='\u{ea4}', '\u{ea6}'..='\u{ea6}', '\u{ebe}'..='\u{ebf}', '\u{ec5}'..='\u{ec5}',
+ '\u{ec7}'..='\u{ec7}', '\u{ecf}'..='\u{ecf}', '\u{eda}'..='\u{edb}', '\u{ee0}'..='\u{eff}',
+ '\u{f48}'..='\u{f48}', '\u{f6d}'..='\u{f70}', '\u{f98}'..='\u{f98}', '\u{fbd}'..='\u{fbd}',
+ '\u{fcd}'..='\u{fcd}', '\u{fdb}'..='\u{fff}', '\u{10c6}'..='\u{10c6}',
+ '\u{10c8}'..='\u{10cc}', '\u{10ce}'..='\u{10cf}', '\u{1249}'..='\u{1249}',
+ '\u{124e}'..='\u{124f}', '\u{1257}'..='\u{1257}', '\u{1259}'..='\u{1259}',
+ '\u{125e}'..='\u{125f}', '\u{1289}'..='\u{1289}', '\u{128e}'..='\u{128f}',
+ '\u{12b1}'..='\u{12b1}', '\u{12b6}'..='\u{12b7}', '\u{12bf}'..='\u{12bf}',
+ '\u{12c1}'..='\u{12c1}', '\u{12c6}'..='\u{12c7}', '\u{12d7}'..='\u{12d7}',
+ '\u{1311}'..='\u{1311}', '\u{1316}'..='\u{1317}', '\u{135b}'..='\u{135c}',
+ '\u{137d}'..='\u{137f}', '\u{139a}'..='\u{139f}', '\u{13f6}'..='\u{13f7}',
+ '\u{13fe}'..='\u{13ff}', '\u{169d}'..='\u{169f}', '\u{16f9}'..='\u{16ff}',
+ '\u{1716}'..='\u{171e}', '\u{1737}'..='\u{173f}', '\u{1754}'..='\u{175f}',
+ '\u{176d}'..='\u{176d}', '\u{1771}'..='\u{1771}', '\u{1774}'..='\u{177f}',
+ '\u{17de}'..='\u{17df}', '\u{17ea}'..='\u{17ef}', '\u{17fa}'..='\u{17ff}',
+ '\u{181a}'..='\u{181f}', '\u{1879}'..='\u{187f}', '\u{18ab}'..='\u{18af}',
+ '\u{18f6}'..='\u{18ff}', '\u{191f}'..='\u{191f}', '\u{192c}'..='\u{192f}',
+ '\u{193c}'..='\u{193f}', '\u{1941}'..='\u{1943}', '\u{196e}'..='\u{196f}',
+ '\u{1975}'..='\u{197f}', '\u{19ac}'..='\u{19af}', '\u{19ca}'..='\u{19cf}',
+ '\u{19db}'..='\u{19dd}', '\u{1a1c}'..='\u{1a1d}', '\u{1a5f}'..='\u{1a5f}',
+ '\u{1a7d}'..='\u{1a7e}', '\u{1a8a}'..='\u{1a8f}', '\u{1a9a}'..='\u{1a9f}',
+ '\u{1aae}'..='\u{1aaf}', '\u{1af1}'..='\u{1aff}', '\u{1b4d}'..='\u{1b4d}',
+ '\u{1bf4}'..='\u{1bfb}', '\u{1c38}'..='\u{1c3a}', '\u{1c4a}'..='\u{1c4c}',
+ '\u{1c8b}'..='\u{1c8f}', '\u{1cbb}'..='\u{1cbc}', '\u{1cc8}'..='\u{1ccf}',
+ '\u{1cfb}'..='\u{1cff}', '\u{1f16}'..='\u{1f17}', '\u{1f1e}'..='\u{1f1f}',
+ '\u{1f46}'..='\u{1f47}', '\u{1f4e}'..='\u{1f4f}', '\u{1f58}'..='\u{1f58}',
+ '\u{1f5a}'..='\u{1f5a}', '\u{1f5c}'..='\u{1f5c}', '\u{1f5e}'..='\u{1f5e}',
+ '\u{1f7e}'..='\u{1f7f}', '\u{1fb5}'..='\u{1fb5}', '\u{1fc5}'..='\u{1fc5}',
+ '\u{1fd4}'..='\u{1fd5}', '\u{1fdc}'..='\u{1fdc}', '\u{1ff0}'..='\u{1ff1}',
+ '\u{1ff5}'..='\u{1ff5}', '\u{1fff}'..='\u{1fff}', '\u{2065}'..='\u{2065}',
+ '\u{2072}'..='\u{2073}', '\u{20c5}'..='\u{20cf}', '\u{20f1}'..='\u{20ff}',
+ '\u{218c}'..='\u{218f}', '\u{242a}'..='\u{243f}', '\u{244b}'..='\u{245f}',
+ '\u{2b74}'..='\u{2b75}', '\u{2cf4}'..='\u{2cf8}', '\u{2d26}'..='\u{2d26}',
+ '\u{2d28}'..='\u{2d2c}', '\u{2d2e}'..='\u{2d2f}', '\u{2d68}'..='\u{2d6e}',
+ '\u{2d71}'..='\u{2d7e}', '\u{2d97}'..='\u{2d9f}', '\u{2da7}'..='\u{2da7}',
+ '\u{2daf}'..='\u{2daf}', '\u{2db7}'..='\u{2db7}', '\u{2dbf}'..='\u{2dbf}',
+ '\u{2dc7}'..='\u{2dc7}', '\u{2dcf}'..='\u{2dcf}', '\u{2dd7}'..='\u{2dd7}',
+ '\u{2ddf}'..='\u{2ddf}', '\u{2e5e}'..='\u{2e5f}', '\u{2e64}'..='\u{2e7f}',
'\u{2e9a}'..='\u{2e9a}', '\u{2ef4}'..='\u{2eff}', '\u{2fd6}'..='\u{2fef}',
'\u{3040}'..='\u{3040}', '\u{3097}'..='\u{3098}', '\u{3100}'..='\u{3104}',
'\u{3130}'..='\u{3130}', '\u{318f}'..='\u{318f}', '\u{31e6}'..='\u{31ee}',
'\u{321f}'..='\u{321f}', '\u{a48d}'..='\u{a48f}', '\u{a4c7}'..='\u{a4cf}',
- '\u{a62c}'..='\u{a63f}', '\u{a6f8}'..='\u{a6ff}', '\u{a7dd}'..='\u{a7f0}',
- '\u{a82d}'..='\u{a82f}', '\u{a83a}'..='\u{a83f}', '\u{a878}'..='\u{a87f}',
- '\u{a8c6}'..='\u{a8cd}', '\u{a8da}'..='\u{a8df}', '\u{a954}'..='\u{a95e}',
- '\u{a97d}'..='\u{a97f}', '\u{a9ce}'..='\u{a9ce}', '\u{a9da}'..='\u{a9dd}',
- '\u{a9ff}'..='\u{a9ff}', '\u{aa37}'..='\u{aa3f}', '\u{aa4e}'..='\u{aa4f}',
- '\u{aa5a}'..='\u{aa5b}', '\u{aac3}'..='\u{aada}', '\u{aaf7}'..='\u{ab00}',
- '\u{ab07}'..='\u{ab08}', '\u{ab0f}'..='\u{ab10}', '\u{ab17}'..='\u{ab1f}',
- '\u{ab27}'..='\u{ab27}', '\u{ab2f}'..='\u{ab2f}', '\u{ab6c}'..='\u{ab6f}',
- '\u{abee}'..='\u{abef}', '\u{abfa}'..='\u{abff}', '\u{d7a4}'..='\u{d7af}',
- '\u{d7c7}'..='\u{d7ca}', '\u{d7fc}'..='\u{d7ff}', '\u{fa6e}'..='\u{fa6f}',
- '\u{fada}'..='\u{faff}', '\u{fb07}'..='\u{fb12}', '\u{fb18}'..='\u{fb1c}',
- '\u{fb37}'..='\u{fb37}', '\u{fb3d}'..='\u{fb3d}', '\u{fb3f}'..='\u{fb3f}',
- '\u{fb42}'..='\u{fb42}', '\u{fb45}'..='\u{fb45}', '\u{fdd0}'..='\u{fdef}',
- '\u{fe1a}'..='\u{fe1f}', '\u{fe53}'..='\u{fe53}', '\u{fe67}'..='\u{fe67}',
- '\u{fe6c}'..='\u{fe6f}', '\u{fe75}'..='\u{fe75}', '\u{fefd}'..='\u{fefe}',
- '\u{ff00}'..='\u{ff00}', '\u{ffbf}'..='\u{ffc1}', '\u{ffc8}'..='\u{ffc9}',
- '\u{ffd0}'..='\u{ffd1}', '\u{ffd8}'..='\u{ffd9}', '\u{ffdd}'..='\u{ffdf}',
- '\u{ffe7}'..='\u{ffe7}', '\u{ffef}'..='\u{fff8}', '\u{fffe}'..='\u{ffff}',
- '\u{1000c}'..='\u{1000c}', '\u{10027}'..='\u{10027}', '\u{1003b}'..='\u{1003b}',
- '\u{1003e}'..='\u{1003e}', '\u{1004e}'..='\u{1004f}', '\u{1005e}'..='\u{1007f}',
- '\u{100fb}'..='\u{100ff}', '\u{10103}'..='\u{10106}', '\u{10134}'..='\u{10136}',
- '\u{1018f}'..='\u{1018f}', '\u{1019d}'..='\u{1019f}', '\u{101a1}'..='\u{101cf}',
- '\u{101fe}'..='\u{1027f}', '\u{1029d}'..='\u{1029f}', '\u{102d1}'..='\u{102df}',
- '\u{102fc}'..='\u{102ff}', '\u{10324}'..='\u{1032c}', '\u{1034b}'..='\u{1034f}',
- '\u{1037b}'..='\u{1037f}', '\u{1039e}'..='\u{1039e}', '\u{103c4}'..='\u{103c7}',
- '\u{103d6}'..='\u{103ff}', '\u{1049e}'..='\u{1049f}', '\u{104aa}'..='\u{104af}',
- '\u{104d4}'..='\u{104d7}', '\u{104fc}'..='\u{104ff}', '\u{10528}'..='\u{1052f}',
- '\u{10564}'..='\u{1056e}', '\u{1057b}'..='\u{1057b}', '\u{1058b}'..='\u{1058b}',
- '\u{10593}'..='\u{10593}', '\u{10596}'..='\u{10596}', '\u{105a2}'..='\u{105a2}',
- '\u{105b2}'..='\u{105b2}', '\u{105ba}'..='\u{105ba}', '\u{105bd}'..='\u{105bf}',
- '\u{105f4}'..='\u{105ff}', '\u{10737}'..='\u{1073f}', '\u{10756}'..='\u{1075f}',
- '\u{10768}'..='\u{1077f}', '\u{10786}'..='\u{10786}', '\u{107b1}'..='\u{107b1}',
- '\u{107bb}'..='\u{107ff}', '\u{10806}'..='\u{10807}', '\u{10809}'..='\u{10809}',
- '\u{10836}'..='\u{10836}', '\u{10839}'..='\u{1083b}', '\u{1083d}'..='\u{1083e}',
- '\u{10856}'..='\u{10856}', '\u{1089f}'..='\u{108a6}', '\u{108b0}'..='\u{108df}',
- '\u{108f3}'..='\u{108f3}', '\u{108f6}'..='\u{108fa}', '\u{1091c}'..='\u{1091e}',
- '\u{1093a}'..='\u{1093e}', '\u{1095a}'..='\u{1097f}', '\u{109b8}'..='\u{109bb}',
- '\u{109d0}'..='\u{109d1}', '\u{10a04}'..='\u{10a04}', '\u{10a07}'..='\u{10a0b}',
- '\u{10a14}'..='\u{10a14}', '\u{10a18}'..='\u{10a18}', '\u{10a36}'..='\u{10a37}',
- '\u{10a3b}'..='\u{10a3e}', '\u{10a49}'..='\u{10a4f}', '\u{10a59}'..='\u{10a5f}',
- '\u{10aa0}'..='\u{10abf}', '\u{10ae7}'..='\u{10aea}', '\u{10af7}'..='\u{10aff}',
- '\u{10b36}'..='\u{10b38}', '\u{10b56}'..='\u{10b57}', '\u{10b73}'..='\u{10b77}',
- '\u{10b92}'..='\u{10b98}', '\u{10b9d}'..='\u{10ba8}', '\u{10bb0}'..='\u{10bff}',
- '\u{10c49}'..='\u{10c7f}', '\u{10cb3}'..='\u{10cbf}', '\u{10cf3}'..='\u{10cf9}',
- '\u{10d28}'..='\u{10d2f}', '\u{10d3a}'..='\u{10d3f}', '\u{10d66}'..='\u{10d68}',
- '\u{10d86}'..='\u{10d8d}', '\u{10d90}'..='\u{10e5f}', '\u{10e7f}'..='\u{10e7f}',
- '\u{10eaa}'..='\u{10eaa}', '\u{10eae}'..='\u{10eaf}', '\u{10eb2}'..='\u{10ec1}',
- '\u{10ec8}'..='\u{10ecf}', '\u{10ed9}'..='\u{10ef9}', '\u{10f28}'..='\u{10f2f}',
- '\u{10f5a}'..='\u{10f6f}', '\u{10f8a}'..='\u{10faf}', '\u{10fcc}'..='\u{10fdf}',
- '\u{10ff7}'..='\u{10fff}', '\u{1104e}'..='\u{11051}', '\u{11076}'..='\u{1107e}',
- '\u{110c3}'..='\u{110cc}', '\u{110ce}'..='\u{110cf}', '\u{110e9}'..='\u{110ef}',
- '\u{110fa}'..='\u{110ff}', '\u{11135}'..='\u{11135}', '\u{11148}'..='\u{1114f}',
- '\u{11177}'..='\u{1117f}', '\u{111e0}'..='\u{111e0}', '\u{111f5}'..='\u{111ff}',
- '\u{11212}'..='\u{11212}', '\u{11242}'..='\u{1127f}', '\u{11287}'..='\u{11287}',
- '\u{11289}'..='\u{11289}', '\u{1128e}'..='\u{1128e}', '\u{1129e}'..='\u{1129e}',
- '\u{112aa}'..='\u{112af}', '\u{112eb}'..='\u{112ef}', '\u{112fa}'..='\u{112ff}',
- '\u{11304}'..='\u{11304}', '\u{1130d}'..='\u{1130e}', '\u{11311}'..='\u{11312}',
- '\u{11329}'..='\u{11329}', '\u{11331}'..='\u{11331}', '\u{11334}'..='\u{11334}',
- '\u{1133a}'..='\u{1133a}', '\u{11345}'..='\u{11346}', '\u{11349}'..='\u{1134a}',
- '\u{1134e}'..='\u{1134f}', '\u{11351}'..='\u{11356}', '\u{11358}'..='\u{1135c}',
- '\u{11364}'..='\u{11365}', '\u{1136d}'..='\u{1136f}', '\u{11375}'..='\u{1137f}',
- '\u{1138a}'..='\u{1138a}', '\u{1138c}'..='\u{1138d}', '\u{1138f}'..='\u{1138f}',
- '\u{113b6}'..='\u{113b6}', '\u{113c1}'..='\u{113c1}', '\u{113c3}'..='\u{113c4}',
- '\u{113c6}'..='\u{113c6}', '\u{113cb}'..='\u{113cb}', '\u{113d6}'..='\u{113d6}',
- '\u{113d9}'..='\u{113e0}', '\u{113e3}'..='\u{113ff}', '\u{1145c}'..='\u{1145c}',
- '\u{11462}'..='\u{1147f}', '\u{114c8}'..='\u{114cf}', '\u{114da}'..='\u{1157f}',
- '\u{115b6}'..='\u{115b7}', '\u{115de}'..='\u{115ff}', '\u{11645}'..='\u{1164f}',
- '\u{1165a}'..='\u{1165f}', '\u{1166d}'..='\u{1167f}', '\u{116ba}'..='\u{116bf}',
- '\u{116ca}'..='\u{116cf}', '\u{116e4}'..='\u{116ff}', '\u{1171b}'..='\u{1171c}',
- '\u{1172c}'..='\u{1172f}', '\u{11747}'..='\u{117ff}', '\u{1183c}'..='\u{1189f}',
- '\u{118f3}'..='\u{118fe}', '\u{11907}'..='\u{11908}', '\u{1190a}'..='\u{1190b}',
- '\u{11914}'..='\u{11914}', '\u{11917}'..='\u{11917}', '\u{11936}'..='\u{11936}',
- '\u{11939}'..='\u{1193a}', '\u{11947}'..='\u{1194f}', '\u{1195a}'..='\u{1199f}',
- '\u{119a8}'..='\u{119a9}', '\u{119d8}'..='\u{119d9}', '\u{119e5}'..='\u{119ff}',
- '\u{11a48}'..='\u{11a4f}', '\u{11aa3}'..='\u{11aaf}', '\u{11af9}'..='\u{11aff}',
- '\u{11b0a}'..='\u{11b5f}', '\u{11b68}'..='\u{11bbf}', '\u{11be2}'..='\u{11bef}',
- '\u{11bfa}'..='\u{11bff}', '\u{11c09}'..='\u{11c09}', '\u{11c37}'..='\u{11c37}',
- '\u{11c46}'..='\u{11c4f}', '\u{11c6d}'..='\u{11c6f}', '\u{11c90}'..='\u{11c91}',
- '\u{11ca8}'..='\u{11ca8}', '\u{11cb7}'..='\u{11cff}', '\u{11d07}'..='\u{11d07}',
- '\u{11d0a}'..='\u{11d0a}', '\u{11d37}'..='\u{11d39}', '\u{11d3b}'..='\u{11d3b}',
- '\u{11d3e}'..='\u{11d3e}', '\u{11d48}'..='\u{11d4f}', '\u{11d5a}'..='\u{11d5f}',
- '\u{11d66}'..='\u{11d66}', '\u{11d69}'..='\u{11d69}', '\u{11d8f}'..='\u{11d8f}',
- '\u{11d92}'..='\u{11d92}', '\u{11d99}'..='\u{11d9f}', '\u{11daa}'..='\u{11daf}',
- '\u{11ddc}'..='\u{11ddf}', '\u{11dea}'..='\u{11edf}', '\u{11ef9}'..='\u{11eff}',
- '\u{11f11}'..='\u{11f11}', '\u{11f3b}'..='\u{11f3d}', '\u{11f5b}'..='\u{11faf}',
- '\u{11fb1}'..='\u{11fbf}', '\u{11ff2}'..='\u{11ffe}', '\u{1239a}'..='\u{123ff}',
- '\u{1246f}'..='\u{1246f}', '\u{12475}'..='\u{1247f}', '\u{12544}'..='\u{12f8f}',
- '\u{12ff3}'..='\u{12fff}', '\u{13456}'..='\u{1345f}', '\u{143fb}'..='\u{143ff}',
- '\u{14647}'..='\u{160ff}', '\u{1613a}'..='\u{167ff}', '\u{16a39}'..='\u{16a3f}',
- '\u{16a5f}'..='\u{16a5f}', '\u{16a6a}'..='\u{16a6d}', '\u{16abf}'..='\u{16abf}',
- '\u{16aca}'..='\u{16acf}', '\u{16aee}'..='\u{16aef}', '\u{16af6}'..='\u{16aff}',
- '\u{16b46}'..='\u{16b4f}', '\u{16b5a}'..='\u{16b5a}', '\u{16b62}'..='\u{16b62}',
- '\u{16b78}'..='\u{16b7c}', '\u{16b90}'..='\u{16d3f}', '\u{16d7a}'..='\u{16e3f}',
- '\u{16e9b}'..='\u{16e9f}', '\u{16eb9}'..='\u{16eba}', '\u{16ed4}'..='\u{16eff}',
- '\u{16f4b}'..='\u{16f4e}', '\u{16f88}'..='\u{16f8e}', '\u{16fa0}'..='\u{16fdf}',
- '\u{16fe5}'..='\u{16fef}', '\u{16ff7}'..='\u{16fff}', '\u{18cd6}'..='\u{18cfe}',
- '\u{18d1f}'..='\u{18d7f}', '\u{18df3}'..='\u{1afef}', '\u{1aff4}'..='\u{1aff4}',
- '\u{1affc}'..='\u{1affc}', '\u{1afff}'..='\u{1afff}', '\u{1b123}'..='\u{1b131}',
+ '\u{a62c}'..='\u{a63f}', '\u{a6f8}'..='\u{a6ff}', '\u{a7de}'..='\u{a7e1}',
+ '\u{a7e3}'..='\u{a7f0}', '\u{a82d}'..='\u{a82f}', '\u{a83a}'..='\u{a83f}',
+ '\u{a878}'..='\u{a87f}', '\u{a8c6}'..='\u{a8cd}', '\u{a8da}'..='\u{a8df}',
+ '\u{a954}'..='\u{a95e}', '\u{a97d}'..='\u{a97f}', '\u{a9ce}'..='\u{a9ce}',
+ '\u{a9da}'..='\u{a9dd}', '\u{a9ff}'..='\u{a9ff}', '\u{aa37}'..='\u{aa3f}',
+ '\u{aa4e}'..='\u{aa4f}', '\u{aa5a}'..='\u{aa5b}', '\u{aac3}'..='\u{aada}',
+ '\u{aaf7}'..='\u{ab00}', '\u{ab07}'..='\u{ab08}', '\u{ab0f}'..='\u{ab10}',
+ '\u{ab17}'..='\u{ab1f}', '\u{ab27}'..='\u{ab27}', '\u{ab2f}'..='\u{ab2f}',
+ '\u{ab6e}'..='\u{ab6f}', '\u{abee}'..='\u{abef}', '\u{abfa}'..='\u{abff}',
+ '\u{d7a4}'..='\u{d7af}', '\u{d7c7}'..='\u{d7ca}', '\u{d7fc}'..='\u{d7ff}',
+ '\u{fa6e}'..='\u{fa6f}', '\u{fada}'..='\u{faff}', '\u{fb07}'..='\u{fb12}',
+ '\u{fb18}'..='\u{fb1c}', '\u{fb37}'..='\u{fb37}', '\u{fb3d}'..='\u{fb3d}',
+ '\u{fb3f}'..='\u{fb3f}', '\u{fb42}'..='\u{fb42}', '\u{fb45}'..='\u{fb45}',
+ '\u{fdd0}'..='\u{fdef}', '\u{fe1a}'..='\u{fe1f}', '\u{fe53}'..='\u{fe53}',
+ '\u{fe67}'..='\u{fe67}', '\u{fe6c}'..='\u{fe6f}', '\u{fe75}'..='\u{fe75}',
+ '\u{fefd}'..='\u{fefe}', '\u{ff00}'..='\u{ff00}', '\u{ffbf}'..='\u{ffc1}',
+ '\u{ffc8}'..='\u{ffc9}', '\u{ffd0}'..='\u{ffd1}', '\u{ffd8}'..='\u{ffd9}',
+ '\u{ffdd}'..='\u{ffdf}', '\u{ffe7}'..='\u{ffe7}', '\u{ffef}'..='\u{fff8}',
+ '\u{fffe}'..='\u{ffff}', '\u{1000c}'..='\u{1000c}', '\u{10027}'..='\u{10027}',
+ '\u{1003b}'..='\u{1003b}', '\u{1003e}'..='\u{1003e}', '\u{1004e}'..='\u{1004f}',
+ '\u{1005e}'..='\u{1007f}', '\u{100fb}'..='\u{100ff}', '\u{10103}'..='\u{10106}',
+ '\u{10134}'..='\u{10136}', '\u{1018f}'..='\u{1018f}', '\u{1019d}'..='\u{1019f}',
+ '\u{101a1}'..='\u{101cf}', '\u{101fe}'..='\u{1027f}', '\u{1029d}'..='\u{1029f}',
+ '\u{102d1}'..='\u{102df}', '\u{102fc}'..='\u{102ff}', '\u{10324}'..='\u{1032c}',
+ '\u{1034b}'..='\u{1034f}', '\u{1037b}'..='\u{1037f}', '\u{1039e}'..='\u{1039e}',
+ '\u{103c4}'..='\u{103c7}', '\u{103d6}'..='\u{103ff}', '\u{1049e}'..='\u{1049f}',
+ '\u{104aa}'..='\u{104af}', '\u{104d4}'..='\u{104d7}', '\u{104fc}'..='\u{104ff}',
+ '\u{10528}'..='\u{1052f}', '\u{10564}'..='\u{1056e}', '\u{1057b}'..='\u{1057b}',
+ '\u{1058b}'..='\u{1058b}', '\u{10593}'..='\u{10593}', '\u{10596}'..='\u{10596}',
+ '\u{105a2}'..='\u{105a2}', '\u{105b2}'..='\u{105b2}', '\u{105ba}'..='\u{105ba}',
+ '\u{105bd}'..='\u{105bf}', '\u{105f4}'..='\u{105ff}', '\u{10737}'..='\u{1073f}',
+ '\u{10756}'..='\u{1075f}', '\u{10768}'..='\u{1077f}', '\u{10786}'..='\u{10786}',
+ '\u{107b1}'..='\u{107b1}', '\u{107c0}'..='\u{107ff}', '\u{10806}'..='\u{10807}',
+ '\u{10809}'..='\u{10809}', '\u{10836}'..='\u{10836}', '\u{10839}'..='\u{1083b}',
+ '\u{1083d}'..='\u{1083e}', '\u{10856}'..='\u{10856}', '\u{1089f}'..='\u{108a6}',
+ '\u{108b0}'..='\u{108df}', '\u{108f3}'..='\u{108f3}', '\u{108f6}'..='\u{108fa}',
+ '\u{1091c}'..='\u{1091e}', '\u{1093a}'..='\u{1093e}', '\u{1095a}'..='\u{1097f}',
+ '\u{109b8}'..='\u{109bb}', '\u{109d0}'..='\u{109d1}', '\u{10a04}'..='\u{10a04}',
+ '\u{10a07}'..='\u{10a0b}', '\u{10a14}'..='\u{10a14}', '\u{10a18}'..='\u{10a18}',
+ '\u{10a36}'..='\u{10a37}', '\u{10a3b}'..='\u{10a3e}', '\u{10a49}'..='\u{10a4f}',
+ '\u{10a59}'..='\u{10a5f}', '\u{10aa0}'..='\u{10abf}', '\u{10ae7}'..='\u{10aea}',
+ '\u{10af7}'..='\u{10aff}', '\u{10b36}'..='\u{10b38}', '\u{10b56}'..='\u{10b57}',
+ '\u{10b73}'..='\u{10b77}', '\u{10b92}'..='\u{10b98}', '\u{10b9d}'..='\u{10ba8}',
+ '\u{10bb0}'..='\u{10bff}', '\u{10c49}'..='\u{10c7f}', '\u{10cb3}'..='\u{10cbf}',
+ '\u{10cf3}'..='\u{10cf9}', '\u{10d28}'..='\u{10d2f}', '\u{10d3a}'..='\u{10d3f}',
+ '\u{10d66}'..='\u{10d68}', '\u{10d86}'..='\u{10d8d}', '\u{10d90}'..='\u{10e5f}',
+ '\u{10e7f}'..='\u{10e7f}', '\u{10eaa}'..='\u{10eaa}', '\u{10eae}'..='\u{10eaf}',
+ '\u{10eb2}'..='\u{10ec1}', '\u{10ec8}'..='\u{10ec8}', '\u{10eef}'..='\u{10eef}',
+ '\u{10f28}'..='\u{10f2f}', '\u{10f5a}'..='\u{10f6f}', '\u{10f8a}'..='\u{10faf}',
+ '\u{10fcc}'..='\u{10fdf}', '\u{10ff7}'..='\u{10fff}', '\u{1104e}'..='\u{11051}',
+ '\u{11076}'..='\u{1107e}', '\u{110c3}'..='\u{110cc}', '\u{110ce}'..='\u{110cf}',
+ '\u{110e9}'..='\u{110ef}', '\u{110fa}'..='\u{110ff}', '\u{11135}'..='\u{11135}',
+ '\u{11148}'..='\u{1114f}', '\u{11177}'..='\u{1117f}', '\u{111e0}'..='\u{111e0}',
+ '\u{111f5}'..='\u{111ff}', '\u{11212}'..='\u{11212}', '\u{11242}'..='\u{1127f}',
+ '\u{11287}'..='\u{11287}', '\u{11289}'..='\u{11289}', '\u{1128e}'..='\u{1128e}',
+ '\u{1129e}'..='\u{1129e}', '\u{112aa}'..='\u{112af}', '\u{112eb}'..='\u{112ef}',
+ '\u{112fa}'..='\u{112ff}', '\u{11304}'..='\u{11304}', '\u{1130d}'..='\u{1130e}',
+ '\u{11311}'..='\u{11312}', '\u{11329}'..='\u{11329}', '\u{11331}'..='\u{11331}',
+ '\u{11334}'..='\u{11334}', '\u{1133a}'..='\u{1133a}', '\u{11345}'..='\u{11346}',
+ '\u{11349}'..='\u{1134a}', '\u{1134e}'..='\u{1134f}', '\u{11351}'..='\u{11356}',
+ '\u{11358}'..='\u{1135c}', '\u{11364}'..='\u{11365}', '\u{1136d}'..='\u{1136f}',
+ '\u{11375}'..='\u{1137f}', '\u{1138a}'..='\u{1138a}', '\u{1138c}'..='\u{1138d}',
+ '\u{1138f}'..='\u{1138f}', '\u{113b6}'..='\u{113b6}', '\u{113c1}'..='\u{113c1}',
+ '\u{113c3}'..='\u{113c4}', '\u{113c6}'..='\u{113c6}', '\u{113cb}'..='\u{113cb}',
+ '\u{113d6}'..='\u{113d6}', '\u{113d9}'..='\u{113e0}', '\u{113e3}'..='\u{113ff}',
+ '\u{1145c}'..='\u{1145c}', '\u{11462}'..='\u{1147f}', '\u{114c8}'..='\u{114cf}',
+ '\u{114da}'..='\u{1157f}', '\u{115b6}'..='\u{115b7}', '\u{115de}'..='\u{115ff}',
+ '\u{11645}'..='\u{1164f}', '\u{1165a}'..='\u{1165f}', '\u{1166d}'..='\u{1167f}',
+ '\u{116ba}'..='\u{116bf}', '\u{116ca}'..='\u{116cf}', '\u{116e4}'..='\u{116ff}',
+ '\u{1171b}'..='\u{1171c}', '\u{1172c}'..='\u{1172f}', '\u{11747}'..='\u{117ff}',
+ '\u{1183c}'..='\u{1189f}', '\u{118f3}'..='\u{118fe}', '\u{11907}'..='\u{11908}',
+ '\u{1190a}'..='\u{1190b}', '\u{11914}'..='\u{11914}', '\u{11917}'..='\u{11917}',
+ '\u{11936}'..='\u{11936}', '\u{11939}'..='\u{1193a}', '\u{11947}'..='\u{1194f}',
+ '\u{1195a}'..='\u{1199f}', '\u{119a8}'..='\u{119a9}', '\u{119d8}'..='\u{119d9}',
+ '\u{119e5}'..='\u{119ff}', '\u{11a48}'..='\u{11a4f}', '\u{11aa3}'..='\u{11aaf}',
+ '\u{11af9}'..='\u{11aff}', '\u{11b0b}'..='\u{11b5f}', '\u{11b68}'..='\u{11bbf}',
+ '\u{11be2}'..='\u{11bef}', '\u{11bfa}'..='\u{11bff}', '\u{11c09}'..='\u{11c09}',
+ '\u{11c37}'..='\u{11c37}', '\u{11c46}'..='\u{11c4f}', '\u{11c6d}'..='\u{11c6f}',
+ '\u{11c90}'..='\u{11c91}', '\u{11ca8}'..='\u{11ca8}', '\u{11cb7}'..='\u{11cff}',
+ '\u{11d07}'..='\u{11d07}', '\u{11d0a}'..='\u{11d0a}', '\u{11d37}'..='\u{11d39}',
+ '\u{11d3b}'..='\u{11d3b}', '\u{11d3e}'..='\u{11d3e}', '\u{11d48}'..='\u{11d4f}',
+ '\u{11d5a}'..='\u{11d5f}', '\u{11d66}'..='\u{11d66}', '\u{11d69}'..='\u{11d69}',
+ '\u{11d8f}'..='\u{11d8f}', '\u{11d92}'..='\u{11d92}', '\u{11d99}'..='\u{11d9f}',
+ '\u{11daa}'..='\u{11daf}', '\u{11ddc}'..='\u{11ddf}', '\u{11dea}'..='\u{11def}',
+ '\u{11df2}'..='\u{11edf}', '\u{11ef9}'..='\u{11eff}', '\u{11f11}'..='\u{11f11}',
+ '\u{11f3b}'..='\u{11f3d}', '\u{11f5b}'..='\u{11faf}', '\u{11fb1}'..='\u{11fbf}',
+ '\u{11ff2}'..='\u{11ffe}', '\u{1239a}'..='\u{123ff}', '\u{12544}'..='\u{1254f}',
+ '\u{12687}'..='\u{12f8f}', '\u{12ff3}'..='\u{12fff}', '\u{13456}'..='\u{1345f}',
+ '\u{143fb}'..='\u{143ff}', '\u{14647}'..='\u{160ff}', '\u{1613a}'..='\u{167ff}',
+ '\u{16a39}'..='\u{16a3f}', '\u{16a5f}'..='\u{16a5f}', '\u{16a6a}'..='\u{16a6d}',
+ '\u{16abf}'..='\u{16abf}', '\u{16aca}'..='\u{16acf}', '\u{16aee}'..='\u{16aef}',
+ '\u{16af6}'..='\u{16aff}', '\u{16b46}'..='\u{16b4f}', '\u{16b5a}'..='\u{16b5a}',
+ '\u{16b62}'..='\u{16b62}', '\u{16b78}'..='\u{16b7c}', '\u{16b90}'..='\u{16d3f}',
+ '\u{16d7a}'..='\u{16e3f}', '\u{16e9b}'..='\u{16e9f}', '\u{16eb9}'..='\u{16eba}',
+ '\u{16ed4}'..='\u{16eff}', '\u{16f4b}'..='\u{16f4e}', '\u{16f88}'..='\u{16f8e}',
+ '\u{16fa0}'..='\u{16fdf}', '\u{16fe5}'..='\u{16fef}', '\u{16ff7}'..='\u{16fff}',
+ '\u{18cdb}'..='\u{18cfe}', '\u{18d21}'..='\u{18d7f}', '\u{18df3}'..='\u{18dff}',
+ '\u{19192}'..='\u{1919f}', '\u{191d3}'..='\u{1afef}', '\u{1aff4}'..='\u{1aff4}',
+ '\u{1affc}'..='\u{1affc}', '\u{1afff}'..='\u{1afff}', '\u{1b129}'..='\u{1b131}',
'\u{1b133}'..='\u{1b14f}', '\u{1b153}'..='\u{1b154}', '\u{1b156}'..='\u{1b163}',
- '\u{1b168}'..='\u{1b16f}', '\u{1b2fc}'..='\u{1bbff}', '\u{1bc6b}'..='\u{1bc6f}',
+ '\u{1b169}'..='\u{1b16f}', '\u{1b2fc}'..='\u{1bbff}', '\u{1bc6b}'..='\u{1bc6f}',
'\u{1bc7d}'..='\u{1bc7f}', '\u{1bc89}'..='\u{1bc8f}', '\u{1bc9a}'..='\u{1bc9b}',
'\u{1bca4}'..='\u{1cbff}', '\u{1ccfd}'..='\u{1ccff}', '\u{1ceb4}'..='\u{1ceb9}',
- '\u{1ced1}'..='\u{1cedf}', '\u{1cef1}'..='\u{1ceff}', '\u{1cf2e}'..='\u{1cf2f}',
- '\u{1cf47}'..='\u{1cf4f}', '\u{1cfc4}'..='\u{1cfff}', '\u{1d0f6}'..='\u{1d0ff}',
- '\u{1d127}'..='\u{1d128}', '\u{1d1eb}'..='\u{1d1ff}', '\u{1d246}'..='\u{1d2bf}',
+ '\u{1ced1}'..='\u{1ced1}', '\u{1ced5}'..='\u{1cedc}', '\u{1cefe}'..='\u{1ceff}',
+ '\u{1cf2e}'..='\u{1cf2f}', '\u{1cf47}'..='\u{1cf4f}', '\u{1cfc4}'..='\u{1cfff}',
+ '\u{1d0f6}'..='\u{1d0ff}', '\u{1d246}'..='\u{1d24f}', '\u{1d282}'..='\u{1d2bf}',
'\u{1d2d4}'..='\u{1d2df}', '\u{1d2f4}'..='\u{1d2ff}', '\u{1d357}'..='\u{1d35f}',
'\u{1d379}'..='\u{1d3ff}', '\u{1d455}'..='\u{1d455}', '\u{1d49d}'..='\u{1d49d}',
'\u{1d4a0}'..='\u{1d4a1}', '\u{1d4a3}'..='\u{1d4a4}', '\u{1d4a7}'..='\u{1d4a8}',
@@ -596,46 +602,46 @@ pub(super) static CN_PLANES_0_3: &[RangeInclusive; 730] = &[
'\u{1d4c4}'..='\u{1d4c4}', '\u{1d506}'..='\u{1d506}', '\u{1d50b}'..='\u{1d50c}',
'\u{1d515}'..='\u{1d515}', '\u{1d51d}'..='\u{1d51d}', '\u{1d53a}'..='\u{1d53a}',
'\u{1d53f}'..='\u{1d53f}', '\u{1d545}'..='\u{1d545}', '\u{1d547}'..='\u{1d549}',
- '\u{1d551}'..='\u{1d551}', '\u{1d6a6}'..='\u{1d6a7}', '\u{1d7cc}'..='\u{1d7cd}',
- '\u{1da8c}'..='\u{1da9a}', '\u{1daa0}'..='\u{1daa0}', '\u{1dab0}'..='\u{1deff}',
- '\u{1df1f}'..='\u{1df24}', '\u{1df2b}'..='\u{1dfff}', '\u{1e007}'..='\u{1e007}',
- '\u{1e019}'..='\u{1e01a}', '\u{1e022}'..='\u{1e022}', '\u{1e025}'..='\u{1e025}',
- '\u{1e02b}'..='\u{1e02f}', '\u{1e06e}'..='\u{1e08e}', '\u{1e090}'..='\u{1e0ff}',
- '\u{1e12d}'..='\u{1e12f}', '\u{1e13e}'..='\u{1e13f}', '\u{1e14a}'..='\u{1e14d}',
- '\u{1e150}'..='\u{1e28f}', '\u{1e2af}'..='\u{1e2bf}', '\u{1e2fa}'..='\u{1e2fe}',
- '\u{1e300}'..='\u{1e4cf}', '\u{1e4fa}'..='\u{1e5cf}', '\u{1e5fb}'..='\u{1e5fe}',
- '\u{1e600}'..='\u{1e6bf}', '\u{1e6df}'..='\u{1e6df}', '\u{1e6f6}'..='\u{1e6fd}',
- '\u{1e700}'..='\u{1e7df}', '\u{1e7e7}'..='\u{1e7e7}', '\u{1e7ec}'..='\u{1e7ec}',
- '\u{1e7ef}'..='\u{1e7ef}', '\u{1e7ff}'..='\u{1e7ff}', '\u{1e8c5}'..='\u{1e8c6}',
- '\u{1e8d7}'..='\u{1e8ff}', '\u{1e94c}'..='\u{1e94f}', '\u{1e95a}'..='\u{1e95d}',
- '\u{1e960}'..='\u{1ec70}', '\u{1ecb5}'..='\u{1ed00}', '\u{1ed3e}'..='\u{1edff}',
- '\u{1ee04}'..='\u{1ee04}', '\u{1ee20}'..='\u{1ee20}', '\u{1ee23}'..='\u{1ee23}',
- '\u{1ee25}'..='\u{1ee26}', '\u{1ee28}'..='\u{1ee28}', '\u{1ee33}'..='\u{1ee33}',
- '\u{1ee38}'..='\u{1ee38}', '\u{1ee3a}'..='\u{1ee3a}', '\u{1ee3c}'..='\u{1ee41}',
- '\u{1ee43}'..='\u{1ee46}', '\u{1ee48}'..='\u{1ee48}', '\u{1ee4a}'..='\u{1ee4a}',
- '\u{1ee4c}'..='\u{1ee4c}', '\u{1ee50}'..='\u{1ee50}', '\u{1ee53}'..='\u{1ee53}',
- '\u{1ee55}'..='\u{1ee56}', '\u{1ee58}'..='\u{1ee58}', '\u{1ee5a}'..='\u{1ee5a}',
- '\u{1ee5c}'..='\u{1ee5c}', '\u{1ee5e}'..='\u{1ee5e}', '\u{1ee60}'..='\u{1ee60}',
- '\u{1ee63}'..='\u{1ee63}', '\u{1ee65}'..='\u{1ee66}', '\u{1ee6b}'..='\u{1ee6b}',
- '\u{1ee73}'..='\u{1ee73}', '\u{1ee78}'..='\u{1ee78}', '\u{1ee7d}'..='\u{1ee7d}',
- '\u{1ee7f}'..='\u{1ee7f}', '\u{1ee8a}'..='\u{1ee8a}', '\u{1ee9c}'..='\u{1eea0}',
- '\u{1eea4}'..='\u{1eea4}', '\u{1eeaa}'..='\u{1eeaa}', '\u{1eebc}'..='\u{1eeef}',
- '\u{1eef2}'..='\u{1efff}', '\u{1f02c}'..='\u{1f02f}', '\u{1f094}'..='\u{1f09f}',
- '\u{1f0af}'..='\u{1f0b0}', '\u{1f0c0}'..='\u{1f0c0}', '\u{1f0d0}'..='\u{1f0d0}',
- '\u{1f0f6}'..='\u{1f0ff}', '\u{1f1ae}'..='\u{1f1e5}', '\u{1f203}'..='\u{1f20f}',
- '\u{1f23c}'..='\u{1f23f}', '\u{1f249}'..='\u{1f24f}', '\u{1f252}'..='\u{1f25f}',
- '\u{1f266}'..='\u{1f2ff}', '\u{1f6d9}'..='\u{1f6db}', '\u{1f6ed}'..='\u{1f6ef}',
- '\u{1f6fd}'..='\u{1f6ff}', '\u{1f7da}'..='\u{1f7df}', '\u{1f7ec}'..='\u{1f7ef}',
- '\u{1f7f1}'..='\u{1f7ff}', '\u{1f80c}'..='\u{1f80f}', '\u{1f848}'..='\u{1f84f}',
+ '\u{1d551}'..='\u{1d551}', '\u{1d6a7}'..='\u{1d6a7}', '\u{1d7cc}'..='\u{1d7cd}',
+ '\u{1da8c}'..='\u{1da9a}', '\u{1daa0}'..='\u{1daa0}', '\u{1dab0}'..='\u{1daff}',
+ '\u{1db1d}'..='\u{1deff}', '\u{1df82}'..='\u{1df8f}', '\u{1df97}'..='\u{1dfcc}',
+ '\u{1e007}'..='\u{1e007}', '\u{1e019}'..='\u{1e01a}', '\u{1e022}'..='\u{1e022}',
+ '\u{1e025}'..='\u{1e025}', '\u{1e02b}'..='\u{1e02f}', '\u{1e06e}'..='\u{1e08e}',
+ '\u{1e090}'..='\u{1e0ff}', '\u{1e12d}'..='\u{1e12f}', '\u{1e13e}'..='\u{1e13f}',
+ '\u{1e14a}'..='\u{1e14d}', '\u{1e150}'..='\u{1e28f}', '\u{1e2af}'..='\u{1e2bf}',
+ '\u{1e2fa}'..='\u{1e2fe}', '\u{1e300}'..='\u{1e4cf}', '\u{1e4fa}'..='\u{1e5cf}',
+ '\u{1e5fb}'..='\u{1e5fe}', '\u{1e600}'..='\u{1e6bf}', '\u{1e6df}'..='\u{1e6df}',
+ '\u{1e6f6}'..='\u{1e6fd}', '\u{1e700}'..='\u{1e7df}', '\u{1e7e7}'..='\u{1e7e7}',
+ '\u{1e7ec}'..='\u{1e7ec}', '\u{1e7ef}'..='\u{1e7ef}', '\u{1e7ff}'..='\u{1e7ff}',
+ '\u{1e8c5}'..='\u{1e8c6}', '\u{1e8d7}'..='\u{1e8ff}', '\u{1e94c}'..='\u{1e94f}',
+ '\u{1e95a}'..='\u{1e95d}', '\u{1e960}'..='\u{1ec70}', '\u{1ecb5}'..='\u{1ed00}',
+ '\u{1ed3e}'..='\u{1edff}', '\u{1ee04}'..='\u{1ee04}', '\u{1ee20}'..='\u{1ee20}',
+ '\u{1ee23}'..='\u{1ee23}', '\u{1ee25}'..='\u{1ee26}', '\u{1ee28}'..='\u{1ee28}',
+ '\u{1ee33}'..='\u{1ee33}', '\u{1ee38}'..='\u{1ee38}', '\u{1ee3a}'..='\u{1ee3a}',
+ '\u{1ee3c}'..='\u{1ee41}', '\u{1ee43}'..='\u{1ee46}', '\u{1ee48}'..='\u{1ee48}',
+ '\u{1ee4a}'..='\u{1ee4a}', '\u{1ee4c}'..='\u{1ee4c}', '\u{1ee50}'..='\u{1ee50}',
+ '\u{1ee53}'..='\u{1ee53}', '\u{1ee55}'..='\u{1ee56}', '\u{1ee58}'..='\u{1ee58}',
+ '\u{1ee5a}'..='\u{1ee5a}', '\u{1ee5c}'..='\u{1ee5c}', '\u{1ee5e}'..='\u{1ee5e}',
+ '\u{1ee60}'..='\u{1ee60}', '\u{1ee63}'..='\u{1ee63}', '\u{1ee65}'..='\u{1ee66}',
+ '\u{1ee6b}'..='\u{1ee6b}', '\u{1ee73}'..='\u{1ee73}', '\u{1ee78}'..='\u{1ee78}',
+ '\u{1ee7d}'..='\u{1ee7d}', '\u{1ee7f}'..='\u{1ee7f}', '\u{1ee8a}'..='\u{1ee8a}',
+ '\u{1ee9c}'..='\u{1eea0}', '\u{1eea4}'..='\u{1eea4}', '\u{1eeaa}'..='\u{1eeaa}',
+ '\u{1eebc}'..='\u{1eeef}', '\u{1eef2}'..='\u{1efff}', '\u{1f02c}'..='\u{1f02f}',
+ '\u{1f094}'..='\u{1f09f}', '\u{1f0af}'..='\u{1f0b0}', '\u{1f0c0}'..='\u{1f0c0}',
+ '\u{1f0d0}'..='\u{1f0d0}', '\u{1f0f6}'..='\u{1f0ff}', '\u{1f1af}'..='\u{1f1e5}',
+ '\u{1f203}'..='\u{1f20f}', '\u{1f23c}'..='\u{1f23f}', '\u{1f249}'..='\u{1f24f}',
+ '\u{1f252}'..='\u{1f25f}', '\u{1f266}'..='\u{1f2ff}', '\u{1f6da}'..='\u{1f6db}',
+ '\u{1f6ed}'..='\u{1f6ef}', '\u{1f6fd}'..='\u{1f6ff}', '\u{1f7dc}'..='\u{1f7df}',
+ '\u{1f7ec}'..='\u{1f7ef}', '\u{1f80c}'..='\u{1f80f}', '\u{1f848}'..='\u{1f84f}',
'\u{1f85a}'..='\u{1f85f}', '\u{1f888}'..='\u{1f88f}', '\u{1f8ae}'..='\u{1f8af}',
'\u{1f8bc}'..='\u{1f8bf}', '\u{1f8c2}'..='\u{1f8cf}', '\u{1f8d9}'..='\u{1f8ff}',
'\u{1fa58}'..='\u{1fa5f}', '\u{1fa6e}'..='\u{1fa6f}', '\u{1fa7d}'..='\u{1fa7f}',
- '\u{1fa8b}'..='\u{1fa8d}', '\u{1fac7}'..='\u{1fac7}', '\u{1fac9}'..='\u{1facc}',
- '\u{1fadd}'..='\u{1fade}', '\u{1faeb}'..='\u{1faee}', '\u{1faf9}'..='\u{1faff}',
- '\u{1fb93}'..='\u{1fb93}', '\u{1fbfb}'..='\u{1ffff}', '\u{2a6e0}'..='\u{2a6ff}',
- '\u{2b81e}'..='\u{2b81f}', '\u{2ceae}'..='\u{2ceaf}', '\u{2ebe1}'..='\u{2ebef}',
- '\u{2ee5e}'..='\u{2f7ff}', '\u{2fa1e}'..='\u{2ffff}', '\u{3134b}'..='\u{3134f}',
- '\u{3347a}'..='\u{3fffd}',
+ '\u{1fac7}'..='\u{1fac7}', '\u{1fac9}'..='\u{1facb}', '\u{1fade}'..='\u{1fade}',
+ '\u{1faec}'..='\u{1faee}', '\u{1fafb}'..='\u{1faff}', '\u{1fb93}'..='\u{1fb93}',
+ '\u{1fbfb}'..='\u{1ffff}', '\u{2a6e0}'..='\u{2a6ff}', '\u{2b81f}'..='\u{2b81f}',
+ '\u{2ceae}'..='\u{2ceaf}', '\u{2ebe1}'..='\u{2ebef}', '\u{2ee5e}'..='\u{2f7ff}',
+ '\u{2fa1e}'..='\u{2ffff}', '\u{3134b}'..='\u{3134f}', '\u{3347a}'..='\u{3cfff}',
+ '\u{3fc40}'..='\u{3fffd}',
];
#[rustfmt::skip]
@@ -649,9 +655,9 @@ pub(super) static DEFAULT_IGNORABLE_CODE_POINT: &[RangeInclusive; 17] = &[
];
#[rustfmt::skip]
-pub(super) static GRAPHEME_EXTEND: &[RangeInclusive; 383] = &[
+pub(super) static GRAPHEME_EXTEND: &[RangeInclusive; 389] = &[
'\u{300}'..='\u{36f}', '\u{483}'..='\u{489}', '\u{591}'..='\u{5bd}', '\u{5bf}'..='\u{5bf}',
- '\u{5c1}'..='\u{5c2}', '\u{5c4}'..='\u{5c5}', '\u{5c7}'..='\u{5c7}', '\u{610}'..='\u{61a}',
+ '\u{5c1}'..='\u{5c2}', '\u{5c4}'..='\u{5c5}', '\u{5c7}'..='\u{5c9}', '\u{610}'..='\u{61a}',
'\u{64b}'..='\u{65f}', '\u{670}'..='\u{670}', '\u{6d6}'..='\u{6dc}', '\u{6df}'..='\u{6e4}',
'\u{6e7}'..='\u{6e8}', '\u{6ea}'..='\u{6ed}', '\u{711}'..='\u{711}', '\u{730}'..='\u{74a}',
'\u{7a6}'..='\u{7b0}', '\u{7eb}'..='\u{7f3}', '\u{7fd}'..='\u{7fd}', '\u{816}'..='\u{819}',
@@ -665,7 +671,7 @@ pub(super) static GRAPHEME_EXTEND: &[RangeInclusive; 383] = &[
'\u{a75}'..='\u{a75}', '\u{a81}'..='\u{a82}', '\u{abc}'..='\u{abc}', '\u{ac1}'..='\u{ac5}',
'\u{ac7}'..='\u{ac8}', '\u{acd}'..='\u{acd}', '\u{ae2}'..='\u{ae3}', '\u{afa}'..='\u{aff}',
'\u{b01}'..='\u{b01}', '\u{b3c}'..='\u{b3c}', '\u{b3e}'..='\u{b3f}', '\u{b41}'..='\u{b44}',
- '\u{b4d}'..='\u{b4d}', '\u{b55}'..='\u{b57}', '\u{b62}'..='\u{b63}', '\u{b82}'..='\u{b82}',
+ '\u{b4d}'..='\u{b4d}', '\u{b53}'..='\u{b57}', '\u{b62}'..='\u{b63}', '\u{b82}'..='\u{b82}',
'\u{bbe}'..='\u{bbe}', '\u{bc0}'..='\u{bc0}', '\u{bcd}'..='\u{bcd}', '\u{bd7}'..='\u{bd7}',
'\u{c00}'..='\u{c00}', '\u{c04}'..='\u{c04}', '\u{c3c}'..='\u{c3c}', '\u{c3e}'..='\u{c40}',
'\u{c46}'..='\u{c48}', '\u{c4a}'..='\u{c4d}', '\u{c55}'..='\u{c56}', '\u{c62}'..='\u{c63}',
@@ -691,34 +697,34 @@ pub(super) static GRAPHEME_EXTEND: &[RangeInclusive; 383] = &[
'\u{1a17}'..='\u{1a18}', '\u{1a1b}'..='\u{1a1b}', '\u{1a56}'..='\u{1a56}',
'\u{1a58}'..='\u{1a5e}', '\u{1a60}'..='\u{1a60}', '\u{1a62}'..='\u{1a62}',
'\u{1a65}'..='\u{1a6c}', '\u{1a73}'..='\u{1a7c}', '\u{1a7f}'..='\u{1a7f}',
- '\u{1ab0}'..='\u{1add}', '\u{1ae0}'..='\u{1aeb}', '\u{1b00}'..='\u{1b03}',
- '\u{1b34}'..='\u{1b3d}', '\u{1b42}'..='\u{1b44}', '\u{1b6b}'..='\u{1b73}',
- '\u{1b80}'..='\u{1b81}', '\u{1ba2}'..='\u{1ba5}', '\u{1ba8}'..='\u{1bad}',
- '\u{1be6}'..='\u{1be6}', '\u{1be8}'..='\u{1be9}', '\u{1bed}'..='\u{1bed}',
- '\u{1bef}'..='\u{1bf3}', '\u{1c2c}'..='\u{1c33}', '\u{1c36}'..='\u{1c37}',
- '\u{1cd0}'..='\u{1cd2}', '\u{1cd4}'..='\u{1ce0}', '\u{1ce2}'..='\u{1ce8}',
- '\u{1ced}'..='\u{1ced}', '\u{1cf4}'..='\u{1cf4}', '\u{1cf8}'..='\u{1cf9}',
- '\u{1dc0}'..='\u{1dff}', '\u{200c}'..='\u{200c}', '\u{20d0}'..='\u{20f0}',
- '\u{2cef}'..='\u{2cf1}', '\u{2d7f}'..='\u{2d7f}', '\u{2de0}'..='\u{2dff}',
- '\u{302a}'..='\u{302f}', '\u{3099}'..='\u{309a}', '\u{a66f}'..='\u{a672}',
- '\u{a674}'..='\u{a67d}', '\u{a69e}'..='\u{a69f}', '\u{a6f0}'..='\u{a6f1}',
- '\u{a802}'..='\u{a802}', '\u{a806}'..='\u{a806}', '\u{a80b}'..='\u{a80b}',
- '\u{a825}'..='\u{a826}', '\u{a82c}'..='\u{a82c}', '\u{a8c4}'..='\u{a8c5}',
- '\u{a8e0}'..='\u{a8f1}', '\u{a8ff}'..='\u{a8ff}', '\u{a926}'..='\u{a92d}',
- '\u{a947}'..='\u{a951}', '\u{a953}'..='\u{a953}', '\u{a980}'..='\u{a982}',
- '\u{a9b3}'..='\u{a9b3}', '\u{a9b6}'..='\u{a9b9}', '\u{a9bc}'..='\u{a9bd}',
- '\u{a9c0}'..='\u{a9c0}', '\u{a9e5}'..='\u{a9e5}', '\u{aa29}'..='\u{aa2e}',
- '\u{aa31}'..='\u{aa32}', '\u{aa35}'..='\u{aa36}', '\u{aa43}'..='\u{aa43}',
- '\u{aa4c}'..='\u{aa4c}', '\u{aa7c}'..='\u{aa7c}', '\u{aab0}'..='\u{aab0}',
- '\u{aab2}'..='\u{aab4}', '\u{aab7}'..='\u{aab8}', '\u{aabe}'..='\u{aabf}',
- '\u{aac1}'..='\u{aac1}', '\u{aaec}'..='\u{aaed}', '\u{aaf6}'..='\u{aaf6}',
- '\u{abe5}'..='\u{abe5}', '\u{abe8}'..='\u{abe8}', '\u{abed}'..='\u{abed}',
- '\u{fb1e}'..='\u{fb1e}', '\u{fe00}'..='\u{fe0f}', '\u{fe20}'..='\u{fe2f}',
- '\u{ff9e}'..='\u{ff9f}', '\u{101fd}'..='\u{101fd}', '\u{102e0}'..='\u{102e0}',
- '\u{10376}'..='\u{1037a}', '\u{10a01}'..='\u{10a03}', '\u{10a05}'..='\u{10a06}',
- '\u{10a0c}'..='\u{10a0f}', '\u{10a38}'..='\u{10a3a}', '\u{10a3f}'..='\u{10a3f}',
- '\u{10ae5}'..='\u{10ae6}', '\u{10d24}'..='\u{10d27}', '\u{10d69}'..='\u{10d6d}',
- '\u{10eab}'..='\u{10eac}', '\u{10efa}'..='\u{10eff}', '\u{10f46}'..='\u{10f50}',
+ '\u{1ab0}'..='\u{1af0}', '\u{1b00}'..='\u{1b03}', '\u{1b34}'..='\u{1b3d}',
+ '\u{1b42}'..='\u{1b44}', '\u{1b6b}'..='\u{1b73}', '\u{1b80}'..='\u{1b81}',
+ '\u{1ba2}'..='\u{1ba5}', '\u{1ba8}'..='\u{1bad}', '\u{1be6}'..='\u{1be6}',
+ '\u{1be8}'..='\u{1be9}', '\u{1bed}'..='\u{1bed}', '\u{1bef}'..='\u{1bf3}',
+ '\u{1c2c}'..='\u{1c33}', '\u{1c36}'..='\u{1c37}', '\u{1cd0}'..='\u{1cd2}',
+ '\u{1cd4}'..='\u{1ce0}', '\u{1ce2}'..='\u{1ce8}', '\u{1ced}'..='\u{1ced}',
+ '\u{1cf4}'..='\u{1cf4}', '\u{1cf8}'..='\u{1cf9}', '\u{1dc0}'..='\u{1dff}',
+ '\u{200c}'..='\u{200c}', '\u{20d0}'..='\u{20f0}', '\u{2cef}'..='\u{2cf1}',
+ '\u{2d7f}'..='\u{2d7f}', '\u{2de0}'..='\u{2dff}', '\u{302a}'..='\u{302f}',
+ '\u{3099}'..='\u{309a}', '\u{a66f}'..='\u{a672}', '\u{a674}'..='\u{a67d}',
+ '\u{a69e}'..='\u{a69f}', '\u{a6f0}'..='\u{a6f1}', '\u{a802}'..='\u{a802}',
+ '\u{a806}'..='\u{a806}', '\u{a80b}'..='\u{a80b}', '\u{a825}'..='\u{a826}',
+ '\u{a82c}'..='\u{a82c}', '\u{a8c4}'..='\u{a8c5}', '\u{a8e0}'..='\u{a8f1}',
+ '\u{a8ff}'..='\u{a8ff}', '\u{a926}'..='\u{a92d}', '\u{a947}'..='\u{a951}',
+ '\u{a953}'..='\u{a953}', '\u{a980}'..='\u{a982}', '\u{a9b3}'..='\u{a9b3}',
+ '\u{a9b6}'..='\u{a9b9}', '\u{a9bc}'..='\u{a9bd}', '\u{a9c0}'..='\u{a9c0}',
+ '\u{a9e5}'..='\u{a9e5}', '\u{aa29}'..='\u{aa2e}', '\u{aa31}'..='\u{aa32}',
+ '\u{aa35}'..='\u{aa36}', '\u{aa43}'..='\u{aa43}', '\u{aa4c}'..='\u{aa4c}',
+ '\u{aa7c}'..='\u{aa7c}', '\u{aab0}'..='\u{aab0}', '\u{aab2}'..='\u{aab4}',
+ '\u{aab7}'..='\u{aab8}', '\u{aabe}'..='\u{aabf}', '\u{aac1}'..='\u{aac1}',
+ '\u{aaec}'..='\u{aaed}', '\u{aaf6}'..='\u{aaf6}', '\u{abe5}'..='\u{abe5}',
+ '\u{abe8}'..='\u{abe8}', '\u{abed}'..='\u{abed}', '\u{fb1e}'..='\u{fb1e}',
+ '\u{fe00}'..='\u{fe0f}', '\u{fe20}'..='\u{fe2f}', '\u{ff9e}'..='\u{ff9f}',
+ '\u{101fd}'..='\u{101fd}', '\u{102e0}'..='\u{102e0}', '\u{10376}'..='\u{1037a}',
+ '\u{10a01}'..='\u{10a03}', '\u{10a05}'..='\u{10a06}', '\u{10a0c}'..='\u{10a0f}',
+ '\u{10a38}'..='\u{10a3a}', '\u{10a3f}'..='\u{10a3f}', '\u{10ae5}'..='\u{10ae6}',
+ '\u{10d24}'..='\u{10d27}', '\u{10d69}'..='\u{10d6d}', '\u{10eab}'..='\u{10eac}',
+ '\u{10ecb}'..='\u{10ecf}', '\u{10ef0}'..='\u{10eff}', '\u{10f46}'..='\u{10f50}',
'\u{10f82}'..='\u{10f85}', '\u{11001}'..='\u{11001}', '\u{11038}'..='\u{11046}',
'\u{11070}'..='\u{11070}', '\u{11073}'..='\u{11074}', '\u{1107f}'..='\u{11081}',
'\u{110b3}'..='\u{110b6}', '\u{110b9}'..='\u{110ba}', '\u{110c2}'..='\u{110c2}',
@@ -752,14 +758,16 @@ pub(super) static GRAPHEME_EXTEND: &[RangeInclusive; 383] = &[
'\u{11cb5}'..='\u{11cb6}', '\u{11d31}'..='\u{11d36}', '\u{11d3a}'..='\u{11d3a}',
'\u{11d3c}'..='\u{11d3d}', '\u{11d3f}'..='\u{11d45}', '\u{11d47}'..='\u{11d47}',
'\u{11d90}'..='\u{11d91}', '\u{11d95}'..='\u{11d95}', '\u{11d97}'..='\u{11d97}',
- '\u{11ef3}'..='\u{11ef4}', '\u{11f00}'..='\u{11f01}', '\u{11f36}'..='\u{11f3a}',
- '\u{11f40}'..='\u{11f42}', '\u{11f5a}'..='\u{11f5a}', '\u{13440}'..='\u{13440}',
- '\u{13447}'..='\u{13455}', '\u{1611e}'..='\u{16129}', '\u{1612d}'..='\u{1612f}',
- '\u{16af0}'..='\u{16af4}', '\u{16b30}'..='\u{16b36}', '\u{16f4f}'..='\u{16f4f}',
- '\u{16f8f}'..='\u{16f92}', '\u{16fe4}'..='\u{16fe4}', '\u{16ff0}'..='\u{16ff1}',
- '\u{1bc9d}'..='\u{1bc9e}', '\u{1cf00}'..='\u{1cf2d}', '\u{1cf30}'..='\u{1cf46}',
- '\u{1d165}'..='\u{1d169}', '\u{1d16d}'..='\u{1d172}', '\u{1d17b}'..='\u{1d182}',
- '\u{1d185}'..='\u{1d18b}', '\u{1d1aa}'..='\u{1d1ad}', '\u{1d242}'..='\u{1d244}',
+ '\u{11df0}'..='\u{11df0}', '\u{11ef3}'..='\u{11ef4}', '\u{11f00}'..='\u{11f01}',
+ '\u{11f36}'..='\u{11f3a}', '\u{11f40}'..='\u{11f42}', '\u{11f5a}'..='\u{11f5a}',
+ '\u{13440}'..='\u{13440}', '\u{13447}'..='\u{13455}', '\u{1611e}'..='\u{16129}',
+ '\u{1612d}'..='\u{1612f}', '\u{16af0}'..='\u{16af4}', '\u{16b30}'..='\u{16b36}',
+ '\u{16f4f}'..='\u{16f4f}', '\u{16f8f}'..='\u{16f92}', '\u{16fe4}'..='\u{16fe4}',
+ '\u{16ff0}'..='\u{16ff1}', '\u{1bc9d}'..='\u{1bc9e}', '\u{1cf00}'..='\u{1cf2d}',
+ '\u{1cf30}'..='\u{1cf46}', '\u{1d127}'..='\u{1d128}', '\u{1d165}'..='\u{1d169}',
+ '\u{1d16d}'..='\u{1d172}', '\u{1d17b}'..='\u{1d182}', '\u{1d185}'..='\u{1d18b}',
+ '\u{1d1aa}'..='\u{1d1ad}', '\u{1d242}'..='\u{1d244}', '\u{1d250}'..='\u{1d252}',
+ '\u{1d25b}'..='\u{1d25c}', '\u{1d25f}'..='\u{1d25f}', '\u{1d280}'..='\u{1d281}',
'\u{1da00}'..='\u{1da36}', '\u{1da3b}'..='\u{1da6c}', '\u{1da75}'..='\u{1da75}',
'\u{1da84}'..='\u{1da84}', '\u{1da9b}'..='\u{1da9f}', '\u{1daa1}'..='\u{1daaf}',
'\u{1e000}'..='\u{1e006}', '\u{1e008}'..='\u{1e018}', '\u{1e01b}'..='\u{1e021}',
@@ -772,7 +780,7 @@ pub(super) static GRAPHEME_EXTEND: &[RangeInclusive; 383] = &[
];
#[rustfmt::skip]
-pub(super) static LOWERCASE: &[RangeInclusive; 676] = &[
+pub(super) static LOWERCASE: &[RangeInclusive; 695] = &[
'\u{aa}'..='\u{aa}', '\u{b5}'..='\u{b5}', '\u{ba}'..='\u{ba}', '\u{df}'..='\u{f6}',
'\u{f8}'..='\u{ff}', '\u{101}'..='\u{101}', '\u{103}'..='\u{103}', '\u{105}'..='\u{105}',
'\u{107}'..='\u{107}', '\u{109}'..='\u{109}', '\u{10b}'..='\u{10b}', '\u{10d}'..='\u{10d}',
@@ -841,140 +849,146 @@ pub(super) static LOWERCASE: &[RangeInclusive; 676] = &[
'\u{517}'..='\u{517}', '\u{519}'..='\u{519}', '\u{51b}'..='\u{51b}', '\u{51d}'..='\u{51d}',
'\u{51f}'..='\u{51f}', '\u{521}'..='\u{521}', '\u{523}'..='\u{523}', '\u{525}'..='\u{525}',
'\u{527}'..='\u{527}', '\u{529}'..='\u{529}', '\u{52b}'..='\u{52b}', '\u{52d}'..='\u{52d}',
- '\u{52f}'..='\u{52f}', '\u{560}'..='\u{588}', '\u{10d0}'..='\u{10fa}',
- '\u{10fc}'..='\u{10ff}', '\u{13f8}'..='\u{13fd}', '\u{1c80}'..='\u{1c88}',
- '\u{1c8a}'..='\u{1c8a}', '\u{1d00}'..='\u{1dbf}', '\u{1e01}'..='\u{1e01}',
- '\u{1e03}'..='\u{1e03}', '\u{1e05}'..='\u{1e05}', '\u{1e07}'..='\u{1e07}',
- '\u{1e09}'..='\u{1e09}', '\u{1e0b}'..='\u{1e0b}', '\u{1e0d}'..='\u{1e0d}',
- '\u{1e0f}'..='\u{1e0f}', '\u{1e11}'..='\u{1e11}', '\u{1e13}'..='\u{1e13}',
- '\u{1e15}'..='\u{1e15}', '\u{1e17}'..='\u{1e17}', '\u{1e19}'..='\u{1e19}',
- '\u{1e1b}'..='\u{1e1b}', '\u{1e1d}'..='\u{1e1d}', '\u{1e1f}'..='\u{1e1f}',
- '\u{1e21}'..='\u{1e21}', '\u{1e23}'..='\u{1e23}', '\u{1e25}'..='\u{1e25}',
- '\u{1e27}'..='\u{1e27}', '\u{1e29}'..='\u{1e29}', '\u{1e2b}'..='\u{1e2b}',
- '\u{1e2d}'..='\u{1e2d}', '\u{1e2f}'..='\u{1e2f}', '\u{1e31}'..='\u{1e31}',
- '\u{1e33}'..='\u{1e33}', '\u{1e35}'..='\u{1e35}', '\u{1e37}'..='\u{1e37}',
- '\u{1e39}'..='\u{1e39}', '\u{1e3b}'..='\u{1e3b}', '\u{1e3d}'..='\u{1e3d}',
- '\u{1e3f}'..='\u{1e3f}', '\u{1e41}'..='\u{1e41}', '\u{1e43}'..='\u{1e43}',
- '\u{1e45}'..='\u{1e45}', '\u{1e47}'..='\u{1e47}', '\u{1e49}'..='\u{1e49}',
- '\u{1e4b}'..='\u{1e4b}', '\u{1e4d}'..='\u{1e4d}', '\u{1e4f}'..='\u{1e4f}',
- '\u{1e51}'..='\u{1e51}', '\u{1e53}'..='\u{1e53}', '\u{1e55}'..='\u{1e55}',
- '\u{1e57}'..='\u{1e57}', '\u{1e59}'..='\u{1e59}', '\u{1e5b}'..='\u{1e5b}',
- '\u{1e5d}'..='\u{1e5d}', '\u{1e5f}'..='\u{1e5f}', '\u{1e61}'..='\u{1e61}',
- '\u{1e63}'..='\u{1e63}', '\u{1e65}'..='\u{1e65}', '\u{1e67}'..='\u{1e67}',
- '\u{1e69}'..='\u{1e69}', '\u{1e6b}'..='\u{1e6b}', '\u{1e6d}'..='\u{1e6d}',
- '\u{1e6f}'..='\u{1e6f}', '\u{1e71}'..='\u{1e71}', '\u{1e73}'..='\u{1e73}',
- '\u{1e75}'..='\u{1e75}', '\u{1e77}'..='\u{1e77}', '\u{1e79}'..='\u{1e79}',
- '\u{1e7b}'..='\u{1e7b}', '\u{1e7d}'..='\u{1e7d}', '\u{1e7f}'..='\u{1e7f}',
- '\u{1e81}'..='\u{1e81}', '\u{1e83}'..='\u{1e83}', '\u{1e85}'..='\u{1e85}',
- '\u{1e87}'..='\u{1e87}', '\u{1e89}'..='\u{1e89}', '\u{1e8b}'..='\u{1e8b}',
- '\u{1e8d}'..='\u{1e8d}', '\u{1e8f}'..='\u{1e8f}', '\u{1e91}'..='\u{1e91}',
- '\u{1e93}'..='\u{1e93}', '\u{1e95}'..='\u{1e9d}', '\u{1e9f}'..='\u{1e9f}',
- '\u{1ea1}'..='\u{1ea1}', '\u{1ea3}'..='\u{1ea3}', '\u{1ea5}'..='\u{1ea5}',
- '\u{1ea7}'..='\u{1ea7}', '\u{1ea9}'..='\u{1ea9}', '\u{1eab}'..='\u{1eab}',
- '\u{1ead}'..='\u{1ead}', '\u{1eaf}'..='\u{1eaf}', '\u{1eb1}'..='\u{1eb1}',
- '\u{1eb3}'..='\u{1eb3}', '\u{1eb5}'..='\u{1eb5}', '\u{1eb7}'..='\u{1eb7}',
- '\u{1eb9}'..='\u{1eb9}', '\u{1ebb}'..='\u{1ebb}', '\u{1ebd}'..='\u{1ebd}',
- '\u{1ebf}'..='\u{1ebf}', '\u{1ec1}'..='\u{1ec1}', '\u{1ec3}'..='\u{1ec3}',
- '\u{1ec5}'..='\u{1ec5}', '\u{1ec7}'..='\u{1ec7}', '\u{1ec9}'..='\u{1ec9}',
- '\u{1ecb}'..='\u{1ecb}', '\u{1ecd}'..='\u{1ecd}', '\u{1ecf}'..='\u{1ecf}',
- '\u{1ed1}'..='\u{1ed1}', '\u{1ed3}'..='\u{1ed3}', '\u{1ed5}'..='\u{1ed5}',
- '\u{1ed7}'..='\u{1ed7}', '\u{1ed9}'..='\u{1ed9}', '\u{1edb}'..='\u{1edb}',
- '\u{1edd}'..='\u{1edd}', '\u{1edf}'..='\u{1edf}', '\u{1ee1}'..='\u{1ee1}',
- '\u{1ee3}'..='\u{1ee3}', '\u{1ee5}'..='\u{1ee5}', '\u{1ee7}'..='\u{1ee7}',
- '\u{1ee9}'..='\u{1ee9}', '\u{1eeb}'..='\u{1eeb}', '\u{1eed}'..='\u{1eed}',
- '\u{1eef}'..='\u{1eef}', '\u{1ef1}'..='\u{1ef1}', '\u{1ef3}'..='\u{1ef3}',
- '\u{1ef5}'..='\u{1ef5}', '\u{1ef7}'..='\u{1ef7}', '\u{1ef9}'..='\u{1ef9}',
- '\u{1efb}'..='\u{1efb}', '\u{1efd}'..='\u{1efd}', '\u{1eff}'..='\u{1f07}',
- '\u{1f10}'..='\u{1f15}', '\u{1f20}'..='\u{1f27}', '\u{1f30}'..='\u{1f37}',
- '\u{1f40}'..='\u{1f45}', '\u{1f50}'..='\u{1f57}', '\u{1f60}'..='\u{1f67}',
- '\u{1f70}'..='\u{1f7d}', '\u{1f80}'..='\u{1f87}', '\u{1f90}'..='\u{1f97}',
- '\u{1fa0}'..='\u{1fa7}', '\u{1fb0}'..='\u{1fb4}', '\u{1fb6}'..='\u{1fb7}',
- '\u{1fbe}'..='\u{1fbe}', '\u{1fc2}'..='\u{1fc4}', '\u{1fc6}'..='\u{1fc7}',
- '\u{1fd0}'..='\u{1fd3}', '\u{1fd6}'..='\u{1fd7}', '\u{1fe0}'..='\u{1fe7}',
- '\u{1ff2}'..='\u{1ff4}', '\u{1ff6}'..='\u{1ff7}', '\u{2071}'..='\u{2071}',
- '\u{207f}'..='\u{207f}', '\u{2090}'..='\u{209c}', '\u{210a}'..='\u{210a}',
- '\u{210e}'..='\u{210f}', '\u{2113}'..='\u{2113}', '\u{212f}'..='\u{212f}',
- '\u{2134}'..='\u{2134}', '\u{2139}'..='\u{2139}', '\u{213c}'..='\u{213d}',
- '\u{2146}'..='\u{2149}', '\u{214e}'..='\u{214e}', '\u{2170}'..='\u{217f}',
- '\u{2184}'..='\u{2184}', '\u{24d0}'..='\u{24e9}', '\u{2c30}'..='\u{2c5f}',
- '\u{2c61}'..='\u{2c61}', '\u{2c65}'..='\u{2c66}', '\u{2c68}'..='\u{2c68}',
- '\u{2c6a}'..='\u{2c6a}', '\u{2c6c}'..='\u{2c6c}', '\u{2c71}'..='\u{2c71}',
- '\u{2c73}'..='\u{2c74}', '\u{2c76}'..='\u{2c7d}', '\u{2c81}'..='\u{2c81}',
- '\u{2c83}'..='\u{2c83}', '\u{2c85}'..='\u{2c85}', '\u{2c87}'..='\u{2c87}',
- '\u{2c89}'..='\u{2c89}', '\u{2c8b}'..='\u{2c8b}', '\u{2c8d}'..='\u{2c8d}',
- '\u{2c8f}'..='\u{2c8f}', '\u{2c91}'..='\u{2c91}', '\u{2c93}'..='\u{2c93}',
- '\u{2c95}'..='\u{2c95}', '\u{2c97}'..='\u{2c97}', '\u{2c99}'..='\u{2c99}',
- '\u{2c9b}'..='\u{2c9b}', '\u{2c9d}'..='\u{2c9d}', '\u{2c9f}'..='\u{2c9f}',
- '\u{2ca1}'..='\u{2ca1}', '\u{2ca3}'..='\u{2ca3}', '\u{2ca5}'..='\u{2ca5}',
- '\u{2ca7}'..='\u{2ca7}', '\u{2ca9}'..='\u{2ca9}', '\u{2cab}'..='\u{2cab}',
- '\u{2cad}'..='\u{2cad}', '\u{2caf}'..='\u{2caf}', '\u{2cb1}'..='\u{2cb1}',
- '\u{2cb3}'..='\u{2cb3}', '\u{2cb5}'..='\u{2cb5}', '\u{2cb7}'..='\u{2cb7}',
- '\u{2cb9}'..='\u{2cb9}', '\u{2cbb}'..='\u{2cbb}', '\u{2cbd}'..='\u{2cbd}',
- '\u{2cbf}'..='\u{2cbf}', '\u{2cc1}'..='\u{2cc1}', '\u{2cc3}'..='\u{2cc3}',
- '\u{2cc5}'..='\u{2cc5}', '\u{2cc7}'..='\u{2cc7}', '\u{2cc9}'..='\u{2cc9}',
- '\u{2ccb}'..='\u{2ccb}', '\u{2ccd}'..='\u{2ccd}', '\u{2ccf}'..='\u{2ccf}',
- '\u{2cd1}'..='\u{2cd1}', '\u{2cd3}'..='\u{2cd3}', '\u{2cd5}'..='\u{2cd5}',
- '\u{2cd7}'..='\u{2cd7}', '\u{2cd9}'..='\u{2cd9}', '\u{2cdb}'..='\u{2cdb}',
- '\u{2cdd}'..='\u{2cdd}', '\u{2cdf}'..='\u{2cdf}', '\u{2ce1}'..='\u{2ce1}',
- '\u{2ce3}'..='\u{2ce4}', '\u{2cec}'..='\u{2cec}', '\u{2cee}'..='\u{2cee}',
- '\u{2cf3}'..='\u{2cf3}', '\u{2d00}'..='\u{2d25}', '\u{2d27}'..='\u{2d27}',
- '\u{2d2d}'..='\u{2d2d}', '\u{a641}'..='\u{a641}', '\u{a643}'..='\u{a643}',
- '\u{a645}'..='\u{a645}', '\u{a647}'..='\u{a647}', '\u{a649}'..='\u{a649}',
- '\u{a64b}'..='\u{a64b}', '\u{a64d}'..='\u{a64d}', '\u{a64f}'..='\u{a64f}',
- '\u{a651}'..='\u{a651}', '\u{a653}'..='\u{a653}', '\u{a655}'..='\u{a655}',
- '\u{a657}'..='\u{a657}', '\u{a659}'..='\u{a659}', '\u{a65b}'..='\u{a65b}',
- '\u{a65d}'..='\u{a65d}', '\u{a65f}'..='\u{a65f}', '\u{a661}'..='\u{a661}',
- '\u{a663}'..='\u{a663}', '\u{a665}'..='\u{a665}', '\u{a667}'..='\u{a667}',
- '\u{a669}'..='\u{a669}', '\u{a66b}'..='\u{a66b}', '\u{a66d}'..='\u{a66d}',
- '\u{a681}'..='\u{a681}', '\u{a683}'..='\u{a683}', '\u{a685}'..='\u{a685}',
- '\u{a687}'..='\u{a687}', '\u{a689}'..='\u{a689}', '\u{a68b}'..='\u{a68b}',
- '\u{a68d}'..='\u{a68d}', '\u{a68f}'..='\u{a68f}', '\u{a691}'..='\u{a691}',
- '\u{a693}'..='\u{a693}', '\u{a695}'..='\u{a695}', '\u{a697}'..='\u{a697}',
- '\u{a699}'..='\u{a699}', '\u{a69b}'..='\u{a69d}', '\u{a723}'..='\u{a723}',
- '\u{a725}'..='\u{a725}', '\u{a727}'..='\u{a727}', '\u{a729}'..='\u{a729}',
- '\u{a72b}'..='\u{a72b}', '\u{a72d}'..='\u{a72d}', '\u{a72f}'..='\u{a731}',
- '\u{a733}'..='\u{a733}', '\u{a735}'..='\u{a735}', '\u{a737}'..='\u{a737}',
- '\u{a739}'..='\u{a739}', '\u{a73b}'..='\u{a73b}', '\u{a73d}'..='\u{a73d}',
- '\u{a73f}'..='\u{a73f}', '\u{a741}'..='\u{a741}', '\u{a743}'..='\u{a743}',
- '\u{a745}'..='\u{a745}', '\u{a747}'..='\u{a747}', '\u{a749}'..='\u{a749}',
- '\u{a74b}'..='\u{a74b}', '\u{a74d}'..='\u{a74d}', '\u{a74f}'..='\u{a74f}',
- '\u{a751}'..='\u{a751}', '\u{a753}'..='\u{a753}', '\u{a755}'..='\u{a755}',
- '\u{a757}'..='\u{a757}', '\u{a759}'..='\u{a759}', '\u{a75b}'..='\u{a75b}',
- '\u{a75d}'..='\u{a75d}', '\u{a75f}'..='\u{a75f}', '\u{a761}'..='\u{a761}',
- '\u{a763}'..='\u{a763}', '\u{a765}'..='\u{a765}', '\u{a767}'..='\u{a767}',
- '\u{a769}'..='\u{a769}', '\u{a76b}'..='\u{a76b}', '\u{a76d}'..='\u{a76d}',
- '\u{a76f}'..='\u{a778}', '\u{a77a}'..='\u{a77a}', '\u{a77c}'..='\u{a77c}',
- '\u{a77f}'..='\u{a77f}', '\u{a781}'..='\u{a781}', '\u{a783}'..='\u{a783}',
- '\u{a785}'..='\u{a785}', '\u{a787}'..='\u{a787}', '\u{a78c}'..='\u{a78c}',
- '\u{a78e}'..='\u{a78e}', '\u{a791}'..='\u{a791}', '\u{a793}'..='\u{a795}',
- '\u{a797}'..='\u{a797}', '\u{a799}'..='\u{a799}', '\u{a79b}'..='\u{a79b}',
- '\u{a79d}'..='\u{a79d}', '\u{a79f}'..='\u{a79f}', '\u{a7a1}'..='\u{a7a1}',
- '\u{a7a3}'..='\u{a7a3}', '\u{a7a5}'..='\u{a7a5}', '\u{a7a7}'..='\u{a7a7}',
- '\u{a7a9}'..='\u{a7a9}', '\u{a7af}'..='\u{a7af}', '\u{a7b5}'..='\u{a7b5}',
- '\u{a7b7}'..='\u{a7b7}', '\u{a7b9}'..='\u{a7b9}', '\u{a7bb}'..='\u{a7bb}',
- '\u{a7bd}'..='\u{a7bd}', '\u{a7bf}'..='\u{a7bf}', '\u{a7c1}'..='\u{a7c1}',
- '\u{a7c3}'..='\u{a7c3}', '\u{a7c8}'..='\u{a7c8}', '\u{a7ca}'..='\u{a7ca}',
- '\u{a7cd}'..='\u{a7cd}', '\u{a7cf}'..='\u{a7cf}', '\u{a7d1}'..='\u{a7d1}',
- '\u{a7d3}'..='\u{a7d3}', '\u{a7d5}'..='\u{a7d5}', '\u{a7d7}'..='\u{a7d7}',
- '\u{a7d9}'..='\u{a7d9}', '\u{a7db}'..='\u{a7db}', '\u{a7f1}'..='\u{a7f4}',
- '\u{a7f6}'..='\u{a7f6}', '\u{a7f8}'..='\u{a7fa}', '\u{ab30}'..='\u{ab5a}',
- '\u{ab5c}'..='\u{ab69}', '\u{ab70}'..='\u{abbf}', '\u{fb00}'..='\u{fb06}',
- '\u{fb13}'..='\u{fb17}', '\u{ff41}'..='\u{ff5a}', '\u{10428}'..='\u{1044f}',
- '\u{104d8}'..='\u{104fb}', '\u{10597}'..='\u{105a1}', '\u{105a3}'..='\u{105b1}',
- '\u{105b3}'..='\u{105b9}', '\u{105bb}'..='\u{105bc}', '\u{10780}'..='\u{10780}',
- '\u{10783}'..='\u{10785}', '\u{10787}'..='\u{107b0}', '\u{107b2}'..='\u{107ba}',
- '\u{10cc0}'..='\u{10cf2}', '\u{10d70}'..='\u{10d85}', '\u{118c0}'..='\u{118df}',
- '\u{16e60}'..='\u{16e7f}', '\u{16ebb}'..='\u{16ed3}', '\u{1d41a}'..='\u{1d433}',
- '\u{1d44e}'..='\u{1d454}', '\u{1d456}'..='\u{1d467}', '\u{1d482}'..='\u{1d49b}',
- '\u{1d4b6}'..='\u{1d4b9}', '\u{1d4bb}'..='\u{1d4bb}', '\u{1d4bd}'..='\u{1d4c3}',
- '\u{1d4c5}'..='\u{1d4cf}', '\u{1d4ea}'..='\u{1d503}', '\u{1d51e}'..='\u{1d537}',
- '\u{1d552}'..='\u{1d56b}', '\u{1d586}'..='\u{1d59f}', '\u{1d5ba}'..='\u{1d5d3}',
- '\u{1d5ee}'..='\u{1d607}', '\u{1d622}'..='\u{1d63b}', '\u{1d656}'..='\u{1d66f}',
- '\u{1d68a}'..='\u{1d6a5}', '\u{1d6c2}'..='\u{1d6da}', '\u{1d6dc}'..='\u{1d6e1}',
- '\u{1d6fc}'..='\u{1d714}', '\u{1d716}'..='\u{1d71b}', '\u{1d736}'..='\u{1d74e}',
- '\u{1d750}'..='\u{1d755}', '\u{1d770}'..='\u{1d788}', '\u{1d78a}'..='\u{1d78f}',
- '\u{1d7aa}'..='\u{1d7c2}', '\u{1d7c4}'..='\u{1d7c9}', '\u{1d7cb}'..='\u{1d7cb}',
- '\u{1df00}'..='\u{1df09}', '\u{1df0b}'..='\u{1df1e}', '\u{1df25}'..='\u{1df2a}',
+ '\u{52f}'..='\u{52f}', '\u{558}'..='\u{558}', '\u{560}'..='\u{588}', '\u{58b}'..='\u{58c}',
+ '\u{10d0}'..='\u{10fa}', '\u{10fc}'..='\u{10ff}', '\u{13f8}'..='\u{13fd}',
+ '\u{1c80}'..='\u{1c88}', '\u{1c8a}'..='\u{1c8a}', '\u{1d00}'..='\u{1dbf}',
+ '\u{1e01}'..='\u{1e01}', '\u{1e03}'..='\u{1e03}', '\u{1e05}'..='\u{1e05}',
+ '\u{1e07}'..='\u{1e07}', '\u{1e09}'..='\u{1e09}', '\u{1e0b}'..='\u{1e0b}',
+ '\u{1e0d}'..='\u{1e0d}', '\u{1e0f}'..='\u{1e0f}', '\u{1e11}'..='\u{1e11}',
+ '\u{1e13}'..='\u{1e13}', '\u{1e15}'..='\u{1e15}', '\u{1e17}'..='\u{1e17}',
+ '\u{1e19}'..='\u{1e19}', '\u{1e1b}'..='\u{1e1b}', '\u{1e1d}'..='\u{1e1d}',
+ '\u{1e1f}'..='\u{1e1f}', '\u{1e21}'..='\u{1e21}', '\u{1e23}'..='\u{1e23}',
+ '\u{1e25}'..='\u{1e25}', '\u{1e27}'..='\u{1e27}', '\u{1e29}'..='\u{1e29}',
+ '\u{1e2b}'..='\u{1e2b}', '\u{1e2d}'..='\u{1e2d}', '\u{1e2f}'..='\u{1e2f}',
+ '\u{1e31}'..='\u{1e31}', '\u{1e33}'..='\u{1e33}', '\u{1e35}'..='\u{1e35}',
+ '\u{1e37}'..='\u{1e37}', '\u{1e39}'..='\u{1e39}', '\u{1e3b}'..='\u{1e3b}',
+ '\u{1e3d}'..='\u{1e3d}', '\u{1e3f}'..='\u{1e3f}', '\u{1e41}'..='\u{1e41}',
+ '\u{1e43}'..='\u{1e43}', '\u{1e45}'..='\u{1e45}', '\u{1e47}'..='\u{1e47}',
+ '\u{1e49}'..='\u{1e49}', '\u{1e4b}'..='\u{1e4b}', '\u{1e4d}'..='\u{1e4d}',
+ '\u{1e4f}'..='\u{1e4f}', '\u{1e51}'..='\u{1e51}', '\u{1e53}'..='\u{1e53}',
+ '\u{1e55}'..='\u{1e55}', '\u{1e57}'..='\u{1e57}', '\u{1e59}'..='\u{1e59}',
+ '\u{1e5b}'..='\u{1e5b}', '\u{1e5d}'..='\u{1e5d}', '\u{1e5f}'..='\u{1e5f}',
+ '\u{1e61}'..='\u{1e61}', '\u{1e63}'..='\u{1e63}', '\u{1e65}'..='\u{1e65}',
+ '\u{1e67}'..='\u{1e67}', '\u{1e69}'..='\u{1e69}', '\u{1e6b}'..='\u{1e6b}',
+ '\u{1e6d}'..='\u{1e6d}', '\u{1e6f}'..='\u{1e6f}', '\u{1e71}'..='\u{1e71}',
+ '\u{1e73}'..='\u{1e73}', '\u{1e75}'..='\u{1e75}', '\u{1e77}'..='\u{1e77}',
+ '\u{1e79}'..='\u{1e79}', '\u{1e7b}'..='\u{1e7b}', '\u{1e7d}'..='\u{1e7d}',
+ '\u{1e7f}'..='\u{1e7f}', '\u{1e81}'..='\u{1e81}', '\u{1e83}'..='\u{1e83}',
+ '\u{1e85}'..='\u{1e85}', '\u{1e87}'..='\u{1e87}', '\u{1e89}'..='\u{1e89}',
+ '\u{1e8b}'..='\u{1e8b}', '\u{1e8d}'..='\u{1e8d}', '\u{1e8f}'..='\u{1e8f}',
+ '\u{1e91}'..='\u{1e91}', '\u{1e93}'..='\u{1e93}', '\u{1e95}'..='\u{1e9d}',
+ '\u{1e9f}'..='\u{1e9f}', '\u{1ea1}'..='\u{1ea1}', '\u{1ea3}'..='\u{1ea3}',
+ '\u{1ea5}'..='\u{1ea5}', '\u{1ea7}'..='\u{1ea7}', '\u{1ea9}'..='\u{1ea9}',
+ '\u{1eab}'..='\u{1eab}', '\u{1ead}'..='\u{1ead}', '\u{1eaf}'..='\u{1eaf}',
+ '\u{1eb1}'..='\u{1eb1}', '\u{1eb3}'..='\u{1eb3}', '\u{1eb5}'..='\u{1eb5}',
+ '\u{1eb7}'..='\u{1eb7}', '\u{1eb9}'..='\u{1eb9}', '\u{1ebb}'..='\u{1ebb}',
+ '\u{1ebd}'..='\u{1ebd}', '\u{1ebf}'..='\u{1ebf}', '\u{1ec1}'..='\u{1ec1}',
+ '\u{1ec3}'..='\u{1ec3}', '\u{1ec5}'..='\u{1ec5}', '\u{1ec7}'..='\u{1ec7}',
+ '\u{1ec9}'..='\u{1ec9}', '\u{1ecb}'..='\u{1ecb}', '\u{1ecd}'..='\u{1ecd}',
+ '\u{1ecf}'..='\u{1ecf}', '\u{1ed1}'..='\u{1ed1}', '\u{1ed3}'..='\u{1ed3}',
+ '\u{1ed5}'..='\u{1ed5}', '\u{1ed7}'..='\u{1ed7}', '\u{1ed9}'..='\u{1ed9}',
+ '\u{1edb}'..='\u{1edb}', '\u{1edd}'..='\u{1edd}', '\u{1edf}'..='\u{1edf}',
+ '\u{1ee1}'..='\u{1ee1}', '\u{1ee3}'..='\u{1ee3}', '\u{1ee5}'..='\u{1ee5}',
+ '\u{1ee7}'..='\u{1ee7}', '\u{1ee9}'..='\u{1ee9}', '\u{1eeb}'..='\u{1eeb}',
+ '\u{1eed}'..='\u{1eed}', '\u{1eef}'..='\u{1eef}', '\u{1ef1}'..='\u{1ef1}',
+ '\u{1ef3}'..='\u{1ef3}', '\u{1ef5}'..='\u{1ef5}', '\u{1ef7}'..='\u{1ef7}',
+ '\u{1ef9}'..='\u{1ef9}', '\u{1efb}'..='\u{1efb}', '\u{1efd}'..='\u{1efd}',
+ '\u{1eff}'..='\u{1f07}', '\u{1f10}'..='\u{1f15}', '\u{1f20}'..='\u{1f27}',
+ '\u{1f30}'..='\u{1f37}', '\u{1f40}'..='\u{1f45}', '\u{1f50}'..='\u{1f57}',
+ '\u{1f60}'..='\u{1f67}', '\u{1f70}'..='\u{1f7d}', '\u{1f80}'..='\u{1f87}',
+ '\u{1f90}'..='\u{1f97}', '\u{1fa0}'..='\u{1fa7}', '\u{1fb0}'..='\u{1fb4}',
+ '\u{1fb6}'..='\u{1fb7}', '\u{1fbe}'..='\u{1fbe}', '\u{1fc2}'..='\u{1fc4}',
+ '\u{1fc6}'..='\u{1fc7}', '\u{1fd0}'..='\u{1fd3}', '\u{1fd6}'..='\u{1fd7}',
+ '\u{1fe0}'..='\u{1fe7}', '\u{1ff2}'..='\u{1ff4}', '\u{1ff6}'..='\u{1ff7}',
+ '\u{2071}'..='\u{2071}', '\u{207f}'..='\u{207f}', '\u{2090}'..='\u{209f}',
+ '\u{210a}'..='\u{210a}', '\u{210e}'..='\u{210f}', '\u{2113}'..='\u{2113}',
+ '\u{212f}'..='\u{212f}', '\u{2134}'..='\u{2134}', '\u{2139}'..='\u{2139}',
+ '\u{213c}'..='\u{213d}', '\u{2146}'..='\u{2149}', '\u{214e}'..='\u{214e}',
+ '\u{2170}'..='\u{217f}', '\u{2184}'..='\u{2184}', '\u{24d0}'..='\u{24e9}',
+ '\u{2c30}'..='\u{2c5f}', '\u{2c61}'..='\u{2c61}', '\u{2c65}'..='\u{2c66}',
+ '\u{2c68}'..='\u{2c68}', '\u{2c6a}'..='\u{2c6a}', '\u{2c6c}'..='\u{2c6c}',
+ '\u{2c71}'..='\u{2c71}', '\u{2c73}'..='\u{2c74}', '\u{2c76}'..='\u{2c7d}',
+ '\u{2c81}'..='\u{2c81}', '\u{2c83}'..='\u{2c83}', '\u{2c85}'..='\u{2c85}',
+ '\u{2c87}'..='\u{2c87}', '\u{2c89}'..='\u{2c89}', '\u{2c8b}'..='\u{2c8b}',
+ '\u{2c8d}'..='\u{2c8d}', '\u{2c8f}'..='\u{2c8f}', '\u{2c91}'..='\u{2c91}',
+ '\u{2c93}'..='\u{2c93}', '\u{2c95}'..='\u{2c95}', '\u{2c97}'..='\u{2c97}',
+ '\u{2c99}'..='\u{2c99}', '\u{2c9b}'..='\u{2c9b}', '\u{2c9d}'..='\u{2c9d}',
+ '\u{2c9f}'..='\u{2c9f}', '\u{2ca1}'..='\u{2ca1}', '\u{2ca3}'..='\u{2ca3}',
+ '\u{2ca5}'..='\u{2ca5}', '\u{2ca7}'..='\u{2ca7}', '\u{2ca9}'..='\u{2ca9}',
+ '\u{2cab}'..='\u{2cab}', '\u{2cad}'..='\u{2cad}', '\u{2caf}'..='\u{2caf}',
+ '\u{2cb1}'..='\u{2cb1}', '\u{2cb3}'..='\u{2cb3}', '\u{2cb5}'..='\u{2cb5}',
+ '\u{2cb7}'..='\u{2cb7}', '\u{2cb9}'..='\u{2cb9}', '\u{2cbb}'..='\u{2cbb}',
+ '\u{2cbd}'..='\u{2cbd}', '\u{2cbf}'..='\u{2cbf}', '\u{2cc1}'..='\u{2cc1}',
+ '\u{2cc3}'..='\u{2cc3}', '\u{2cc5}'..='\u{2cc5}', '\u{2cc7}'..='\u{2cc7}',
+ '\u{2cc9}'..='\u{2cc9}', '\u{2ccb}'..='\u{2ccb}', '\u{2ccd}'..='\u{2ccd}',
+ '\u{2ccf}'..='\u{2ccf}', '\u{2cd1}'..='\u{2cd1}', '\u{2cd3}'..='\u{2cd3}',
+ '\u{2cd5}'..='\u{2cd5}', '\u{2cd7}'..='\u{2cd7}', '\u{2cd9}'..='\u{2cd9}',
+ '\u{2cdb}'..='\u{2cdb}', '\u{2cdd}'..='\u{2cdd}', '\u{2cdf}'..='\u{2cdf}',
+ '\u{2ce1}'..='\u{2ce1}', '\u{2ce3}'..='\u{2ce4}', '\u{2cec}'..='\u{2cec}',
+ '\u{2cee}'..='\u{2cee}', '\u{2cf3}'..='\u{2cf3}', '\u{2d00}'..='\u{2d25}',
+ '\u{2d27}'..='\u{2d27}', '\u{2d2d}'..='\u{2d2d}', '\u{a641}'..='\u{a641}',
+ '\u{a643}'..='\u{a643}', '\u{a645}'..='\u{a645}', '\u{a647}'..='\u{a647}',
+ '\u{a649}'..='\u{a649}', '\u{a64b}'..='\u{a64b}', '\u{a64d}'..='\u{a64d}',
+ '\u{a64f}'..='\u{a64f}', '\u{a651}'..='\u{a651}', '\u{a653}'..='\u{a653}',
+ '\u{a655}'..='\u{a655}', '\u{a657}'..='\u{a657}', '\u{a659}'..='\u{a659}',
+ '\u{a65b}'..='\u{a65b}', '\u{a65d}'..='\u{a65d}', '\u{a65f}'..='\u{a65f}',
+ '\u{a661}'..='\u{a661}', '\u{a663}'..='\u{a663}', '\u{a665}'..='\u{a665}',
+ '\u{a667}'..='\u{a667}', '\u{a669}'..='\u{a669}', '\u{a66b}'..='\u{a66b}',
+ '\u{a66d}'..='\u{a66d}', '\u{a681}'..='\u{a681}', '\u{a683}'..='\u{a683}',
+ '\u{a685}'..='\u{a685}', '\u{a687}'..='\u{a687}', '\u{a689}'..='\u{a689}',
+ '\u{a68b}'..='\u{a68b}', '\u{a68d}'..='\u{a68d}', '\u{a68f}'..='\u{a68f}',
+ '\u{a691}'..='\u{a691}', '\u{a693}'..='\u{a693}', '\u{a695}'..='\u{a695}',
+ '\u{a697}'..='\u{a697}', '\u{a699}'..='\u{a699}', '\u{a69b}'..='\u{a69d}',
+ '\u{a723}'..='\u{a723}', '\u{a725}'..='\u{a725}', '\u{a727}'..='\u{a727}',
+ '\u{a729}'..='\u{a729}', '\u{a72b}'..='\u{a72b}', '\u{a72d}'..='\u{a72d}',
+ '\u{a72f}'..='\u{a731}', '\u{a733}'..='\u{a733}', '\u{a735}'..='\u{a735}',
+ '\u{a737}'..='\u{a737}', '\u{a739}'..='\u{a739}', '\u{a73b}'..='\u{a73b}',
+ '\u{a73d}'..='\u{a73d}', '\u{a73f}'..='\u{a73f}', '\u{a741}'..='\u{a741}',
+ '\u{a743}'..='\u{a743}', '\u{a745}'..='\u{a745}', '\u{a747}'..='\u{a747}',
+ '\u{a749}'..='\u{a749}', '\u{a74b}'..='\u{a74b}', '\u{a74d}'..='\u{a74d}',
+ '\u{a74f}'..='\u{a74f}', '\u{a751}'..='\u{a751}', '\u{a753}'..='\u{a753}',
+ '\u{a755}'..='\u{a755}', '\u{a757}'..='\u{a757}', '\u{a759}'..='\u{a759}',
+ '\u{a75b}'..='\u{a75b}', '\u{a75d}'..='\u{a75d}', '\u{a75f}'..='\u{a75f}',
+ '\u{a761}'..='\u{a761}', '\u{a763}'..='\u{a763}', '\u{a765}'..='\u{a765}',
+ '\u{a767}'..='\u{a767}', '\u{a769}'..='\u{a769}', '\u{a76b}'..='\u{a76b}',
+ '\u{a76d}'..='\u{a76d}', '\u{a76f}'..='\u{a778}', '\u{a77a}'..='\u{a77a}',
+ '\u{a77c}'..='\u{a77c}', '\u{a77f}'..='\u{a77f}', '\u{a781}'..='\u{a781}',
+ '\u{a783}'..='\u{a783}', '\u{a785}'..='\u{a785}', '\u{a787}'..='\u{a787}',
+ '\u{a78c}'..='\u{a78c}', '\u{a78e}'..='\u{a78e}', '\u{a791}'..='\u{a791}',
+ '\u{a793}'..='\u{a795}', '\u{a797}'..='\u{a797}', '\u{a799}'..='\u{a799}',
+ '\u{a79b}'..='\u{a79b}', '\u{a79d}'..='\u{a79d}', '\u{a79f}'..='\u{a79f}',
+ '\u{a7a1}'..='\u{a7a1}', '\u{a7a3}'..='\u{a7a3}', '\u{a7a5}'..='\u{a7a5}',
+ '\u{a7a7}'..='\u{a7a7}', '\u{a7a9}'..='\u{a7a9}', '\u{a7af}'..='\u{a7af}',
+ '\u{a7b5}'..='\u{a7b5}', '\u{a7b7}'..='\u{a7b7}', '\u{a7b9}'..='\u{a7b9}',
+ '\u{a7bb}'..='\u{a7bb}', '\u{a7bd}'..='\u{a7bd}', '\u{a7bf}'..='\u{a7bf}',
+ '\u{a7c1}'..='\u{a7c1}', '\u{a7c3}'..='\u{a7c3}', '\u{a7c8}'..='\u{a7c8}',
+ '\u{a7ca}'..='\u{a7ca}', '\u{a7cd}'..='\u{a7cd}', '\u{a7cf}'..='\u{a7cf}',
+ '\u{a7d1}'..='\u{a7d1}', '\u{a7d3}'..='\u{a7d3}', '\u{a7d5}'..='\u{a7d5}',
+ '\u{a7d7}'..='\u{a7d7}', '\u{a7d9}'..='\u{a7d9}', '\u{a7db}'..='\u{a7db}',
+ '\u{a7f1}'..='\u{a7f4}', '\u{a7f6}'..='\u{a7f6}', '\u{a7f8}'..='\u{a7fa}',
+ '\u{ab30}'..='\u{ab5a}', '\u{ab5c}'..='\u{ab69}', '\u{ab70}'..='\u{abbf}',
+ '\u{fb00}'..='\u{fb06}', '\u{fb13}'..='\u{fb17}', '\u{ff41}'..='\u{ff5a}',
+ '\u{10428}'..='\u{1044f}', '\u{104d8}'..='\u{104fb}', '\u{10597}'..='\u{105a1}',
+ '\u{105a3}'..='\u{105b1}', '\u{105b3}'..='\u{105b9}', '\u{105bb}'..='\u{105bc}',
+ '\u{10780}'..='\u{10780}', '\u{10783}'..='\u{10785}', '\u{10787}'..='\u{107b0}',
+ '\u{107b2}'..='\u{107bf}', '\u{10cc0}'..='\u{10cf2}', '\u{10d70}'..='\u{10d85}',
+ '\u{118c0}'..='\u{118df}', '\u{16e60}'..='\u{16e7f}', '\u{16ebb}'..='\u{16ed3}',
+ '\u{1d41a}'..='\u{1d433}', '\u{1d44e}'..='\u{1d454}', '\u{1d456}'..='\u{1d467}',
+ '\u{1d482}'..='\u{1d49b}', '\u{1d4b6}'..='\u{1d4b9}', '\u{1d4bb}'..='\u{1d4bb}',
+ '\u{1d4bd}'..='\u{1d4c3}', '\u{1d4c5}'..='\u{1d4cf}', '\u{1d4ea}'..='\u{1d503}',
+ '\u{1d51e}'..='\u{1d537}', '\u{1d552}'..='\u{1d56b}', '\u{1d586}'..='\u{1d59f}',
+ '\u{1d5ba}'..='\u{1d5d3}', '\u{1d5ee}'..='\u{1d607}', '\u{1d622}'..='\u{1d63b}',
+ '\u{1d656}'..='\u{1d66f}', '\u{1d68a}'..='\u{1d6a6}', '\u{1d6c2}'..='\u{1d6da}',
+ '\u{1d6dc}'..='\u{1d6e1}', '\u{1d6fc}'..='\u{1d714}', '\u{1d716}'..='\u{1d71b}',
+ '\u{1d736}'..='\u{1d74e}', '\u{1d750}'..='\u{1d755}', '\u{1d770}'..='\u{1d788}',
+ '\u{1d78a}'..='\u{1d78f}', '\u{1d7aa}'..='\u{1d7c2}', '\u{1d7c4}'..='\u{1d7c9}',
+ '\u{1d7cb}'..='\u{1d7cb}', '\u{1df00}'..='\u{1df09}', '\u{1df0b}'..='\u{1df3f}',
+ '\u{1df41}'..='\u{1df47}', '\u{1df49}'..='\u{1df49}', '\u{1df4b}'..='\u{1df4c}',
+ '\u{1df4e}'..='\u{1df50}', '\u{1df52}'..='\u{1df67}', '\u{1df69}'..='\u{1df69}',
+ '\u{1df6b}'..='\u{1df6b}', '\u{1df6d}'..='\u{1df6d}', '\u{1df6f}'..='\u{1df71}',
+ '\u{1df73}'..='\u{1df73}', '\u{1df75}'..='\u{1df75}', '\u{1df77}'..='\u{1df77}',
+ '\u{1df79}'..='\u{1df79}', '\u{1df7b}'..='\u{1df7b}', '\u{1df7d}'..='\u{1df7d}',
+ '\u{1df7f}'..='\u{1df7f}', '\u{1df90}'..='\u{1df96}', '\u{1dfcd}'..='\u{1dfff}',
'\u{1e030}'..='\u{1e06d}', '\u{1e922}'..='\u{1e943}',
];
@@ -986,7 +1000,7 @@ pub(super) static LT: &[RangeInclusive; 10] = &[
];
#[rustfmt::skip]
-pub(super) static N: &[RangeInclusive; 145] = &[
+pub(super) static N: &[RangeInclusive; 147] = &[
'\u{b2}'..='\u{b3}', '\u{b9}'..='\u{b9}', '\u{bc}'..='\u{be}', '\u{660}'..='\u{669}',
'\u{6f0}'..='\u{6f9}', '\u{7c0}'..='\u{7c9}', '\u{966}'..='\u{96f}', '\u{9e6}'..='\u{9ef}',
'\u{9f4}'..='\u{9f9}', '\u{a66}'..='\u{a6f}', '\u{ae6}'..='\u{aef}', '\u{b66}'..='\u{b6f}',
@@ -1024,20 +1038,21 @@ pub(super) static N: &[RangeInclusive; 145] = &[
'\u{116d0}'..='\u{116e3}', '\u{11730}'..='\u{1173b}', '\u{118e0}'..='\u{118f2}',
'\u{11950}'..='\u{11959}', '\u{11bf0}'..='\u{11bf9}', '\u{11c50}'..='\u{11c6c}',
'\u{11d50}'..='\u{11d59}', '\u{11da0}'..='\u{11da9}', '\u{11de0}'..='\u{11de9}',
- '\u{11f50}'..='\u{11f59}', '\u{11fc0}'..='\u{11fd4}', '\u{12400}'..='\u{1246e}',
- '\u{16130}'..='\u{16139}', '\u{16a60}'..='\u{16a69}', '\u{16ac0}'..='\u{16ac9}',
- '\u{16b50}'..='\u{16b59}', '\u{16b5b}'..='\u{16b61}', '\u{16d70}'..='\u{16d79}',
- '\u{16e80}'..='\u{16e96}', '\u{16ff4}'..='\u{16ff6}', '\u{1ccf0}'..='\u{1ccf9}',
- '\u{1d2c0}'..='\u{1d2d3}', '\u{1d2e0}'..='\u{1d2f3}', '\u{1d360}'..='\u{1d378}',
- '\u{1d7ce}'..='\u{1d7ff}', '\u{1e140}'..='\u{1e149}', '\u{1e2f0}'..='\u{1e2f9}',
- '\u{1e4f0}'..='\u{1e4f9}', '\u{1e5f1}'..='\u{1e5fa}', '\u{1e8c7}'..='\u{1e8cf}',
- '\u{1e950}'..='\u{1e959}', '\u{1ec71}'..='\u{1ecab}', '\u{1ecad}'..='\u{1ecaf}',
- '\u{1ecb1}'..='\u{1ecb4}', '\u{1ed01}'..='\u{1ed2d}', '\u{1ed2f}'..='\u{1ed3d}',
- '\u{1f100}'..='\u{1f10c}', '\u{1fbf0}'..='\u{1fbf9}',
+ '\u{11f50}'..='\u{11f59}', '\u{11fc0}'..='\u{11fd4}', '\u{12400}'..='\u{1246f}',
+ '\u{12475}'..='\u{1247f}', '\u{12550}'..='\u{12686}', '\u{16130}'..='\u{16139}',
+ '\u{16a60}'..='\u{16a69}', '\u{16ac0}'..='\u{16ac9}', '\u{16b50}'..='\u{16b59}',
+ '\u{16b5b}'..='\u{16b61}', '\u{16d70}'..='\u{16d79}', '\u{16e80}'..='\u{16e96}',
+ '\u{16ff4}'..='\u{16ff6}', '\u{1ccf0}'..='\u{1ccf9}', '\u{1d2c0}'..='\u{1d2d3}',
+ '\u{1d2e0}'..='\u{1d2f3}', '\u{1d360}'..='\u{1d378}', '\u{1d7ce}'..='\u{1d7ff}',
+ '\u{1e140}'..='\u{1e149}', '\u{1e2f0}'..='\u{1e2f9}', '\u{1e4f0}'..='\u{1e4f9}',
+ '\u{1e5f1}'..='\u{1e5fa}', '\u{1e8c7}'..='\u{1e8cf}', '\u{1e950}'..='\u{1e959}',
+ '\u{1ec71}'..='\u{1ecab}', '\u{1ecad}'..='\u{1ecaf}', '\u{1ecb1}'..='\u{1ecb4}',
+ '\u{1ed01}'..='\u{1ed2d}', '\u{1ed2f}'..='\u{1ed3d}', '\u{1f100}'..='\u{1f10c}',
+ '\u{1fbf0}'..='\u{1fbf9}',
];
#[rustfmt::skip]
-pub(super) static UPPERCASE: &[RangeInclusive; 659] = &[
+pub(super) static UPPERCASE: &[RangeInclusive; 677] = &[
'\u{c0}'..='\u{d6}', '\u{d8}'..='\u{de}', '\u{100}'..='\u{100}', '\u{102}'..='\u{102}',
'\u{104}'..='\u{104}', '\u{106}'..='\u{106}', '\u{108}'..='\u{108}', '\u{10a}'..='\u{10a}',
'\u{10c}'..='\u{10c}', '\u{10e}'..='\u{10e}', '\u{110}'..='\u{110}', '\u{112}'..='\u{112}',
@@ -1219,21 +1234,27 @@ pub(super) static UPPERCASE: &[RangeInclusive; 659] = &[
'\u{a7c9}'..='\u{a7c9}', '\u{a7cb}'..='\u{a7cc}', '\u{a7ce}'..='\u{a7ce}',
'\u{a7d0}'..='\u{a7d0}', '\u{a7d2}'..='\u{a7d2}', '\u{a7d4}'..='\u{a7d4}',
'\u{a7d6}'..='\u{a7d6}', '\u{a7d8}'..='\u{a7d8}', '\u{a7da}'..='\u{a7da}',
- '\u{a7dc}'..='\u{a7dc}', '\u{a7f5}'..='\u{a7f5}', '\u{ff21}'..='\u{ff3a}',
- '\u{10400}'..='\u{10427}', '\u{104b0}'..='\u{104d3}', '\u{10570}'..='\u{1057a}',
- '\u{1057c}'..='\u{1058a}', '\u{1058c}'..='\u{10592}', '\u{10594}'..='\u{10595}',
- '\u{10c80}'..='\u{10cb2}', '\u{10d50}'..='\u{10d65}', '\u{118a0}'..='\u{118bf}',
- '\u{16e40}'..='\u{16e5f}', '\u{16ea0}'..='\u{16eb8}', '\u{1d400}'..='\u{1d419}',
- '\u{1d434}'..='\u{1d44d}', '\u{1d468}'..='\u{1d481}', '\u{1d49c}'..='\u{1d49c}',
- '\u{1d49e}'..='\u{1d49f}', '\u{1d4a2}'..='\u{1d4a2}', '\u{1d4a5}'..='\u{1d4a6}',
- '\u{1d4a9}'..='\u{1d4ac}', '\u{1d4ae}'..='\u{1d4b5}', '\u{1d4d0}'..='\u{1d4e9}',
- '\u{1d504}'..='\u{1d505}', '\u{1d507}'..='\u{1d50a}', '\u{1d50d}'..='\u{1d514}',
- '\u{1d516}'..='\u{1d51c}', '\u{1d538}'..='\u{1d539}', '\u{1d53b}'..='\u{1d53e}',
- '\u{1d540}'..='\u{1d544}', '\u{1d546}'..='\u{1d546}', '\u{1d54a}'..='\u{1d550}',
- '\u{1d56c}'..='\u{1d585}', '\u{1d5a0}'..='\u{1d5b9}', '\u{1d5d4}'..='\u{1d5ed}',
- '\u{1d608}'..='\u{1d621}', '\u{1d63c}'..='\u{1d655}', '\u{1d670}'..='\u{1d689}',
- '\u{1d6a8}'..='\u{1d6c0}', '\u{1d6e2}'..='\u{1d6fa}', '\u{1d71c}'..='\u{1d734}',
- '\u{1d756}'..='\u{1d76e}', '\u{1d790}'..='\u{1d7a8}', '\u{1d7ca}'..='\u{1d7ca}',
+ '\u{a7dc}'..='\u{a7dd}', '\u{a7e2}'..='\u{a7e2}', '\u{a7f5}'..='\u{a7f5}',
+ '\u{ab6c}'..='\u{ab6d}', '\u{ff21}'..='\u{ff3a}', '\u{10400}'..='\u{10427}',
+ '\u{104b0}'..='\u{104d3}', '\u{10570}'..='\u{1057a}', '\u{1057c}'..='\u{1058a}',
+ '\u{1058c}'..='\u{10592}', '\u{10594}'..='\u{10595}', '\u{10c80}'..='\u{10cb2}',
+ '\u{10d50}'..='\u{10d65}', '\u{118a0}'..='\u{118bf}', '\u{16e40}'..='\u{16e5f}',
+ '\u{16ea0}'..='\u{16eb8}', '\u{1d400}'..='\u{1d419}', '\u{1d434}'..='\u{1d44d}',
+ '\u{1d468}'..='\u{1d481}', '\u{1d49c}'..='\u{1d49c}', '\u{1d49e}'..='\u{1d49f}',
+ '\u{1d4a2}'..='\u{1d4a2}', '\u{1d4a5}'..='\u{1d4a6}', '\u{1d4a9}'..='\u{1d4ac}',
+ '\u{1d4ae}'..='\u{1d4b5}', '\u{1d4d0}'..='\u{1d4e9}', '\u{1d504}'..='\u{1d505}',
+ '\u{1d507}'..='\u{1d50a}', '\u{1d50d}'..='\u{1d514}', '\u{1d516}'..='\u{1d51c}',
+ '\u{1d538}'..='\u{1d539}', '\u{1d53b}'..='\u{1d53e}', '\u{1d540}'..='\u{1d544}',
+ '\u{1d546}'..='\u{1d546}', '\u{1d54a}'..='\u{1d550}', '\u{1d56c}'..='\u{1d585}',
+ '\u{1d5a0}'..='\u{1d5b9}', '\u{1d5d4}'..='\u{1d5ed}', '\u{1d608}'..='\u{1d621}',
+ '\u{1d63c}'..='\u{1d655}', '\u{1d670}'..='\u{1d689}', '\u{1d6a8}'..='\u{1d6c0}',
+ '\u{1d6e2}'..='\u{1d6fa}', '\u{1d71c}'..='\u{1d734}', '\u{1d756}'..='\u{1d76e}',
+ '\u{1d790}'..='\u{1d7a8}', '\u{1d7ca}'..='\u{1d7ca}', '\u{1df40}'..='\u{1df40}',
+ '\u{1df48}'..='\u{1df48}', '\u{1df4a}'..='\u{1df4a}', '\u{1df4d}'..='\u{1df4d}',
+ '\u{1df51}'..='\u{1df51}', '\u{1df68}'..='\u{1df68}', '\u{1df6a}'..='\u{1df6a}',
+ '\u{1df6c}'..='\u{1df6c}', '\u{1df6e}'..='\u{1df6e}', '\u{1df72}'..='\u{1df72}',
+ '\u{1df74}'..='\u{1df74}', '\u{1df76}'..='\u{1df76}', '\u{1df78}'..='\u{1df78}',
+ '\u{1df7a}'..='\u{1df7a}', '\u{1df7c}'..='\u{1df7c}', '\u{1df7e}'..='\u{1df7e}',
'\u{1e900}'..='\u{1e921}', '\u{1f130}'..='\u{1f149}', '\u{1f150}'..='\u{1f169}',
'\u{1f170}'..='\u{1f189}',
];
@@ -1246,7 +1267,7 @@ pub(super) static WHITE_SPACE: &[RangeInclusive; 8] = &[
];
#[rustfmt::skip]
-pub(super) static TO_LOWER: &[(char, [char; 3]); 1462] = &[
+pub(super) static TO_LOWER: &[(char, [char; 3]); 1482] = &[
('\u{c0}', ['\u{e0}', '\u{0}', '\u{0}']), ('\u{c1}', ['\u{e1}', '\u{0}', '\u{0}']),
('\u{c2}', ['\u{e2}', '\u{0}', '\u{0}']), ('\u{c3}', ['\u{e3}', '\u{0}', '\u{0}']),
('\u{c4}', ['\u{e4}', '\u{0}', '\u{0}']), ('\u{c5}', ['\u{e5}', '\u{0}', '\u{0}']),
@@ -1811,7 +1832,9 @@ pub(super) static TO_LOWER: &[(char, [char; 3]); 1462] = &[
('\u{a7d2}', ['\u{a7d3}', '\u{0}', '\u{0}']), ('\u{a7d4}', ['\u{a7d5}', '\u{0}', '\u{0}']),
('\u{a7d6}', ['\u{a7d7}', '\u{0}', '\u{0}']), ('\u{a7d8}', ['\u{a7d9}', '\u{0}', '\u{0}']),
('\u{a7da}', ['\u{a7db}', '\u{0}', '\u{0}']), ('\u{a7dc}', ['\u{19b}', '\u{0}', '\u{0}']),
- ('\u{a7f5}', ['\u{a7f6}', '\u{0}', '\u{0}']), ('\u{ff21}', ['\u{ff41}', '\u{0}', '\u{0}']),
+ ('\u{a7dd}', ['\u{277}', '\u{0}', '\u{0}']), ('\u{a7e2}', ['\u{27c}', '\u{0}', '\u{0}']),
+ ('\u{a7f5}', ['\u{a7f6}', '\u{0}', '\u{0}']), ('\u{ab6c}', ['\u{ab4b}', '\u{0}', '\u{0}']),
+ ('\u{ab6d}', ['\u{ab4c}', '\u{0}', '\u{0}']), ('\u{ff21}', ['\u{ff41}', '\u{0}', '\u{0}']),
('\u{ff22}', ['\u{ff42}', '\u{0}', '\u{0}']), ('\u{ff23}', ['\u{ff43}', '\u{0}', '\u{0}']),
('\u{ff24}', ['\u{ff44}', '\u{0}', '\u{0}']), ('\u{ff25}', ['\u{ff45}', '\u{0}', '\u{0}']),
('\u{ff26}', ['\u{ff46}', '\u{0}', '\u{0}']), ('\u{ff27}', ['\u{ff47}', '\u{0}', '\u{0}']),
@@ -2098,6 +2121,22 @@ pub(super) static TO_LOWER: &[(char, [char; 3]); 1462] = &[
('\u{16eb6}', ['\u{16ed1}', '\u{0}', '\u{0}']),
('\u{16eb7}', ['\u{16ed2}', '\u{0}', '\u{0}']),
('\u{16eb8}', ['\u{16ed3}', '\u{0}', '\u{0}']),
+ ('\u{1df40}', ['\u{1df41}', '\u{0}', '\u{0}']),
+ ('\u{1df48}', ['\u{1df49}', '\u{0}', '\u{0}']),
+ ('\u{1df4a}', ['\u{1df4b}', '\u{0}', '\u{0}']),
+ ('\u{1df4d}', ['\u{1df4e}', '\u{0}', '\u{0}']),
+ ('\u{1df51}', ['\u{1df52}', '\u{0}', '\u{0}']),
+ ('\u{1df68}', ['\u{1df69}', '\u{0}', '\u{0}']),
+ ('\u{1df6a}', ['\u{1df6b}', '\u{0}', '\u{0}']),
+ ('\u{1df6c}', ['\u{1df6d}', '\u{0}', '\u{0}']),
+ ('\u{1df6e}', ['\u{1df6f}', '\u{0}', '\u{0}']),
+ ('\u{1df72}', ['\u{1df73}', '\u{0}', '\u{0}']),
+ ('\u{1df74}', ['\u{1df75}', '\u{0}', '\u{0}']),
+ ('\u{1df76}', ['\u{1df77}', '\u{0}', '\u{0}']),
+ ('\u{1df78}', ['\u{1df79}', '\u{0}', '\u{0}']),
+ ('\u{1df7a}', ['\u{1df7b}', '\u{0}', '\u{0}']),
+ ('\u{1df7c}', ['\u{1df7d}', '\u{0}', '\u{0}']),
+ ('\u{1df7e}', ['\u{1df7f}', '\u{0}', '\u{0}']),
('\u{1e900}', ['\u{1e922}', '\u{0}', '\u{0}']),
('\u{1e901}', ['\u{1e923}', '\u{0}', '\u{0}']),
('\u{1e902}', ['\u{1e924}', '\u{0}', '\u{0}']),
@@ -2135,7 +2174,7 @@ pub(super) static TO_LOWER: &[(char, [char; 3]); 1462] = &[
];
#[rustfmt::skip]
-pub(super) static TO_UPPER: &[(char, [char; 3]); 1554] = &[
+pub(super) static TO_UPPER: &[(char, [char; 3]); 1575] = &[
('\u{b5}', ['\u{39c}', '\u{0}', '\u{0}']), ('\u{df}', ['S', 'S', '\u{0}']),
('\u{e0}', ['\u{c0}', '\u{0}', '\u{0}']), ('\u{e1}', ['\u{c1}', '\u{0}', '\u{0}']),
('\u{e2}', ['\u{c2}', '\u{0}', '\u{0}']), ('\u{e3}', ['\u{c3}', '\u{0}', '\u{0}']),
@@ -2241,6 +2280,7 @@ pub(super) static TO_UPPER: &[(char, [char; 3]); 1554] = &[
('\u{26b}', ['\u{2c62}', '\u{0}', '\u{0}']), ('\u{26c}', ['\u{a7ad}', '\u{0}', '\u{0}']),
('\u{26f}', ['\u{19c}', '\u{0}', '\u{0}']), ('\u{271}', ['\u{2c6e}', '\u{0}', '\u{0}']),
('\u{272}', ['\u{19d}', '\u{0}', '\u{0}']), ('\u{275}', ['\u{19f}', '\u{0}', '\u{0}']),
+ ('\u{277}', ['\u{a7dd}', '\u{0}', '\u{0}']), ('\u{27c}', ['\u{a7e2}', '\u{0}', '\u{0}']),
('\u{27d}', ['\u{2c64}', '\u{0}', '\u{0}']), ('\u{280}', ['\u{1a6}', '\u{0}', '\u{0}']),
('\u{282}', ['\u{a7c5}', '\u{0}', '\u{0}']), ('\u{283}', ['\u{1a9}', '\u{0}', '\u{0}']),
('\u{287}', ['\u{a7b1}', '\u{0}', '\u{0}']), ('\u{288}', ['\u{1ae}', '\u{0}', '\u{0}']),
@@ -2739,7 +2779,8 @@ pub(super) static TO_UPPER: &[(char, [char; 3]); 1554] = &[
('\u{a7d1}', ['\u{a7d0}', '\u{0}', '\u{0}']), ('\u{a7d3}', ['\u{a7d2}', '\u{0}', '\u{0}']),
('\u{a7d5}', ['\u{a7d4}', '\u{0}', '\u{0}']), ('\u{a7d7}', ['\u{a7d6}', '\u{0}', '\u{0}']),
('\u{a7d9}', ['\u{a7d8}', '\u{0}', '\u{0}']), ('\u{a7db}', ['\u{a7da}', '\u{0}', '\u{0}']),
- ('\u{a7f6}', ['\u{a7f5}', '\u{0}', '\u{0}']), ('\u{ab53}', ['\u{a7b3}', '\u{0}', '\u{0}']),
+ ('\u{a7f6}', ['\u{a7f5}', '\u{0}', '\u{0}']), ('\u{ab4b}', ['\u{ab6c}', '\u{0}', '\u{0}']),
+ ('\u{ab4c}', ['\u{ab6d}', '\u{0}', '\u{0}']), ('\u{ab53}', ['\u{a7b3}', '\u{0}', '\u{0}']),
('\u{ab70}', ['\u{13a0}', '\u{0}', '\u{0}']), ('\u{ab71}', ['\u{13a1}', '\u{0}', '\u{0}']),
('\u{ab72}', ['\u{13a2}', '\u{0}', '\u{0}']), ('\u{ab73}', ['\u{13a3}', '\u{0}', '\u{0}']),
('\u{ab74}', ['\u{13a4}', '\u{0}', '\u{0}']), ('\u{ab75}', ['\u{13a5}', '\u{0}', '\u{0}']),
@@ -3074,6 +3115,22 @@ pub(super) static TO_UPPER: &[(char, [char; 3]); 1554] = &[
('\u{16ed1}', ['\u{16eb6}', '\u{0}', '\u{0}']),
('\u{16ed2}', ['\u{16eb7}', '\u{0}', '\u{0}']),
('\u{16ed3}', ['\u{16eb8}', '\u{0}', '\u{0}']),
+ ('\u{1df41}', ['\u{1df40}', '\u{0}', '\u{0}']),
+ ('\u{1df49}', ['\u{1df48}', '\u{0}', '\u{0}']),
+ ('\u{1df4b}', ['\u{1df4a}', '\u{0}', '\u{0}']),
+ ('\u{1df4e}', ['\u{1df4d}', '\u{0}', '\u{0}']),
+ ('\u{1df52}', ['\u{1df51}', '\u{0}', '\u{0}']),
+ ('\u{1df69}', ['\u{1df68}', '\u{0}', '\u{0}']),
+ ('\u{1df6b}', ['\u{1df6a}', '\u{0}', '\u{0}']),
+ ('\u{1df6d}', ['\u{1df6c}', '\u{0}', '\u{0}']),
+ ('\u{1df6f}', ['\u{1df6e}', '\u{0}', '\u{0}']),
+ ('\u{1df73}', ['\u{1df72}', '\u{0}', '\u{0}']),
+ ('\u{1df75}', ['\u{1df74}', '\u{0}', '\u{0}']),
+ ('\u{1df77}', ['\u{1df76}', '\u{0}', '\u{0}']),
+ ('\u{1df79}', ['\u{1df78}', '\u{0}', '\u{0}']),
+ ('\u{1df7b}', ['\u{1df7a}', '\u{0}', '\u{0}']),
+ ('\u{1df7d}', ['\u{1df7c}', '\u{0}', '\u{0}']),
+ ('\u{1df7f}', ['\u{1df7e}', '\u{0}', '\u{0}']), ('\u{1df95}', ['S', 'S', '\u{0}']),
('\u{1e922}', ['\u{1e900}', '\u{0}', '\u{0}']),
('\u{1e923}', ['\u{1e901}', '\u{0}', '\u{0}']),
('\u{1e924}', ['\u{1e902}', '\u{0}', '\u{0}']),
@@ -3111,7 +3168,7 @@ pub(super) static TO_UPPER: &[(char, [char; 3]); 1554] = &[
];
#[rustfmt::skip]
-pub(super) static TO_TITLE: &[(char, [char; 3]); 135] = &[
+pub(super) static TO_TITLE: &[(char, [char; 3]); 136] = &[
('\u{df}', ['S', 's', '\u{0}']), ('\u{1c4}', ['\u{1c5}', '\u{0}', '\u{0}']),
('\u{1c5}', ['\u{1c5}', '\u{0}', '\u{0}']), ('\u{1c6}', ['\u{1c5}', '\u{0}', '\u{0}']),
('\u{1c7}', ['\u{1c8}', '\u{0}', '\u{0}']), ('\u{1c8}', ['\u{1c8}', '\u{0}', '\u{0}']),
@@ -3185,7 +3242,7 @@ pub(super) static TO_TITLE: &[(char, [char; 3]); 135] = &[
('\u{fb14}', ['\u{544}', '\u{565}', '\u{0}']),
('\u{fb15}', ['\u{544}', '\u{56b}', '\u{0}']),
('\u{fb16}', ['\u{54e}', '\u{576}', '\u{0}']),
- ('\u{fb17}', ['\u{544}', '\u{56d}', '\u{0}']),
+ ('\u{fb17}', ['\u{544}', '\u{56d}', '\u{0}']), ('\u{1df95}', ['S', 's', '\u{0}']),
];
#[rustfmt::skip]
diff --git a/library/stdarch/Cargo.lock b/library/stdarch/Cargo.lock
index 9923b630cd5bb..9ec3227f49e7d 100644
--- a/library/stdarch/Cargo.lock
+++ b/library/stdarch/Cargo.lock
@@ -217,12 +217,6 @@ dependencies = [
"syn",
]
-[[package]]
-name = "diff"
-version = "0.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"
-
[[package]]
name = "either"
version = "1.15.0"
@@ -400,7 +394,6 @@ name = "intrinsic-test"
version = "0.1.0"
dependencies = [
"clap",
- "diff",
"itertools",
"log",
"pretty_env_logger",
@@ -408,7 +401,6 @@ dependencies = [
"rayon",
"regex",
"serde",
- "serde-xml-rs",
"serde_json",
]
@@ -726,18 +718,6 @@ dependencies = [
"serde_derive",
]
-[[package]]
-name = "serde-xml-rs"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc2215ce3e6a77550b80a1c37251b7d294febaf42e36e21b7b411e0bf54d540d"
-dependencies = [
- "log",
- "serde",
- "thiserror",
- "xml",
-]
-
[[package]]
name = "serde_core"
version = "1.0.228"
@@ -935,26 +915,6 @@ dependencies = [
"winapi-util",
]
-[[package]]
-name = "thiserror"
-version = "2.0.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
-dependencies = [
- "thiserror-impl",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "2.0.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
[[package]]
name = "unicode-ident"
version = "1.0.24"
@@ -1169,12 +1129,6 @@ dependencies = [
"wasmparser 0.244.0",
]
-[[package]]
-name = "xml"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8aa498d22c9bbaf482329839bc5620c46be275a19a812e9a22a2b07529a642a"
-
[[package]]
name = "yaml-rust"
version = "0.4.5"
diff --git a/library/stdarch/crates/core_arch/Cargo.toml b/library/stdarch/crates/core_arch/Cargo.toml
index 670447a2d5a8b..ab8b9bcd9fcef 100644
--- a/library/stdarch/crates/core_arch/Cargo.toml
+++ b/library/stdarch/crates/core_arch/Cargo.toml
@@ -7,9 +7,7 @@ authors = [
"Gonzalo Brito Gadeschi ",
]
description = "`core::arch` - Rust's core library architecture-specific intrinsics."
-homepage = "https://github.com/rust-lang/stdarch"
repository = "https://github.com/rust-lang/stdarch"
-readme = "README.md"
keywords = ["core", "simd", "arch", "intrinsics"]
categories = ["hardware-support", "no-std"]
license = "MIT OR Apache-2.0"
diff --git a/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs b/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs
index 4fc46a3ba39e8..094b13ca8023a 100644
--- a/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs
+++ b/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs
@@ -70649,7 +70649,7 @@ pub fn vzip_p16(a: poly16x4_t, b: poly16x4_t) -> poly16x4x2_t {
#[cfg(target_endian = "little")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -70679,7 +70679,7 @@ pub fn vzipq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
#[cfg(target_endian = "big")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -70714,7 +70714,7 @@ pub fn vzipq_f32(a: float32x4_t, b: float32x4_t) -> float32x4x2_t {
#[cfg(target_endian = "little")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -70752,7 +70752,7 @@ pub fn vzipq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
#[cfg(target_endian = "big")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -70805,7 +70805,7 @@ pub fn vzipq_s8(a: int8x16_t, b: int8x16_t) -> int8x16x2_t {
#[cfg(target_endian = "little")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -70835,7 +70835,7 @@ pub fn vzipq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
#[cfg(target_endian = "big")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -70870,7 +70870,7 @@ pub fn vzipq_s16(a: int16x8_t, b: int16x8_t) -> int16x8x2_t {
#[cfg(target_endian = "little")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -70900,7 +70900,7 @@ pub fn vzipq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
#[cfg(target_endian = "big")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -70935,7 +70935,7 @@ pub fn vzipq_s32(a: int32x4_t, b: int32x4_t) -> int32x4x2_t {
#[cfg(target_endian = "little")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -70973,7 +70973,7 @@ pub fn vzipq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
#[cfg(target_endian = "big")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -71026,7 +71026,7 @@ pub fn vzipq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16x2_t {
#[cfg(target_endian = "little")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -71056,7 +71056,7 @@ pub fn vzipq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
#[cfg(target_endian = "big")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -71091,7 +71091,7 @@ pub fn vzipq_u16(a: uint16x8_t, b: uint16x8_t) -> uint16x8x2_t {
#[cfg(target_endian = "little")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -71121,7 +71121,7 @@ pub fn vzipq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
#[cfg(target_endian = "big")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -71156,7 +71156,7 @@ pub fn vzipq_u32(a: uint32x4_t, b: uint32x4_t) -> uint32x4x2_t {
#[cfg(target_endian = "little")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -71194,7 +71194,7 @@ pub fn vzipq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
#[cfg(target_endian = "big")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -71247,7 +71247,7 @@ pub fn vzipq_p8(a: poly8x16_t, b: poly8x16_t) -> poly8x16x2_t {
#[cfg(target_endian = "little")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
@@ -71277,7 +71277,7 @@ pub fn vzipq_p16(a: poly16x8_t, b: poly16x8_t) -> poly16x8x2_t {
#[cfg(target_endian = "big")]
#[target_feature(enable = "neon")]
#[cfg_attr(target_arch = "arm", target_feature(enable = "v7"))]
-#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vorr))]
+#[cfg_attr(all(test, target_arch = "arm"), assert_instr(vzip))]
#[cfg_attr(
all(test, any(target_arch = "aarch64", target_arch = "arm64ec")),
assert_instr(zip1)
diff --git a/library/stdarch/crates/core_arch/src/loongarch64/lasx/generated.rs b/library/stdarch/crates/core_arch/src/loongarch64/lasx/generated.rs
index 1e74f79153ea5..f481a159eb632 100644
--- a/library/stdarch/crates/core_arch/src/loongarch64/lasx/generated.rs
+++ b/library/stdarch/crates/core_arch/src/loongarch64/lasx/generated.rs
@@ -91,38 +91,6 @@ unsafe extern "llvm-intrinsic" {
fn __lasx_xvsat_wu(a: __v8u32, b: u32) -> __v8u32;
#[link_name = "llvm.loongarch.lasx.xvsat.du"]
fn __lasx_xvsat_du(a: __v4u64, b: u32) -> __v4u64;
- #[link_name = "llvm.loongarch.lasx.xvavg.b"]
- fn __lasx_xvavg_b(a: __v32i8, b: __v32i8) -> __v32i8;
- #[link_name = "llvm.loongarch.lasx.xvavg.h"]
- fn __lasx_xvavg_h(a: __v16i16, b: __v16i16) -> __v16i16;
- #[link_name = "llvm.loongarch.lasx.xvavg.w"]
- fn __lasx_xvavg_w(a: __v8i32, b: __v8i32) -> __v8i32;
- #[link_name = "llvm.loongarch.lasx.xvavg.d"]
- fn __lasx_xvavg_d(a: __v4i64, b: __v4i64) -> __v4i64;
- #[link_name = "llvm.loongarch.lasx.xvavg.bu"]
- fn __lasx_xvavg_bu(a: __v32u8, b: __v32u8) -> __v32u8;
- #[link_name = "llvm.loongarch.lasx.xvavg.hu"]
- fn __lasx_xvavg_hu(a: __v16u16, b: __v16u16) -> __v16u16;
- #[link_name = "llvm.loongarch.lasx.xvavg.wu"]
- fn __lasx_xvavg_wu(a: __v8u32, b: __v8u32) -> __v8u32;
- #[link_name = "llvm.loongarch.lasx.xvavg.du"]
- fn __lasx_xvavg_du(a: __v4u64, b: __v4u64) -> __v4u64;
- #[link_name = "llvm.loongarch.lasx.xvavgr.b"]
- fn __lasx_xvavgr_b(a: __v32i8, b: __v32i8) -> __v32i8;
- #[link_name = "llvm.loongarch.lasx.xvavgr.h"]
- fn __lasx_xvavgr_h(a: __v16i16, b: __v16i16) -> __v16i16;
- #[link_name = "llvm.loongarch.lasx.xvavgr.w"]
- fn __lasx_xvavgr_w(a: __v8i32, b: __v8i32) -> __v8i32;
- #[link_name = "llvm.loongarch.lasx.xvavgr.d"]
- fn __lasx_xvavgr_d(a: __v4i64, b: __v4i64) -> __v4i64;
- #[link_name = "llvm.loongarch.lasx.xvavgr.bu"]
- fn __lasx_xvavgr_bu(a: __v32u8, b: __v32u8) -> __v32u8;
- #[link_name = "llvm.loongarch.lasx.xvavgr.hu"]
- fn __lasx_xvavgr_hu(a: __v16u16, b: __v16u16) -> __v16u16;
- #[link_name = "llvm.loongarch.lasx.xvavgr.wu"]
- fn __lasx_xvavgr_wu(a: __v8u32, b: __v8u32) -> __v8u32;
- #[link_name = "llvm.loongarch.lasx.xvavgr.du"]
- fn __lasx_xvavgr_du(a: __v4u64, b: __v4u64) -> __v4u64;
#[link_name = "llvm.loongarch.lasx.xvhaddw.h.b"]
fn __lasx_xvhaddw_h_b(a: __v32i8, b: __v32i8) -> __v16i16;
#[link_name = "llvm.loongarch.lasx.xvhaddw.w.h"]
@@ -1283,118 +1251,6 @@ pub fn lasx_xvsat_du(a: m256i) -> m256i {
unsafe { transmute(__lasx_xvsat_du(transmute(a), IMM6)) }
}
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavg_b(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavg_b(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavg_h(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavg_h(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavg_w(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavg_w(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavg_d(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavg_d(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavg_bu(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavg_bu(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavg_hu(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavg_hu(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavg_wu(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavg_wu(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavg_du(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavg_du(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavgr_b(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavgr_b(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavgr_h(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavgr_h(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavgr_w(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavgr_w(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavgr_d(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavgr_d(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavgr_bu(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavgr_bu(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavgr_hu(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavgr_hu(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavgr_wu(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavgr_wu(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lasx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lasx_xvavgr_du(a: m256i, b: m256i) -> m256i {
- unsafe { transmute(__lasx_xvavgr_du(transmute(a), transmute(b))) }
-}
-
#[inline]
#[target_feature(enable = "lasx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
diff --git a/library/stdarch/crates/core_arch/src/loongarch64/lasx/portable.rs b/library/stdarch/crates/core_arch/src/loongarch64/lasx/portable.rs
index 73ea74d9dc3bb..d53f21c792626 100644
--- a/library/stdarch/crates/core_arch/src/loongarch64/lasx/portable.rs
+++ b/library/stdarch/crates/core_arch/src/loongarch64/lasx/portable.rs
@@ -896,6 +896,24 @@ impl_vvvv!("lasx", lasx_xvfnmsub_d, simd_ext_fnmsub, m256d, f64x4);
impl_vugv!("lasx", lasx_xvinsgr2vr_w, simd_insert, m256i, i32x8, i32, 3);
impl_vugv!("lasx", lasx_xvinsgr2vr_d, simd_insert, m256i, i64x4, i64, 2);
+impl_vavg!("lasx", lasx_xvavg_b, m256i, i8x32, i16x32);
+impl_vavg!("lasx", lasx_xvavg_h, m256i, i16x16, i32x16);
+impl_vavg!("lasx", lasx_xvavg_w, m256i, i32x8, i64x8);
+impl_vavg!("lasx", lasx_xvavg_d, m256i, i64x4, i128x4);
+impl_vavg!("lasx", lasx_xvavg_bu, m256i, u8x32, u16x32);
+impl_vavg!("lasx", lasx_xvavg_hu, m256i, u16x16, u32x16);
+impl_vavg!("lasx", lasx_xvavg_wu, m256i, u32x8, u64x8);
+impl_vavg!("lasx", lasx_xvavg_du, m256i, u64x4, u128x4);
+
+impl_vavgr!("lasx", lasx_xvavgr_b, m256i, i8x32, i16x32);
+impl_vavgr!("lasx", lasx_xvavgr_h, m256i, i16x16, i32x16);
+impl_vavgr!("lasx", lasx_xvavgr_w, m256i, i32x8, i64x8);
+impl_vavgr!("lasx", lasx_xvavgr_d, m256i, i64x4, i128x4);
+impl_vavgr!("lasx", lasx_xvavgr_bu, m256i, u8x32, u16x32);
+impl_vavgr!("lasx", lasx_xvavgr_hu, m256i, u16x16, u32x16);
+impl_vavgr!("lasx", lasx_xvavgr_wu, m256i, u32x8, u64x8);
+impl_vavgr!("lasx", lasx_xvavgr_du, m256i, u64x4, u128x4);
+
#[cfg(test)]
mod tests {
use crate::{
diff --git a/library/stdarch/crates/core_arch/src/loongarch64/lsx/generated.rs b/library/stdarch/crates/core_arch/src/loongarch64/lsx/generated.rs
index 54de126e03e27..7915ef07d68e7 100644
--- a/library/stdarch/crates/core_arch/src/loongarch64/lsx/generated.rs
+++ b/library/stdarch/crates/core_arch/src/loongarch64/lsx/generated.rs
@@ -91,38 +91,6 @@ unsafe extern "llvm-intrinsic" {
fn __lsx_vsat_wu(a: __v4u32, b: u32) -> __v4u32;
#[link_name = "llvm.loongarch.lsx.vsat.du"]
fn __lsx_vsat_du(a: __v2u64, b: u32) -> __v2u64;
- #[link_name = "llvm.loongarch.lsx.vavg.b"]
- fn __lsx_vavg_b(a: __v16i8, b: __v16i8) -> __v16i8;
- #[link_name = "llvm.loongarch.lsx.vavg.h"]
- fn __lsx_vavg_h(a: __v8i16, b: __v8i16) -> __v8i16;
- #[link_name = "llvm.loongarch.lsx.vavg.w"]
- fn __lsx_vavg_w(a: __v4i32, b: __v4i32) -> __v4i32;
- #[link_name = "llvm.loongarch.lsx.vavg.d"]
- fn __lsx_vavg_d(a: __v2i64, b: __v2i64) -> __v2i64;
- #[link_name = "llvm.loongarch.lsx.vavg.bu"]
- fn __lsx_vavg_bu(a: __v16u8, b: __v16u8) -> __v16u8;
- #[link_name = "llvm.loongarch.lsx.vavg.hu"]
- fn __lsx_vavg_hu(a: __v8u16, b: __v8u16) -> __v8u16;
- #[link_name = "llvm.loongarch.lsx.vavg.wu"]
- fn __lsx_vavg_wu(a: __v4u32, b: __v4u32) -> __v4u32;
- #[link_name = "llvm.loongarch.lsx.vavg.du"]
- fn __lsx_vavg_du(a: __v2u64, b: __v2u64) -> __v2u64;
- #[link_name = "llvm.loongarch.lsx.vavgr.b"]
- fn __lsx_vavgr_b(a: __v16i8, b: __v16i8) -> __v16i8;
- #[link_name = "llvm.loongarch.lsx.vavgr.h"]
- fn __lsx_vavgr_h(a: __v8i16, b: __v8i16) -> __v8i16;
- #[link_name = "llvm.loongarch.lsx.vavgr.w"]
- fn __lsx_vavgr_w(a: __v4i32, b: __v4i32) -> __v4i32;
- #[link_name = "llvm.loongarch.lsx.vavgr.d"]
- fn __lsx_vavgr_d(a: __v2i64, b: __v2i64) -> __v2i64;
- #[link_name = "llvm.loongarch.lsx.vavgr.bu"]
- fn __lsx_vavgr_bu(a: __v16u8, b: __v16u8) -> __v16u8;
- #[link_name = "llvm.loongarch.lsx.vavgr.hu"]
- fn __lsx_vavgr_hu(a: __v8u16, b: __v8u16) -> __v8u16;
- #[link_name = "llvm.loongarch.lsx.vavgr.wu"]
- fn __lsx_vavgr_wu(a: __v4u32, b: __v4u32) -> __v4u32;
- #[link_name = "llvm.loongarch.lsx.vavgr.du"]
- fn __lsx_vavgr_du(a: __v2u64, b: __v2u64) -> __v2u64;
#[link_name = "llvm.loongarch.lsx.vhaddw.h.b"]
fn __lsx_vhaddw_h_b(a: __v16i8, b: __v16i8) -> __v8i16;
#[link_name = "llvm.loongarch.lsx.vhaddw.w.h"]
@@ -1203,118 +1171,6 @@ pub fn lsx_vsat_du(a: m128i) -> m128i {
unsafe { transmute(__lsx_vsat_du(transmute(a), IMM6)) }
}
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavg_b(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavg_b(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavg_h(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavg_h(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavg_w(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavg_w(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavg_d(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavg_d(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavg_bu(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavg_bu(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavg_hu(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavg_hu(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavg_wu(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavg_wu(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavg_du(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavg_du(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavgr_b(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavgr_b(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavgr_h(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavgr_h(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavgr_w(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavgr_w(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavgr_d(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavgr_d(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavgr_bu(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavgr_bu(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavgr_hu(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavgr_hu(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavgr_wu(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavgr_wu(transmute(a), transmute(b))) }
-}
-
-#[inline]
-#[target_feature(enable = "lsx")]
-#[unstable(feature = "stdarch_loongarch", issue = "117427")]
-pub fn lsx_vavgr_du(a: m128i, b: m128i) -> m128i {
- unsafe { transmute(__lsx_vavgr_du(transmute(a), transmute(b))) }
-}
-
#[inline]
#[target_feature(enable = "lsx")]
#[unstable(feature = "stdarch_loongarch", issue = "117427")]
diff --git a/library/stdarch/crates/core_arch/src/loongarch64/lsx/portable.rs b/library/stdarch/crates/core_arch/src/loongarch64/lsx/portable.rs
index 31467bf013e27..2b5bfe1ab4d2b 100644
--- a/library/stdarch/crates/core_arch/src/loongarch64/lsx/portable.rs
+++ b/library/stdarch/crates/core_arch/src/loongarch64/lsx/portable.rs
@@ -574,6 +574,24 @@ impl_vugv!("lsx", lsx_vinsgr2vr_h, simd_insert, m128i, i16x8, i32, 3);
impl_vugv!("lsx", lsx_vinsgr2vr_w, simd_insert, m128i, i32x4, i32, 2);
impl_vugv!("lsx", lsx_vinsgr2vr_d, simd_insert, m128i, i64x2, i64, 1);
+impl_vavg!("lsx", lsx_vavg_b, m128i, i8x16, i16x16);
+impl_vavg!("lsx", lsx_vavg_h, m128i, i16x8, i32x8);
+impl_vavg!("lsx", lsx_vavg_w, m128i, i32x4, i64x4);
+impl_vavg!("lsx", lsx_vavg_d, m128i, i64x2, i128x2);
+impl_vavg!("lsx", lsx_vavg_bu, m128i, u8x16, u16x16);
+impl_vavg!("lsx", lsx_vavg_hu, m128i, u16x8, u32x8);
+impl_vavg!("lsx", lsx_vavg_wu, m128i, u32x4, u64x4);
+impl_vavg!("lsx", lsx_vavg_du, m128i, u64x2, u128x2);
+
+impl_vavgr!("lsx", lsx_vavgr_b, m128i, i8x16, i16x16);
+impl_vavgr!("lsx", lsx_vavgr_h, m128i, i16x8, i32x8);
+impl_vavgr!("lsx", lsx_vavgr_w, m128i, i32x4, i64x4);
+impl_vavgr!("lsx", lsx_vavgr_d, m128i, i64x2, i128x2);
+impl_vavgr!("lsx", lsx_vavgr_bu, m128i, u8x16, u16x16);
+impl_vavgr!("lsx", lsx_vavgr_hu, m128i, u16x8, u32x8);
+impl_vavgr!("lsx", lsx_vavgr_wu, m128i, u32x4, u64x4);
+impl_vavgr!("lsx", lsx_vavgr_du, m128i, u64x2, u128x2);
+
#[cfg(test)]
mod tests {
use crate::{
diff --git a/library/stdarch/crates/core_arch/src/loongarch64/simd.rs b/library/stdarch/crates/core_arch/src/loongarch64/simd.rs
index 1d83333e2f532..7ce6071841460 100644
--- a/library/stdarch/crates/core_arch/src/loongarch64/simd.rs
+++ b/library/stdarch/crates/core_arch/src/loongarch64/simd.rs
@@ -304,6 +304,44 @@ pub(super) const unsafe fn simd_ext_stx(a: T, b: *mut i8, c: i64) {
core::ptr::write_unaligned(b, a);
}
+macro_rules! impl_vavg {
+ ($ft:literal, $name:ident, $oty:ty, $ity:ty, $wty:ty) => {
+ #[inline]
+ #[target_feature(enable = $ft)]
+ #[unstable(feature = "stdarch_loongarch", issue = "117427")]
+ pub fn $name(a: $oty, b: $oty) -> $oty {
+ unsafe {
+ let a: $wty = simd_cast(transmute::<_, $ity>(a));
+ let b: $wty = simd_cast(transmute::<_, $ity>(b));
+ let r: $ity = simd_cast(simd_shr(simd_add(a, b), <$wty>::splat(1)));
+ transmute(r)
+ }
+ }
+ };
+}
+
+macro_rules! impl_vavgr {
+ ($ft:literal, $name:ident, $oty:ty, $ity:ty, $wty:ty) => {
+ #[inline]
+ #[target_feature(enable = $ft)]
+ #[unstable(feature = "stdarch_loongarch", issue = "117427")]
+ pub fn $name(a: $oty, b: $oty) -> $oty {
+ unsafe {
+ let a: $wty = simd_cast(transmute::<_, $ity>(a));
+ let b: $wty = simd_cast(transmute::<_, $ity>(b));
+ let r: $ity = simd_cast(simd_shr(
+ simd_add(simd_add(a, b), <$wty>::splat(1)),
+ <$wty>::splat(1),
+ ));
+ transmute(r)
+ }
+ }
+ };
+}
+
+pub(super) use impl_vavg;
+pub(super) use impl_vavgr;
+
macro_rules! impl_vv {
($ft:literal, $name:ident, $op:ident, $oty:ty, $ity:ty) => {
#[inline]
diff --git a/library/stdarch/crates/core_arch/src/x86/avx2.rs b/library/stdarch/crates/core_arch/src/x86/avx2.rs
index eb636a4fa0397..333f38e5474cc 100644
--- a/library/stdarch/crates/core_arch/src/x86/avx2.rs
+++ b/library/stdarch/crates/core_arch/src/x86/avx2.rs
@@ -2871,14 +2871,8 @@ pub const fn _mm256_bslli_epi128(a: __m256i) -> __m256i {
#[target_feature(enable = "avx2")]
#[cfg_attr(test, assert_instr(vpsllvd))]
#[stable(feature = "simd_x86", since = "1.27.0")]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_sllv_epi32(a: __m128i, count: __m128i) -> __m128i {
- unsafe {
- let count = count.as_u32x4();
- let no_overflow: u32x4 = simd_lt(count, u32x4::splat(u32::BITS));
- let count = simd_select(no_overflow, count, u32x4::ZERO);
- simd_select(no_overflow, simd_shl(a.as_u32x4(), count), u32x4::ZERO).as_m128i()
- }
+pub fn _mm_sllv_epi32(a: __m128i, count: __m128i) -> __m128i {
+ unsafe { transmute(psllvd(a.as_i32x4(), count.as_i32x4())) }
}
/// Shifts packed 32-bit integers in `a` left by the amount
@@ -2890,14 +2884,8 @@ pub const fn _mm_sllv_epi32(a: __m128i, count: __m128i) -> __m128i {
#[target_feature(enable = "avx2")]
#[cfg_attr(test, assert_instr(vpsllvd))]
#[stable(feature = "simd_x86", since = "1.27.0")]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_sllv_epi32(a: __m256i, count: __m256i) -> __m256i {
- unsafe {
- let count = count.as_u32x8();
- let no_overflow: u32x8 = simd_lt(count, u32x8::splat(u32::BITS));
- let count = simd_select(no_overflow, count, u32x8::ZERO);
- simd_select(no_overflow, simd_shl(a.as_u32x8(), count), u32x8::ZERO).as_m256i()
- }
+pub fn _mm256_sllv_epi32(a: __m256i, count: __m256i) -> __m256i {
+ unsafe { transmute(psllvd256(a.as_i32x8(), count.as_i32x8())) }
}
/// Shifts packed 64-bit integers in `a` left by the amount
@@ -2909,14 +2897,8 @@ pub const fn _mm256_sllv_epi32(a: __m256i, count: __m256i) -> __m256i {
#[target_feature(enable = "avx2")]
#[cfg_attr(test, assert_instr(vpsllvq))]
#[stable(feature = "simd_x86", since = "1.27.0")]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_sllv_epi64(a: __m128i, count: __m128i) -> __m128i {
- unsafe {
- let count = count.as_u64x2();
- let no_overflow: u64x2 = simd_lt(count, u64x2::splat(u64::BITS as u64));
- let count = simd_select(no_overflow, count, u64x2::ZERO);
- simd_select(no_overflow, simd_shl(a.as_u64x2(), count), u64x2::ZERO).as_m128i()
- }
+pub fn _mm_sllv_epi64(a: __m128i, count: __m128i) -> __m128i {
+ unsafe { transmute(psllvq(a.as_i64x2(), count.as_i64x2())) }
}
/// Shifts packed 64-bit integers in `a` left by the amount
@@ -2928,14 +2910,8 @@ pub const fn _mm_sllv_epi64(a: __m128i, count: __m128i) -> __m128i {
#[target_feature(enable = "avx2")]
#[cfg_attr(test, assert_instr(vpsllvq))]
#[stable(feature = "simd_x86", since = "1.27.0")]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_sllv_epi64(a: __m256i, count: __m256i) -> __m256i {
- unsafe {
- let count = count.as_u64x4();
- let no_overflow: u64x4 = simd_lt(count, u64x4::splat(u64::BITS as u64));
- let count = simd_select(no_overflow, count, u64x4::ZERO);
- simd_select(no_overflow, simd_shl(a.as_u64x4(), count), u64x4::ZERO).as_m256i()
- }
+pub fn _mm256_sllv_epi64(a: __m256i, count: __m256i) -> __m256i {
+ unsafe { transmute(psllvq256(a.as_i64x4(), count.as_i64x4())) }
}
/// Shifts packed 16-bit integers in `a` right by `count` while
@@ -3000,14 +2976,8 @@ pub const fn _mm256_srai_epi32(a: __m256i) -> __m256i {
#[target_feature(enable = "avx2")]
#[cfg_attr(test, assert_instr(vpsravd))]
#[stable(feature = "simd_x86", since = "1.27.0")]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_srav_epi32(a: __m128i, count: __m128i) -> __m128i {
- unsafe {
- let count = count.as_u32x4();
- let no_overflow: u32x4 = simd_lt(count, u32x4::splat(u32::BITS));
- let count = simd_select(no_overflow, transmute(count), i32x4::splat(31));
- simd_shr(a.as_i32x4(), count).as_m128i()
- }
+pub fn _mm_srav_epi32(a: __m128i, count: __m128i) -> __m128i {
+ unsafe { transmute(psravd(a.as_i32x4(), count.as_i32x4())) }
}
/// Shifts packed 32-bit integers in `a` right by the amount specified by the
@@ -3018,14 +2988,8 @@ pub const fn _mm_srav_epi32(a: __m128i, count: __m128i) -> __m128i {
#[target_feature(enable = "avx2")]
#[cfg_attr(test, assert_instr(vpsravd))]
#[stable(feature = "simd_x86", since = "1.27.0")]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_srav_epi32(a: __m256i, count: __m256i) -> __m256i {
- unsafe {
- let count = count.as_u32x8();
- let no_overflow: u32x8 = simd_lt(count, u32x8::splat(u32::BITS));
- let count = simd_select(no_overflow, transmute(count), i32x8::splat(31));
- simd_shr(a.as_i32x8(), count).as_m256i()
- }
+pub fn _mm256_srav_epi32(a: __m256i, count: __m256i) -> __m256i {
+ unsafe { transmute(psravd256(a.as_i32x8(), count.as_i32x8())) }
}
/// Shifts 128-bit lanes in `a` right by `imm8` bytes while shifting in zeros.
@@ -3212,14 +3176,8 @@ pub const fn _mm256_srli_epi64(a: __m256i) -> __m256i {
#[target_feature(enable = "avx2")]
#[cfg_attr(test, assert_instr(vpsrlvd))]
#[stable(feature = "simd_x86", since = "1.27.0")]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_srlv_epi32(a: __m128i, count: __m128i) -> __m128i {
- unsafe {
- let count = count.as_u32x4();
- let no_overflow: u32x4 = simd_lt(count, u32x4::splat(u32::BITS));
- let count = simd_select(no_overflow, count, u32x4::ZERO);
- simd_select(no_overflow, simd_shr(a.as_u32x4(), count), u32x4::ZERO).as_m128i()
- }
+pub fn _mm_srlv_epi32(a: __m128i, count: __m128i) -> __m128i {
+ unsafe { transmute(psrlvd(a.as_i32x4(), count.as_i32x4())) }
}
/// Shifts packed 32-bit integers in `a` right by the amount specified by
@@ -3230,14 +3188,8 @@ pub const fn _mm_srlv_epi32(a: __m128i, count: __m128i) -> __m128i {
#[target_feature(enable = "avx2")]
#[cfg_attr(test, assert_instr(vpsrlvd))]
#[stable(feature = "simd_x86", since = "1.27.0")]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_srlv_epi32(a: __m256i, count: __m256i) -> __m256i {
- unsafe {
- let count = count.as_u32x8();
- let no_overflow: u32x8 = simd_lt(count, u32x8::splat(u32::BITS));
- let count = simd_select(no_overflow, count, u32x8::ZERO);
- simd_select(no_overflow, simd_shr(a.as_u32x8(), count), u32x8::ZERO).as_m256i()
- }
+pub fn _mm256_srlv_epi32(a: __m256i, count: __m256i) -> __m256i {
+ unsafe { transmute(psrlvd256(a.as_i32x8(), count.as_i32x8())) }
}
/// Shifts packed 64-bit integers in `a` right by the amount specified by
@@ -3248,14 +3200,8 @@ pub const fn _mm256_srlv_epi32(a: __m256i, count: __m256i) -> __m256i {
#[target_feature(enable = "avx2")]
#[cfg_attr(test, assert_instr(vpsrlvq))]
#[stable(feature = "simd_x86", since = "1.27.0")]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_srlv_epi64(a: __m128i, count: __m128i) -> __m128i {
- unsafe {
- let count = count.as_u64x2();
- let no_overflow: u64x2 = simd_lt(count, u64x2::splat(u64::BITS as u64));
- let count = simd_select(no_overflow, count, u64x2::ZERO);
- simd_select(no_overflow, simd_shr(a.as_u64x2(), count), u64x2::ZERO).as_m128i()
- }
+pub fn _mm_srlv_epi64(a: __m128i, count: __m128i) -> __m128i {
+ unsafe { transmute(psrlvq(a.as_i64x2(), count.as_i64x2())) }
}
/// Shifts packed 64-bit integers in `a` right by the amount specified by
@@ -3266,14 +3212,8 @@ pub const fn _mm_srlv_epi64(a: __m128i, count: __m128i) -> __m128i {
#[target_feature(enable = "avx2")]
#[cfg_attr(test, assert_instr(vpsrlvq))]
#[stable(feature = "simd_x86", since = "1.27.0")]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_srlv_epi64(a: __m256i, count: __m256i) -> __m256i {
- unsafe {
- let count = count.as_u64x4();
- let no_overflow: u64x4 = simd_lt(count, u64x4::splat(u64::BITS as u64));
- let count = simd_select(no_overflow, count, u64x4::ZERO);
- simd_select(no_overflow, simd_shr(a.as_u64x4(), count), u64x4::ZERO).as_m256i()
- }
+pub fn _mm256_srlv_epi64(a: __m256i, count: __m256i) -> __m256i {
+ unsafe { transmute(psrlvq256(a.as_i64x4(), count.as_i64x4())) }
}
/// Load 256-bits of integer data from memory into dst using a non-temporal memory hint. mem_addr
@@ -3849,16 +3789,36 @@ unsafe extern "llvm-intrinsic" {
fn pslld(a: i32x8, count: i32x4) -> i32x8;
#[link_name = "llvm.x86.avx2.psll.q"]
fn psllq(a: i64x4, count: i64x2) -> i64x4;
+ #[link_name = "llvm.x86.avx2.psllv.d"]
+ fn psllvd(a: i32x4, count: i32x4) -> i32x4;
+ #[link_name = "llvm.x86.avx2.psllv.d.256"]
+ fn psllvd256(a: i32x8, count: i32x8) -> i32x8;
+ #[link_name = "llvm.x86.avx2.psllv.q"]
+ fn psllvq(a: i64x2, count: i64x2) -> i64x2;
+ #[link_name = "llvm.x86.avx2.psllv.q.256"]
+ fn psllvq256(a: i64x4, count: i64x4) -> i64x4;
#[link_name = "llvm.x86.avx2.psra.w"]
fn psraw(a: i16x16, count: i16x8) -> i16x16;
#[link_name = "llvm.x86.avx2.psra.d"]
fn psrad(a: i32x8, count: i32x4) -> i32x8;
+ #[link_name = "llvm.x86.avx2.psrav.d"]
+ fn psravd(a: i32x4, count: i32x4) -> i32x4;
+ #[link_name = "llvm.x86.avx2.psrav.d.256"]
+ fn psravd256(a: i32x8, count: i32x8) -> i32x8;
#[link_name = "llvm.x86.avx2.psrl.w"]
fn psrlw(a: i16x16, count: i16x8) -> i16x16;
#[link_name = "llvm.x86.avx2.psrl.d"]
fn psrld(a: i32x8, count: i32x4) -> i32x8;
#[link_name = "llvm.x86.avx2.psrl.q"]
fn psrlq(a: i64x4, count: i64x2) -> i64x4;
+ #[link_name = "llvm.x86.avx2.psrlv.d"]
+ fn psrlvd(a: i32x4, count: i32x4) -> i32x4;
+ #[link_name = "llvm.x86.avx2.psrlv.d.256"]
+ fn psrlvd256(a: i32x8, count: i32x8) -> i32x8;
+ #[link_name = "llvm.x86.avx2.psrlv.q"]
+ fn psrlvq(a: i64x2, count: i64x2) -> i64x2;
+ #[link_name = "llvm.x86.avx2.psrlv.q.256"]
+ fn psrlvq256(a: i64x4, count: i64x4) -> i64x4;
#[link_name = "llvm.x86.avx2.pshuf.b"]
fn pshufb(a: u8x32, b: u8x32) -> u8x32;
#[link_name = "llvm.x86.avx2.permd"]
@@ -5163,7 +5123,7 @@ mod tests {
}
#[simd_test(enable = "avx2")]
- const fn test_mm_sllv_epi32() {
+ fn test_mm_sllv_epi32() {
let a = _mm_set1_epi32(2);
let b = _mm_set1_epi32(1);
let r = _mm_sllv_epi32(a, b);
@@ -5172,7 +5132,7 @@ mod tests {
}
#[simd_test(enable = "avx2")]
- const fn test_mm256_sllv_epi32() {
+ fn test_mm256_sllv_epi32() {
let a = _mm256_set1_epi32(2);
let b = _mm256_set1_epi32(1);
let r = _mm256_sllv_epi32(a, b);
@@ -5181,7 +5141,7 @@ mod tests {
}
#[simd_test(enable = "avx2")]
- const fn test_mm_sllv_epi64() {
+ fn test_mm_sllv_epi64() {
let a = _mm_set1_epi64x(2);
let b = _mm_set1_epi64x(1);
let r = _mm_sllv_epi64(a, b);
@@ -5190,7 +5150,7 @@ mod tests {
}
#[simd_test(enable = "avx2")]
- const fn test_mm256_sllv_epi64() {
+ fn test_mm256_sllv_epi64() {
let a = _mm256_set1_epi64x(2);
let b = _mm256_set1_epi64x(1);
let r = _mm256_sllv_epi64(a, b);
@@ -5231,7 +5191,7 @@ mod tests {
}
#[simd_test(enable = "avx2")]
- const fn test_mm_srav_epi32() {
+ fn test_mm_srav_epi32() {
let a = _mm_set1_epi32(4);
let count = _mm_set1_epi32(1);
let r = _mm_srav_epi32(a, count);
@@ -5240,7 +5200,7 @@ mod tests {
}
#[simd_test(enable = "avx2")]
- const fn test_mm256_srav_epi32() {
+ fn test_mm256_srav_epi32() {
let a = _mm256_set1_epi32(4);
let count = _mm256_set1_epi32(1);
let r = _mm256_srav_epi32(a, count);
@@ -5317,7 +5277,7 @@ mod tests {
}
#[simd_test(enable = "avx2")]
- const fn test_mm_srlv_epi32() {
+ fn test_mm_srlv_epi32() {
let a = _mm_set1_epi32(2);
let count = _mm_set1_epi32(1);
let r = _mm_srlv_epi32(a, count);
@@ -5326,7 +5286,7 @@ mod tests {
}
#[simd_test(enable = "avx2")]
- const fn test_mm256_srlv_epi32() {
+ fn test_mm256_srlv_epi32() {
let a = _mm256_set1_epi32(2);
let count = _mm256_set1_epi32(1);
let r = _mm256_srlv_epi32(a, count);
@@ -5335,7 +5295,7 @@ mod tests {
}
#[simd_test(enable = "avx2")]
- const fn test_mm_srlv_epi64() {
+ fn test_mm_srlv_epi64() {
let a = _mm_set1_epi64x(2);
let count = _mm_set1_epi64x(1);
let r = _mm_srlv_epi64(a, count);
@@ -5344,7 +5304,7 @@ mod tests {
}
#[simd_test(enable = "avx2")]
- const fn test_mm256_srlv_epi64() {
+ fn test_mm256_srlv_epi64() {
let a = _mm256_set1_epi64x(2);
let count = _mm256_set1_epi64x(1);
let r = _mm256_srlv_epi64(a, count);
diff --git a/library/stdarch/crates/core_arch/src/x86/avx512bw.rs b/library/stdarch/crates/core_arch/src/x86/avx512bw.rs
index cda2fad4ef2de..e400453f627bc 100644
--- a/library/stdarch/crates/core_arch/src/x86/avx512bw.rs
+++ b/library/stdarch/crates/core_arch/src/x86/avx512bw.rs
@@ -7370,14 +7370,8 @@ pub const fn _mm_maskz_slli_epi16(k: __mmask8, a: __m128i) -> _
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_sllv_epi16(a: __m512i, count: __m512i) -> __m512i {
- unsafe {
- let count = count.as_u16x32();
- let no_overflow: u16x32 = simd_lt(count, u16x32::splat(u16::BITS as u16));
- let count = simd_select(no_overflow, count, u16x32::ZERO);
- simd_select(no_overflow, simd_shl(a.as_u16x32(), count), u16x32::ZERO).as_m512i()
- }
+pub fn _mm512_sllv_epi16(a: __m512i, count: __m512i) -> __m512i {
+ unsafe { transmute(vpsllvw(a.as_i16x32(), count.as_i16x32())) }
}
/// Shift packed 16-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -7387,13 +7381,7 @@ pub const fn _mm512_sllv_epi16(a: __m512i, count: __m512i) -> __m512i {
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_mask_sllv_epi16(
- src: __m512i,
- k: __mmask32,
- a: __m512i,
- count: __m512i,
-) -> __m512i {
+pub fn _mm512_mask_sllv_epi16(src: __m512i, k: __mmask32, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_sllv_epi16(a, count).as_i16x32();
transmute(simd_select_bitmask(k, shf, src.as_i16x32()))
@@ -7407,8 +7395,7 @@ pub const fn _mm512_mask_sllv_epi16(
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_maskz_sllv_epi16(k: __mmask32, a: __m512i, count: __m512i) -> __m512i {
+pub fn _mm512_maskz_sllv_epi16(k: __mmask32, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_sllv_epi16(a, count).as_i16x32();
transmute(simd_select_bitmask(k, shf, i16x32::ZERO))
@@ -7422,14 +7409,8 @@ pub const fn _mm512_maskz_sllv_epi16(k: __mmask32, a: __m512i, count: __m512i) -
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_sllv_epi16(a: __m256i, count: __m256i) -> __m256i {
- unsafe {
- let count = count.as_u16x16();
- let no_overflow: u16x16 = simd_lt(count, u16x16::splat(u16::BITS as u16));
- let count = simd_select(no_overflow, count, u16x16::ZERO);
- simd_select(no_overflow, simd_shl(a.as_u16x16(), count), u16x16::ZERO).as_m256i()
- }
+pub fn _mm256_sllv_epi16(a: __m256i, count: __m256i) -> __m256i {
+ unsafe { transmute(vpsllvw256(a.as_i16x16(), count.as_i16x16())) }
}
/// Shift packed 16-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -7439,13 +7420,7 @@ pub const fn _mm256_sllv_epi16(a: __m256i, count: __m256i) -> __m256i {
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_mask_sllv_epi16(
- src: __m256i,
- k: __mmask16,
- a: __m256i,
- count: __m256i,
-) -> __m256i {
+pub fn _mm256_mask_sllv_epi16(src: __m256i, k: __mmask16, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_sllv_epi16(a, count).as_i16x16();
transmute(simd_select_bitmask(k, shf, src.as_i16x16()))
@@ -7459,8 +7434,7 @@ pub const fn _mm256_mask_sllv_epi16(
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_maskz_sllv_epi16(k: __mmask16, a: __m256i, count: __m256i) -> __m256i {
+pub fn _mm256_maskz_sllv_epi16(k: __mmask16, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_sllv_epi16(a, count).as_i16x16();
transmute(simd_select_bitmask(k, shf, i16x16::ZERO))
@@ -7474,14 +7448,8 @@ pub const fn _mm256_maskz_sllv_epi16(k: __mmask16, a: __m256i, count: __m256i) -
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_sllv_epi16(a: __m128i, count: __m128i) -> __m128i {
- unsafe {
- let count = count.as_u16x8();
- let no_overflow: u16x8 = simd_lt(count, u16x8::splat(u16::BITS as u16));
- let count = simd_select(no_overflow, count, u16x8::ZERO);
- simd_select(no_overflow, simd_shl(a.as_u16x8(), count), u16x8::ZERO).as_m128i()
- }
+pub fn _mm_sllv_epi16(a: __m128i, count: __m128i) -> __m128i {
+ unsafe { transmute(vpsllvw128(a.as_i16x8(), count.as_i16x8())) }
}
/// Shift packed 16-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -7491,8 +7459,7 @@ pub const fn _mm_sllv_epi16(a: __m128i, count: __m128i) -> __m128i {
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_mask_sllv_epi16(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_mask_sllv_epi16(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_sllv_epi16(a, count).as_i16x8();
transmute(simd_select_bitmask(k, shf, src.as_i16x8()))
@@ -7506,8 +7473,7 @@ pub const fn _mm_mask_sllv_epi16(src: __m128i, k: __mmask8, a: __m128i, count: _
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_maskz_sllv_epi16(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_maskz_sllv_epi16(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_sllv_epi16(a, count).as_i16x8();
transmute(simd_select_bitmask(k, shf, i16x8::ZERO))
@@ -7759,14 +7725,8 @@ pub const fn _mm_maskz_srli_epi16(k: __mmask8, a: __m128i) -> _
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_srlv_epi16(a: __m512i, count: __m512i) -> __m512i {
- unsafe {
- let count = count.as_u16x32();
- let no_overflow: u16x32 = simd_lt(count, u16x32::splat(u16::BITS as u16));
- let count = simd_select(no_overflow, count, u16x32::ZERO);
- simd_select(no_overflow, simd_shr(a.as_u16x32(), count), u16x32::ZERO).as_m512i()
- }
+pub fn _mm512_srlv_epi16(a: __m512i, count: __m512i) -> __m512i {
+ unsafe { transmute(vpsrlvw(a.as_i16x32(), count.as_i16x32())) }
}
/// Shift packed 16-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -7776,13 +7736,7 @@ pub const fn _mm512_srlv_epi16(a: __m512i, count: __m512i) -> __m512i {
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_mask_srlv_epi16(
- src: __m512i,
- k: __mmask32,
- a: __m512i,
- count: __m512i,
-) -> __m512i {
+pub fn _mm512_mask_srlv_epi16(src: __m512i, k: __mmask32, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_srlv_epi16(a, count).as_i16x32();
transmute(simd_select_bitmask(k, shf, src.as_i16x32()))
@@ -7796,8 +7750,7 @@ pub const fn _mm512_mask_srlv_epi16(
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_maskz_srlv_epi16(k: __mmask32, a: __m512i, count: __m512i) -> __m512i {
+pub fn _mm512_maskz_srlv_epi16(k: __mmask32, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_srlv_epi16(a, count).as_i16x32();
transmute(simd_select_bitmask(k, shf, i16x32::ZERO))
@@ -7811,14 +7764,8 @@ pub const fn _mm512_maskz_srlv_epi16(k: __mmask32, a: __m512i, count: __m512i) -
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_srlv_epi16(a: __m256i, count: __m256i) -> __m256i {
- unsafe {
- let count = count.as_u16x16();
- let no_overflow: u16x16 = simd_lt(count, u16x16::splat(u16::BITS as u16));
- let count = simd_select(no_overflow, count, u16x16::ZERO);
- simd_select(no_overflow, simd_shr(a.as_u16x16(), count), u16x16::ZERO).as_m256i()
- }
+pub fn _mm256_srlv_epi16(a: __m256i, count: __m256i) -> __m256i {
+ unsafe { transmute(vpsrlvw256(a.as_i16x16(), count.as_i16x16())) }
}
/// Shift packed 16-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -7828,13 +7775,7 @@ pub const fn _mm256_srlv_epi16(a: __m256i, count: __m256i) -> __m256i {
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_mask_srlv_epi16(
- src: __m256i,
- k: __mmask16,
- a: __m256i,
- count: __m256i,
-) -> __m256i {
+pub fn _mm256_mask_srlv_epi16(src: __m256i, k: __mmask16, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_srlv_epi16(a, count).as_i16x16();
transmute(simd_select_bitmask(k, shf, src.as_i16x16()))
@@ -7848,8 +7789,7 @@ pub const fn _mm256_mask_srlv_epi16(
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_maskz_srlv_epi16(k: __mmask16, a: __m256i, count: __m256i) -> __m256i {
+pub fn _mm256_maskz_srlv_epi16(k: __mmask16, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_srlv_epi16(a, count).as_i16x16();
transmute(simd_select_bitmask(k, shf, i16x16::ZERO))
@@ -7863,14 +7803,8 @@ pub const fn _mm256_maskz_srlv_epi16(k: __mmask16, a: __m256i, count: __m256i) -
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_srlv_epi16(a: __m128i, count: __m128i) -> __m128i {
- unsafe {
- let count = count.as_u16x8();
- let no_overflow: u16x8 = simd_lt(count, u16x8::splat(u16::BITS as u16));
- let count = simd_select(no_overflow, count, u16x8::ZERO);
- simd_select(no_overflow, simd_shr(a.as_u16x8(), count), u16x8::ZERO).as_m128i()
- }
+pub fn _mm_srlv_epi16(a: __m128i, count: __m128i) -> __m128i {
+ unsafe { transmute(vpsrlvw128(a.as_i16x8(), count.as_i16x8())) }
}
/// Shift packed 16-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -7880,8 +7814,7 @@ pub const fn _mm_srlv_epi16(a: __m128i, count: __m128i) -> __m128i {
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_mask_srlv_epi16(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_mask_srlv_epi16(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_srlv_epi16(a, count).as_i16x8();
transmute(simd_select_bitmask(k, shf, src.as_i16x8()))
@@ -7895,8 +7828,7 @@ pub const fn _mm_mask_srlv_epi16(src: __m128i, k: __mmask8, a: __m128i, count: _
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_maskz_srlv_epi16(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_maskz_srlv_epi16(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_srlv_epi16(a, count).as_i16x8();
transmute(simd_select_bitmask(k, shf, i16x8::ZERO))
@@ -8135,14 +8067,8 @@ pub const fn _mm_maskz_srai_epi16(k: __mmask8, a: __m128i) -> _
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_srav_epi16(a: __m512i, count: __m512i) -> __m512i {
- unsafe {
- let count = count.as_u16x32();
- let no_overflow: u16x32 = simd_lt(count, u16x32::splat(u16::BITS as u16));
- let count = simd_select(no_overflow, transmute(count), i16x32::splat(15));
- simd_shr(a.as_i16x32(), count).as_m512i()
- }
+pub fn _mm512_srav_epi16(a: __m512i, count: __m512i) -> __m512i {
+ unsafe { transmute(vpsravw(a.as_i16x32(), count.as_i16x32())) }
}
/// Shift packed 16-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -8152,13 +8078,7 @@ pub const fn _mm512_srav_epi16(a: __m512i, count: __m512i) -> __m512i {
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_mask_srav_epi16(
- src: __m512i,
- k: __mmask32,
- a: __m512i,
- count: __m512i,
-) -> __m512i {
+pub fn _mm512_mask_srav_epi16(src: __m512i, k: __mmask32, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_srav_epi16(a, count).as_i16x32();
transmute(simd_select_bitmask(k, shf, src.as_i16x32()))
@@ -8172,8 +8092,7 @@ pub const fn _mm512_mask_srav_epi16(
#[target_feature(enable = "avx512bw")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_maskz_srav_epi16(k: __mmask32, a: __m512i, count: __m512i) -> __m512i {
+pub fn _mm512_maskz_srav_epi16(k: __mmask32, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_srav_epi16(a, count).as_i16x32();
transmute(simd_select_bitmask(k, shf, i16x32::ZERO))
@@ -8187,14 +8106,8 @@ pub const fn _mm512_maskz_srav_epi16(k: __mmask32, a: __m512i, count: __m512i) -
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_srav_epi16(a: __m256i, count: __m256i) -> __m256i {
- unsafe {
- let count = count.as_u16x16();
- let no_overflow: u16x16 = simd_lt(count, u16x16::splat(u16::BITS as u16));
- let count = simd_select(no_overflow, transmute(count), i16x16::splat(15));
- simd_shr(a.as_i16x16(), count).as_m256i()
- }
+pub fn _mm256_srav_epi16(a: __m256i, count: __m256i) -> __m256i {
+ unsafe { transmute(vpsravw256(a.as_i16x16(), count.as_i16x16())) }
}
/// Shift packed 16-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -8204,13 +8117,7 @@ pub const fn _mm256_srav_epi16(a: __m256i, count: __m256i) -> __m256i {
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_mask_srav_epi16(
- src: __m256i,
- k: __mmask16,
- a: __m256i,
- count: __m256i,
-) -> __m256i {
+pub fn _mm256_mask_srav_epi16(src: __m256i, k: __mmask16, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_srav_epi16(a, count).as_i16x16();
transmute(simd_select_bitmask(k, shf, src.as_i16x16()))
@@ -8224,8 +8131,7 @@ pub const fn _mm256_mask_srav_epi16(
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_maskz_srav_epi16(k: __mmask16, a: __m256i, count: __m256i) -> __m256i {
+pub fn _mm256_maskz_srav_epi16(k: __mmask16, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_srav_epi16(a, count).as_i16x16();
transmute(simd_select_bitmask(k, shf, i16x16::ZERO))
@@ -8239,14 +8145,8 @@ pub const fn _mm256_maskz_srav_epi16(k: __mmask16, a: __m256i, count: __m256i) -
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_srav_epi16(a: __m128i, count: __m128i) -> __m128i {
- unsafe {
- let count = count.as_u16x8();
- let no_overflow: u16x8 = simd_lt(count, u16x8::splat(u16::BITS as u16));
- let count = simd_select(no_overflow, transmute(count), i16x8::splat(15));
- simd_shr(a.as_i16x8(), count).as_m128i()
- }
+pub fn _mm_srav_epi16(a: __m128i, count: __m128i) -> __m128i {
+ unsafe { transmute(vpsravw128(a.as_i16x8(), count.as_i16x8())) }
}
/// Shift packed 16-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -8256,8 +8156,7 @@ pub const fn _mm_srav_epi16(a: __m128i, count: __m128i) -> __m128i {
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_mask_srav_epi16(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_mask_srav_epi16(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_srav_epi16(a, count).as_i16x8();
transmute(simd_select_bitmask(k, shf, src.as_i16x8()))
@@ -8271,8 +8170,7 @@ pub const fn _mm_mask_srav_epi16(src: __m128i, k: __mmask8, a: __m128i, count: _
#[target_feature(enable = "avx512bw,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravw))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_maskz_srav_epi16(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_maskz_srav_epi16(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_srav_epi16(a, count).as_i16x8();
transmute(simd_select_bitmask(k, shf, i16x8::ZERO))
@@ -12618,12 +12516,33 @@ unsafe extern "llvm-intrinsic" {
#[link_name = "llvm.x86.avx512.psll.w.512"]
fn vpsllw(a: i16x32, count: i16x8) -> i16x32;
+ #[link_name = "llvm.x86.avx512.psllv.w.512"]
+ fn vpsllvw(a: i16x32, b: i16x32) -> i16x32;
+ #[link_name = "llvm.x86.avx512.psllv.w.256"]
+ fn vpsllvw256(a: i16x16, b: i16x16) -> i16x16;
+ #[link_name = "llvm.x86.avx512.psllv.w.128"]
+ fn vpsllvw128(a: i16x8, b: i16x8) -> i16x8;
+
#[link_name = "llvm.x86.avx512.psrl.w.512"]
fn vpsrlw(a: i16x32, count: i16x8) -> i16x32;
+ #[link_name = "llvm.x86.avx512.psrlv.w.512"]
+ fn vpsrlvw(a: i16x32, b: i16x32) -> i16x32;
+ #[link_name = "llvm.x86.avx512.psrlv.w.256"]
+ fn vpsrlvw256(a: i16x16, b: i16x16) -> i16x16;
+ #[link_name = "llvm.x86.avx512.psrlv.w.128"]
+ fn vpsrlvw128(a: i16x8, b: i16x8) -> i16x8;
+
#[link_name = "llvm.x86.avx512.psra.w.512"]
fn vpsraw(a: i16x32, count: i16x8) -> i16x32;
+ #[link_name = "llvm.x86.avx512.psrav.w.512"]
+ fn vpsravw(a: i16x32, count: i16x32) -> i16x32;
+ #[link_name = "llvm.x86.avx512.psrav.w.256"]
+ fn vpsravw256(a: i16x16, count: i16x16) -> i16x16;
+ #[link_name = "llvm.x86.avx512.psrav.w.128"]
+ fn vpsravw128(a: i16x8, count: i16x8) -> i16x8;
+
#[link_name = "llvm.x86.avx512.vpermi2var.hi.512"]
fn vpermi2w(a: i16x32, idx: i16x32, b: i16x32) -> i16x32;
#[link_name = "llvm.x86.avx512.vpermi2var.hi.256"]
@@ -18386,7 +18305,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw")]
- const fn test_mm512_sllv_epi16() {
+ fn test_mm512_sllv_epi16() {
let a = _mm512_set1_epi16(1 << 15);
let count = _mm512_set1_epi16(2);
let r = _mm512_sllv_epi16(a, count);
@@ -18395,7 +18314,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw")]
- const fn test_mm512_mask_sllv_epi16() {
+ fn test_mm512_mask_sllv_epi16() {
let a = _mm512_set1_epi16(1 << 15);
let count = _mm512_set1_epi16(2);
let r = _mm512_mask_sllv_epi16(a, 0, a, count);
@@ -18406,7 +18325,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw")]
- const fn test_mm512_maskz_sllv_epi16() {
+ fn test_mm512_maskz_sllv_epi16() {
let a = _mm512_set1_epi16(1 << 15);
let count = _mm512_set1_epi16(2);
let r = _mm512_maskz_sllv_epi16(0, a, count);
@@ -18417,7 +18336,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm256_sllv_epi16() {
+ fn test_mm256_sllv_epi16() {
let a = _mm256_set1_epi16(1 << 15);
let count = _mm256_set1_epi16(2);
let r = _mm256_sllv_epi16(a, count);
@@ -18426,7 +18345,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm256_mask_sllv_epi16() {
+ fn test_mm256_mask_sllv_epi16() {
let a = _mm256_set1_epi16(1 << 15);
let count = _mm256_set1_epi16(2);
let r = _mm256_mask_sllv_epi16(a, 0, a, count);
@@ -18437,7 +18356,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm256_maskz_sllv_epi16() {
+ fn test_mm256_maskz_sllv_epi16() {
let a = _mm256_set1_epi16(1 << 15);
let count = _mm256_set1_epi16(2);
let r = _mm256_maskz_sllv_epi16(0, a, count);
@@ -18448,7 +18367,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm_sllv_epi16() {
+ fn test_mm_sllv_epi16() {
let a = _mm_set1_epi16(1 << 15);
let count = _mm_set1_epi16(2);
let r = _mm_sllv_epi16(a, count);
@@ -18457,7 +18376,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm_mask_sllv_epi16() {
+ fn test_mm_mask_sllv_epi16() {
let a = _mm_set1_epi16(1 << 15);
let count = _mm_set1_epi16(2);
let r = _mm_mask_sllv_epi16(a, 0, a, count);
@@ -18468,7 +18387,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm_maskz_sllv_epi16() {
+ fn test_mm_maskz_sllv_epi16() {
let a = _mm_set1_epi16(1 << 15);
let count = _mm_set1_epi16(2);
let r = _mm_maskz_sllv_epi16(0, a, count);
@@ -18622,7 +18541,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw")]
- const fn test_mm512_srlv_epi16() {
+ fn test_mm512_srlv_epi16() {
let a = _mm512_set1_epi16(1 << 1);
let count = _mm512_set1_epi16(2);
let r = _mm512_srlv_epi16(a, count);
@@ -18631,7 +18550,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw")]
- const fn test_mm512_mask_srlv_epi16() {
+ fn test_mm512_mask_srlv_epi16() {
let a = _mm512_set1_epi16(1 << 1);
let count = _mm512_set1_epi16(2);
let r = _mm512_mask_srlv_epi16(a, 0, a, count);
@@ -18642,7 +18561,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw")]
- const fn test_mm512_maskz_srlv_epi16() {
+ fn test_mm512_maskz_srlv_epi16() {
let a = _mm512_set1_epi16(1 << 1);
let count = _mm512_set1_epi16(2);
let r = _mm512_maskz_srlv_epi16(0, a, count);
@@ -18653,7 +18572,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm256_srlv_epi16() {
+ fn test_mm256_srlv_epi16() {
let a = _mm256_set1_epi16(1 << 1);
let count = _mm256_set1_epi16(2);
let r = _mm256_srlv_epi16(a, count);
@@ -18662,7 +18581,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm256_mask_srlv_epi16() {
+ fn test_mm256_mask_srlv_epi16() {
let a = _mm256_set1_epi16(1 << 1);
let count = _mm256_set1_epi16(2);
let r = _mm256_mask_srlv_epi16(a, 0, a, count);
@@ -18673,7 +18592,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm256_maskz_srlv_epi16() {
+ fn test_mm256_maskz_srlv_epi16() {
let a = _mm256_set1_epi16(1 << 1);
let count = _mm256_set1_epi16(2);
let r = _mm256_maskz_srlv_epi16(0, a, count);
@@ -18684,7 +18603,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm_srlv_epi16() {
+ fn test_mm_srlv_epi16() {
let a = _mm_set1_epi16(1 << 1);
let count = _mm_set1_epi16(2);
let r = _mm_srlv_epi16(a, count);
@@ -18693,7 +18612,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm_mask_srlv_epi16() {
+ fn test_mm_mask_srlv_epi16() {
let a = _mm_set1_epi16(1 << 1);
let count = _mm_set1_epi16(2);
let r = _mm_mask_srlv_epi16(a, 0, a, count);
@@ -18704,7 +18623,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm_maskz_srlv_epi16() {
+ fn test_mm_maskz_srlv_epi16() {
let a = _mm_set1_epi16(1 << 1);
let count = _mm_set1_epi16(2);
let r = _mm_maskz_srlv_epi16(0, a, count);
@@ -18858,7 +18777,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw")]
- const fn test_mm512_srav_epi16() {
+ fn test_mm512_srav_epi16() {
let a = _mm512_set1_epi16(8);
let count = _mm512_set1_epi16(2);
let r = _mm512_srav_epi16(a, count);
@@ -18867,7 +18786,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw")]
- const fn test_mm512_mask_srav_epi16() {
+ fn test_mm512_mask_srav_epi16() {
let a = _mm512_set1_epi16(8);
let count = _mm512_set1_epi16(2);
let r = _mm512_mask_srav_epi16(a, 0, a, count);
@@ -18878,7 +18797,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw")]
- const fn test_mm512_maskz_srav_epi16() {
+ fn test_mm512_maskz_srav_epi16() {
let a = _mm512_set1_epi16(8);
let count = _mm512_set1_epi16(2);
let r = _mm512_maskz_srav_epi16(0, a, count);
@@ -18889,7 +18808,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm256_srav_epi16() {
+ fn test_mm256_srav_epi16() {
let a = _mm256_set1_epi16(8);
let count = _mm256_set1_epi16(2);
let r = _mm256_srav_epi16(a, count);
@@ -18898,7 +18817,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm256_mask_srav_epi16() {
+ fn test_mm256_mask_srav_epi16() {
let a = _mm256_set1_epi16(8);
let count = _mm256_set1_epi16(2);
let r = _mm256_mask_srav_epi16(a, 0, a, count);
@@ -18909,7 +18828,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm256_maskz_srav_epi16() {
+ fn test_mm256_maskz_srav_epi16() {
let a = _mm256_set1_epi16(8);
let count = _mm256_set1_epi16(2);
let r = _mm256_maskz_srav_epi16(0, a, count);
@@ -18920,7 +18839,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm_srav_epi16() {
+ fn test_mm_srav_epi16() {
let a = _mm_set1_epi16(8);
let count = _mm_set1_epi16(2);
let r = _mm_srav_epi16(a, count);
@@ -18929,7 +18848,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm_mask_srav_epi16() {
+ fn test_mm_mask_srav_epi16() {
let a = _mm_set1_epi16(8);
let count = _mm_set1_epi16(2);
let r = _mm_mask_srav_epi16(a, 0, a, count);
@@ -18940,7 +18859,7 @@ mod tests {
}
#[simd_test(enable = "avx512bw,avx512vl")]
- const fn test_mm_maskz_srav_epi16() {
+ fn test_mm_maskz_srav_epi16() {
let a = _mm_set1_epi16(8);
let count = _mm_set1_epi16(2);
let r = _mm_maskz_srav_epi16(0, a, count);
diff --git a/library/stdarch/crates/core_arch/src/x86/avx512f.rs b/library/stdarch/crates/core_arch/src/x86/avx512f.rs
index a9e498abf9b5a..5d9aecff64d84 100644
--- a/library/stdarch/crates/core_arch/src/x86/avx512f.rs
+++ b/library/stdarch/crates/core_arch/src/x86/avx512f.rs
@@ -13091,6 +13091,122 @@ pub const fn _mm512_maskz_cvtepu32_ps(k: __mmask16, a: __m512i) -> __m512 {
}
}
+/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst.
+///
+/// Due to an omission by Intel, these intrinsics are not documented in the Intrinsics Guide.
+/// Documentation on them can be found in the [Intel Software Development Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html).
+#[inline]
+#[target_feature(enable = "avx512f,avx512vl")]
+#[unstable(
+ feature = "stdarch_x86_avx512_vl_u32_to_f32_conversions",
+ issue = "161585"
+)]
+#[cfg_attr(test, assert_instr(vcvtudq2ps))]
+#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
+pub const fn _mm256_cvtepu32_ps(a: __m256i) -> __m256 {
+ unsafe {
+ let a = a.as_u32x8();
+ transmute::(simd_cast(a))
+ }
+}
+
+/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
+///
+/// Due to an omission by Intel, these intrinsics are not documented in the Intrinsics Guide.
+/// Documentation on them can be found in the [Intel Software Development Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html).
+#[inline]
+#[target_feature(enable = "avx512f,avx512vl")]
+#[unstable(
+ feature = "stdarch_x86_avx512_vl_u32_to_f32_conversions",
+ issue = "161585"
+)]
+#[cfg_attr(test, assert_instr(vcvtudq2ps))]
+#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
+pub const fn _mm256_mask_cvtepu32_ps(src: __m256, k: __mmask8, a: __m256i) -> __m256 {
+ unsafe {
+ let convert = _mm256_cvtepu32_ps(a).as_f32x8();
+ transmute(simd_select_bitmask(k, convert, src.as_f32x8()))
+ }
+}
+
+/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
+///
+/// Due to an omission by Intel, these intrinsics are not documented in the Intrinsics Guide.
+/// Documentation on them can be found in the [Intel Software Development Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html).
+#[inline]
+#[target_feature(enable = "avx512f,avx512vl")]
+#[unstable(
+ feature = "stdarch_x86_avx512_vl_u32_to_f32_conversions",
+ issue = "161585"
+)]
+#[cfg_attr(test, assert_instr(vcvtudq2ps))]
+#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
+pub const fn _mm256_maskz_cvtepu32_ps(k: __mmask8, a: __m256i) -> __m256 {
+ unsafe {
+ let convert = _mm256_cvtepu32_ps(a).as_f32x8();
+ transmute(simd_select_bitmask(k, convert, f32x8::ZERO))
+ }
+}
+
+/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst.
+///
+/// Due to an omission by Intel, these intrinsics are not documented in the Intrinsics Guide.
+/// Documentation on them can be found in the [Intel Software Development Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html).
+#[inline]
+#[target_feature(enable = "avx512f,avx512vl")]
+#[unstable(
+ feature = "stdarch_x86_avx512_vl_u32_to_f32_conversions",
+ issue = "161585"
+)]
+#[cfg_attr(test, assert_instr(vcvtudq2ps))]
+#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
+pub const fn _mm_cvtepu32_ps(a: __m128i) -> __m128 {
+ unsafe {
+ let a = a.as_u32x4();
+ transmute::(simd_cast(a))
+ }
+}
+
+/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
+/// Bits 4 through 7 of k are ignored.
+///
+/// Due to an omission by Intel, these intrinsics are not documented in the Intrinsics Guide.
+/// Documentation on them can be found in the [Intel Software Development Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html).
+#[inline]
+#[target_feature(enable = "avx512f,avx512vl")]
+#[unstable(
+ feature = "stdarch_x86_avx512_vl_u32_to_f32_conversions",
+ issue = "161585"
+)]
+#[cfg_attr(test, assert_instr(vcvtudq2ps))]
+#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
+pub const fn _mm_mask_cvtepu32_ps(src: __m128, k: __mmask8, a: __m128i) -> __m128 {
+ unsafe {
+ let convert = _mm_cvtepu32_ps(a).as_f32x4();
+ transmute(simd_select_bitmask(k, convert, src.as_f32x4()))
+ }
+}
+
+/// Convert packed unsigned 32-bit integers in a to packed single-precision (32-bit) floating-point elements, and store the results in dst using zeromask k (elements are zeroed out when the corresponding mask bit is not set).
+/// Bits 4 through 7 of k are ignored.
+///
+/// Due to an omission by Intel, these intrinsics are not documented in the Intrinsics Guide.
+/// Documentation on them can be found in the [Intel Software Development Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html).
+#[inline]
+#[target_feature(enable = "avx512f,avx512vl")]
+#[unstable(
+ feature = "stdarch_x86_avx512_vl_u32_to_f32_conversions",
+ issue = "161585"
+)]
+#[cfg_attr(test, assert_instr(vcvtudq2ps))]
+#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
+pub const fn _mm_maskz_cvtepu32_ps(k: __mmask8, a: __m128i) -> __m128 {
+ unsafe {
+ let convert = _mm_cvtepu32_ps(a).as_f32x4();
+ transmute(simd_select_bitmask(k, convert, f32x4::ZERO))
+ }
+}
+
/// Convert packed unsigned 32-bit integers in a to packed double-precision (64-bit) floating-point elements, and store the results in dst.
///
/// [Intel's documentation](https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_cvtepu32_pd&expand=1580)
@@ -21532,14 +21648,8 @@ pub const fn _mm_maskz_srai_epi64(k: __mmask8, a: __m128i) -> _
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_srav_epi32(a: __m512i, count: __m512i) -> __m512i {
- unsafe {
- let count = count.as_u32x16();
- let no_overflow: u32x16 = simd_lt(count, u32x16::splat(u32::BITS));
- let count = simd_select(no_overflow, transmute(count), i32x16::splat(31));
- simd_shr(a.as_i32x16(), count).as_m512i()
- }
+pub fn _mm512_srav_epi32(a: __m512i, count: __m512i) -> __m512i {
+ unsafe { transmute(vpsravd(a.as_i32x16(), count.as_i32x16())) }
}
/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -21549,13 +21659,7 @@ pub const fn _mm512_srav_epi32(a: __m512i, count: __m512i) -> __m512i {
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_mask_srav_epi32(
- src: __m512i,
- k: __mmask16,
- a: __m512i,
- count: __m512i,
-) -> __m512i {
+pub fn _mm512_mask_srav_epi32(src: __m512i, k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_srav_epi32(a, count).as_i32x16();
transmute(simd_select_bitmask(k, shf, src.as_i32x16()))
@@ -21569,8 +21673,7 @@ pub const fn _mm512_mask_srav_epi32(
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_maskz_srav_epi32(k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
+pub fn _mm512_maskz_srav_epi32(k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_srav_epi32(a, count).as_i32x16();
transmute(simd_select_bitmask(k, shf, i32x16::ZERO))
@@ -21584,13 +21687,7 @@ pub const fn _mm512_maskz_srav_epi32(k: __mmask16, a: __m512i, count: __m512i) -
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_mask_srav_epi32(
- src: __m256i,
- k: __mmask8,
- a: __m256i,
- count: __m256i,
-) -> __m256i {
+pub fn _mm256_mask_srav_epi32(src: __m256i, k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_srav_epi32(a, count).as_i32x8();
transmute(simd_select_bitmask(k, shf, src.as_i32x8()))
@@ -21604,8 +21701,7 @@ pub const fn _mm256_mask_srav_epi32(
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_maskz_srav_epi32(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
+pub fn _mm256_maskz_srav_epi32(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_srav_epi32(a, count).as_i32x8();
transmute(simd_select_bitmask(k, shf, i32x8::ZERO))
@@ -21619,8 +21715,7 @@ pub const fn _mm256_maskz_srav_epi32(k: __mmask8, a: __m256i, count: __m256i) ->
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_mask_srav_epi32(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_mask_srav_epi32(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_srav_epi32(a, count).as_i32x4();
transmute(simd_select_bitmask(k, shf, src.as_i32x4()))
@@ -21634,8 +21729,7 @@ pub const fn _mm_mask_srav_epi32(src: __m128i, k: __mmask8, a: __m128i, count: _
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_maskz_srav_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_maskz_srav_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_srav_epi32(a, count).as_i32x4();
transmute(simd_select_bitmask(k, shf, i32x4::ZERO))
@@ -21649,14 +21743,8 @@ pub const fn _mm_maskz_srav_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_srav_epi64(a: __m512i, count: __m512i) -> __m512i {
- unsafe {
- let count = count.as_u64x8();
- let no_overflow: u64x8 = simd_lt(count, u64x8::splat(u64::BITS as u64));
- let count = simd_select(no_overflow, transmute(count), i64x8::splat(63));
- simd_shr(a.as_i64x8(), count).as_m512i()
- }
+pub fn _mm512_srav_epi64(a: __m512i, count: __m512i) -> __m512i {
+ unsafe { transmute(vpsravq(a.as_i64x8(), count.as_i64x8())) }
}
/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -21666,13 +21754,7 @@ pub const fn _mm512_srav_epi64(a: __m512i, count: __m512i) -> __m512i {
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_mask_srav_epi64(
- src: __m512i,
- k: __mmask8,
- a: __m512i,
- count: __m512i,
-) -> __m512i {
+pub fn _mm512_mask_srav_epi64(src: __m512i, k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_srav_epi64(a, count).as_i64x8();
transmute(simd_select_bitmask(k, shf, src.as_i64x8()))
@@ -21686,8 +21768,7 @@ pub const fn _mm512_mask_srav_epi64(
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_maskz_srav_epi64(k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
+pub fn _mm512_maskz_srav_epi64(k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_srav_epi64(a, count).as_i64x8();
transmute(simd_select_bitmask(k, shf, i64x8::ZERO))
@@ -21701,14 +21782,8 @@ pub const fn _mm512_maskz_srav_epi64(k: __mmask8, a: __m512i, count: __m512i) ->
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_srav_epi64(a: __m256i, count: __m256i) -> __m256i {
- unsafe {
- let count = count.as_u64x4();
- let no_overflow: u64x4 = simd_lt(count, u64x4::splat(u64::BITS as u64));
- let count = simd_select(no_overflow, transmute(count), i64x4::splat(63));
- simd_shr(a.as_i64x4(), count).as_m256i()
- }
+pub fn _mm256_srav_epi64(a: __m256i, count: __m256i) -> __m256i {
+ unsafe { transmute(vpsravq256(a.as_i64x4(), count.as_i64x4())) }
}
/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -21718,13 +21793,7 @@ pub const fn _mm256_srav_epi64(a: __m256i, count: __m256i) -> __m256i {
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_mask_srav_epi64(
- src: __m256i,
- k: __mmask8,
- a: __m256i,
- count: __m256i,
-) -> __m256i {
+pub fn _mm256_mask_srav_epi64(src: __m256i, k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_srav_epi64(a, count).as_i64x4();
transmute(simd_select_bitmask(k, shf, src.as_i64x4()))
@@ -21738,8 +21807,7 @@ pub const fn _mm256_mask_srav_epi64(
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_maskz_srav_epi64(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
+pub fn _mm256_maskz_srav_epi64(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_srav_epi64(a, count).as_i64x4();
transmute(simd_select_bitmask(k, shf, i64x4::ZERO))
@@ -21753,14 +21821,8 @@ pub const fn _mm256_maskz_srav_epi64(k: __mmask8, a: __m256i, count: __m256i) ->
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_srav_epi64(a: __m128i, count: __m128i) -> __m128i {
- unsafe {
- let count = count.as_u64x2();
- let no_overflow: u64x2 = simd_lt(count, u64x2::splat(u64::BITS as u64));
- let count = simd_select(no_overflow, transmute(count), i64x2::splat(63));
- simd_shr(a.as_i64x2(), count).as_m128i()
- }
+pub fn _mm_srav_epi64(a: __m128i, count: __m128i) -> __m128i {
+ unsafe { transmute(vpsravq128(a.as_i64x2(), count.as_i64x2())) }
}
/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in sign bits, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -21770,8 +21832,7 @@ pub const fn _mm_srav_epi64(a: __m128i, count: __m128i) -> __m128i {
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_mask_srav_epi64(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_mask_srav_epi64(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_srav_epi64(a, count).as_i64x2();
transmute(simd_select_bitmask(k, shf, src.as_i64x2()))
@@ -21785,8 +21846,7 @@ pub const fn _mm_mask_srav_epi64(src: __m128i, k: __mmask8, a: __m128i, count: _
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsravq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_maskz_srav_epi64(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_maskz_srav_epi64(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_srav_epi64(a, count).as_i64x2();
transmute(simd_select_bitmask(k, shf, i64x2::ZERO))
@@ -22376,14 +22436,8 @@ pub const fn _mm_maskz_rorv_epi64(k: __mmask8, a: __m128i, b: __m128i) -> __m128
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_sllv_epi32(a: __m512i, count: __m512i) -> __m512i {
- unsafe {
- let count = count.as_u32x16();
- let no_overflow: u32x16 = simd_lt(count, u32x16::splat(u32::BITS));
- let count = simd_select(no_overflow, count, u32x16::ZERO);
- simd_select(no_overflow, simd_shl(a.as_u32x16(), count), u32x16::ZERO).as_m512i()
- }
+pub fn _mm512_sllv_epi32(a: __m512i, count: __m512i) -> __m512i {
+ unsafe { transmute(vpsllvd(a.as_i32x16(), count.as_i32x16())) }
}
/// Shift packed 32-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -22393,13 +22447,7 @@ pub const fn _mm512_sllv_epi32(a: __m512i, count: __m512i) -> __m512i {
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_mask_sllv_epi32(
- src: __m512i,
- k: __mmask16,
- a: __m512i,
- count: __m512i,
-) -> __m512i {
+pub fn _mm512_mask_sllv_epi32(src: __m512i, k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_sllv_epi32(a, count).as_i32x16();
transmute(simd_select_bitmask(k, shf, src.as_i32x16()))
@@ -22413,8 +22461,7 @@ pub const fn _mm512_mask_sllv_epi32(
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_maskz_sllv_epi32(k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
+pub fn _mm512_maskz_sllv_epi32(k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_sllv_epi32(a, count).as_i32x16();
transmute(simd_select_bitmask(k, shf, i32x16::ZERO))
@@ -22428,13 +22475,7 @@ pub const fn _mm512_maskz_sllv_epi32(k: __mmask16, a: __m512i, count: __m512i) -
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_mask_sllv_epi32(
- src: __m256i,
- k: __mmask8,
- a: __m256i,
- count: __m256i,
-) -> __m256i {
+pub fn _mm256_mask_sllv_epi32(src: __m256i, k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_sllv_epi32(a, count).as_i32x8();
transmute(simd_select_bitmask(k, shf, src.as_i32x8()))
@@ -22448,8 +22489,7 @@ pub const fn _mm256_mask_sllv_epi32(
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_maskz_sllv_epi32(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
+pub fn _mm256_maskz_sllv_epi32(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_sllv_epi32(a, count).as_i32x8();
transmute(simd_select_bitmask(k, shf, i32x8::ZERO))
@@ -22463,8 +22503,7 @@ pub const fn _mm256_maskz_sllv_epi32(k: __mmask8, a: __m256i, count: __m256i) ->
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_mask_sllv_epi32(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_mask_sllv_epi32(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_sllv_epi32(a, count).as_i32x4();
transmute(simd_select_bitmask(k, shf, src.as_i32x4()))
@@ -22478,8 +22517,7 @@ pub const fn _mm_mask_sllv_epi32(src: __m128i, k: __mmask8, a: __m128i, count: _
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_maskz_sllv_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_maskz_sllv_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_sllv_epi32(a, count).as_i32x4();
transmute(simd_select_bitmask(k, shf, i32x4::ZERO))
@@ -22493,14 +22531,8 @@ pub const fn _mm_maskz_sllv_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_srlv_epi32(a: __m512i, count: __m512i) -> __m512i {
- unsafe {
- let count = count.as_u32x16();
- let no_overflow: u32x16 = simd_lt(count, u32x16::splat(u32::BITS));
- let count = simd_select(no_overflow, count, u32x16::ZERO);
- simd_select(no_overflow, simd_shr(a.as_u32x16(), count), u32x16::ZERO).as_m512i()
- }
+pub fn _mm512_srlv_epi32(a: __m512i, count: __m512i) -> __m512i {
+ unsafe { transmute(vpsrlvd(a.as_i32x16(), count.as_i32x16())) }
}
/// Shift packed 32-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -22510,13 +22542,7 @@ pub const fn _mm512_srlv_epi32(a: __m512i, count: __m512i) -> __m512i {
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_mask_srlv_epi32(
- src: __m512i,
- k: __mmask16,
- a: __m512i,
- count: __m512i,
-) -> __m512i {
+pub fn _mm512_mask_srlv_epi32(src: __m512i, k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_srlv_epi32(a, count).as_i32x16();
transmute(simd_select_bitmask(k, shf, src.as_i32x16()))
@@ -22530,8 +22556,7 @@ pub const fn _mm512_mask_srlv_epi32(
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_maskz_srlv_epi32(k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
+pub fn _mm512_maskz_srlv_epi32(k: __mmask16, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_srlv_epi32(a, count).as_i32x16();
transmute(simd_select_bitmask(k, shf, i32x16::ZERO))
@@ -22545,13 +22570,7 @@ pub const fn _mm512_maskz_srlv_epi32(k: __mmask16, a: __m512i, count: __m512i) -
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_mask_srlv_epi32(
- src: __m256i,
- k: __mmask8,
- a: __m256i,
- count: __m256i,
-) -> __m256i {
+pub fn _mm256_mask_srlv_epi32(src: __m256i, k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_srlv_epi32(a, count).as_i32x8();
transmute(simd_select_bitmask(k, shf, src.as_i32x8()))
@@ -22565,8 +22584,7 @@ pub const fn _mm256_mask_srlv_epi32(
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_maskz_srlv_epi32(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
+pub fn _mm256_maskz_srlv_epi32(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_srlv_epi32(a, count).as_i32x8();
transmute(simd_select_bitmask(k, shf, i32x8::ZERO))
@@ -22580,8 +22598,7 @@ pub const fn _mm256_maskz_srlv_epi32(k: __mmask8, a: __m256i, count: __m256i) ->
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_mask_srlv_epi32(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_mask_srlv_epi32(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_srlv_epi32(a, count).as_i32x4();
transmute(simd_select_bitmask(k, shf, src.as_i32x4()))
@@ -22595,8 +22612,7 @@ pub const fn _mm_mask_srlv_epi32(src: __m128i, k: __mmask8, a: __m128i, count: _
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvd))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_maskz_srlv_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_maskz_srlv_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_srlv_epi32(a, count).as_i32x4();
transmute(simd_select_bitmask(k, shf, i32x4::ZERO))
@@ -22610,14 +22626,8 @@ pub const fn _mm_maskz_srlv_epi32(k: __mmask8, a: __m128i, count: __m128i) -> __
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_sllv_epi64(a: __m512i, count: __m512i) -> __m512i {
- unsafe {
- let count = count.as_u64x8();
- let no_overflow: u64x8 = simd_lt(count, u64x8::splat(u64::BITS as u64));
- let count = simd_select(no_overflow, count, u64x8::ZERO);
- simd_select(no_overflow, simd_shl(a.as_u64x8(), count), u64x8::ZERO).as_m512i()
- }
+pub fn _mm512_sllv_epi64(a: __m512i, count: __m512i) -> __m512i {
+ unsafe { transmute(vpsllvq(a.as_i64x8(), count.as_i64x8())) }
}
/// Shift packed 64-bit integers in a left by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -22627,13 +22637,7 @@ pub const fn _mm512_sllv_epi64(a: __m512i, count: __m512i) -> __m512i {
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_mask_sllv_epi64(
- src: __m512i,
- k: __mmask8,
- a: __m512i,
- count: __m512i,
-) -> __m512i {
+pub fn _mm512_mask_sllv_epi64(src: __m512i, k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_sllv_epi64(a, count).as_i64x8();
transmute(simd_select_bitmask(k, shf, src.as_i64x8()))
@@ -22647,8 +22651,7 @@ pub const fn _mm512_mask_sllv_epi64(
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_maskz_sllv_epi64(k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
+pub fn _mm512_maskz_sllv_epi64(k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_sllv_epi64(a, count).as_i64x8();
transmute(simd_select_bitmask(k, shf, i64x8::ZERO))
@@ -22662,13 +22665,7 @@ pub const fn _mm512_maskz_sllv_epi64(k: __mmask8, a: __m512i, count: __m512i) ->
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_mask_sllv_epi64(
- src: __m256i,
- k: __mmask8,
- a: __m256i,
- count: __m256i,
-) -> __m256i {
+pub fn _mm256_mask_sllv_epi64(src: __m256i, k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_sllv_epi64(a, count).as_i64x4();
transmute(simd_select_bitmask(k, shf, src.as_i64x4()))
@@ -22682,8 +22679,7 @@ pub const fn _mm256_mask_sllv_epi64(
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_maskz_sllv_epi64(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
+pub fn _mm256_maskz_sllv_epi64(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_sllv_epi64(a, count).as_i64x4();
transmute(simd_select_bitmask(k, shf, i64x4::ZERO))
@@ -22697,8 +22693,7 @@ pub const fn _mm256_maskz_sllv_epi64(k: __mmask8, a: __m256i, count: __m256i) ->
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_mask_sllv_epi64(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_mask_sllv_epi64(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_sllv_epi64(a, count).as_i64x2();
transmute(simd_select_bitmask(k, shf, src.as_i64x2()))
@@ -22712,8 +22707,7 @@ pub const fn _mm_mask_sllv_epi64(src: __m128i, k: __mmask8, a: __m128i, count: _
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsllvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_maskz_sllv_epi64(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_maskz_sllv_epi64(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_sllv_epi64(a, count).as_i64x2();
transmute(simd_select_bitmask(k, shf, i64x2::ZERO))
@@ -22727,14 +22721,8 @@ pub const fn _mm_maskz_sllv_epi64(k: __mmask8, a: __m128i, count: __m128i) -> __
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_srlv_epi64(a: __m512i, count: __m512i) -> __m512i {
- unsafe {
- let count = count.as_u64x8();
- let no_overflow: u64x8 = simd_lt(count, u64x8::splat(u64::BITS as u64));
- let count = simd_select(no_overflow, count, u64x8::ZERO);
- simd_select(no_overflow, simd_shr(a.as_u64x8(), count), u64x8::ZERO).as_m512i()
- }
+pub fn _mm512_srlv_epi64(a: __m512i, count: __m512i) -> __m512i {
+ unsafe { transmute(vpsrlvq(a.as_i64x8(), count.as_i64x8())) }
}
/// Shift packed 64-bit integers in a right by the amount specified by the corresponding element in count while shifting in zeros, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).
@@ -22744,13 +22732,7 @@ pub const fn _mm512_srlv_epi64(a: __m512i, count: __m512i) -> __m512i {
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_mask_srlv_epi64(
- src: __m512i,
- k: __mmask8,
- a: __m512i,
- count: __m512i,
-) -> __m512i {
+pub fn _mm512_mask_srlv_epi64(src: __m512i, k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_srlv_epi64(a, count).as_i64x8();
transmute(simd_select_bitmask(k, shf, src.as_i64x8()))
@@ -22764,8 +22746,7 @@ pub const fn _mm512_mask_srlv_epi64(
#[target_feature(enable = "avx512f")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm512_maskz_srlv_epi64(k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
+pub fn _mm512_maskz_srlv_epi64(k: __mmask8, a: __m512i, count: __m512i) -> __m512i {
unsafe {
let shf = _mm512_srlv_epi64(a, count).as_i64x8();
transmute(simd_select_bitmask(k, shf, i64x8::ZERO))
@@ -22779,13 +22760,7 @@ pub const fn _mm512_maskz_srlv_epi64(k: __mmask8, a: __m512i, count: __m512i) ->
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_mask_srlv_epi64(
- src: __m256i,
- k: __mmask8,
- a: __m256i,
- count: __m256i,
-) -> __m256i {
+pub fn _mm256_mask_srlv_epi64(src: __m256i, k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_srlv_epi64(a, count).as_i64x4();
transmute(simd_select_bitmask(k, shf, src.as_i64x4()))
@@ -22799,8 +22774,7 @@ pub const fn _mm256_mask_srlv_epi64(
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm256_maskz_srlv_epi64(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
+pub fn _mm256_maskz_srlv_epi64(k: __mmask8, a: __m256i, count: __m256i) -> __m256i {
unsafe {
let shf = _mm256_srlv_epi64(a, count).as_i64x4();
transmute(simd_select_bitmask(k, shf, i64x4::ZERO))
@@ -22814,8 +22788,7 @@ pub const fn _mm256_maskz_srlv_epi64(k: __mmask8, a: __m256i, count: __m256i) ->
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_mask_srlv_epi64(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_mask_srlv_epi64(src: __m128i, k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_srlv_epi64(a, count).as_i64x2();
transmute(simd_select_bitmask(k, shf, src.as_i64x2()))
@@ -22829,8 +22802,7 @@ pub const fn _mm_mask_srlv_epi64(src: __m128i, k: __mmask8, a: __m128i, count: _
#[target_feature(enable = "avx512f,avx512vl")]
#[stable(feature = "stdarch_x86_avx512", since = "1.89")]
#[cfg_attr(test, assert_instr(vpsrlvq))]
-#[rustc_const_unstable(feature = "stdarch_const_x86", issue = "149298")]
-pub const fn _mm_maskz_srlv_epi64(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
+pub fn _mm_maskz_srlv_epi64(k: __mmask8, a: __m128i, count: __m128i) -> __m128i {
unsafe {
let shf = _mm_srlv_epi64(a, count).as_i64x2();
transmute(simd_select_bitmask(k, shf, i64x2::ZERO))
@@ -44768,6 +44740,15 @@ unsafe extern "llvm-intrinsic" {
#[link_name = "llvm.x86.avx512.mask.cmp.pd.128"]
fn vcmppd128(a: f64x2, b: f64x2, op: i32, m: i8) -> i8;
+ #[link_name = "llvm.x86.avx512.psllv.d.512"]
+ fn vpsllvd(a: i32x16, b: i32x16) -> i32x16;
+ #[link_name = "llvm.x86.avx512.psrlv.d.512"]
+ fn vpsrlvd(a: i32x16, b: i32x16) -> i32x16;
+ #[link_name = "llvm.x86.avx512.psllv.q.512"]
+ fn vpsllvq(a: i64x8, b: i64x8) -> i64x8;
+ #[link_name = "llvm.x86.avx512.psrlv.q.512"]
+ fn vpsrlvq(a: i64x8, b: i64x8) -> i64x8;
+
#[link_name = "llvm.x86.avx512.psll.d.512"]
fn vpslld(a: i32x16, count: i32x4) -> i32x16;
#[link_name = "llvm.x86.avx512.psrl.d.512"]
@@ -44787,6 +44768,16 @@ unsafe extern "llvm-intrinsic" {
#[link_name = "llvm.x86.avx512.psra.q.128"]
fn vpsraq128(a: i64x2, count: i64x2) -> i64x2;
+ #[link_name = "llvm.x86.avx512.psrav.d.512"]
+ fn vpsravd(a: i32x16, count: i32x16) -> i32x16;
+
+ #[link_name = "llvm.x86.avx512.psrav.q.512"]
+ fn vpsravq(a: i64x8, count: i64x8) -> i64x8;
+ #[link_name = "llvm.x86.avx512.psrav.q.256"]
+ fn vpsravq256(a: i64x4, count: i64x4) -> i64x4;
+ #[link_name = "llvm.x86.avx512.psrav.q.128"]
+ fn vpsravq128(a: i64x2, count: i64x2) -> i64x2;
+
#[link_name = "llvm.x86.avx512.vpermilvar.ps.512"]
fn vpermilps(a: f32x16, b: i32x16) -> f32x16;
#[link_name = "llvm.x86.avx512.vpermilvar.pd.512"]
@@ -50036,6 +50027,65 @@ mod tests {
assert_eq_m512(r, e);
}
+ #[simd_test(enable = "avx512f,avx512vl")]
+ const fn test_mm256_cvtepu32_ps() {
+ let a = _mm256_set_epi32(-1, i32::MIN, 16_777_217, 16_777_216, 4, 3, 2, 1);
+ let r = _mm256_cvtepu32_ps(a);
+ let e = _mm256_set_ps(
+ 4_294_967_296.,
+ 2_147_483_648.,
+ 16_777_216.,
+ 16_777_216.,
+ 4.,
+ 3.,
+ 2.,
+ 1.,
+ );
+ assert_eq_m256(r, e);
+ }
+
+ #[simd_test(enable = "avx512f,avx512vl")]
+ const fn test_mm256_mask_cvtepu32_ps() {
+ let a = _mm256_set_epi32(-1, i32::MIN, 6, 5, 4, 3, 2, 1);
+ let src = _mm256_set1_ps(-1.);
+ let r = _mm256_mask_cvtepu32_ps(src, 0b10101010, a);
+ let e = _mm256_set_ps(4_294_967_296., -1., 6., -1., 4., -1., 2., -1.);
+ assert_eq_m256(r, e);
+ }
+
+ #[simd_test(enable = "avx512f,avx512vl")]
+ const fn test_mm256_maskz_cvtepu32_ps() {
+ let a = _mm256_set_epi32(-1, i32::MIN, 6, 5, 4, 3, 2, 1);
+ let r = _mm256_maskz_cvtepu32_ps(0b01010101, a);
+ let e = _mm256_set_ps(0., 2_147_483_648., 0., 5., 0., 3., 0., 1.);
+ assert_eq_m256(r, e);
+ }
+
+ #[simd_test(enable = "avx512f,avx512vl")]
+ const fn test_mm_cvtepu32_ps() {
+ let a = _mm_set_epi32(-1, i32::MIN, 1, 0);
+ let r = _mm_cvtepu32_ps(a);
+ let e = _mm_set_ps(4_294_967_296., 2_147_483_648., 1., 0.);
+ assert_eq_m128(r, e);
+ }
+
+ #[simd_test(enable = "avx512f,avx512vl")]
+ const fn test_mm_mask_cvtepu32_ps() {
+ let a = _mm_set_epi32(-1, i32::MIN, 2, 1);
+ let src = _mm_set1_ps(-1.);
+ let r = _mm_mask_cvtepu32_ps(src, 0b11110101, a);
+ let e = _mm_set_ps(-1., 2_147_483_648., -1., 1.);
+ assert_eq_m128(r, e);
+ }
+
+ #[simd_test(enable = "avx512f,avx512vl")]
+ const fn test_mm_maskz_cvtepu32_ps() {
+ let a = _mm_set_epi32(-1, i32::MIN, 2, 1);
+ let r = _mm_maskz_cvtepu32_ps(0b11111010, a);
+ let e = _mm_set_ps(4_294_967_296., 0., 2., 0.);
+ assert_eq_m128(r, e);
+ }
+
#[simd_test(enable = "avx512f")]
const fn test_mm512_cvtepi32_epi16() {
let a = _mm512_set_epi32(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
@@ -54493,7 +54543,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_sllv_epi32() {
+ fn test_mm512_sllv_epi32() {
let a = _mm512_set_epi32(1 << 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
let count = _mm512_set1_epi32(1);
let r = _mm512_sllv_epi32(a, count);
@@ -54502,7 +54552,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_mask_sllv_epi32() {
+ fn test_mm512_mask_sllv_epi32() {
let a = _mm512_set_epi32(1 << 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
let count = _mm512_set1_epi32(1);
let r = _mm512_mask_sllv_epi32(a, 0, a, count);
@@ -54513,7 +54563,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_maskz_sllv_epi32() {
+ fn test_mm512_maskz_sllv_epi32() {
let a = _mm512_set_epi32(1 << 31, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 << 31);
let count = _mm512_set_epi32(0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
let r = _mm512_maskz_sllv_epi32(0, a, count);
@@ -54524,7 +54574,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm256_mask_sllv_epi32() {
+ fn test_mm256_mask_sllv_epi32() {
let a = _mm256_set_epi32(1 << 31, 1, 1, 1, 1, 1, 1, 1);
let count = _mm256_set1_epi32(1);
let r = _mm256_mask_sllv_epi32(a, 0, a, count);
@@ -54535,7 +54585,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm256_maskz_sllv_epi32() {
+ fn test_mm256_maskz_sllv_epi32() {
let a = _mm256_set_epi32(1 << 31, 1, 1, 1, 1, 1, 1, 1);
let count = _mm256_set1_epi32(1);
let r = _mm256_maskz_sllv_epi32(0, a, count);
@@ -54546,7 +54596,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm_mask_sllv_epi32() {
+ fn test_mm_mask_sllv_epi32() {
let a = _mm_set_epi32(1 << 31, 1, 1, 1);
let count = _mm_set1_epi32(1);
let r = _mm_mask_sllv_epi32(a, 0, a, count);
@@ -54557,7 +54607,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm_maskz_sllv_epi32() {
+ fn test_mm_maskz_sllv_epi32() {
let a = _mm_set_epi32(1 << 31, 1, 1, 1);
let count = _mm_set1_epi32(1);
let r = _mm_maskz_sllv_epi32(0, a, count);
@@ -54568,7 +54618,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_srlv_epi32() {
+ fn test_mm512_srlv_epi32() {
let a = _mm512_set_epi32(0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2);
let count = _mm512_set1_epi32(1);
let r = _mm512_srlv_epi32(a, count);
@@ -54577,7 +54627,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_mask_srlv_epi32() {
+ fn test_mm512_mask_srlv_epi32() {
let a = _mm512_set_epi32(0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2);
let count = _mm512_set1_epi32(1);
let r = _mm512_mask_srlv_epi32(a, 0, a, count);
@@ -54588,7 +54638,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_maskz_srlv_epi32() {
+ fn test_mm512_maskz_srlv_epi32() {
let a = _mm512_set_epi32(2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0);
let count = _mm512_set_epi32(0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
let r = _mm512_maskz_srlv_epi32(0, a, count);
@@ -54599,7 +54649,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm256_mask_srlv_epi32() {
+ fn test_mm256_mask_srlv_epi32() {
let a = _mm256_set_epi32(1 << 5, 0, 0, 0, 0, 0, 0, 0);
let count = _mm256_set1_epi32(1);
let r = _mm256_mask_srlv_epi32(a, 0, a, count);
@@ -54610,7 +54660,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm256_maskz_srlv_epi32() {
+ fn test_mm256_maskz_srlv_epi32() {
let a = _mm256_set_epi32(1 << 5, 0, 0, 0, 0, 0, 0, 0);
let count = _mm256_set1_epi32(1);
let r = _mm256_maskz_srlv_epi32(0, a, count);
@@ -54621,7 +54671,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm_mask_srlv_epi32() {
+ fn test_mm_mask_srlv_epi32() {
let a = _mm_set_epi32(1 << 5, 0, 0, 0);
let count = _mm_set1_epi32(1);
let r = _mm_mask_srlv_epi32(a, 0, a, count);
@@ -54632,7 +54682,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm_maskz_srlv_epi32() {
+ fn test_mm_maskz_srlv_epi32() {
let a = _mm_set_epi32(1 << 5, 0, 0, 0);
let count = _mm_set1_epi32(1);
let r = _mm_maskz_srlv_epi32(0, a, count);
@@ -54916,7 +54966,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_srav_epi32() {
+ fn test_mm512_srav_epi32() {
let a = _mm512_set_epi32(8, -8, 16, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
let count = _mm512_set_epi32(2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
let r = _mm512_srav_epi32(a, count);
@@ -54925,7 +54975,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_mask_srav_epi32() {
+ fn test_mm512_mask_srav_epi32() {
let a = _mm512_set_epi32(8, -8, 16, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16);
let count = _mm512_set_epi32(2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1);
let r = _mm512_mask_srav_epi32(a, 0, a, count);
@@ -54936,7 +54986,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_maskz_srav_epi32() {
+ fn test_mm512_maskz_srav_epi32() {
let a = _mm512_set_epi32(8, -8, 16, -15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, -14);
let count = _mm512_set_epi32(2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2);
let r = _mm512_maskz_srav_epi32(0, a, count);
@@ -54947,7 +54997,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm256_mask_srav_epi32() {
+ fn test_mm256_mask_srav_epi32() {
let a = _mm256_set_epi32(1 << 5, 0, 0, 0, 0, 0, 0, 0);
let count = _mm256_set1_epi32(1);
let r = _mm256_mask_srav_epi32(a, 0, a, count);
@@ -54958,7 +55008,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm256_maskz_srav_epi32() {
+ fn test_mm256_maskz_srav_epi32() {
let a = _mm256_set_epi32(1 << 5, 0, 0, 0, 0, 0, 0, 0);
let count = _mm256_set1_epi32(1);
let r = _mm256_maskz_srav_epi32(0, a, count);
@@ -54969,7 +55019,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm_mask_srav_epi32() {
+ fn test_mm_mask_srav_epi32() {
let a = _mm_set_epi32(1 << 5, 0, 0, 0);
let count = _mm_set1_epi32(1);
let r = _mm_mask_srav_epi32(a, 0, a, count);
@@ -54980,7 +55030,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm_maskz_srav_epi32() {
+ fn test_mm_maskz_srav_epi32() {
let a = _mm_set_epi32(1 << 5, 0, 0, 0);
let count = _mm_set1_epi32(1);
let r = _mm_maskz_srav_epi32(0, a, count);
diff --git a/library/stdarch/crates/core_arch/src/x86_64/avx512f.rs b/library/stdarch/crates/core_arch/src/x86_64/avx512f.rs
index 28e68d798b1c5..832384b11e68b 100644
--- a/library/stdarch/crates/core_arch/src/x86_64/avx512f.rs
+++ b/library/stdarch/crates/core_arch/src/x86_64/avx512f.rs
@@ -9035,7 +9035,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_sllv_epi64() {
+ fn test_mm512_sllv_epi64() {
#[rustfmt::skip]
let a = _mm512_set_epi64(
1 << 32, 1 << 63, 1 << 32, 1 << 32,
@@ -9052,7 +9052,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_mask_sllv_epi64() {
+ fn test_mm512_mask_sllv_epi64() {
#[rustfmt::skip]
let a = _mm512_set_epi64(
1 << 32, 1 << 32, 1 << 63, 1 << 32,
@@ -9071,7 +9071,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_maskz_sllv_epi64() {
+ fn test_mm512_maskz_sllv_epi64() {
#[rustfmt::skip]
let a = _mm512_set_epi64(
1 << 32, 1 << 32, 1 << 32, 1 << 32,
@@ -9086,7 +9086,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm256_mask_sllv_epi64() {
+ fn test_mm256_mask_sllv_epi64() {
let a = _mm256_set_epi64x(1 << 32, 1 << 32, 1 << 63, 1 << 32);
let count = _mm256_set_epi64x(0, 1, 2, 3);
let r = _mm256_mask_sllv_epi64(a, 0, a, count);
@@ -9097,7 +9097,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm256_maskz_sllv_epi64() {
+ fn test_mm256_maskz_sllv_epi64() {
let a = _mm256_set_epi64x(1 << 32, 1 << 32, 1 << 63, 1 << 32);
let count = _mm256_set_epi64x(0, 1, 2, 3);
let r = _mm256_maskz_sllv_epi64(0, a, count);
@@ -9108,7 +9108,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm_mask_sllv_epi64() {
+ fn test_mm_mask_sllv_epi64() {
let a = _mm_set_epi64x(1 << 63, 1 << 32);
let count = _mm_set_epi64x(2, 3);
let r = _mm_mask_sllv_epi64(a, 0, a, count);
@@ -9119,7 +9119,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm_maskz_sllv_epi64() {
+ fn test_mm_maskz_sllv_epi64() {
let a = _mm_set_epi64x(1 << 63, 1 << 32);
let count = _mm_set_epi64x(2, 3);
let r = _mm_maskz_sllv_epi64(0, a, count);
@@ -9130,7 +9130,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_srlv_epi64() {
+ fn test_mm512_srlv_epi64() {
#[rustfmt::skip]
let a = _mm512_set_epi64(
1 << 32, 1 << 0, 1 << 32, 1 << 32,
@@ -9147,7 +9147,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_mask_srlv_epi64() {
+ fn test_mm512_mask_srlv_epi64() {
#[rustfmt::skip]
let a = _mm512_set_epi64(
1 << 32, 1 << 0, 1 << 32, 1 << 32,
@@ -9166,7 +9166,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_maskz_srlv_epi64() {
+ fn test_mm512_maskz_srlv_epi64() {
#[rustfmt::skip]
let a = _mm512_set_epi64(
1 << 32, 1 << 32, 1 << 32, 1 << 32,
@@ -9181,7 +9181,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm256_mask_srlv_epi64() {
+ fn test_mm256_mask_srlv_epi64() {
let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
let count = _mm256_set1_epi64x(1);
let r = _mm256_mask_srlv_epi64(a, 0, a, count);
@@ -9192,7 +9192,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm256_maskz_srlv_epi64() {
+ fn test_mm256_maskz_srlv_epi64() {
let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
let count = _mm256_set1_epi64x(1);
let r = _mm256_maskz_srlv_epi64(0, a, count);
@@ -9203,7 +9203,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm_mask_srlv_epi64() {
+ fn test_mm_mask_srlv_epi64() {
let a = _mm_set_epi64x(1 << 5, 0);
let count = _mm_set1_epi64x(1);
let r = _mm_mask_srlv_epi64(a, 0, a, count);
@@ -9214,7 +9214,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm_maskz_srlv_epi64() {
+ fn test_mm_maskz_srlv_epi64() {
let a = _mm_set_epi64x(1 << 5, 0);
let count = _mm_set1_epi64x(1);
let r = _mm_maskz_srlv_epi64(0, a, count);
@@ -9511,7 +9511,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_srav_epi64() {
+ fn test_mm512_srav_epi64() {
let a = _mm512_set_epi64(1, -8, 0, 0, 0, 0, 15, -16);
let count = _mm512_set_epi64(2, 2, 0, 0, 0, 0, 2, 1);
let r = _mm512_srav_epi64(a, count);
@@ -9520,7 +9520,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_mask_srav_epi64() {
+ fn test_mm512_mask_srav_epi64() {
let a = _mm512_set_epi64(1, -8, 0, 0, 0, 0, 15, -16);
let count = _mm512_set_epi64(2, 2, 0, 0, 0, 0, 2, 1);
let r = _mm512_mask_srav_epi64(a, 0, a, count);
@@ -9531,7 +9531,7 @@ mod tests {
}
#[simd_test(enable = "avx512f")]
- const fn test_mm512_maskz_srav_epi64() {
+ fn test_mm512_maskz_srav_epi64() {
let a = _mm512_set_epi64(1, -8, 0, 0, 0, 0, 15, -16);
let count = _mm512_set_epi64(2, 2, 0, 0, 0, 0, 2, 1);
let r = _mm512_maskz_srav_epi64(0, a, count);
@@ -9542,7 +9542,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm256_srav_epi64() {
+ fn test_mm256_srav_epi64() {
let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
let count = _mm256_set1_epi64x(1);
let r = _mm256_srav_epi64(a, count);
@@ -9551,7 +9551,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm256_mask_srav_epi64() {
+ fn test_mm256_mask_srav_epi64() {
let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
let count = _mm256_set1_epi64x(1);
let r = _mm256_mask_srav_epi64(a, 0, a, count);
@@ -9562,7 +9562,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm256_maskz_srav_epi64() {
+ fn test_mm256_maskz_srav_epi64() {
let a = _mm256_set_epi64x(1 << 5, 0, 0, 0);
let count = _mm256_set1_epi64x(1);
let r = _mm256_maskz_srav_epi64(0, a, count);
@@ -9573,16 +9573,24 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm_srav_epi64() {
+ fn test_mm_srav_epi64() {
let a = _mm_set_epi64x(1 << 5, 0);
let count = _mm_set1_epi64x(1);
let r = _mm_srav_epi64(a, count);
let e = _mm_set_epi64x(1 << 4, 0);
assert_eq_m128i(r, e);
+
+ let a = _mm_set_epi64x(-1, -2);
+ let b = _mm_set_epi64x(64, 65);
+ let r = _mm_srav_epi64(a, b);
+ let e = _mm_set_epi64x((-1i64).unbounded_shl(64), (-2i64).unbounded_shl(65));
+ assert_eq_m128i(r, e);
+ let e = _mm_set_epi64x(-1, -1);
+ assert_eq_m128i(r, e);
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm_mask_srav_epi64() {
+ fn test_mm_mask_srav_epi64() {
let a = _mm_set_epi64x(1 << 5, 0);
let count = _mm_set1_epi64x(1);
let r = _mm_mask_srav_epi64(a, 0, a, count);
@@ -9593,7 +9601,7 @@ mod tests {
}
#[simd_test(enable = "avx512f,avx512vl")]
- const fn test_mm_maskz_srav_epi64() {
+ fn test_mm_maskz_srav_epi64() {
let a = _mm_set_epi64x(1 << 5, 0);
let count = _mm_set1_epi64x(1);
let r = _mm_maskz_srav_epi64(0, a, count);
diff --git a/library/stdarch/crates/intrinsic-test/Cargo.toml b/library/stdarch/crates/intrinsic-test/Cargo.toml
index e5c9e44e6d32a..2e11591fe7153 100644
--- a/library/stdarch/crates/intrinsic-test/Cargo.toml
+++ b/library/stdarch/crates/intrinsic-test/Cargo.toml
@@ -17,8 +17,6 @@ clap = { version = "4.4", features = ["derive"] }
log = "0.4.11"
pretty_env_logger = "0.5.0"
rayon = "1.5.0"
-diff = "0.1.12"
itertools = "0.15.0"
quick-xml = { version = "0.37.5", features = ["serialize", "overlapped-lists"] }
-serde-xml-rs = "0.8.0"
regex = "1.11.1"
diff --git a/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml b/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml
index 195243ac65d3a..a4ade26e45c37 100644
--- a/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml
+++ b/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml
@@ -9824,7 +9824,7 @@ intrinsics:
return_type: "{neon_type[1]}"
attr:
- *neon-v7
- - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vorr]]}]]
+ - FnCall: [cfg_attr, [*test-is-arm, {FnCall: [assert_instr, [vzip]]}]]
- FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip1]]}]]
- FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, [zip2]]}]]
- *neon-not-arm-stable
diff --git a/library/stdarch/crates/stdarch-gen-hexagon/src/hvx.rs b/library/stdarch/crates/stdarch-gen-hexagon/src/hvx.rs
index e5722a2d9f49f..537c59bbce861 100644
--- a/library/stdarch/crates/stdarch-gen-hexagon/src/hvx.rs
+++ b/library/stdarch/crates/stdarch-gen-hexagon/src/hvx.rs
@@ -213,7 +213,7 @@ fn parse_compound_expr(expr: &str) -> Option {
if let Some(paren_pos) = after_prefix.find(')') {
let builtin_name = &after_prefix[..paren_pos];
let rest = &after_prefix[paren_pos + 1..]; // Skip the closing ) of the WRAP
- // rest should now be "(args)"
+ // rest should now be "(args)"
if rest.starts_with('(') && rest.ends_with(')') {
let args_str = &rest[1..rest.len() - 1];
let args = parse_compound_args(args_str)?;
diff --git a/library/stdarch/crates/stdarch-gen-loongarch/lasx.spec b/library/stdarch/crates/stdarch-gen-loongarch/lasx.spec
index 9eff3d01fa1f3..eb3ff074a3978 100644
--- a/library/stdarch/crates/stdarch-gen-loongarch/lasx.spec
+++ b/library/stdarch/crates/stdarch-gen-loongarch/lasx.spec
@@ -996,81 +996,97 @@ asm-fmts = xd, xj, xk
data-types = UV4DI, UV4DI, UV4DI
/// lasx_xvavg_b
+impl = portable
name = lasx_xvavg_b
asm-fmts = xd, xj, xk
data-types = V32QI, V32QI, V32QI
/// lasx_xvavg_h
+impl = portable
name = lasx_xvavg_h
asm-fmts = xd, xj, xk
data-types = V16HI, V16HI, V16HI
/// lasx_xvavg_w
+impl = portable
name = lasx_xvavg_w
asm-fmts = xd, xj, xk
data-types = V8SI, V8SI, V8SI
/// lasx_xvavg_d
+impl = portable
name = lasx_xvavg_d
asm-fmts = xd, xj, xk
data-types = V4DI, V4DI, V4DI
/// lasx_xvavg_bu
+impl = portable
name = lasx_xvavg_bu
asm-fmts = xd, xj, xk
data-types = UV32QI, UV32QI, UV32QI
/// lasx_xvavg_hu
+impl = portable
name = lasx_xvavg_hu
asm-fmts = xd, xj, xk
data-types = UV16HI, UV16HI, UV16HI
/// lasx_xvavg_wu
+impl = portable
name = lasx_xvavg_wu
asm-fmts = xd, xj, xk
data-types = UV8SI, UV8SI, UV8SI
/// lasx_xvavg_du
+impl = portable
name = lasx_xvavg_du
asm-fmts = xd, xj, xk
data-types = UV4DI, UV4DI, UV4DI
/// lasx_xvavgr_b
+impl = portable
name = lasx_xvavgr_b
asm-fmts = xd, xj, xk
data-types = V32QI, V32QI, V32QI
/// lasx_xvavgr_h
+impl = portable
name = lasx_xvavgr_h
asm-fmts = xd, xj, xk
data-types = V16HI, V16HI, V16HI
/// lasx_xvavgr_w
+impl = portable
name = lasx_xvavgr_w
asm-fmts = xd, xj, xk
data-types = V8SI, V8SI, V8SI
/// lasx_xvavgr_d
+impl = portable
name = lasx_xvavgr_d
asm-fmts = xd, xj, xk
data-types = V4DI, V4DI, V4DI
/// lasx_xvavgr_bu
+impl = portable
name = lasx_xvavgr_bu
asm-fmts = xd, xj, xk
data-types = UV32QI, UV32QI, UV32QI
/// lasx_xvavgr_hu
+impl = portable
name = lasx_xvavgr_hu
asm-fmts = xd, xj, xk
data-types = UV16HI, UV16HI, UV16HI
/// lasx_xvavgr_wu
+impl = portable
name = lasx_xvavgr_wu
asm-fmts = xd, xj, xk
data-types = UV8SI, UV8SI, UV8SI
/// lasx_xvavgr_du
+impl = portable
name = lasx_xvavgr_du
asm-fmts = xd, xj, xk
data-types = UV4DI, UV4DI, UV4DI
diff --git a/library/stdarch/crates/stdarch-gen-loongarch/lsx.spec b/library/stdarch/crates/stdarch-gen-loongarch/lsx.spec
index ba2554b0cf9ff..89970c3657048 100644
--- a/library/stdarch/crates/stdarch-gen-loongarch/lsx.spec
+++ b/library/stdarch/crates/stdarch-gen-loongarch/lsx.spec
@@ -996,81 +996,97 @@ asm-fmts = vd, vj, vk
data-types = UV2DI, UV2DI, UV2DI
/// lsx_vavg_b
+impl = portable
name = lsx_vavg_b
asm-fmts = vd, vj, vk
data-types = V16QI, V16QI, V16QI
/// lsx_vavg_h
+impl = portable
name = lsx_vavg_h
asm-fmts = vd, vj, vk
data-types = V8HI, V8HI, V8HI
/// lsx_vavg_w
+impl = portable
name = lsx_vavg_w
asm-fmts = vd, vj, vk
data-types = V4SI, V4SI, V4SI
/// lsx_vavg_d
+impl = portable
name = lsx_vavg_d
asm-fmts = vd, vj, vk
data-types = V2DI, V2DI, V2DI
/// lsx_vavg_bu
+impl = portable
name = lsx_vavg_bu
asm-fmts = vd, vj, vk
data-types = UV16QI, UV16QI, UV16QI
/// lsx_vavg_hu
+impl = portable
name = lsx_vavg_hu
asm-fmts = vd, vj, vk
data-types = UV8HI, UV8HI, UV8HI
/// lsx_vavg_wu
+impl = portable
name = lsx_vavg_wu
asm-fmts = vd, vj, vk
data-types = UV4SI, UV4SI, UV4SI
/// lsx_vavg_du
+impl = portable
name = lsx_vavg_du
asm-fmts = vd, vj, vk
data-types = UV2DI, UV2DI, UV2DI
/// lsx_vavgr_b
+impl = portable
name = lsx_vavgr_b
asm-fmts = vd, vj, vk
data-types = V16QI, V16QI, V16QI
/// lsx_vavgr_h
+impl = portable
name = lsx_vavgr_h
asm-fmts = vd, vj, vk
data-types = V8HI, V8HI, V8HI
/// lsx_vavgr_w
+impl = portable
name = lsx_vavgr_w
asm-fmts = vd, vj, vk
data-types = V4SI, V4SI, V4SI
/// lsx_vavgr_d
+impl = portable
name = lsx_vavgr_d
asm-fmts = vd, vj, vk
data-types = V2DI, V2DI, V2DI
/// lsx_vavgr_bu
+impl = portable
name = lsx_vavgr_bu
asm-fmts = vd, vj, vk
data-types = UV16QI, UV16QI, UV16QI
/// lsx_vavgr_hu
+impl = portable
name = lsx_vavgr_hu
asm-fmts = vd, vj, vk
data-types = UV8HI, UV8HI, UV8HI
/// lsx_vavgr_wu
+impl = portable
name = lsx_vavgr_wu
asm-fmts = vd, vj, vk
data-types = UV4SI, UV4SI, UV4SI
/// lsx_vavgr_du
+impl = portable
name = lsx_vavgr_du
asm-fmts = vd, vj, vk
data-types = UV2DI, UV2DI, UV2DI
diff --git a/library/stdarch/crates/stdarch-gen-loongarch/src/portable-intrinsics.txt b/library/stdarch/crates/stdarch-gen-loongarch/src/portable-intrinsics.txt
index 8b8c82b3bb247..f47c17b23adea 100644
--- a/library/stdarch/crates/stdarch-gen-loongarch/src/portable-intrinsics.txt
+++ b/library/stdarch/crates/stdarch-gen-loongarch/src/portable-intrinsics.txt
@@ -219,6 +219,22 @@ lsx_vssub_bu
lsx_vssub_hu
lsx_vssub_wu
lsx_vssub_du
+lsx_vavg_b
+lsx_vavg_h
+lsx_vavg_w
+lsx_vavg_d
+lsx_vavg_bu
+lsx_vavg_hu
+lsx_vavg_wu
+lsx_vavg_du
+lsx_vavgr_b
+lsx_vavgr_h
+lsx_vavgr_w
+lsx_vavgr_d
+lsx_vavgr_bu
+lsx_vavgr_hu
+lsx_vavgr_wu
+lsx_vavgr_du
lsx_vadda_b
lsx_vadda_h
lsx_vadda_w
@@ -512,6 +528,22 @@ lasx_xvssub_bu
lasx_xvssub_hu
lasx_xvssub_wu
lasx_xvssub_du
+lasx_xvavg_b
+lasx_xvavg_h
+lasx_xvavg_w
+lasx_xvavg_d
+lasx_xvavg_bu
+lasx_xvavg_hu
+lasx_xvavg_wu
+lasx_xvavg_du
+lasx_xvavgr_b
+lasx_xvavgr_h
+lasx_xvavgr_w
+lasx_xvavgr_d
+lasx_xvavgr_bu
+lasx_xvavgr_hu
+lasx_xvavgr_wu
+lasx_xvavgr_du
lasx_xvadda_b
lasx_xvadda_h
lasx_xvadda_w
diff --git a/library/stdarch/crates/stdarch-verify/tests/x86-intel.rs b/library/stdarch/crates/stdarch-verify/tests/x86-intel.rs
index be948df541b79..d2839bb300c2d 100644
--- a/library/stdarch/crates/stdarch-verify/tests/x86-intel.rs
+++ b/library/stdarch/crates/stdarch-verify/tests/x86-intel.rs
@@ -293,7 +293,16 @@ fn verify_all_signatures() {
"_MM_SHUFFLE" |
"_xabort_code" |
// Not listed with intel, but manually verified
- "cmpxchg16b"
+ "cmpxchg16b" |
+ // Apparently forgotten in the Intel Intrinsics Guide
+ // but present in other Intel documentation and clang,
+ // see https://github.com/rust-lang/rust/issues/158196
+ "_mm_cvtepu32_ps" |
+ "_mm_mask_cvtepu32_ps" |
+ "_mm_maskz_cvtepu32_ps" |
+ "_mm256_cvtepu32_ps" |
+ "_mm256_mask_cvtepu32_ps" |
+ "_mm256_maskz_cvtepu32_ps"
=> continue,
_ => {}
}
diff --git a/library/stdarch/examples/Cargo.toml b/library/stdarch/examples/Cargo.toml
index 8752f206526c7..677407cf25206 100644
--- a/library/stdarch/examples/Cargo.toml
+++ b/library/stdarch/examples/Cargo.toml
@@ -12,9 +12,11 @@ default-run = "hex"
[dependencies]
core_arch = { path = "../crates/core_arch" }
-quickcheck = "1.0"
rand = "0.9.3"
+[dev-dependencies]
+quickcheck = "1.0"
+
[[bin]]
name = "hex"
path = "hex.rs"
diff --git a/library/stdarch/josh-sync.toml b/library/stdarch/josh-sync.toml
index ebdb4576287c8..eeeb82659a0a6 100644
--- a/library/stdarch/josh-sync.toml
+++ b/library/stdarch/josh-sync.toml
@@ -1,3 +1,7 @@
org = "rust-lang"
repo = "stdarch"
path = "library/stdarch"
+
+[[post-pull]]
+cmd = ["cargo", "fmt"]
+commit-message = "Run `cargo fmt`"
diff --git a/library/stdarch/rust-version b/library/stdarch/rust-version
index 61a4b2d8c095f..18fea436747c7 100644
--- a/library/stdarch/rust-version
+++ b/library/stdarch/rust-version
@@ -1 +1 @@
-1e5ee356374211706221b71b6106d297a646ee57
+32d94cc9be3f6e6c3fa1deaea9e0ab93c4980dba
diff --git a/src/doc/rustc/src/platform-support.md b/src/doc/rustc/src/platform-support.md
index 578651820b4dc..c2a86d85dfcde 100644
--- a/src/doc/rustc/src/platform-support.md
+++ b/src/doc/rustc/src/platform-support.md
@@ -47,11 +47,9 @@ target | notes
[`x86_64-pc-windows-gnu`](platform-support/windows-gnu.md) | 64-bit MinGW (Windows 10+, Windows Server 2016+)
[`x86_64-pc-windows-msvc`](platform-support/windows-msvc.md) | 64-bit MSVC (Windows 10+, Windows Server 2016+)
`x86_64-unknown-linux-gnu` | 64-bit Linux (kernel 3.2+, glibc 2.17+)
-[^x86_32-floats-return-ABI]: Due to limitations of the C ABI, floating-point support on `i686` targets is non-compliant: floating-point return values are passed via an x87 register, so NaN payload bits can be lost. Functions with the default Rust ABI are not affected. See [issue #115567][x86-32-float-return-issue].
-[^win32-msvc-alignment]: Due to non-standard behavior of MSVC, native C code on this target can cause types with an alignment of more than 4 bytes to be incorrectly aligned to only 4 bytes (this affects, e.g., `u64` and `i64`). Rust applies some mitigations to reduce the impact of this issue, but this can still cause unsoundness due to unsafe code that (correctly) assumes that references are always properly aligned. See [issue #112480](https://github.com/rust-lang/rust/issues/112480).
+[^x86_32-floats-return-ABI]: Due to limitations of the C ABI, floating-point support on `i686` targets is non-compliant: floating-point return values are passed via an x87 register, so NaN payload bits can be lost. Functions with the default Rust ABI are not affected. See [issue #115567][x86-32-float-return-issue].
-[77071]: https://github.com/rust-lang/rust/issues/77071
[x86-32-float-return-issue]: https://github.com/rust-lang/rust/issues/115567
## Tier 1 without Host Tools
@@ -60,6 +58,8 @@ target | notes
-------|-------
[`i686-pc-windows-msvc`](platform-support/windows-msvc.md) | 32-bit MSVC (Windows 10+, Windows Server 2016+, Pentium 4) [^x86_32-floats-return-ABI] [^win32-msvc-alignment]
+[^win32-msvc-alignment]: Due to non-standard behavior of MSVC, native C code on this target can cause types with an alignment of more than 4 bytes to be incorrectly aligned to only 4 bytes (this affects, e.g., `u64` and `i64`). Rust applies some mitigations to reduce the impact of this issue, but this can still cause unsoundness due to unsafe code that (correctly) assumes that references are always properly aligned. See [issue #112480](https://github.com/rust-lang/rust/issues/112480).
+
All tier 1 (without host tools) targets support the full standard library.
## Tier 2 with Host Tools
@@ -239,8 +239,6 @@ target | std | notes
[x86-32-float-issue]: https://github.com/rust-lang/rust/issues/114479
-[wasi-rename]: https://github.com/rust-lang/compiler-team/issues/607
-
[Fortanix ABI]: https://edp.fortanix.com/
## Tier 3
diff --git a/src/tools/miri/src/intrinsics/x86/avx2.rs b/src/tools/miri/src/intrinsics/x86/avx2.rs
index 57ea31d2c58a3..6169a1f785833 100644
--- a/src/tools/miri/src/intrinsics/x86/avx2.rs
+++ b/src/tools/miri/src/intrinsics/x86/avx2.rs
@@ -2,7 +2,7 @@ use rustc_span::Symbol;
use super::{
ShiftOp, mpsadbw, packssdw, packsswb, packusdw, packuswb, permute, pmaddbw, pmaddwd, pmulhrsw,
- psadbw, pshufb, psign, shift_simd_by_scalar,
+ psadbw, pshufb, psign, shift_simd_by_scalar, shift_simd_by_simd,
};
use crate::*;
@@ -201,6 +201,22 @@ pub(super) trait EvalContextExt<'tcx>: crate::MiriInterpCxExt<'tcx> {
pmaddwd(this, left, right, dest)?;
}
+ // Used to implement the _mm{,256}_{sllv,srlv,srav}_epi{32,64} functions
+ // (except _mm{,256}_srav_epi64, which are not available in AVX2).
+ "psllv.d" | "psllv.d.256" | "psllv.q" | "psllv.q.256" | "psrlv.d" | "psrlv.d.256"
+ | "psrlv.q" | "psrlv.q.256" | "psrav.d" | "psrav.d.256" => {
+ let [left, right] = this.check_shim_sig_llvm_intrinsic(link_name, args)?;
+
+ let which = match unprefixed_name {
+ "psllv.d" | "psllv.d.256" | "psllv.q" | "psllv.q.256" => ShiftOp::Left,
+ "psrlv.d" | "psrlv.d.256" | "psrlv.q" | "psrlv.q.256" => ShiftOp::RightLogic,
+ "psrav.d" | "psrav.d.256" => ShiftOp::RightArith,
+ _ => unreachable!(),
+ };
+
+ shift_simd_by_simd(this, left, right, which, dest)?;
+ }
+
_ => return interp_ok(EmulateItemResult::NotSupported),
}
interp_ok(EmulateItemResult::NeedsReturn)
diff --git a/src/tools/miri/src/intrinsics/x86/mod.rs b/src/tools/miri/src/intrinsics/x86/mod.rs
index 1f7cda56ef862..3bd84fecd1079 100644
--- a/src/tools/miri/src/intrinsics/x86/mod.rs
+++ b/src/tools/miri/src/intrinsics/x86/mod.rs
@@ -506,6 +506,56 @@ fn shift_simd_by_scalar<'tcx>(
interp_ok(())
}
+fn shift_simd_by_simd<'tcx>(
+ ecx: &mut crate::MiriInterpCx<'tcx>,
+ left: &OpTy<'tcx>,
+ right: &OpTy<'tcx>,
+ which: ShiftOp,
+ dest: &MPlaceTy<'tcx>,
+) -> InterpResult<'tcx, ()> {
+ let (left, left_len) = ecx.project_to_simd(left)?;
+ let (right, right_len) = ecx.project_to_simd(right)?;
+ let (dest, dest_len) = ecx.project_to_simd(dest)?;
+
+ assert_eq!(dest_len, left_len);
+ assert_eq!(dest_len, right_len);
+
+ for i in 0..dest_len {
+ let left = ecx.read_scalar(&ecx.project_index(&left, i)?)?;
+ let right = ecx.read_scalar(&ecx.project_index(&right, i)?)?;
+ let dest = ecx.project_index(&dest, i)?;
+
+ // It is ok to saturate the value to u32::MAX because any value
+ // above BITS - 1 will produce the same result.
+ let shift = u32::try_from(right.to_uint(dest.layout.size)?).unwrap_or(u32::MAX);
+
+ let res = match which {
+ ShiftOp::Left => {
+ let left = left.to_uint(dest.layout.size)?;
+ let res = left.checked_shl(shift).unwrap_or(0);
+ // `truncate` is needed as left-shift can make the absolute value larger.
+ Scalar::from_uint(dest.layout.size.truncate(res), dest.layout.size)
+ }
+ ShiftOp::RightLogic => {
+ let left = left.to_uint(dest.layout.size)?;
+ let res = left.checked_shr(shift).unwrap_or(0);
+ // No `truncate` needed as right-shift can only make the absolute value smaller.
+ Scalar::from_uint(res, dest.layout.size)
+ }
+ ShiftOp::RightArith => {
+ let left = left.to_int(dest.layout.size)?;
+ // On overflow, copy the sign bit to the remaining bits
+ let res = left.checked_shr(shift).unwrap_or(left >> 127);
+ // No `truncate` needed as right-shift can only make the absolute value smaller.
+ Scalar::from_int(res, dest.layout.size)
+ }
+ };
+ ecx.write_scalar(res, &dest)?;
+ }
+
+ interp_ok(())
+}
+
/// Takes a 128-bit vector, transmutes it to `[u64; 2]` and extracts
/// the first value.
fn extract_first_u64<'tcx>(
diff --git a/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx2.rs b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx2.rs
index 7fe75254c2dd8..e98647f6f99ed 100644
--- a/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx2.rs
+++ b/src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx2.rs
@@ -1452,8 +1452,22 @@ unsafe fn test_avx2() {
let a = _mm_set_epi64x(2, 3);
let b = _mm_set_epi64x(1, 2);
let r = _mm_sllv_epi64(a, b);
+ // Compare with the scalar version of the same computation.
+ let e = _mm_set_epi64x(2i64.unbounded_shl(1), 3i64.unbounded_shl(2));
+ assert_eq_m128i(r, e);
+ // Compare with hardcoded output.
let e = _mm_set_epi64x(4, 12);
assert_eq_m128i(r, e);
+
+ // The shift has unbounded semantics: if the shift amount
+ // is >= the number of bits the result is 0.
+ let a = _mm_set_epi64x(1, 2);
+ let b = _mm_set_epi64x(64, 65);
+ let r = _mm_sllv_epi64(a, b);
+ let e = _mm_set_epi64x(1i64.unbounded_shl(64), 2i64.unbounded_shl(65));
+ assert_eq_m128i(r, e);
+ let e = _mm_set_epi64x(0, 0);
+ assert_eq_m128i(r, e);
}
test_mm_sllv_epi64();
@@ -1474,6 +1488,23 @@ unsafe fn test_avx2() {
let r = _mm_srav_epi32(a, b);
let e = _mm_set_epi32(1, -4, 16, -64);
assert_eq_m128i(r, e);
+
+ // The shift has unbounded semantics: if the shift amount
+ // is >= the number of bits the result is -1.
+ let a = _mm_set_epi32(-16, -32, -64, -128);
+ let b = _mm_set_epi32(31, 32, 33, 0);
+ let r = _mm_srav_epi32(a, b);
+ // Compare with the scalar version of the same computation.
+ let e = _mm_set_epi32(
+ (-16i32).unbounded_shr(31),
+ (-32i32).unbounded_shr(32),
+ (-64i32).unbounded_shr(33),
+ (-128i32).unbounded_shr(0),
+ );
+ assert_eq_m128i(r, e);
+ // Compare with hardcoded output.
+ let e = _mm_set_epi32(-1, -1, -1, -128);
+ assert_eq_m128i(r, e);
}
test_mm_srav_epi32();
@@ -1512,8 +1543,22 @@ unsafe fn test_avx2() {
let a = _mm_set_epi64x(4, 8);
let b = _mm_set_epi64x(2, 1);
let r = _mm_srlv_epi64(a, b);
+ // Compare with the scalar version of the same computation.
+ let e = _mm_set_epi64x(4i64.unbounded_shr(2), 8i64.unbounded_shr(1));
+ assert_eq_m128i(r, e);
+ // Compare with hardcoded output.
let e = _mm_set_epi64x(1, 4);
assert_eq_m128i(r, e);
+
+ // The shift has unbounded semantics: if the shift amount
+ // is >= the number of bits the result is 0.
+ let a = _mm_set_epi64x(i64::MAX, i64::MAX);
+ let b = _mm_set_epi64x(64, 65);
+ let r = _mm_sllv_epi64(a, b);
+ let e = _mm_set_epi64x(i64::MAX.unbounded_shr(64), i64::MAX.unbounded_shr(65));
+ assert_eq_m128i(r, e);
+ let e = _mm_set_epi64x(0, 0);
+ assert_eq_m128i(r, e);
}
test_mm_srlv_epi64();
diff --git a/src/tools/unicode-table-generator/src/case_mapping.rs b/src/tools/unicode-table-generator/src/case_mapping.rs
index 9336eaf670e6a..63531a3afc731 100644
--- a/src/tools/unicode-table-generator/src/case_mapping.rs
+++ b/src/tools/unicode-table-generator/src/case_mapping.rs
@@ -26,8 +26,8 @@
//!
//! Splitting the LUT into `L1Lut` and `L2Lut` means we do not need to store the
//! upper 16 bits of every entry in the `L2Lut`, since every character stays
-//! within the same plane when case-mapped. This cuts the total size of the LUT
-//! in half.
+//! within the same plane when case-mapped (those that don't go into
+//! `l2_lut.exceptions`). This cuts the total size of the LUT in half.
//!
//! Storing the delta between the input codepoint and output codepoint in
//! `singles` allows us to combine contiguous ranges which all map to codepoints
@@ -45,7 +45,7 @@ use std::collections::BTreeMap;
use std::fmt;
use std::ops::RangeInclusive;
-use crate::fmt_helpers::Hex;
+use crate::fmt_helpers::{CharEscape, Hex};
use crate::{UnicodeData, fmt_list};
pub(crate) fn generate_case_mapping(data: &UnicodeData) -> (String, [(String, usize); 4]) {
@@ -117,6 +117,9 @@ struct L2Lut {
/// Keyed by bits 0..=15 of the code point, value is the lower 16-bits of the 2 or 3 code points that the char expands to.
multis: Vec<(Hex, [Hex; 3])>,
+
+ /// Characters that get sent to a different plane when case-mapped.
+ exceptions: Vec<(Hex, [CharEscape; 3])>,
}
/// A compact encoding of a `Range` in only 4 bytes.
@@ -179,32 +182,46 @@ impl fmt::Debug for Range {
impl L2Lut {
fn size(&self) -> usize {
- size_of_val(self.singles.as_slice()) + size_of_val(self.multis.as_slice())
+ size_of_val(self.singles.as_slice())
+ + size_of_val(self.multis.as_slice())
+ + size_of_val(self.exceptions.as_slice())
}
}
impl fmt::Debug for L2Lut {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- let singles = self.singles.as_slice();
+ let Self { singles, multis, exceptions } = self;
+
+ let singles = singles.as_slice();
let singles = fmt::from_fn(|f| {
write!(f, "&[ // {} entries, {} bytes", singles.len(), size_of_val(singles))?;
write!(f, "{}]", fmt_list(singles))
});
- let multis = self.multis.as_slice();
+ let multis = multis.as_slice();
let multis = fmt::from_fn(|f| {
write!(f, "&[ // {} entries, {} bytes", multis.len(), size_of_val(multis))?;
write!(f, "{}]", fmt_list(multis))
});
- f.debug_struct("L2Lut").field("singles", &singles).field("multis", &multis).finish()
+ let exceptions = exceptions.as_slice();
+ let exceptions = fmt::from_fn(|f| {
+ write!(f, "&[ // {} entries, {} bytes", exceptions.len(), size_of_val(exceptions))?;
+ write!(f, "{}]", fmt_list(exceptions))
+ });
+
+ f.debug_struct("L2Lut")
+ .field("singles", &singles)
+ .field("multis", &multis)
+ .field("exceptions", &exceptions)
+ .finish()
}
}
fn generate_tables(case: &str, data: &BTreeMap) -> (String, String, usize) {
let mut l1_lut = L1Lut::default();
- for (&input, &output) in data.iter() {
+ 'outer: for (&input, &output) in data.iter() {
assert!(input > 0x7f);
let (input_high, input_low) = deconstruct(input);
@@ -222,14 +239,18 @@ fn generate_tables(case: &str, data: &BTreeMap) -> (String, Strin
l2_lut.singles.push((range, delta));
}
_ => {
- let output_lows = output.map(|output| {
- let (output_high, output_low) = deconstruct(output);
- assert_eq!(
- output_high, input_high,
- "Case-mapping a character should not change its plane"
- );
- Hex(output_low)
- });
+ let mut output_lows = [Hex(0); 3];
+ for (i, out_char) in output.into_iter().enumerate() {
+ let (output_high, output_low) = deconstruct(out_char);
+ if output_high != input_high {
+ l2_lut.exceptions.push((
+ Hex(input_low),
+ output.map(|c| char::try_from(c).unwrap()).map(CharEscape),
+ ));
+ continue 'outer;
+ }
+ output_lows[i] = Hex(output_low);
+ }
l2_lut.multis.push((Hex(input_low), output_lows));
}
}
@@ -297,6 +318,7 @@ struct L1Lut {
struct L2Lut {
singles: &'static [(Range, i16)],
multis: &'static [(u16, [u16; 3])],
+ exceptions: &'static [(u16, [char; 3])],
}
#[derive(Copy, Clone)]
@@ -389,6 +411,12 @@ fn lookup(input: char, l1_lut: &L1Lut) -> Option<[char; 3]> {
return Some(output);
};
+ for &(key, output) in l2_lut.exceptions {
+ if key == input_low {
+ return Some(output)
+ }
+ }
+
None
}
diff --git a/src/tools/unicode-table-generator/src/main.rs b/src/tools/unicode-table-generator/src/main.rs
index 8f7fa4cc56606..f5451d6f2eb3a 100644
--- a/src/tools/unicode-table-generator/src/main.rs
+++ b/src/tools/unicode-table-generator/src/main.rs
@@ -409,18 +409,7 @@ fn main() {
fn version() -> String {
let mut out = String::new();
out.push_str("pub const UNICODE_VERSION: (u8, u8, u8) = ");
-
- let readme =
- std::fs::read_to_string(std::path::Path::new(UNICODE_DIRECTORY).join("ReadMe.txt"))
- .unwrap();
-
- let prefix = "for Version ";
- let start = readme.find(prefix).unwrap() + prefix.len();
- let end = readme.find(" of the Unicode Standard.").unwrap();
- let version =
- readme[start..end].split('.').map(|v| v.parse::().expect(v)).collect::>();
- let [major, minor, micro] = [version[0], version[1], version[2]];
-
+ let (major, minor, micro) = ucd_parse::ucd_directory_version(UNICODE_DIRECTORY).unwrap();
out.push_str(&format!("({major}, {minor}, {micro});\n"));
out
}
@@ -447,7 +436,7 @@ fn generate_tests(data: &UnicodeData) -> String {
let mut out = String::from(
"\
//! This file is generated by `./x run src/tools/unicode-table-generator`; do not edit manually!
-// ignore-tidy-filelength
+// ignore-tidy-file-filelength
use std::ops::RangeInclusive;
",
diff --git a/tests/assembly-llvm/c-variadic/x86-linux.rs b/tests/assembly-llvm/c-variadic/x86-linux.rs
index 70aa729aba7e8..59ea4d629281a 100644
--- a/tests/assembly-llvm/c-variadic/x86-linux.rs
+++ b/tests/assembly-llvm/c-variadic/x86-linux.rs
@@ -4,13 +4,11 @@
//@ revisions: X86_64 X86_64_GNUX32 I686
//@ [X86_64] compile-flags: -Copt-level=3 -Cllvm-args=-x86-asm-syntax=intel
//@ [X86_64] compile-flags: --target x86_64-unknown-linux-gnu
-//@ [X86_64] needs-llvm-components: x86
//@ [X86_64_GNUX32] compile-flags: -Copt-level=3 -Cllvm-args=-x86-asm-syntax=intel
//@ [X86_64_GNUX32] compile-flags: --target x86_64-unknown-linux-gnux32
-//@ [X86_64_GNUX32] needs-llvm-components: x86
//@ [I686] compile-flags: -Copt-level=3 -Cllvm-args=-x86-asm-syntax=intel
//@ [I686] compile-flags: --target i686-unknown-linux-gnu
-//@ [I686] needs-llvm-components: x86
+//@ needs-llvm-components: x86
#![feature(no_core, lang_items, intrinsics, rustc_attrs)]
#![no_core]
#![crate_type = "lib"]
diff --git a/tests/assembly-llvm/c-variadic/x86-windows.rs b/tests/assembly-llvm/c-variadic/x86-windows.rs
new file mode 100644
index 0000000000000..18a1fd9cb5127
--- /dev/null
+++ b/tests/assembly-llvm/c-variadic/x86-windows.rs
@@ -0,0 +1,139 @@
+//@ add-minicore
+//@ assembly-output: emit-asm
+//
+//@ revisions: X86_64_GNU X86_64_MSVC I686_GNU I686_MSVC
+//@ [X86_64_GNU] compile-flags: -Copt-level=3 -Cllvm-args=-x86-asm-syntax=intel
+//@ [X86_64_GNU] compile-flags: --target x86_64-pc-windows-gnu
+//@ [X86_64_GNU] filecheck-flags: --check-prefix X86_64
+//@ [X86_64_MSVC] compile-flags: -Copt-level=3 -Cllvm-args=-x86-asm-syntax=intel
+//@ [X86_64_MSVC] compile-flags: --target x86_64-pc-windows-msvc
+//@ [X86_64_MSVC] filecheck-flags: --check-prefix X86_64
+//@ [I686_GNU] compile-flags: -Copt-level=3 -Cllvm-args=-x86-asm-syntax=intel
+//@ [I686_GNU] compile-flags: --target i686-pc-windows-gnu
+//@ [I686_GNU] filecheck-flags: --check-prefix I686
+//@ [I686_MSVC] compile-flags: -Copt-level=3 -Cllvm-args=-x86-asm-syntax=intel
+//@ [I686_MSVC] compile-flags: --target i686-pc-windows-msvc -Cforce-frame-pointers
+//@ [I686_MSVC] filecheck-flags: --check-prefix I686
+//@ needs-llvm-components: x86
+#![feature(no_core, lang_items, intrinsics, rustc_attrs)]
+#![no_core]
+#![crate_type = "lib"]
+
+// Check that the assembly that rustc generates matches what clang emits for
+//
+// ```c
+// T function(va_list ap) {
+// return va_arg(ap, T);
+// }
+// ```
+
+extern crate minicore;
+use minicore::*;
+
+#[lang = "va_arg_safe"]
+pub unsafe trait VaArgSafe {}
+
+unsafe impl VaArgSafe for i32 {}
+unsafe impl VaArgSafe for i64 {}
+#[cfg(target_pointer_width = "64")]
+unsafe impl VaArgSafe for i128 {}
+unsafe impl VaArgSafe for f64 {}
+unsafe impl VaArgSafe for *const T {}
+
+#[repr(transparent)]
+struct VaListInner {
+ ptr: *const c_void,
+}
+
+#[repr(transparent)]
+#[lang = "va_list"]
+pub struct VaList<'a> {
+ inner: VaListInner,
+ _marker: PhantomData<&'a mut ()>,
+}
+
+#[rustc_intrinsic]
+#[rustc_nounwind]
+pub const unsafe fn va_arg(ap: &mut VaList<'_>) -> T;
+
+#[unsafe(no_mangle)]
+unsafe extern "C" fn read_f64(ap: &mut VaList<'_>) -> f64 {
+ // CHECK-LABEL: read_f64:
+ //
+ // X86_64: mov rax, qword ptr [rcx]
+ // X86_64-NEXT: lea rdx, [rax + 8]
+ // X86_64-NEXT: mov qword ptr [rcx], rdx
+ // X86_64-NEXT: movsd xmm0, qword ptr [rax]
+ // X86_64-NEXT: ret
+ //
+ // I686: mov eax, dword ptr [ebp + 8]
+ // I686-NEXT: mov ecx, dword ptr [eax]
+ // I686-NEXT: lea edx, [ecx + 8]
+ // I686-NEXT: mov dword ptr [eax], edx
+ // I686-NEXT: fld qword ptr [ecx]
+ // I686-NEXT: pop ebp
+ // I686-NEXT: ret
+ va_arg(ap)
+}
+
+#[unsafe(no_mangle)]
+unsafe extern "C" fn read_i32(ap: &mut VaList<'_>) -> i32 {
+ // CHECK-LABEL: read_i32:
+ //
+ // X86_64: mov rax, qword ptr [rcx]
+ // X86_64-NEXT: lea rdx, [rax + 8]
+ // X86_64-NEXT: mov qword ptr [rcx], rdx
+ // X86_64-NEXT: mov eax, dword ptr [rax]
+ // X86_64-NEXT: ret
+ //
+ // I686: mov eax, dword ptr [ebp + 8]
+ // I686-NEXT: mov ecx, dword ptr [eax]
+ // I686-NEXT: lea edx, [ecx + 4]
+ // I686-NEXT: mov dword ptr [eax], edx
+ // I686-NEXT: mov eax, dword ptr [ecx]
+ // I686-NEXT: pop ebp
+ // I686-NEXT: ret
+ va_arg(ap)
+}
+
+#[unsafe(no_mangle)]
+unsafe extern "C" fn read_i64(ap: &mut VaList<'_>) -> i64 {
+ // CHECK-LABEL: read_i64:
+ //
+ // X86_64: mov rax, qword ptr [rcx]
+ // X86_64-NEXT: lea rdx, [rax + 8]
+ // X86_64-NEXT: mov qword ptr [rcx], rdx
+ // X86_64-NEXT: mov rax, qword ptr [rax]
+ // X86_64-NEXT: ret
+ //
+ // I686: mov eax, dword ptr [ebp + 8]
+ // I686-NEXT: mov ecx, dword ptr [eax]
+ // I686-NEXT: lea edx, [ecx + 8]
+ // I686-NEXT: mov dword ptr [eax], edx
+ // I686-NEXT: mov eax, dword ptr [ecx]
+ // I686-NEXT: mov edx, dword ptr [ecx + 4]
+ // I686-NEXT: pop ebp
+ // I686-NEXT: ret
+ va_arg(ap)
+}
+
+#[unsafe(no_mangle)]
+#[cfg(target_pointer_width = "64")]
+unsafe extern "C" fn read_i128(ap: &mut VaList<'_>) -> i128 {
+ // X86_64-LABEL: read_i128:
+ //
+ // X86_64: mov rax, qword ptr [rcx]
+ // X86_64-NEXT: lea rdx, [rax + 8]
+ // X86_64-NEXT: mov qword ptr [rcx], rdx
+ // X86_64-NEXT: mov rax, qword ptr [rax]
+ // X86_64-NEXT: movups xmm0, xmmword ptr [rax]
+ // X86_64-NEXT: ret
+ va_arg(ap)
+}
+
+#[unsafe(no_mangle)]
+unsafe extern "C" fn read_ptr(ap: &mut VaList<'_>) -> *const u8 {
+ // X86_64: read_ptr = read_i64
+ // X86: _read_ptr = _read_i32
+ va_arg(ap)
+}
diff --git a/tests/assembly-llvm/c-variadic/x86_64-windows.rs b/tests/assembly-llvm/c-variadic/x86_64-windows.rs
deleted file mode 100644
index a5f65f7b0f736..0000000000000
--- a/tests/assembly-llvm/c-variadic/x86_64-windows.rs
+++ /dev/null
@@ -1,100 +0,0 @@
-//@ add-minicore
-//@ assembly-output: emit-asm
-//
-//@ revisions: WINDOWS_GNU WINDOWS_MSVC
-//@ [WINDOWS_GNU] compile-flags: -Copt-level=3 -Cllvm-args=-x86-asm-syntax=intel
-//@ [WINDOWS_GNU] compile-flags: --target x86_64-pc-windows-gnu
-//@ [WINDOWS_GNU] needs-llvm-components: x86
-//@ [WINDOWS_MSVC] compile-flags: -Copt-level=3 -Cllvm-args=-x86-asm-syntax=intel
-//@ [WINDOWS_MSVC] compile-flags: --target x86_64-pc-windows-msvc
-//@ [WINDOWS_MSVC] needs-llvm-components: x86
-#![feature(no_core, lang_items, intrinsics, rustc_attrs)]
-#![no_core]
-#![crate_type = "lib"]
-
-// Check that the assembly that rustc generates matches what clang emits for
-//
-// ```c
-// T function(va_list ap) {
-// return va_arg(ap, T);
-// }
-// ```
-
-extern crate minicore;
-use minicore::*;
-
-#[lang = "va_arg_safe"]
-pub unsafe trait VaArgSafe {}
-
-unsafe impl VaArgSafe for i32 {}
-unsafe impl VaArgSafe for i64 {}
-unsafe impl VaArgSafe for i128 {}
-unsafe impl VaArgSafe for f64 {}
-unsafe impl VaArgSafe for *const T {}
-
-#[repr(transparent)]
-struct VaListInner {
- ptr: *const c_void,
-}
-
-#[repr(transparent)]
-#[lang = "va_list"]
-pub struct VaList<'a> {
- inner: VaListInner,
- _marker: PhantomData<&'a mut ()>,
-}
-
-#[rustc_intrinsic]
-#[rustc_nounwind]
-pub const unsafe fn va_arg(ap: &mut VaList<'_>) -> T;
-
-#[unsafe(no_mangle)]
-unsafe extern "C" fn read_f64(ap: &mut VaList<'_>) -> f64 {
- // CHECK-LABEL: read_f64:
- // CHECK: mov rax, qword ptr [rcx]
- // CHECK-NEXT: lea rdx, [rax + 8]
- // CHECK-NEXT: mov qword ptr [rcx], rdx
- // CHECK-NEXT: movsd xmm0, qword ptr [rax]
- // CHECK-NEXT: ret
- va_arg(ap)
-}
-
-#[unsafe(no_mangle)]
-unsafe extern "C" fn read_i32(ap: &mut VaList<'_>) -> i32 {
- // CHECK-LABEL: read_i32:
- // CHECK: mov rax, qword ptr [rcx]
- // CHECK-NEXT: lea rdx, [rax + 8]
- // CHECK-NEXT: mov qword ptr [rcx], rdx
- // CHECK-NEXT: mov eax, dword ptr [rax]
- // CHECK-NEXT: ret
- va_arg(ap)
-}
-
-#[unsafe(no_mangle)]
-unsafe extern "C" fn read_i64(ap: &mut VaList<'_>) -> i64 {
- // CHECK-LABEL: read_i64:
- // CHECK: mov rax, qword ptr [rcx]
- // CHECK-NEXT: lea rdx, [rax + 8]
- // CHECK-NEXT: mov qword ptr [rcx], rdx
- // CHECK-NEXT: mov rax, qword ptr [rax]
- // CHECK-NEXT: ret
- va_arg(ap)
-}
-
-#[unsafe(no_mangle)]
-unsafe extern "C" fn read_i128(ap: &mut VaList<'_>) -> i128 {
- // CHECK-LABEL: read_i128:
- // CHECK: mov rax, qword ptr [rcx]
- // CHECK-NEXT: lea rdx, [rax + 8]
- // CHECK-NEXT: mov qword ptr [rcx], rdx
- // CHECK-NEXT: mov rax, qword ptr [rax]
- // CHECK-NEXT: movups xmm0, xmmword ptr [rax]
- // CHECK-NEXT: ret
- va_arg(ap)
-}
-
-#[unsafe(no_mangle)]
-unsafe extern "C" fn read_ptr(ap: &mut VaList<'_>) -> *const u8 {
- // CHECK: read_ptr = read_i64
- va_arg(ap)
-}
diff --git a/tests/codegen-llvm/cstr-len-plus-one.rs b/tests/codegen-llvm/cstr-len-plus-one.rs
new file mode 100644
index 0000000000000..056f59070df09
--- /dev/null
+++ b/tests/codegen-llvm/cstr-len-plus-one.rs
@@ -0,0 +1,15 @@
+//@ compile-flags: -Copt-level=3 -Cpanic=abort
+
+#![crate_type = "lib"]
+#![feature(cstr_bytes)]
+
+use std::ffi::CStr;
+
+// A `CStr`'s length always fits in an isize after the NUL bit is accounted for
+
+// CHECK-LABEL: @cstr_len_plus_one
+#[no_mangle]
+pub fn cstr_len_plus_one(s: &CStr) -> bool {
+ // CHECK: ret i1 true
+ s.bytes().count() + 1 <= isize::MAX as usize
+}
diff --git a/tests/codegen-llvm/f128-sparc-callconv.rs b/tests/codegen-llvm/f128-sparc-callconv.rs
new file mode 100644
index 0000000000000..b71c6b78a1539
--- /dev/null
+++ b/tests/codegen-llvm/f128-sparc-callconv.rs
@@ -0,0 +1,53 @@
+//! Verify that Rust implements the expected calling convention for `f128`
+
+//@ add-minicore
+//@ revisions: sparc-none sparc-linux
+//@ [sparc-none] compile-flags: --target sparc-unknown-none-elf
+//@ [sparc-linux] compile-flags: --target sparc-unknown-linux-gnu
+//@ compile-flags: -Copt-level=3
+//@ needs-llvm-components: sparc
+
+#![crate_type = "lib"]
+#![no_std]
+#![no_core]
+#![feature(no_core, lang_items, f128)]
+
+extern crate minicore;
+
+unsafe extern "C" {
+ safe fn extern_call(arg0: f128);
+ safe fn extern_ret() -> f128;
+}
+
+#[no_mangle]
+pub extern "C" fn pass(_arg0: u32, arg1: f128) {
+ // CHECK-LABEL: @pass(
+ // an f128 is passed via the stack
+ // CHECK-SAME: ptr {{.*}}
+ // CHECK: call void @extern_call
+ extern_call(arg1);
+}
+
+// Check that we produce the correct return ABI
+#[no_mangle]
+pub extern "C" fn ret(_arg0: u32, arg1: f128) -> f128 {
+ // CHECK-LABEL: @ret(
+ // and an f128 is returned via the stack
+ // CHECK-SAME: sret([16 x i8])
+ // CHECK: %0 = load fp128, ptr %arg1
+ // CHECK-NEXT: store fp128 %0, ptr %_0
+ // CHECK-NEXT: ret void
+ arg1
+}
+
+// Check that we consume the correct return ABI
+#[no_mangle]
+pub extern "C" fn forward(dst: &mut f128) {
+ // CHECK-LABEL: @forward
+ // CHECK-SAME: ptr{{.*}} %dst)
+ // without optimizatons, an intermediate alloca is used
+ // CHECK: call void @extern_ret
+ // CHECK: store fp128
+ // CHECK: ret void
+ *dst = extern_ret();
+}
diff --git a/tests/codegen-llvm/repr/transparent-imm-array.rs b/tests/codegen-llvm/repr/transparent-imm-array.rs
index c72151741400a..04c9727b815d4 100644
--- a/tests/codegen-llvm/repr/transparent-imm-array.rs
+++ b/tests/codegen-llvm/repr/transparent-imm-array.rs
@@ -1,5 +1,5 @@
//@ add-minicore
-//@ revisions: arm-linux arm-android armv7-linux armv7-android mips thumb sparc
+//@ revisions: arm-linux arm-android armv7-linux armv7-android mips thumb
//@ compile-flags: -Copt-level=3 -C no-prepopulate-passes
//@[arm-linux] compile-flags: --target arm-unknown-linux-gnueabi
@@ -14,8 +14,6 @@
//@[mips] needs-llvm-components: mips
//@[thumb] compile-flags: --target thumbv7neon-linux-androideabi
//@[thumb] needs-llvm-components: arm
-//@[sparc] compile-flags: --target sparc-unknown-linux-gnu
-//@[sparc] needs-llvm-components: sparc
// See ./transparent.rs
// Some platforms pass large aggregates using immediate arrays in LLVMIR
diff --git a/tests/rustdoc-html/slice-links.link_box_generic.html b/tests/rustdoc-html/codeblock/slice-links.link_box_generic.html
similarity index 100%
rename from tests/rustdoc-html/slice-links.link_box_generic.html
rename to tests/rustdoc-html/codeblock/slice-links.link_box_generic.html
diff --git a/tests/rustdoc-html/slice-links.link_box_u32.html b/tests/rustdoc-html/codeblock/slice-links.link_box_u32.html
similarity index 100%
rename from tests/rustdoc-html/slice-links.link_box_u32.html
rename to tests/rustdoc-html/codeblock/slice-links.link_box_u32.html
diff --git a/tests/rustdoc-html/slice-links.link_slice_generic.html b/tests/rustdoc-html/codeblock/slice-links.link_slice_generic.html
similarity index 100%
rename from tests/rustdoc-html/slice-links.link_slice_generic.html
rename to tests/rustdoc-html/codeblock/slice-links.link_slice_generic.html
diff --git a/tests/rustdoc-html/slice-links.link_slice_u32.html b/tests/rustdoc-html/codeblock/slice-links.link_slice_u32.html
similarity index 100%
rename from tests/rustdoc-html/slice-links.link_slice_u32.html
rename to tests/rustdoc-html/codeblock/slice-links.link_slice_u32.html
diff --git a/tests/rustdoc-html/slice-links.rs b/tests/rustdoc-html/codeblock/slice-links.rs
similarity index 100%
rename from tests/rustdoc-html/slice-links.rs
rename to tests/rustdoc-html/codeblock/slice-links.rs
diff --git a/tests/rustdoc-html/tuples.link1_i32.html b/tests/rustdoc-html/codeblock/tuples.link1_i32.html
similarity index 100%
rename from tests/rustdoc-html/tuples.link1_i32.html
rename to tests/rustdoc-html/codeblock/tuples.link1_i32.html
diff --git a/tests/rustdoc-html/tuples.link1_t.html b/tests/rustdoc-html/codeblock/tuples.link1_t.html
similarity index 100%
rename from tests/rustdoc-html/tuples.link1_t.html
rename to tests/rustdoc-html/codeblock/tuples.link1_t.html
diff --git a/tests/rustdoc-html/tuples.link2_i32.html b/tests/rustdoc-html/codeblock/tuples.link2_i32.html
similarity index 100%
rename from tests/rustdoc-html/tuples.link2_i32.html
rename to tests/rustdoc-html/codeblock/tuples.link2_i32.html
diff --git a/tests/rustdoc-html/tuples.link2_t.html b/tests/rustdoc-html/codeblock/tuples.link2_t.html
similarity index 100%
rename from tests/rustdoc-html/tuples.link2_t.html
rename to tests/rustdoc-html/codeblock/tuples.link2_t.html
diff --git a/tests/rustdoc-html/tuples.link2_tu.html b/tests/rustdoc-html/codeblock/tuples.link2_tu.html
similarity index 100%
rename from tests/rustdoc-html/tuples.link2_tu.html
rename to tests/rustdoc-html/codeblock/tuples.link2_tu.html
diff --git a/tests/rustdoc-html/tuples.link_unit.html b/tests/rustdoc-html/codeblock/tuples.link_unit.html
similarity index 100%
rename from tests/rustdoc-html/tuples.link_unit.html
rename to tests/rustdoc-html/codeblock/tuples.link_unit.html
diff --git a/tests/rustdoc-html/tuples.rs b/tests/rustdoc-html/codeblock/tuples.rs
similarity index 100%
rename from tests/rustdoc-html/tuples.rs
rename to tests/rustdoc-html/codeblock/tuples.rs
diff --git a/tests/rustdoc-html/deref-mut-35169-2.rs b/tests/rustdoc-html/deref/deref-mut-35169-2.rs
similarity index 100%
rename from tests/rustdoc-html/deref-mut-35169-2.rs
rename to tests/rustdoc-html/deref/deref-mut-35169-2.rs
diff --git a/tests/rustdoc-html/deref-mut-35169.rs b/tests/rustdoc-html/deref/deref-mut-35169.rs
similarity index 100%
rename from tests/rustdoc-html/deref-mut-35169.rs
rename to tests/rustdoc-html/deref/deref-mut-35169.rs
diff --git a/tests/rustdoc-html/link-on-path-with-generics.rs b/tests/rustdoc-html/jump-to-def/link-on-path-with-generics.rs
similarity index 100%
rename from tests/rustdoc-html/link-on-path-with-generics.rs
rename to tests/rustdoc-html/jump-to-def/link-on-path-with-generics.rs
diff --git a/tests/rustdoc-html/attributes-inlining-108281.rs b/tests/rustdoc-html/reexport/attributes-inlining-108281.rs
similarity index 100%
rename from tests/rustdoc-html/attributes-inlining-108281.rs
rename to tests/rustdoc-html/reexport/attributes-inlining-108281.rs
diff --git a/tests/rustdoc-html/attributes-re-export-2021-edition.rs b/tests/rustdoc-html/reexport/attributes-re-export-2021-edition.rs
similarity index 100%
rename from tests/rustdoc-html/attributes-re-export-2021-edition.rs
rename to tests/rustdoc-html/reexport/attributes-re-export-2021-edition.rs
diff --git a/tests/rustdoc-html/attributes-re-export.rs b/tests/rustdoc-html/reexport/attributes-re-export.rs
similarity index 100%
rename from tests/rustdoc-html/attributes-re-export.rs
rename to tests/rustdoc-html/reexport/attributes-re-export.rs
diff --git a/tests/rustdoc-html/glob-shadowing.rs b/tests/rustdoc-html/reexport/glob-shadowing.rs
similarity index 100%
rename from tests/rustdoc-html/glob-shadowing.rs
rename to tests/rustdoc-html/reexport/glob-shadowing.rs
diff --git a/tests/rustdoc-html/namespaces.rs b/tests/rustdoc-html/reexport/namespaces.rs
similarity index 100%
rename from tests/rustdoc-html/namespaces.rs
rename to tests/rustdoc-html/reexport/namespaces.rs
diff --git a/tests/rustdoc-html/logo-class-default.rs b/tests/rustdoc-html/sidebar/logo-class-default.rs
similarity index 100%
rename from tests/rustdoc-html/logo-class-default.rs
rename to tests/rustdoc-html/sidebar/logo-class-default.rs
diff --git a/tests/rustdoc-html/logo-class-rust.rs b/tests/rustdoc-html/sidebar/logo-class-rust.rs
similarity index 100%
rename from tests/rustdoc-html/logo-class-rust.rs
rename to tests/rustdoc-html/sidebar/logo-class-rust.rs
diff --git a/tests/rustdoc-html/logo-class.rs b/tests/rustdoc-html/sidebar/logo-class.rs
similarity index 100%
rename from tests/rustdoc-html/logo-class.rs
rename to tests/rustdoc-html/sidebar/logo-class.rs
diff --git a/tests/ui/abi/c-zst.aarch64-darwin.stderr b/tests/ui/abi/c-zst.aarch64-darwin.stderr
index 6d2ac90c0c975..2ed9ffdf791f6 100644
--- a/tests/ui/abi/c-zst.aarch64-darwin.stderr
+++ b/tests/ui/abi/c-zst.aarch64-darwin.stderr
@@ -60,7 +60,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
conv: C,
can_unwind: false,
}
- --> $DIR/c-zst.rs:65:1
+ --> $DIR/c-zst.rs:67:1
|
LL | extern "C" fn pass_zst(_: ()) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/abi/c-zst.powerpc-linux.stderr b/tests/ui/abi/c-zst.powerpc-linux.stderr
index edea2d5772280..302ffe1efc8b8 100644
--- a/tests/ui/abi/c-zst.powerpc-linux.stderr
+++ b/tests/ui/abi/c-zst.powerpc-linux.stderr
@@ -71,7 +71,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
conv: C,
can_unwind: false,
}
- --> $DIR/c-zst.rs:65:1
+ --> $DIR/c-zst.rs:67:1
|
LL | extern "C" fn pass_zst(_: ()) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/abi/c-zst.rs b/tests/ui/abi/c-zst.rs
index 22cb3f98f28dc..973f5f0002f25 100644
--- a/tests/ui/abi/c-zst.rs
+++ b/tests/ui/abi/c-zst.rs
@@ -15,9 +15,9 @@ extern "C" fn(i32, (), i32);
```
*/
-/*
- * ZST IN "C" IS ZERO-SIZED
- */
+//
+// ZST IN "C" IS ZERO-SIZED
+//
//@ revisions: aarch64-darwin
//@[aarch64-darwin] compile-flags: --target aarch64-apple-darwin
@@ -27,10 +27,9 @@ extern "C" fn(i32, (), i32);
//@[x86_64-linux] compile-flags: --target x86_64-unknown-linux-gnu
//@[x86_64-linux] needs-llvm-components: x86
-
-/*
- * ZST IN "C" IS PASS-BY-POINTER
- */
+//
+// ZST IN "C" IS PASS-BY-POINTER
+//
// according to the SRV4 ABI, an aggregate is always passed in registers,
// and it so happens the GCC extension for ZSTs considers them as structs.
@@ -42,7 +41,11 @@ extern "C" fn(i32, (), i32);
//@[s390x-linux] compile-flags: --target s390x-unknown-linux-gnu
//@[s390x-linux] needs-llvm-components: systemz
-//@ revisions: sparc64-linux
+//@ revisions: sparc-none sparc-linux sparc64-linux
+//@[sparc-none] compile-flags: --target sparc-unknown-none-elf
+//@[sparc-none] needs-llvm-components: sparc
+//@[sparc-linux] compile-flags: --target sparc-unknown-linux-gnu
+//@[sparc-linux] needs-llvm-components: sparc
//@[sparc64-linux] compile-flags: --target sparc64-unknown-linux-gnu
//@[sparc64-linux] needs-llvm-components: sparc
@@ -53,7 +56,6 @@ extern "C" fn(i32, (), i32);
//@[x86_64-pc-windows-gnu] needs-llvm-components: x86
//@ ignore-backends: gcc
-
#![feature(no_core, rustc_attrs)]
#![no_core]
#![crate_type = "lib"]
diff --git a/tests/ui/abi/c-zst.s390x-linux.stderr b/tests/ui/abi/c-zst.s390x-linux.stderr
index edea2d5772280..302ffe1efc8b8 100644
--- a/tests/ui/abi/c-zst.s390x-linux.stderr
+++ b/tests/ui/abi/c-zst.s390x-linux.stderr
@@ -71,7 +71,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
conv: C,
can_unwind: false,
}
- --> $DIR/c-zst.rs:65:1
+ --> $DIR/c-zst.rs:67:1
|
LL | extern "C" fn pass_zst(_: ()) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/abi/c-zst.sparc-linux.stderr b/tests/ui/abi/c-zst.sparc-linux.stderr
new file mode 100644
index 0000000000000..302ffe1efc8b8
--- /dev/null
+++ b/tests/ui/abi/c-zst.sparc-linux.stderr
@@ -0,0 +1,80 @@
+error: fn_abi_of(pass_zst) = FnAbi {
+ args: [
+ ArgAbi {
+ layout: TyAndLayout {
+ ty: (),
+ layout: Layout {
+ size: Size(0 bytes),
+ align: AbiAlign {
+ abi: $SOME_ALIGN,
+ },
+ backend_repr: Memory {
+ sized: true,
+ },
+ fields: Arbitrary {
+ offsets: [],
+ in_memory_order: [],
+ },
+ largest_niche: None,
+ uninhabited: false,
+ variants: Single {
+ index: 0,
+ },
+ max_repr_align: None,
+ unadjusted_abi_align: $SOME_ALIGN,
+ randomization_seed: 0,
+ },
+ },
+ mode: Indirect {
+ attrs: ArgAttributes {
+ regular: CapturesAddress | NoAlias | NonNull | NoUndef | NoFree,
+ arg_ext: None,
+ pointee_size: Size(0 bytes),
+ pointee_align: Some(
+ Align(1 bytes),
+ ),
+ },
+ meta_attrs: None,
+ on_stack: false,
+ },
+ },
+ ],
+ ret: ArgAbi {
+ layout: TyAndLayout {
+ ty: (),
+ layout: Layout {
+ size: Size(0 bytes),
+ align: AbiAlign {
+ abi: $SOME_ALIGN,
+ },
+ backend_repr: Memory {
+ sized: true,
+ },
+ fields: Arbitrary {
+ offsets: [],
+ in_memory_order: [],
+ },
+ largest_niche: None,
+ uninhabited: false,
+ variants: Single {
+ index: 0,
+ },
+ max_repr_align: None,
+ unadjusted_abi_align: $SOME_ALIGN,
+ randomization_seed: 0,
+ },
+ },
+ mode: Ignore,
+ },
+ c_variadic: false,
+ fixed_count: 1,
+ conv: C,
+ can_unwind: false,
+ }
+ --> $DIR/c-zst.rs:67:1
+ |
+LL | extern "C" fn pass_zst(_: ()) {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 1 previous error
+
diff --git a/tests/ui/abi/c-zst.sparc-none.stderr b/tests/ui/abi/c-zst.sparc-none.stderr
new file mode 100644
index 0000000000000..302ffe1efc8b8
--- /dev/null
+++ b/tests/ui/abi/c-zst.sparc-none.stderr
@@ -0,0 +1,80 @@
+error: fn_abi_of(pass_zst) = FnAbi {
+ args: [
+ ArgAbi {
+ layout: TyAndLayout {
+ ty: (),
+ layout: Layout {
+ size: Size(0 bytes),
+ align: AbiAlign {
+ abi: $SOME_ALIGN,
+ },
+ backend_repr: Memory {
+ sized: true,
+ },
+ fields: Arbitrary {
+ offsets: [],
+ in_memory_order: [],
+ },
+ largest_niche: None,
+ uninhabited: false,
+ variants: Single {
+ index: 0,
+ },
+ max_repr_align: None,
+ unadjusted_abi_align: $SOME_ALIGN,
+ randomization_seed: 0,
+ },
+ },
+ mode: Indirect {
+ attrs: ArgAttributes {
+ regular: CapturesAddress | NoAlias | NonNull | NoUndef | NoFree,
+ arg_ext: None,
+ pointee_size: Size(0 bytes),
+ pointee_align: Some(
+ Align(1 bytes),
+ ),
+ },
+ meta_attrs: None,
+ on_stack: false,
+ },
+ },
+ ],
+ ret: ArgAbi {
+ layout: TyAndLayout {
+ ty: (),
+ layout: Layout {
+ size: Size(0 bytes),
+ align: AbiAlign {
+ abi: $SOME_ALIGN,
+ },
+ backend_repr: Memory {
+ sized: true,
+ },
+ fields: Arbitrary {
+ offsets: [],
+ in_memory_order: [],
+ },
+ largest_niche: None,
+ uninhabited: false,
+ variants: Single {
+ index: 0,
+ },
+ max_repr_align: None,
+ unadjusted_abi_align: $SOME_ALIGN,
+ randomization_seed: 0,
+ },
+ },
+ mode: Ignore,
+ },
+ c_variadic: false,
+ fixed_count: 1,
+ conv: C,
+ can_unwind: false,
+ }
+ --> $DIR/c-zst.rs:67:1
+ |
+LL | extern "C" fn pass_zst(_: ()) {}
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 1 previous error
+
diff --git a/tests/ui/abi/c-zst.sparc64-linux.stderr b/tests/ui/abi/c-zst.sparc64-linux.stderr
index edea2d5772280..302ffe1efc8b8 100644
--- a/tests/ui/abi/c-zst.sparc64-linux.stderr
+++ b/tests/ui/abi/c-zst.sparc64-linux.stderr
@@ -71,7 +71,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
conv: C,
can_unwind: false,
}
- --> $DIR/c-zst.rs:65:1
+ --> $DIR/c-zst.rs:67:1
|
LL | extern "C" fn pass_zst(_: ()) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/abi/c-zst.x86_64-linux.stderr b/tests/ui/abi/c-zst.x86_64-linux.stderr
index 6d2ac90c0c975..2ed9ffdf791f6 100644
--- a/tests/ui/abi/c-zst.x86_64-linux.stderr
+++ b/tests/ui/abi/c-zst.x86_64-linux.stderr
@@ -60,7 +60,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
conv: C,
can_unwind: false,
}
- --> $DIR/c-zst.rs:65:1
+ --> $DIR/c-zst.rs:67:1
|
LL | extern "C" fn pass_zst(_: ()) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/abi/c-zst.x86_64-pc-windows-gnu.stderr b/tests/ui/abi/c-zst.x86_64-pc-windows-gnu.stderr
index edea2d5772280..302ffe1efc8b8 100644
--- a/tests/ui/abi/c-zst.x86_64-pc-windows-gnu.stderr
+++ b/tests/ui/abi/c-zst.x86_64-pc-windows-gnu.stderr
@@ -71,7 +71,7 @@ error: fn_abi_of(pass_zst) = FnAbi {
conv: C,
can_unwind: false,
}
- --> $DIR/c-zst.rs:65:1
+ --> $DIR/c-zst.rs:67:1
|
LL | extern "C" fn pass_zst(_: ()) {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/assumptions_on_binders/nested-gat-outlives-issue-161067.rs b/tests/ui/assumptions_on_binders/nested-gat-outlives-issue-161067.rs
new file mode 100644
index 0000000000000..937b17e5ec872
--- /dev/null
+++ b/tests/ui/assumptions_on_binders/nested-gat-outlives-issue-161067.rs
@@ -0,0 +1,16 @@
+//@ compile-flags: -Zassumptions-on-binders
+//@ needs-rustc-debug-assertions
+
+// Regression test for #161067. A nested non-rigid alias must be normalized
+// before it reaches lexical region solving through `ty_known_to_outlive`.
+
+struct D;
+
+trait Des {
+ type Out<'x, T>;
+ //~^ ERROR missing required bound on `Out`
+
+ fn des<'z>() -> Self::Out<'z, Self::Out<'z, D>>;
+}
+
+fn main() {}
diff --git a/tests/ui/assumptions_on_binders/nested-gat-outlives-issue-161067.stderr b/tests/ui/assumptions_on_binders/nested-gat-outlives-issue-161067.stderr
new file mode 100644
index 0000000000000..7e73e999e0c81
--- /dev/null
+++ b/tests/ui/assumptions_on_binders/nested-gat-outlives-issue-161067.stderr
@@ -0,0 +1,13 @@
+error: missing required bound on `Out`
+ --> $DIR/nested-gat-outlives-issue-161067.rs:10:5
+ |
+LL | type Out<'x, T>;
+ | ^^^^^^^^^^^^^^^-
+ | |
+ | help: add the required where clause: `where T: 'x`
+ |
+ = note: this bound is currently required to ensure that impls have maximum flexibility
+ = note: we are soliciting feedback, see issue #87479 for more information
+
+error: aborting due to 1 previous error
+
diff --git a/tests/crashes/153947.rs b/tests/ui/dropck/overlapping_impossible_drop.rs
similarity index 83%
rename from tests/crashes/153947.rs
rename to tests/ui/dropck/overlapping_impossible_drop.rs
index 39bc8c074cfc0..6200572b9b72e 100644
--- a/tests/crashes/153947.rs
+++ b/tests/ui/dropck/overlapping_impossible_drop.rs
@@ -1,5 +1,9 @@
-//@ known-bug: #153947
+//@ check-pass
+
+// Regression test for #153947
+
#![expect(drop_bounds)]
+
pub struct Thing(T) where [T]: Sized, Self: Drop;
impl Drop for Thing where [T]: Sized, Self: Drop {
fn drop(&mut self) {}
@@ -7,4 +11,5 @@ impl Drop for Thing where [T]: Sized, Self: Drop {
impl Drop for Thing where [T]: Sized, Self: Drop {
fn drop(&mut self) {}
}
+
fn main() {}
diff --git a/tests/crashes/150387.rs b/tests/ui/dropck/overlapping_impossible_drop_min_specialization.rs
similarity index 84%
rename from tests/crashes/150387.rs
rename to tests/ui/dropck/overlapping_impossible_drop_min_specialization.rs
index b29ce143fb4ea..e201c75f4f4b3 100644
--- a/tests/crashes/150387.rs
+++ b/tests/ui/dropck/overlapping_impossible_drop_min_specialization.rs
@@ -1,4 +1,7 @@
-//@ known-bug: #150387
+//@ check-pass
+
+// Regression test for #150387
+
#![feature(min_specialization)]
#![allow(dead_code)]
@@ -10,4 +13,5 @@ impl Drop for Thing where [T]: Sized {
impl Drop for Thing where [T]: Sized {
fn drop(&mut self) {}
}
+
fn main() {}
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_inside_dead_code.rs b/tests/ui/lint/rfc-2383-lint-reason/expect_inside_dead_code.rs
new file mode 100644
index 0000000000000..8640f56f7d08d
--- /dev/null
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_inside_dead_code.rs
@@ -0,0 +1,56 @@
+//@ check-pass
+// Expectations on dead code covered by a dead parent's diagnostic must still be fulfilled.
+
+#[cfg_attr(all(), expect(unused))]
+struct Foo {
+ #[expect(unused)]
+ x: u32,
+}
+
+#[expect(dead_code)]
+struct Direct {
+ #[expect(dead_code)]
+ x: u32,
+}
+
+#[expect(unused)]
+enum DeadEnum {
+ Variant {
+ #[expect(unused)]
+ x: u32,
+ },
+}
+
+enum PartiallyDead {
+ Used,
+ #[expect(unused)]
+ Dead {
+ #[expect(unused)]
+ x: u32,
+ },
+}
+
+#[expect(unused)]
+fn dead_outer() {
+ #[expect(unused)]
+ fn dead_inner() {}
+}
+
+#[expect(unused)]
+trait DeadTrait {
+ #[expect(unused)]
+ fn dead_method(&self);
+}
+
+// `y` is read, so this expectation must stay unfulfilled.
+struct Live {
+ #[expect(unused)]
+ //~^ WARNING this lint expectation is unfulfilled
+ //~| NOTE `#[warn(unfulfilled_lint_expectations)]` on by default
+ y: u32,
+}
+
+fn main() {
+ let _ = PartiallyDead::Used;
+ let _ = Live { y: 1 }.y;
+}
diff --git a/tests/ui/lint/rfc-2383-lint-reason/expect_inside_dead_code.stderr b/tests/ui/lint/rfc-2383-lint-reason/expect_inside_dead_code.stderr
new file mode 100644
index 0000000000000..e583497561125
--- /dev/null
+++ b/tests/ui/lint/rfc-2383-lint-reason/expect_inside_dead_code.stderr
@@ -0,0 +1,10 @@
+warning: this lint expectation is unfulfilled
+ --> $DIR/expect_inside_dead_code.rs:47:14
+ |
+LL | #[expect(unused)]
+ | ^^^^^^
+ |
+ = note: `#[warn(unfulfilled_lint_expectations)]` on by default
+
+warning: 1 warning emitted
+
diff --git a/triagebot.toml b/triagebot.toml
index fc9c43d2dbcae..4f2d0a262fdc1 100644
--- a/triagebot.toml
+++ b/triagebot.toml
@@ -1549,6 +1549,14 @@ cc = ["@mejrs"]
message = "Some changes occurred to diagnostic attributes."
cc = ["@mejrs"]
+[mentions."RELEASES.md"]
+message = """
+`RELEASES.md` was changed. Upon merging, each section will be automatically synced with its \
+corresponding GitHub releases, but **only from the `main` branch**.
+
+If it's not already the case, make sure to also merge the changes in the `main` branch.
+"""
+
# Content-based mentions
[mentions."miri"]