Skip to content

Instantly share code, notes, and snippets.

@eiennohito
Last active January 23, 2020 05:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eiennohito/1520c4aedb9c74edfe9e09b2b7b8bba5 to your computer and use it in GitHub Desktop.
Save eiennohito/1520c4aedb9c74edfe9e09b2b7b8bba5 to your computer and use it in GitHub Desktop.
#include "core/impl/feature_impl_combine.h"
#include "core/impl/feature_impl_ngram_partial.h"
#include "core/impl/feature_impl_prim.h"
#include "core/impl/feature_impl_ngram_partial_kernels.h"
#include "jpp_jumandic_cg.h"
namespace jumanpp_generated {
namespace {
class NgramFeatureStaticApply_JumandicStatic final : public ::jumanpp::core::features::impl::NgramFeatureApplyImpl < NgramFeatureStaticApply_JumandicStatic > {
public :
inline void apply(jumanpp::util::MutableArraySlice<jumanpp::u32> result,
const jumanpp::util::ArraySlice<jumanpp::u64> &t2,
const jumanpp::util::ArraySlice<jumanpp::u64> &t1,
const jumanpp::util::ArraySlice<jumanpp::u64> &t0) const noexcept {
result.at(0) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{0ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(8)).result());
result.at(1) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{1ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(9)).result());
result.at(2) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{2ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(0)).result());
result.at(3) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{3ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(10)).result());
result.at(4) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{4ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(1)).result());
result.at(5) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{5ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(14)).result());
result.at(6) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{6ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(11)).result());
result.at(7) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{7ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(15)).result());
result.at(8) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{8ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(16)).result());
result.at(9) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{9ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(17)).result());
result.at(10) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{10ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(12)).result());
result.at(11) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{11ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(18)).result());
result.at(12) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{12ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(19)).result());
result.at(13) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{13ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(20)).result());
result.at(14) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{14ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(21)).result());
result.at(15) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{15ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(22)).result());
result.at(16) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{16ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(23)).result());
result.at(17) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{17ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(24)).result());
result.at(18) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{18ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(25)).result());
result.at(19) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{19ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(26)).result());
result.at(20) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{20ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(27)).result());
result.at(21) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{21ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(28)).result());
result.at(22) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{22ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(29)).result());
result.at(23) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{23ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(30)).result());
result.at(24) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{24ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(31)).result());
result.at(25) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{25ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(32)).result());
result.at(26) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{26ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(33)).result());
result.at(27) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{27ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(34)).result());
result.at(28) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{28ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(35)).result());
result.at(29) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{29ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(36)).result());
result.at(30) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{30ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(13)).result());
result.at(31) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(3).mix(::jumanpp::u64{31ULL}).mix(::jumanpp::u64{5575843856927ULL}).mix(t0.at(37)).result());
result.at(32) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{32ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(0)).mix(t1.at(0)).result());
result.at(33) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{33ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(1)).mix(t1.at(0)).result());
result.at(34) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{34ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(0)).mix(t1.at(1)).result());
result.at(35) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{35ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(1)).mix(t1.at(1)).result());
result.at(36) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{36ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(4)).mix(t1.at(1)).result());
result.at(37) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{37ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(2)).mix(t1.at(1)).result());
result.at(38) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{38ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(5)).mix(t1.at(1)).result());
result.at(39) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{39ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(6)).mix(t1.at(1)).result());
result.at(40) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{40ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(1)).mix(t1.at(4)).result());
result.at(41) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{41ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(4)).mix(t1.at(4)).result());
result.at(42) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{42ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(2)).mix(t1.at(4)).result());
result.at(43) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{43ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(6)).mix(t1.at(4)).result());
result.at(44) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{44ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(1)).mix(t1.at(2)).result());
result.at(45) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{45ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(4)).mix(t1.at(2)).result());
result.at(46) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{46ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(2)).mix(t1.at(2)).result());
result.at(47) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{47ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(6)).mix(t1.at(2)).result());
result.at(48) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{48ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(1)).mix(t1.at(5)).result());
result.at(49) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{49ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(5)).mix(t1.at(5)).result());
result.at(50) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{50ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(6)).mix(t1.at(5)).result());
result.at(51) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{51ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(1)).mix(t1.at(6)).result());
result.at(52) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{52ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(4)).mix(t1.at(6)).result());
result.at(53) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{53ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(2)).mix(t1.at(6)).result());
result.at(54) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{54ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(5)).mix(t1.at(6)).result());
result.at(55) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{55ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(6)).mix(t1.at(6)).result());
result.at(56) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{56ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(3)).mix(t1.at(3)).result());
result.at(57) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{57ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(12)).mix(t1.at(12)).result());
result.at(58) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{58ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(9)).mix(t1.at(8)).result());
result.at(59) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{59ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(8)).mix(t1.at(9)).result());
result.at(60) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{60ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(10)).mix(t1.at(10)).result());
result.at(61) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{61ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(0)).mix(t1.at(10)).result());
result.at(62) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{62ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(7)).mix(t1.at(7)).result());
result.at(63) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{63ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(10)).mix(t1.at(0)).result());
result.at(64) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{64ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(0)).mix(t1.at(11)).result());
result.at(65) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{65ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(11)).mix(t1.at(0)).result());
result.at(66) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{66ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(13)).mix(t1.at(13)).result());
result.at(67) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{67ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(13)).mix(t1.at(3)).result());
result.at(68) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(4).mix(::jumanpp::u64{68ULL}).mix(::jumanpp::u64{5575847461935ULL}).mix(t0.at(3)).mix(t1.at(13)).result());
result.at(69) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(5).mix(::jumanpp::u64{69ULL}).mix(::jumanpp::u64{89213361200927ULL}).mix(t0.at(0)).mix(t1.at(0)).mix(t2.at(0)).result());
result.at(70) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(5).mix(::jumanpp::u64{70ULL}).mix(::jumanpp::u64{89213361200927ULL}).mix(t0.at(1)).mix(t1.at(1)).mix(t2.at(1)).result());
result.at(71) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(5).mix(::jumanpp::u64{71ULL}).mix(::jumanpp::u64{89213361200927ULL}).mix(t0.at(2)).mix(t1.at(2)).mix(t2.at(2)).result());
result.at(72) = static_cast<::jumanpp::u32>(jumanpp::util::hashing::FastHash1{}.mix(5).mix(::jumanpp::u64{72ULL}).mix(::jumanpp::u64{89213361200927ULL}).mix(t0.at(3)).mix(t1.at(3)).mix(t2.at(3)).result());
} // void apply
}; // class NgramFeatureStaticApply_JumandicStatic
class PartNgramFeatureStaticApply_JumandicStatic final : public ::jumanpp::core::features::impl::PartialNgramFeatureApplyImpl< PartNgramFeatureStaticApply_JumandicStatic > {
public:
void uniStep0(jumanpp::util::ArraySlice<jumanpp::u64> patterns, jumanpp::u32 mask, ::jumanpp::core::analysis::WeightBuffer weights, jumanpp::util::MutableArraySlice<jumanpp::u32> result) const noexcept {
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_0_{0, 0, 8};
auto uni_v_0 = fng_uni_0_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_0);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_1_{1, 1, 9};
auto uni_v_1 = fng_uni_1_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_1);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_2_{2, 2, 0};
auto uni_v_2 = fng_uni_2_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_2);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_3_{3, 3, 10};
auto uni_v_3 = fng_uni_3_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_3);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_4_{4, 4, 1};
auto uni_v_4 = fng_uni_4_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_4);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_5_{5, 5, 14};
auto uni_v_5 = fng_uni_5_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_5);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_6_{6, 6, 11};
auto uni_v_6 = fng_uni_6_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_6);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_7_{7, 7, 15};
auto uni_v_7 = fng_uni_7_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_7);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_8_{8, 8, 16};
auto uni_v_8 = fng_uni_8_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_8);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_9_{9, 9, 17};
auto uni_v_9 = fng_uni_9_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_9);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_10_{10, 10, 12};
auto uni_v_10 = fng_uni_10_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_10);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_11_{11, 11, 18};
auto uni_v_11 = fng_uni_11_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_11);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_12_{12, 12, 19};
auto uni_v_12 = fng_uni_12_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_12);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_13_{13, 13, 20};
auto uni_v_13 = fng_uni_13_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_13);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_14_{14, 14, 21};
auto uni_v_14 = fng_uni_14_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_14);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_15_{15, 15, 22};
auto uni_v_15 = fng_uni_15_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_15);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_16_{16, 16, 23};
auto uni_v_16 = fng_uni_16_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_16);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_17_{17, 17, 24};
auto uni_v_17 = fng_uni_17_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_17);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_18_{18, 18, 25};
auto uni_v_18 = fng_uni_18_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_18);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_19_{19, 19, 26};
auto uni_v_19 = fng_uni_19_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_19);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_20_{20, 20, 27};
auto uni_v_20 = fng_uni_20_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_20);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_21_{21, 21, 28};
auto uni_v_21 = fng_uni_21_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_21);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_22_{22, 22, 29};
auto uni_v_22 = fng_uni_22_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_22);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_23_{23, 23, 30};
auto uni_v_23 = fng_uni_23_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_23);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_24_{24, 24, 31};
auto uni_v_24 = fng_uni_24_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_24);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_25_{25, 25, 32};
auto uni_v_25 = fng_uni_25_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_25);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_26_{26, 26, 33};
auto uni_v_26 = fng_uni_26_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_26);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_27_{27, 27, 34};
auto uni_v_27 = fng_uni_27_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_27);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_28_{28, 28, 35};
auto uni_v_28 = fng_uni_28_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_28);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_29_{29, 29, 36};
auto uni_v_29 = fng_uni_29_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_29);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_30_{30, 30, 13};
auto uni_v_30 = fng_uni_30_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_30);
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_31_{31, 31, 37};
auto uni_v_31 = fng_uni_31_.step0(patterns, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(uni_v_31);
}
void biStep0(jumanpp::util::ArraySlice<jumanpp::u64> patterns, jumanpp::util::MutableArraySlice<jumanpp::u64> state) const noexcept {
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_32_{0, 32, 0, 0};
fng_bi_32_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_33_{1, 33, 1, 0};
fng_bi_33_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_34_{2, 34, 0, 1};
fng_bi_34_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_35_{3, 35, 1, 1};
fng_bi_35_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_36_{4, 36, 4, 1};
fng_bi_36_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_37_{5, 37, 2, 1};
fng_bi_37_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_38_{6, 38, 5, 1};
fng_bi_38_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_39_{7, 39, 6, 1};
fng_bi_39_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_40_{8, 40, 1, 4};
fng_bi_40_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_41_{9, 41, 4, 4};
fng_bi_41_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_42_{10, 42, 2, 4};
fng_bi_42_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_43_{11, 43, 6, 4};
fng_bi_43_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_44_{12, 44, 1, 2};
fng_bi_44_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_45_{13, 45, 4, 2};
fng_bi_45_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_46_{14, 46, 2, 2};
fng_bi_46_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_47_{15, 47, 6, 2};
fng_bi_47_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_48_{16, 48, 1, 5};
fng_bi_48_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_49_{17, 49, 5, 5};
fng_bi_49_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_50_{18, 50, 6, 5};
fng_bi_50_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_51_{19, 51, 1, 6};
fng_bi_51_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_52_{20, 52, 4, 6};
fng_bi_52_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_53_{21, 53, 2, 6};
fng_bi_53_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_54_{22, 54, 5, 6};
fng_bi_54_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_55_{23, 55, 6, 6};
fng_bi_55_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_56_{24, 56, 3, 3};
fng_bi_56_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_57_{25, 57, 12, 12};
fng_bi_57_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_58_{26, 58, 9, 8};
fng_bi_58_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_59_{27, 59, 8, 9};
fng_bi_59_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_60_{28, 60, 10, 10};
fng_bi_60_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_61_{29, 61, 0, 10};
fng_bi_61_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_62_{30, 62, 7, 7};
fng_bi_62_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_63_{31, 63, 10, 0};
fng_bi_63_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_64_{32, 64, 0, 11};
fng_bi_64_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_65_{33, 65, 11, 0};
fng_bi_65_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_66_{34, 66, 13, 13};
fng_bi_66_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_67_{35, 67, 13, 3};
fng_bi_67_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_68_{36, 68, 3, 13};
fng_bi_68_.step0(patterns, state);
}
void biStep1(jumanpp::util::ArraySlice<jumanpp::u64> patterns, jumanpp::util::ArraySlice<jumanpp::u64> state, jumanpp::u32 mask, jumanpp::core::analysis::WeightBuffer weights, jumanpp::util::MutableArraySlice<jumanpp::u32> result) const noexcept {
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_32_{0, 32, 0, 0};
auto bi_val_0 = fng_bi_32_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_0);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_33_{1, 33, 1, 0};
auto bi_val_1 = fng_bi_33_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_1);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_34_{2, 34, 0, 1};
auto bi_val_2 = fng_bi_34_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_2);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_35_{3, 35, 1, 1};
auto bi_val_3 = fng_bi_35_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_3);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_36_{4, 36, 4, 1};
auto bi_val_4 = fng_bi_36_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_4);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_37_{5, 37, 2, 1};
auto bi_val_5 = fng_bi_37_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_5);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_38_{6, 38, 5, 1};
auto bi_val_6 = fng_bi_38_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_6);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_39_{7, 39, 6, 1};
auto bi_val_7 = fng_bi_39_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_7);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_40_{8, 40, 1, 4};
auto bi_val_8 = fng_bi_40_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_8);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_41_{9, 41, 4, 4};
auto bi_val_9 = fng_bi_41_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_9);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_42_{10, 42, 2, 4};
auto bi_val_10 = fng_bi_42_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_10);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_43_{11, 43, 6, 4};
auto bi_val_11 = fng_bi_43_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_11);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_44_{12, 44, 1, 2};
auto bi_val_12 = fng_bi_44_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_12);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_45_{13, 45, 4, 2};
auto bi_val_13 = fng_bi_45_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_13);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_46_{14, 46, 2, 2};
auto bi_val_14 = fng_bi_46_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_14);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_47_{15, 47, 6, 2};
auto bi_val_15 = fng_bi_47_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_15);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_48_{16, 48, 1, 5};
auto bi_val_16 = fng_bi_48_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_16);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_49_{17, 49, 5, 5};
auto bi_val_17 = fng_bi_49_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_17);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_50_{18, 50, 6, 5};
auto bi_val_18 = fng_bi_50_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_18);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_51_{19, 51, 1, 6};
auto bi_val_19 = fng_bi_51_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_19);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_52_{20, 52, 4, 6};
auto bi_val_20 = fng_bi_52_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_20);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_53_{21, 53, 2, 6};
auto bi_val_21 = fng_bi_53_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_21);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_54_{22, 54, 5, 6};
auto bi_val_22 = fng_bi_54_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_22);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_55_{23, 55, 6, 6};
auto bi_val_23 = fng_bi_55_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_23);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_56_{24, 56, 3, 3};
auto bi_val_24 = fng_bi_56_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_24);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_57_{25, 57, 12, 12};
auto bi_val_25 = fng_bi_57_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_25);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_58_{26, 58, 9, 8};
auto bi_val_26 = fng_bi_58_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_26);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_59_{27, 59, 8, 9};
auto bi_val_27 = fng_bi_59_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_27);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_60_{28, 60, 10, 10};
auto bi_val_28 = fng_bi_60_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_28);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_61_{29, 61, 0, 10};
auto bi_val_29 = fng_bi_61_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_29);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_62_{30, 62, 7, 7};
auto bi_val_30 = fng_bi_62_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_30);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_63_{31, 63, 10, 0};
auto bi_val_31 = fng_bi_63_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_31);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_64_{32, 64, 0, 11};
auto bi_val_32 = fng_bi_64_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_32);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_65_{33, 65, 11, 0};
auto bi_val_33 = fng_bi_65_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_33);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_66_{34, 66, 13, 13};
auto bi_val_34 = fng_bi_66_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_34);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_67_{35, 67, 13, 3};
auto bi_val_35 = fng_bi_67_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_35);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_68_{36, 68, 3, 13};
auto bi_val_36 = fng_bi_68_.step1(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(bi_val_36);
}
void triStep0(jumanpp::util::ArraySlice<jumanpp::u64> patterns, jumanpp::util::MutableArraySlice<jumanpp::u64> state) const noexcept {
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_69_{0, 69, 0, 0, 0};
fng_tri_69_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_70_{1, 70, 1, 1, 1};
fng_tri_70_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_71_{2, 71, 2, 2, 2};
fng_tri_71_.step0(patterns, state);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_72_{3, 72, 3, 3, 3};
fng_tri_72_.step0(patterns, state);
}
void triStep1(jumanpp::util::ArraySlice<jumanpp::u64> patterns, jumanpp::util::ArraySlice<jumanpp::u64> state, jumanpp::util::MutableArraySlice<jumanpp::u64> result) const noexcept {
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_69_{0, 69, 0, 0, 0};
fng_tri_69_.step1(patterns, state, result);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_70_{1, 70, 1, 1, 1};
fng_tri_70_.step1(patterns, state, result);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_71_{2, 71, 2, 2, 2};
fng_tri_71_.step1(patterns, state, result);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_72_{3, 72, 3, 3, 3};
fng_tri_72_.step1(patterns, state, result);
}
void triStep2(jumanpp::util::ArraySlice<jumanpp::u64> patterns, jumanpp::util::ArraySlice<jumanpp::u64> state, jumanpp::u32 mask, jumanpp::core::analysis::WeightBuffer weights, jumanpp::util::MutableArraySlice<jumanpp::u32> result) const noexcept {
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_69_{0, 69, 0, 0, 0};
auto tri_v_0 = fng_tri_69_.step2(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(tri_v_0);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_70_{1, 70, 1, 1, 1};
auto tri_v_1 = fng_tri_70_.step2(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(tri_v_1);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_71_{2, 71, 2, 2, 2};
auto tri_v_2 = fng_tri_71_.step2(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(tri_v_2);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_72_{3, 72, 3, 3, 3};
auto tri_v_3 = fng_tri_72_.step2(patterns, state, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(tri_v_3);
}
void biFull(jumanpp::util::ArraySlice<jumanpp::u64> t0, jumanpp::util::ArraySlice<jumanpp::u64> t1, jumanpp::u32 mask, jumanpp::core::analysis::WeightBuffer weights, jumanpp::util::MutableArraySlice<jumanpp::u32> result) const noexcept {
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_32_{0, 32, 0, 0};
auto r_0 = fng_bi_32_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_0);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_33_{1, 33, 1, 0};
auto r_1 = fng_bi_33_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_1);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_34_{2, 34, 0, 1};
auto r_2 = fng_bi_34_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_2);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_35_{3, 35, 1, 1};
auto r_3 = fng_bi_35_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_3);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_36_{4, 36, 4, 1};
auto r_4 = fng_bi_36_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_4);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_37_{5, 37, 2, 1};
auto r_5 = fng_bi_37_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_5);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_38_{6, 38, 5, 1};
auto r_6 = fng_bi_38_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_6);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_39_{7, 39, 6, 1};
auto r_7 = fng_bi_39_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_7);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_40_{8, 40, 1, 4};
auto r_8 = fng_bi_40_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_8);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_41_{9, 41, 4, 4};
auto r_9 = fng_bi_41_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_9);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_42_{10, 42, 2, 4};
auto r_10 = fng_bi_42_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_10);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_43_{11, 43, 6, 4};
auto r_11 = fng_bi_43_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_11);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_44_{12, 44, 1, 2};
auto r_12 = fng_bi_44_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_12);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_45_{13, 45, 4, 2};
auto r_13 = fng_bi_45_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_13);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_46_{14, 46, 2, 2};
auto r_14 = fng_bi_46_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_14);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_47_{15, 47, 6, 2};
auto r_15 = fng_bi_47_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_15);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_48_{16, 48, 1, 5};
auto r_16 = fng_bi_48_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_16);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_49_{17, 49, 5, 5};
auto r_17 = fng_bi_49_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_17);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_50_{18, 50, 6, 5};
auto r_18 = fng_bi_50_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_18);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_51_{19, 51, 1, 6};
auto r_19 = fng_bi_51_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_19);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_52_{20, 52, 4, 6};
auto r_20 = fng_bi_52_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_20);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_53_{21, 53, 2, 6};
auto r_21 = fng_bi_53_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_21);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_54_{22, 54, 5, 6};
auto r_22 = fng_bi_54_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_22);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_55_{23, 55, 6, 6};
auto r_23 = fng_bi_55_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_23);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_56_{24, 56, 3, 3};
auto r_24 = fng_bi_56_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_24);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_57_{25, 57, 12, 12};
auto r_25 = fng_bi_57_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_25);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_58_{26, 58, 9, 8};
auto r_26 = fng_bi_58_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_26);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_59_{27, 59, 8, 9};
auto r_27 = fng_bi_59_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_27);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_60_{28, 60, 10, 10};
auto r_28 = fng_bi_60_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_28);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_61_{29, 61, 0, 10};
auto r_29 = fng_bi_61_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_29);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_62_{30, 62, 7, 7};
auto r_30 = fng_bi_62_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_30);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_63_{31, 63, 10, 0};
auto r_31 = fng_bi_63_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_31);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_64_{32, 64, 0, 11};
auto r_32 = fng_bi_64_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_32);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_65_{33, 65, 11, 0};
auto r_33 = fng_bi_65_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_33);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_66_{34, 66, 13, 13};
auto r_34 = fng_bi_66_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_34);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_67_{35, 67, 13, 3};
auto r_35 = fng_bi_67_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_35);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_68_{36, 68, 3, 13};
auto r_36 = fng_bi_68_.jointApply(t0, t1, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_36);
}
void triFull(jumanpp::util::ArraySlice<jumanpp::u64> t0,
jumanpp::util::ArraySlice<jumanpp::u64> t1,
jumanpp::util::ArraySlice<jumanpp::u64> t2,
jumanpp::u32 mask,
jumanpp::core::analysis::WeightBuffer weights,
jumanpp::util::MutableArraySlice<jumanpp::u32> result
) const noexcept {
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_69_{0, 69, 0, 0, 0};
auto r_0 = fng_tri_69_.jointApply(t0, t1, t2, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_0);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_70_{1, 70, 1, 1, 1};
auto r_1 = fng_tri_70_.jointApply(t0, t1, t2, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_1);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_71_{2, 71, 2, 2, 2};
auto r_2 = fng_tri_71_.jointApply(t0, t1, t2, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_2);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_72_{3, 72, 3, 3, 3};
auto r_3 = fng_tri_72_.jointApply(t0, t1, t2, result, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(r_3);
}
void allocateBuffers(::jumanpp::core::features::FeatureBuffer* fbuf,const ::jumanpp::core::features::AnalysisRunStats& stats,::jumanpp::util::memory::PoolAlloc* alloc) const override {
using namespace jumanpp;
u32 maxNgrams = std::max({numUnigrams(), numBigrams(), numTrigrams()});
fbuf->currentElems = ~0u;
fbuf->valueBuffer1 = alloc->allocateBuf<u32>(maxNgrams, 64);
fbuf->valueBuffer2 = alloc->allocateBuf<u32>(maxNgrams, 64);
fbuf->t1Buffer = alloc->allocateBuf<u64>(numBigrams() * stats.maxStarts, 64);
fbuf->t2Buffer1 = alloc->allocateBuf<u64>(numTrigrams() * stats.maxStarts, 64);
fbuf->t2Buffer2 = alloc->allocateBuf<u64>(numTrigrams() * stats.maxStarts, 64);
fbuf->scoreBuffer = alloc->allocateBuf<float>(stats.maxEnds, 16);
}
::jumanpp::u32 numUnigrams() const noexcept override { return 32; }
::jumanpp::u32 numBigrams() const noexcept override { return 37; }
::jumanpp::u32 numTrigrams() const noexcept override { return 4; }
void applyBiStep2(::jumanpp::core::features::FeatureBuffer* buffers, ::jumanpp::util::ArraySlice<jumanpp::u64> p1, ::jumanpp::core::analysis::FeatureScorer* scorer, ::jumanpp::util::MutableArraySlice<float> result) const noexcept override {
auto numElems = buffers->currentElems;
if (numElems == 0) { return; }
auto numBigrams = this->numBigrams();
auto buf1 = buffers->valBuf1(numBigrams);
auto buf2 = buffers->valBuf2(numBigrams);
const auto state = buffers->t1Buf(numBigrams, numElems);
auto weights = scorer->weights();
auto mask = static_cast<::jumanpp::u32>(weights.size() - 1);
this->biStep1(p1, state.row(0), mask, weights, buf2);
::jumanpp::u32 row = 1;
for (; row < state.numRows(); ++row) {
auto srow = state.row(row);
float f_0 = 0;
float f_1 = 0;
float f_2 = 0;
float f_3 = 0;
float f_4 = 0;
float f_5 = 0;
float f_6 = 0;
float f_7 = 0;
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_32_{0, 32, 0, 0};
f_0 += weights.at(buf2.at(0));
::jumanpp::u32 idx = fng_bi_32_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_33_{1, 33, 1, 0};
f_1 += weights.at(buf2.at(1));
::jumanpp::u32 idx = fng_bi_33_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_34_{2, 34, 0, 1};
f_2 += weights.at(buf2.at(2));
::jumanpp::u32 idx = fng_bi_34_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_35_{3, 35, 1, 1};
f_3 += weights.at(buf2.at(3));
::jumanpp::u32 idx = fng_bi_35_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_36_{4, 36, 4, 1};
f_4 += weights.at(buf2.at(4));
::jumanpp::u32 idx = fng_bi_36_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_37_{5, 37, 2, 1};
f_5 += weights.at(buf2.at(5));
::jumanpp::u32 idx = fng_bi_37_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_38_{6, 38, 5, 1};
f_6 += weights.at(buf2.at(6));
::jumanpp::u32 idx = fng_bi_38_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_39_{7, 39, 6, 1};
f_7 += weights.at(buf2.at(7));
::jumanpp::u32 idx = fng_bi_39_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_40_{8, 40, 1, 4};
f_0 += weights.at(buf2.at(8));
::jumanpp::u32 idx = fng_bi_40_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_41_{9, 41, 4, 4};
f_1 += weights.at(buf2.at(9));
::jumanpp::u32 idx = fng_bi_41_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_42_{10, 42, 2, 4};
f_2 += weights.at(buf2.at(10));
::jumanpp::u32 idx = fng_bi_42_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_43_{11, 43, 6, 4};
f_3 += weights.at(buf2.at(11));
::jumanpp::u32 idx = fng_bi_43_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_44_{12, 44, 1, 2};
f_4 += weights.at(buf2.at(12));
::jumanpp::u32 idx = fng_bi_44_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_45_{13, 45, 4, 2};
f_5 += weights.at(buf2.at(13));
::jumanpp::u32 idx = fng_bi_45_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_46_{14, 46, 2, 2};
f_6 += weights.at(buf2.at(14));
::jumanpp::u32 idx = fng_bi_46_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_47_{15, 47, 6, 2};
f_7 += weights.at(buf2.at(15));
::jumanpp::u32 idx = fng_bi_47_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_48_{16, 48, 1, 5};
f_0 += weights.at(buf2.at(16));
::jumanpp::u32 idx = fng_bi_48_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_49_{17, 49, 5, 5};
f_1 += weights.at(buf2.at(17));
::jumanpp::u32 idx = fng_bi_49_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_50_{18, 50, 6, 5};
f_2 += weights.at(buf2.at(18));
::jumanpp::u32 idx = fng_bi_50_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_51_{19, 51, 1, 6};
f_3 += weights.at(buf2.at(19));
::jumanpp::u32 idx = fng_bi_51_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_52_{20, 52, 4, 6};
f_4 += weights.at(buf2.at(20));
::jumanpp::u32 idx = fng_bi_52_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_53_{21, 53, 2, 6};
f_5 += weights.at(buf2.at(21));
::jumanpp::u32 idx = fng_bi_53_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_54_{22, 54, 5, 6};
f_6 += weights.at(buf2.at(22));
::jumanpp::u32 idx = fng_bi_54_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_55_{23, 55, 6, 6};
f_7 += weights.at(buf2.at(23));
::jumanpp::u32 idx = fng_bi_55_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_56_{24, 56, 3, 3};
f_0 += weights.at(buf2.at(24));
::jumanpp::u32 idx = fng_bi_56_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_57_{25, 57, 12, 12};
f_1 += weights.at(buf2.at(25));
::jumanpp::u32 idx = fng_bi_57_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_58_{26, 58, 9, 8};
f_2 += weights.at(buf2.at(26));
::jumanpp::u32 idx = fng_bi_58_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_59_{27, 59, 8, 9};
f_3 += weights.at(buf2.at(27));
::jumanpp::u32 idx = fng_bi_59_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_60_{28, 60, 10, 10};
f_4 += weights.at(buf2.at(28));
::jumanpp::u32 idx = fng_bi_60_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_61_{29, 61, 0, 10};
f_5 += weights.at(buf2.at(29));
::jumanpp::u32 idx = fng_bi_61_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_62_{30, 62, 7, 7};
f_6 += weights.at(buf2.at(30));
::jumanpp::u32 idx = fng_bi_62_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_63_{31, 63, 10, 0};
f_7 += weights.at(buf2.at(31));
::jumanpp::u32 idx = fng_bi_63_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_64_{32, 64, 0, 11};
f_0 += weights.at(buf2.at(32));
::jumanpp::u32 idx = fng_bi_64_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_65_{33, 65, 11, 0};
f_1 += weights.at(buf2.at(33));
::jumanpp::u32 idx = fng_bi_65_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_66_{34, 66, 13, 13};
f_2 += weights.at(buf2.at(34));
::jumanpp::u32 idx = fng_bi_66_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_67_{35, 67, 13, 3};
f_3 += weights.at(buf2.at(35));
::jumanpp::u32 idx = fng_bi_67_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_68_{36, 68, 3, 13};
f_4 += weights.at(buf2.at(36));
::jumanpp::u32 idx = fng_bi_68_.step1(p1, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
result.at(row - 1) += (f_0 + f_1 + f_2 + f_3 + f_4 + f_5 + f_6 + f_7);
buf1.swap(buf2);
}
result.at(row - 1) += ::jumanpp::core::analysis::impl::computeUnrolled4RawPerceptron(weights, buf2);
}
void applyTriStep3(::jumanpp::core::features::FeatureBuffer* buffers, ::jumanpp::util::ArraySlice<jumanpp::u64> p2, ::jumanpp::core::analysis::FeatureScorer* scorer, ::jumanpp::util::MutableArraySlice<float> result) const noexcept override {
auto numElems = buffers->currentElems;
if (numElems == 0) { return; }
auto numTrigrams = this->numTrigrams();
auto buf1 = buffers->valBuf1(numTrigrams);
auto buf2 = buffers->valBuf2(numTrigrams);
const auto state = buffers->t2Buf2(numTrigrams, numElems);
auto weights = scorer->weights();
auto mask = static_cast<::jumanpp::u32>(weights.size() - 1);
this->triStep2(p2, state.row(0), mask, weights, buf2);
::jumanpp::u32 row = 1;
for (; row < state.numRows(); ++row) {
auto srow = state.row(row);
float f_0 = 0;
float f_1 = 0;
float f_2 = 0;
float f_3 = 0;
{
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_69_{0, 69, 0, 0, 0};
f_0 += weights.at(buf2.at(0));
::jumanpp::u32 idx = fng_tri_69_.step2(p2, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_70_{1, 70, 1, 1, 1};
f_1 += weights.at(buf2.at(1));
::jumanpp::u32 idx = fng_tri_70_.step2(p2, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_71_{2, 71, 2, 2, 2};
f_2 += weights.at(buf2.at(2));
::jumanpp::u32 idx = fng_tri_71_.step2(p2, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
{
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_72_{3, 72, 3, 3, 3};
f_3 += weights.at(buf2.at(3));
::jumanpp::u32 idx = fng_tri_72_.step2(p2, srow, buf1, mask);
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(idx);
}
result.at(row - 1) += (f_0 + f_1 + f_2 + f_3);
buf1.swap(buf2);
}
result.at(row - 1) += ::jumanpp::core::analysis::impl::computeUnrolled4RawPerceptron(weights, buf2);
}
void applyBiTri(::jumanpp::core::features::FeatureBuffer* buffers,
::jumanpp::u32 t0idx,
::jumanpp::util::ArraySlice<jumanpp::u64> t0,
::jumanpp::util::ConstSliceable<jumanpp::u64> t1,
::jumanpp::util::ConstSliceable<jumanpp::u64> t2,
::jumanpp::util::ArraySlice<jumanpp::u32> t1idxes,
::jumanpp::core::analysis::FeatureScorer* scorer,
::jumanpp::util::MutableArraySlice<float> result) const noexcept override {
constexpr auto numBigrams = 37;
constexpr auto numTrigrams = 4;
auto weights = scorer->weights();
auto scbuf = buffers->scoreBuf(t1.numRows());
const auto bistateBuf = buffers->t1Buf(numBigrams, buffers->currentElems);
const auto tristateBuf = buffers->t2Buf1(numTrigrams, buffers->currentElems);
auto buf1 = buffers->valBuf1(numBigrams);
auto buf2 = buffers->valBuf2(numBigrams);
static constexpr jumanpp::u32 t1BiFeatureIdxes[numBigrams] = {
0, 0, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 2, 2, 2, 2, 5, 5, 5, 6, 6, 6, 6, 6, 3, 12, 8, 9, 10, 10, 7, 0, 11, 0, 13, 3, 13,
};
static constexpr jumanpp::u32 t1TriFeatureIdxes[numTrigrams] = {
0, 1, 2, 3,
};
static constexpr jumanpp::u32 t2TriFeatureIdxes[numTrigrams] = {
0, 1, 2, 3,
};
::jumanpp::core::features::impl::applyBiTriFullKernel(
bistateBuf.row(t0idx),
tristateBuf.row(t0idx),
t1,
t2,
t1idxes,
t1BiFeatureIdxes,
t1TriFeatureIdxes,
t2TriFeatureIdxes,
buf1,
buf2,
weights,
scbuf,
result
);
}
}; // class PartNgramFeatureStaticApply_JumandicStatic
class PatternFeatureStaticApply_JumandicStatic : public ::jumanpp::core::features::GeneratedPatternFeatureApply {
void patternsAndUnigramsApply(
::jumanpp::core::features::impl::PrimitiveFeatureContext *ctx,
::jumanpp::util::ArraySlice<::jumanpp::core::NodeInfo> nodeInfos,
::jumanpp::util::Sliceable<::jumanpp::i32> entryFeatureBuffer,
::jumanpp::core::features::FeatureBuffer *fbuffer,
::jumanpp::util::Sliceable<::jumanpp::u64> patternMatrix,
const ::jumanpp::core::analysis::FeatureScorer *scorer,
::jumanpp::util::MutableArraySlice<float> scores) const override {
auto numItems = patternMatrix.numRows();
const auto weights = scorer->weights();
::jumanpp::u32 mask = weights.size() - 1;
auto t1state = fbuffer->t1Buf(37, numItems);
auto t2state = fbuffer->t2Buf1(4, numItems);
auto buf1 = fbuffer->valBuf1(32);
auto buf2 = fbuffer->valBuf2(32);
for (int item = 0; item < numItems; ++item) {
auto patterns = patternMatrix.row(item);
auto& nodeInfo = nodeInfos.at(item);
auto entry = entryFeatureBuffer.row(item);
bool status = ctx->fillEntryBuffer(nodeInfo.entryPtr(), entry);
JPP_DCHECK(status);
auto t1row = t1state.row(item);
auto t2row = t2state.row(item);
// preload memory of next item
if (JPP_LIKELY(item < (numItems - 1))) {
ctx->prefetchDicItem(nodeInfos.at(item + 1).entryPtr());
}
buf1.swap(buf2);
// pattern feature #8 (with unigram), usage=3
constexpr jumanpp::core::features::impl::CopyPrimFeatureImpl pfobj_surface_{0};
::jumanpp::u64 pf_surface_0 = pfobj_surface_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_8 = ::jumanpp::util::hashing::FastHash1{}.mix(8ULL).mix(1ULL).mix(34359656763621376ULL);
fe_pat_hash_8 = fe_pat_hash_8.mix(pf_surface_0);
::jumanpp::u64 fe_pat_8 = fe_pat_hash_8.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_0_{0, 0, 8};
auto value_fng_uni_0_ = fng_uni_0_.maskedValueFor(fe_pat_8, mask);
float score_part_0 = weights.at(buf2.at(0)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_0_);
buf1.at(0) = value_fng_uni_0_;
patterns.at(8) = fe_pat_8;
// pattern feature #9 (with unigram), usage=3
constexpr jumanpp::core::features::impl::ShiftMaskPrimFeatureImpl pfobj_auxWord_{7, 0, 0x1};
::jumanpp::u64 pf_auxWord_1 = pfobj_auxWord_.access(ctx, nodeInfo, entry);
constexpr jumanpp::core::features::impl::CopyPrimFeatureImpl pfobj_pos_{1};
::jumanpp::u64 pf_pos_2 = pfobj_pos_.access(ctx, nodeInfo, entry);
constexpr jumanpp::core::features::impl::CopyPrimFeatureImpl pfobj_subpos_{2};
::jumanpp::u64 pf_subpos_3 = pfobj_subpos_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_9 = ::jumanpp::util::hashing::FastHash1{}.mix(9ULL).mix(1ULL).mix(34359656763621376ULL);
if (pf_auxWord_1 != 0) { // compute feature auxWord
fe_pat_hash_9 = fe_pat_hash_9.mix(pf_surface_0).mix(pf_pos_2).mix(pf_subpos_3);
} else {
fe_pat_hash_9 = fe_pat_hash_9.mix(pf_pos_2);
}
::jumanpp::u64 fe_pat_9 = fe_pat_hash_9.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_1_{1, 1, 9};
auto value_fng_uni_1_ = fng_uni_1_.maskedValueFor(fe_pat_9, mask);
float score_part_1 = weights.at(buf2.at(1)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_1_);
buf1.at(1) = value_fng_uni_1_;
patterns.at(9) = fe_pat_9;
// pattern feature #0 (with unigram), usage=7
auto fe_pat_hash_0 = ::jumanpp::util::hashing::FastHash1{}.mix(0ULL).mix(1ULL).mix(34359656763621376ULL);
fe_pat_hash_0 = fe_pat_hash_0.mix(pf_pos_2);
::jumanpp::u64 fe_pat_0 = fe_pat_hash_0.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_2_{2, 2, 0};
auto value_fng_uni_2_ = fng_uni_2_.maskedValueFor(fe_pat_0, mask);
float score_part_2 = weights.at(buf2.at(2)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_2_);
buf1.at(2) = value_fng_uni_2_;
patterns.at(0) = fe_pat_0;
// pattern feature #10 (with unigram), usage=3
auto fe_pat_hash_10 = ::jumanpp::util::hashing::FastHash1{}.mix(10ULL).mix(1ULL).mix(34359656763621376ULL);
fe_pat_hash_10 = fe_pat_hash_10.mix(pf_subpos_3);
::jumanpp::u64 fe_pat_10 = fe_pat_hash_10.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_3_{3, 3, 10};
auto value_fng_uni_3_ = fng_uni_3_.maskedValueFor(fe_pat_10, mask);
float score_part_3 = weights.at(buf2.at(3)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_3_);
buf1.at(3) = value_fng_uni_3_;
patterns.at(10) = fe_pat_10;
// pattern feature #1 (with unigram), usage=7
auto fe_pat_hash_1 = ::jumanpp::util::hashing::FastHash1{}.mix(1ULL).mix(2ULL).mix(34359656763621376ULL);
fe_pat_hash_1 = fe_pat_hash_1.mix(pf_pos_2);
fe_pat_hash_1 = fe_pat_hash_1.mix(pf_subpos_3);
::jumanpp::u64 fe_pat_1 = fe_pat_hash_1.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_4_{4, 4, 1};
auto value_fng_uni_4_ = fng_uni_4_.maskedValueFor(fe_pat_1, mask);
score_part_0 += weights.at(buf2.at(4)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_4_);
buf1.at(4) = value_fng_uni_4_;
patterns.at(1) = fe_pat_1;
// pattern feature #14 (with unigram), usage=1
constexpr jumanpp::core::features::impl::CopyPrimFeatureImpl pfobj_conjtype_{4};
::jumanpp::u64 pf_conjtype_4 = pfobj_conjtype_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_14 = ::jumanpp::util::hashing::FastHash1{}.mix(14ULL).mix(1ULL).mix(34359656763621376ULL);
fe_pat_hash_14 = fe_pat_hash_14.mix(pf_conjtype_4);
::jumanpp::u64 fe_pat_14 = fe_pat_hash_14.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_5_{5, 5, 14};
auto value_fng_uni_5_ = fng_uni_5_.maskedValueFor(fe_pat_14, mask);
score_part_1 += weights.at(buf2.at(5)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_5_);
buf1.at(5) = value_fng_uni_5_;
// pattern feature #11 (with unigram), usage=3
constexpr jumanpp::core::features::impl::CopyPrimFeatureImpl pfobj_conjform_{3};
::jumanpp::u64 pf_conjform_5 = pfobj_conjform_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_11 = ::jumanpp::util::hashing::FastHash1{}.mix(11ULL).mix(1ULL).mix(34359656763621376ULL);
fe_pat_hash_11 = fe_pat_hash_11.mix(pf_conjform_5);
::jumanpp::u64 fe_pat_11 = fe_pat_hash_11.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_6_{6, 6, 11};
auto value_fng_uni_6_ = fng_uni_6_.maskedValueFor(fe_pat_11, mask);
score_part_2 += weights.at(buf2.at(6)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_6_);
buf1.at(6) = value_fng_uni_6_;
patterns.at(11) = fe_pat_11;
// pattern feature #15 (with unigram), usage=1
constexpr jumanpp::core::features::impl::SurfaceCodepointLengthPrimFeatureImpl pfobj_surfaceLength_{};
::jumanpp::u64 pf_surfaceLength_6 = pfobj_surfaceLength_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_15 = ::jumanpp::util::hashing::FastHash1{}.mix(15ULL).mix(1ULL).mix(34359656763621376ULL);
fe_pat_hash_15 = fe_pat_hash_15.mix(pf_surfaceLength_6);
::jumanpp::u64 fe_pat_15 = fe_pat_hash_15.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_7_{7, 7, 15};
auto value_fng_uni_7_ = fng_uni_7_.maskedValueFor(fe_pat_15, mask);
score_part_3 += weights.at(buf2.at(7)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_7_);
buf1.at(7) = value_fng_uni_7_;
// pattern feature #16 (with unigram), usage=1
auto fe_pat_hash_16 = ::jumanpp::util::hashing::FastHash1{}.mix(16ULL).mix(2ULL).mix(34359656763621376ULL);
fe_pat_hash_16 = fe_pat_hash_16.mix(pf_surfaceLength_6);
fe_pat_hash_16 = fe_pat_hash_16.mix(pf_pos_2);
::jumanpp::u64 fe_pat_16 = fe_pat_hash_16.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_8_{8, 8, 16};
auto value_fng_uni_8_ = fng_uni_8_.maskedValueFor(fe_pat_16, mask);
score_part_0 += weights.at(buf2.at(8)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_8_);
buf1.at(8) = value_fng_uni_8_;
// pattern feature #17 (with unigram), usage=1
auto fe_pat_hash_17 = ::jumanpp::util::hashing::FastHash1{}.mix(17ULL).mix(3ULL).mix(34359656763621376ULL);
fe_pat_hash_17 = fe_pat_hash_17.mix(pf_surfaceLength_6);
fe_pat_hash_17 = fe_pat_hash_17.mix(pf_pos_2);
fe_pat_hash_17 = fe_pat_hash_17.mix(pf_subpos_3);
::jumanpp::u64 fe_pat_17 = fe_pat_hash_17.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_9_{9, 9, 17};
auto value_fng_uni_9_ = fng_uni_9_.maskedValueFor(fe_pat_17, mask);
score_part_1 += weights.at(buf2.at(9)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_9_);
buf1.at(9) = value_fng_uni_9_;
// pattern feature #12 (with unigram), usage=3
constexpr jumanpp::core::features::impl::CopyPrimFeatureImpl pfobj_baseform_{5};
::jumanpp::u64 pf_baseform_7 = pfobj_baseform_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_12 = ::jumanpp::util::hashing::FastHash1{}.mix(12ULL).mix(1ULL).mix(34359656763621376ULL);
fe_pat_hash_12 = fe_pat_hash_12.mix(pf_baseform_7);
::jumanpp::u64 fe_pat_12 = fe_pat_hash_12.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_10_{10, 10, 12};
auto value_fng_uni_10_ = fng_uni_10_.maskedValueFor(fe_pat_12, mask);
score_part_2 += weights.at(buf2.at(10)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_10_);
buf1.at(10) = value_fng_uni_10_;
patterns.at(12) = fe_pat_12;
// pattern feature #18 (with unigram), usage=1
auto fe_pat_hash_18 = ::jumanpp::util::hashing::FastHash1{}.mix(18ULL).mix(2ULL).mix(34359656763621376ULL);
fe_pat_hash_18 = fe_pat_hash_18.mix(pf_baseform_7);
fe_pat_hash_18 = fe_pat_hash_18.mix(pf_pos_2);
::jumanpp::u64 fe_pat_18 = fe_pat_hash_18.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_11_{11, 11, 18};
auto value_fng_uni_11_ = fng_uni_11_.maskedValueFor(fe_pat_18, mask);
score_part_3 += weights.at(buf2.at(11)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_11_);
buf1.at(11) = value_fng_uni_11_;
// pattern feature #19 (with unigram), usage=1
auto fe_pat_hash_19 = ::jumanpp::util::hashing::FastHash1{}.mix(19ULL).mix(3ULL).mix(34359656763621376ULL);
fe_pat_hash_19 = fe_pat_hash_19.mix(pf_baseform_7);
fe_pat_hash_19 = fe_pat_hash_19.mix(pf_pos_2);
fe_pat_hash_19 = fe_pat_hash_19.mix(pf_subpos_3);
::jumanpp::u64 fe_pat_19 = fe_pat_hash_19.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_12_{12, 12, 19};
auto value_fng_uni_12_ = fng_uni_12_.maskedValueFor(fe_pat_19, mask);
score_part_0 += weights.at(buf2.at(12)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_12_);
buf1.at(12) = value_fng_uni_12_;
// pattern feature #20 (with unigram), usage=1
constexpr jumanpp::core::features::impl::ShiftMaskPrimFeatureImpl pfobj_isDevoiced_{7, 1, 0x1};
::jumanpp::u64 pf_isDevoiced_8 = pfobj_isDevoiced_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_20 = ::jumanpp::util::hashing::FastHash1{}.mix(20ULL).mix(1ULL).mix(34359656763621376ULL);
fe_pat_hash_20 = fe_pat_hash_20.mix(pf_isDevoiced_8);
::jumanpp::u64 fe_pat_20 = fe_pat_hash_20.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_13_{13, 13, 20};
auto value_fng_uni_13_ = fng_uni_13_.maskedValueFor(fe_pat_20, mask);
score_part_1 += weights.at(buf2.at(13)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_13_);
buf1.at(13) = value_fng_uni_13_;
// pattern feature #21 (with unigram), usage=1
auto fe_pat_hash_21 = ::jumanpp::util::hashing::FastHash1{}.mix(21ULL).mix(3ULL).mix(34359656763621376ULL);
fe_pat_hash_21 = fe_pat_hash_21.mix(pf_isDevoiced_8);
fe_pat_hash_21 = fe_pat_hash_21.mix(pf_pos_2);
fe_pat_hash_21 = fe_pat_hash_21.mix(pf_subpos_3);
::jumanpp::u64 fe_pat_21 = fe_pat_hash_21.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_14_{14, 14, 21};
auto value_fng_uni_14_ = fng_uni_14_.maskedValueFor(fe_pat_21, mask);
score_part_2 += weights.at(buf2.at(14)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_14_);
buf1.at(14) = value_fng_uni_14_;
// pattern feature #22 (with unigram), usage=1
constexpr jumanpp::core::features::impl::ProvidedPrimFeatureImpl pfobj_notPrefix_{1};
::jumanpp::u64 pf_notPrefix_9 = pfobj_notPrefix_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_22 = ::jumanpp::util::hashing::FastHash1{}.mix(22ULL).mix(2ULL).mix(34359656763621376ULL);
fe_pat_hash_22 = fe_pat_hash_22.mix(pf_surfaceLength_6);
fe_pat_hash_22 = fe_pat_hash_22.mix(pf_notPrefix_9);
::jumanpp::u64 fe_pat_22 = fe_pat_hash_22.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_15_{15, 15, 22};
auto value_fng_uni_15_ = fng_uni_15_.maskedValueFor(fe_pat_22, mask);
score_part_3 += weights.at(buf2.at(15)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_15_);
buf1.at(15) = value_fng_uni_15_;
// pattern feature #23 (with unigram), usage=1
auto fe_pat_hash_23 = ::jumanpp::util::hashing::FastHash1{}.mix(23ULL).mix(2ULL).mix(34359656763621376ULL);
fe_pat_hash_23 = fe_pat_hash_23.mix(pf_baseform_7);
fe_pat_hash_23 = fe_pat_hash_23.mix(pf_notPrefix_9);
::jumanpp::u64 fe_pat_23 = fe_pat_hash_23.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_16_{16, 16, 23};
auto value_fng_uni_16_ = fng_uni_16_.maskedValueFor(fe_pat_23, mask);
score_part_0 += weights.at(buf2.at(16)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_16_);
buf1.at(16) = value_fng_uni_16_;
// pattern feature #24 (with unigram), usage=1
auto fe_pat_hash_24 = ::jumanpp::util::hashing::FastHash1{}.mix(24ULL).mix(3ULL).mix(34359656763621376ULL);
fe_pat_hash_24 = fe_pat_hash_24.mix(pf_pos_2);
fe_pat_hash_24 = fe_pat_hash_24.mix(pf_subpos_3);
fe_pat_hash_24 = fe_pat_hash_24.mix(pf_surfaceLength_6);
::jumanpp::u64 fe_pat_24 = fe_pat_hash_24.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_17_{17, 17, 24};
auto value_fng_uni_17_ = fng_uni_17_.maskedValueFor(fe_pat_24, mask);
score_part_1 += weights.at(buf2.at(17)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_17_);
buf1.at(17) = value_fng_uni_17_;
// pattern feature #25 (with unigram), usage=1
constexpr jumanpp::core::features::impl::ShiftMaskPrimFeatureImpl pfobj_nominalize_{7, 2, 0x1};
::jumanpp::u64 pf_nominalize_10 = pfobj_nominalize_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_25 = ::jumanpp::util::hashing::FastHash1{}.mix(25ULL).mix(1ULL).mix(34359656763621376ULL);
fe_pat_hash_25 = fe_pat_hash_25.mix(pf_nominalize_10);
::jumanpp::u64 fe_pat_25 = fe_pat_hash_25.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_18_{18, 18, 25};
auto value_fng_uni_18_ = fng_uni_18_.maskedValueFor(fe_pat_25, mask);
score_part_2 += weights.at(buf2.at(18)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_18_);
buf1.at(18) = value_fng_uni_18_;
// pattern feature #26 (with unigram), usage=1
constexpr jumanpp::core::features::impl::ProvidedPrimFeatureImpl pfobj_nonstdSurf_{0};
::jumanpp::u64 pf_nonstdSurf_11 = pfobj_nonstdSurf_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_26 = ::jumanpp::util::hashing::FastHash1{}.mix(26ULL).mix(1ULL).mix(34359656763621376ULL);
fe_pat_hash_26 = fe_pat_hash_26.mix(pf_nonstdSurf_11);
::jumanpp::u64 fe_pat_26 = fe_pat_hash_26.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_19_{19, 19, 26};
auto value_fng_uni_19_ = fng_uni_19_.maskedValueFor(fe_pat_26, mask);
score_part_3 += weights.at(buf2.at(19)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_19_);
buf1.at(19) = value_fng_uni_19_;
// pattern feature #27 (with unigram), usage=1
auto fe_pat_hash_27 = ::jumanpp::util::hashing::FastHash1{}.mix(27ULL).mix(2ULL).mix(34359656763621376ULL);
fe_pat_hash_27 = fe_pat_hash_27.mix(pf_nonstdSurf_11);
fe_pat_hash_27 = fe_pat_hash_27.mix(pf_pos_2);
::jumanpp::u64 fe_pat_27 = fe_pat_hash_27.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_20_{20, 20, 27};
auto value_fng_uni_20_ = fng_uni_20_.maskedValueFor(fe_pat_27, mask);
score_part_0 += weights.at(buf2.at(20)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_20_);
buf1.at(20) = value_fng_uni_20_;
// pattern feature #28 (with unigram), usage=1
auto fe_pat_hash_28 = ::jumanpp::util::hashing::FastHash1{}.mix(28ULL).mix(3ULL).mix(34359656763621376ULL);
fe_pat_hash_28 = fe_pat_hash_28.mix(pf_nonstdSurf_11);
fe_pat_hash_28 = fe_pat_hash_28.mix(pf_pos_2);
fe_pat_hash_28 = fe_pat_hash_28.mix(pf_subpos_3);
::jumanpp::u64 fe_pat_28 = fe_pat_hash_28.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_21_{21, 21, 28};
auto value_fng_uni_21_ = fng_uni_21_.maskedValueFor(fe_pat_28, mask);
score_part_1 += weights.at(buf2.at(21)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_21_);
buf1.at(21) = value_fng_uni_21_;
// pattern feature #29 (with unigram), usage=1
auto fe_pat_hash_29 = ::jumanpp::util::hashing::FastHash1{}.mix(29ULL).mix(2ULL).mix(34359656763621376ULL);
fe_pat_hash_29 = fe_pat_hash_29.mix(pf_nonstdSurf_11);
fe_pat_hash_29 = fe_pat_hash_29.mix(pf_baseform_7);
::jumanpp::u64 fe_pat_29 = fe_pat_hash_29.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_22_{22, 22, 29};
auto value_fng_uni_22_ = fng_uni_22_.maskedValueFor(fe_pat_29, mask);
score_part_2 += weights.at(buf2.at(22)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_22_);
buf1.at(22) = value_fng_uni_22_;
// pattern feature #30 (with unigram), usage=1
constexpr jumanpp::core::features::impl::CodepointFeatureImpl pfobj_scp1_{1};
::jumanpp::u64 pf_scp1_12 = pfobj_scp1_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_30 = ::jumanpp::util::hashing::FastHash1{}.mix(30ULL).mix(5ULL).mix(34359656763621376ULL);
fe_pat_hash_30 = fe_pat_hash_30.mix(pf_pos_2);
fe_pat_hash_30 = fe_pat_hash_30.mix(pf_subpos_3);
fe_pat_hash_30 = fe_pat_hash_30.mix(pf_conjform_5);
fe_pat_hash_30 = fe_pat_hash_30.mix(pf_conjtype_4);
fe_pat_hash_30 = fe_pat_hash_30.mix(pf_scp1_12);
::jumanpp::u64 fe_pat_30 = fe_pat_hash_30.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_23_{23, 23, 30};
auto value_fng_uni_23_ = fng_uni_23_.maskedValueFor(fe_pat_30, mask);
score_part_3 += weights.at(buf2.at(23)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_23_);
buf1.at(23) = value_fng_uni_23_;
// pattern feature #31 (with unigram), usage=1
constexpr jumanpp::core::features::impl::CodepointFeatureImpl pfobj_scp2_{2};
::jumanpp::u64 pf_scp2_13 = pfobj_scp2_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_31 = ::jumanpp::util::hashing::FastHash1{}.mix(31ULL).mix(5ULL).mix(34359656763621376ULL);
fe_pat_hash_31 = fe_pat_hash_31.mix(pf_pos_2);
fe_pat_hash_31 = fe_pat_hash_31.mix(pf_subpos_3);
fe_pat_hash_31 = fe_pat_hash_31.mix(pf_conjform_5);
fe_pat_hash_31 = fe_pat_hash_31.mix(pf_conjtype_4);
fe_pat_hash_31 = fe_pat_hash_31.mix(pf_scp2_13);
::jumanpp::u64 fe_pat_31 = fe_pat_hash_31.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_24_{24, 24, 31};
auto value_fng_uni_24_ = fng_uni_24_.maskedValueFor(fe_pat_31, mask);
score_part_0 += weights.at(buf2.at(24)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_24_);
buf1.at(24) = value_fng_uni_24_;
// pattern feature #32 (with unigram), usage=1
constexpr jumanpp::core::features::impl::CodepointFeatureImpl pfobj_scp3_{3};
::jumanpp::u64 pf_scp3_14 = pfobj_scp3_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_32 = ::jumanpp::util::hashing::FastHash1{}.mix(32ULL).mix(5ULL).mix(34359656763621376ULL);
fe_pat_hash_32 = fe_pat_hash_32.mix(pf_pos_2);
fe_pat_hash_32 = fe_pat_hash_32.mix(pf_subpos_3);
fe_pat_hash_32 = fe_pat_hash_32.mix(pf_conjform_5);
fe_pat_hash_32 = fe_pat_hash_32.mix(pf_conjtype_4);
fe_pat_hash_32 = fe_pat_hash_32.mix(pf_scp3_14);
::jumanpp::u64 fe_pat_32 = fe_pat_hash_32.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_25_{25, 25, 32};
auto value_fng_uni_25_ = fng_uni_25_.maskedValueFor(fe_pat_32, mask);
score_part_1 += weights.at(buf2.at(25)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_25_);
buf1.at(25) = value_fng_uni_25_;
// pattern feature #33 (with unigram), usage=1
auto fe_pat_hash_33 = ::jumanpp::util::hashing::FastHash1{}.mix(33ULL).mix(6ULL).mix(34359656763621376ULL);
fe_pat_hash_33 = fe_pat_hash_33.mix(pf_pos_2);
fe_pat_hash_33 = fe_pat_hash_33.mix(pf_subpos_3);
fe_pat_hash_33 = fe_pat_hash_33.mix(pf_conjform_5);
fe_pat_hash_33 = fe_pat_hash_33.mix(pf_conjtype_4);
fe_pat_hash_33 = fe_pat_hash_33.mix(pf_scp1_12);
fe_pat_hash_33 = fe_pat_hash_33.mix(pf_scp2_13);
::jumanpp::u64 fe_pat_33 = fe_pat_hash_33.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_26_{26, 26, 33};
auto value_fng_uni_26_ = fng_uni_26_.maskedValueFor(fe_pat_33, mask);
score_part_2 += weights.at(buf2.at(26)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_26_);
buf1.at(26) = value_fng_uni_26_;
// pattern feature #34 (with unigram), usage=1
constexpr jumanpp::core::features::impl::CodepointTypeFeatureImpl pfobj_sct0_{0};
::jumanpp::u64 pf_sct0_15 = pfobj_sct0_.access(ctx, nodeInfo, entry);
constexpr jumanpp::core::features::impl::CodepointTypeFeatureImpl pfobj_sct1_{1};
::jumanpp::u64 pf_sct1_16 = pfobj_sct1_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_34 = ::jumanpp::util::hashing::FastHash1{}.mix(34ULL).mix(3ULL).mix(34359656763621376ULL);
fe_pat_hash_34 = fe_pat_hash_34.mix(pf_nonstdSurf_11);
fe_pat_hash_34 = fe_pat_hash_34.mix(pf_sct0_15);
fe_pat_hash_34 = fe_pat_hash_34.mix(pf_sct1_16);
::jumanpp::u64 fe_pat_34 = fe_pat_hash_34.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_27_{27, 27, 34};
auto value_fng_uni_27_ = fng_uni_27_.maskedValueFor(fe_pat_34, mask);
score_part_3 += weights.at(buf2.at(27)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_27_);
buf1.at(27) = value_fng_uni_27_;
// pattern feature #35 (with unigram), usage=1
constexpr jumanpp::core::features::impl::CodepointTypeFeatureImpl pfobj_sct1n_{-1};
::jumanpp::u64 pf_sct1n_17 = pfobj_sct1n_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_35 = ::jumanpp::util::hashing::FastHash1{}.mix(35ULL).mix(3ULL).mix(34359656763621376ULL);
fe_pat_hash_35 = fe_pat_hash_35.mix(pf_nonstdSurf_11);
fe_pat_hash_35 = fe_pat_hash_35.mix(pf_sct0_15);
fe_pat_hash_35 = fe_pat_hash_35.mix(pf_sct1n_17);
::jumanpp::u64 fe_pat_35 = fe_pat_hash_35.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_28_{28, 28, 35};
auto value_fng_uni_28_ = fng_uni_28_.maskedValueFor(fe_pat_35, mask);
score_part_0 += weights.at(buf2.at(28)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_28_);
buf1.at(28) = value_fng_uni_28_;
// pattern feature #36 (with unigram), usage=1
constexpr jumanpp::core::features::impl::CopyPrimFeatureImpl pfobj_reading_{6};
::jumanpp::u64 pf_reading_18 = pfobj_reading_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_36 = ::jumanpp::util::hashing::FastHash1{}.mix(36ULL).mix(1ULL).mix(34359656763621376ULL);
fe_pat_hash_36 = fe_pat_hash_36.mix(pf_reading_18);
::jumanpp::u64 fe_pat_36 = fe_pat_hash_36.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_29_{29, 29, 36};
auto value_fng_uni_29_ = fng_uni_29_.maskedValueFor(fe_pat_36, mask);
score_part_1 += weights.at(buf2.at(29)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_29_);
buf1.at(29) = value_fng_uni_29_;
// pattern feature #13 (with unigram), usage=3
auto fe_pat_hash_13 = ::jumanpp::util::hashing::FastHash1{}.mix(13ULL).mix(2ULL).mix(34359656763621376ULL);
fe_pat_hash_13 = fe_pat_hash_13.mix(pf_baseform_7);
fe_pat_hash_13 = fe_pat_hash_13.mix(pf_reading_18);
::jumanpp::u64 fe_pat_13 = fe_pat_hash_13.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_30_{30, 30, 13};
auto value_fng_uni_30_ = fng_uni_30_.maskedValueFor(fe_pat_13, mask);
score_part_2 += weights.at(buf2.at(30)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_30_);
buf1.at(30) = value_fng_uni_30_;
patterns.at(13) = fe_pat_13;
// pattern feature #37 (with unigram), usage=1
auto fe_pat_hash_37 = ::jumanpp::util::hashing::FastHash1{}.mix(37ULL).mix(4ULL).mix(34359656763621376ULL);
fe_pat_hash_37 = fe_pat_hash_37.mix(pf_baseform_7);
fe_pat_hash_37 = fe_pat_hash_37.mix(pf_reading_18);
fe_pat_hash_37 = fe_pat_hash_37.mix(pf_pos_2);
fe_pat_hash_37 = fe_pat_hash_37.mix(pf_subpos_3);
::jumanpp::u64 fe_pat_37 = fe_pat_hash_37.result();
constexpr ::jumanpp::core::features::impl::UnigramFeature fng_uni_31_{31, 31, 37};
auto value_fng_uni_31_ = fng_uni_31_.maskedValueFor(fe_pat_37, mask);
score_part_3 += weights.at(buf2.at(31)); // perceptron op
weights.prefetch<::jumanpp::util::PrefetchHint::PREFETCH_HINT_T0>(value_fng_uni_31_);
buf1.at(31) = value_fng_uni_31_;
// pattern feature #2 (without unigram), usage=6
auto fe_pat_hash_2 = ::jumanpp::util::hashing::FastHash1{}.mix(2ULL).mix(3ULL).mix(34359656763621376ULL);
fe_pat_hash_2 = fe_pat_hash_2.mix(pf_pos_2);
fe_pat_hash_2 = fe_pat_hash_2.mix(pf_subpos_3);
fe_pat_hash_2 = fe_pat_hash_2.mix(pf_conjform_5);
::jumanpp::u64 fe_pat_2 = fe_pat_hash_2.result();
patterns.at(2) = fe_pat_2;
// pattern feature #3 (without unigram), usage=6
constexpr jumanpp::core::features::impl::ShiftMaskPrimFeatureImpl pfobj_lexicalized_{7, 3, 0x1};
::jumanpp::u64 pf_lexicalized_19 = pfobj_lexicalized_.access(ctx, nodeInfo, entry);
auto fe_pat_hash_3 = ::jumanpp::util::hashing::FastHash1{}.mix(3ULL).mix(1ULL).mix(34359656763621376ULL);
if (pf_lexicalized_19 != 0) { // compute feature lexicalized
fe_pat_hash_3 = fe_pat_hash_3.mix(pf_surface_0).mix(pf_pos_2).mix(pf_subpos_3).mix(pf_conjtype_4).mix(pf_conjform_5);
} else {
fe_pat_hash_3 = fe_pat_hash_3.mix(pf_pos_2).mix(pf_subpos_3).mix(pf_conjtype_4);
}
::jumanpp::u64 fe_pat_3 = fe_pat_hash_3.result();
patterns.at(3) = fe_pat_3;
// pattern feature #4 (without unigram), usage=2
auto fe_pat_hash_4 = ::jumanpp::util::hashing::FastHash1{}.mix(4ULL).mix(3ULL).mix(34359656763621376ULL);
fe_pat_hash_4 = fe_pat_hash_4.mix(pf_pos_2);
fe_pat_hash_4 = fe_pat_hash_4.mix(pf_subpos_3);
fe_pat_hash_4 = fe_pat_hash_4.mix(pf_conjtype_4);
::jumanpp::u64 fe_pat_4 = fe_pat_hash_4.result();
patterns.at(4) = fe_pat_4;
// pattern feature #5 (without unigram), usage=2
auto fe_pat_hash_5 = ::jumanpp::util::hashing::FastHash1{}.mix(5ULL).mix(4ULL).mix(34359656763621376ULL);
fe_pat_hash_5 = fe_pat_hash_5.mix(pf_pos_2);
fe_pat_hash_5 = fe_pat_hash_5.mix(pf_subpos_3);
fe_pat_hash_5 = fe_pat_hash_5.mix(pf_conjtype_4);
fe_pat_hash_5 = fe_pat_hash_5.mix(pf_conjform_5);
::jumanpp::u64 fe_pat_5 = fe_pat_hash_5.result();
patterns.at(5) = fe_pat_5;
// pattern feature #6 (without unigram), usage=2
auto fe_pat_hash_6 = ::jumanpp::util::hashing::FastHash1{}.mix(6ULL).mix(5ULL).mix(34359656763621376ULL);
fe_pat_hash_6 = fe_pat_hash_6.mix(pf_pos_2);
fe_pat_hash_6 = fe_pat_hash_6.mix(pf_subpos_3);
fe_pat_hash_6 = fe_pat_hash_6.mix(pf_conjtype_4);
fe_pat_hash_6 = fe_pat_hash_6.mix(pf_conjform_5);
fe_pat_hash_6 = fe_pat_hash_6.mix(pf_baseform_7);
::jumanpp::u64 fe_pat_6 = fe_pat_hash_6.result();
patterns.at(6) = fe_pat_6;
// pattern feature #7 (without unigram), usage=2
auto fe_pat_hash_7 = ::jumanpp::util::hashing::FastHash1{}.mix(7ULL).mix(2ULL).mix(34359656763621376ULL);
fe_pat_hash_7 = fe_pat_hash_7.mix(pf_pos_2);
fe_pat_hash_7 = fe_pat_hash_7.mix(pf_conjform_5);
::jumanpp::u64 fe_pat_7 = fe_pat_hash_7.result();
patterns.at(7) = fe_pat_7;
// bigram and trigram state
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_32_{0, 32, 0, 0};
fng_bi_32_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_33_{1, 33, 1, 0};
fng_bi_33_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_34_{2, 34, 0, 1};
fng_bi_34_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_35_{3, 35, 1, 1};
fng_bi_35_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_36_{4, 36, 4, 1};
fng_bi_36_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_37_{5, 37, 2, 1};
fng_bi_37_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_38_{6, 38, 5, 1};
fng_bi_38_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_39_{7, 39, 6, 1};
fng_bi_39_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_40_{8, 40, 1, 4};
fng_bi_40_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_41_{9, 41, 4, 4};
fng_bi_41_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_42_{10, 42, 2, 4};
fng_bi_42_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_43_{11, 43, 6, 4};
fng_bi_43_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_44_{12, 44, 1, 2};
fng_bi_44_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_45_{13, 45, 4, 2};
fng_bi_45_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_46_{14, 46, 2, 2};
fng_bi_46_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_47_{15, 47, 6, 2};
fng_bi_47_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_48_{16, 48, 1, 5};
fng_bi_48_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_49_{17, 49, 5, 5};
fng_bi_49_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_50_{18, 50, 6, 5};
fng_bi_50_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_51_{19, 51, 1, 6};
fng_bi_51_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_52_{20, 52, 4, 6};
fng_bi_52_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_53_{21, 53, 2, 6};
fng_bi_53_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_54_{22, 54, 5, 6};
fng_bi_54_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_55_{23, 55, 6, 6};
fng_bi_55_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_56_{24, 56, 3, 3};
fng_bi_56_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_57_{25, 57, 12, 12};
fng_bi_57_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_58_{26, 58, 9, 8};
fng_bi_58_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_59_{27, 59, 8, 9};
fng_bi_59_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_60_{28, 60, 10, 10};
fng_bi_60_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_61_{29, 61, 0, 10};
fng_bi_61_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_62_{30, 62, 7, 7};
fng_bi_62_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_63_{31, 63, 10, 0};
fng_bi_63_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_64_{32, 64, 0, 11};
fng_bi_64_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_65_{33, 65, 11, 0};
fng_bi_65_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_66_{34, 66, 13, 13};
fng_bi_66_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_67_{35, 67, 13, 3};
fng_bi_67_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::BigramFeature fng_bi_68_{36, 68, 3, 13};
fng_bi_68_.step0(patterns, t1row);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_69_{0, 69, 0, 0, 0};
fng_tri_69_.step0(patterns, t2row);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_70_{1, 70, 1, 1, 1};
fng_tri_70_.step0(patterns, t2row);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_71_{2, 71, 2, 2, 2};
fng_tri_71_.step0(patterns, t2row);
constexpr ::jumanpp::core::features::impl::TrigramFeature fng_tri_72_{3, 72, 3, 3, 3};
fng_tri_72_.step0(patterns, t2row);
// publish perceptron value
if (JPP_LIKELY(item > 0)) {
scores.at(item - 1) = score_part_0 + score_part_1 + score_part_2 + score_part_3;
}
}
scores.at(numItems - 1) = ::jumanpp::core::analysis::impl::computeUnrolled4RawPerceptron(weights, buf1);
} //end function
}; // class PatternFeatureStaticApply_JumandicStatic
} //anon namespace
jumanpp::core::features::NgramFeatureApply*JumandicStatic::ngram() const {
return new NgramFeatureStaticApply_JumandicStatic{};
}
jumanpp::core::features::PartialNgramFeatureApply*JumandicStatic::ngramPartial() const {
return new PartNgramFeatureStaticApply_JumandicStatic{};
}
jumanpp::core::features::GeneratedPatternFeatureApply*JumandicStatic::pattern() const {
return new PatternFeatureStaticApply_JumandicStatic{};
}
} //jumanpp_generated namespace
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment