cases: add bit for exception index
The limit for this will be reached by Unicode 11.
Updates golang/go#27945
Change-Id: I5add868e60ba632de61b1ff3cb520453759b95c4
Reviewed-on: https://go-review.googlesource.com/c/text/+/169639
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
diff --git a/cases/gen.go b/cases/gen.go
index 1cfe1c0..ee04a15 100644
--- a/cases/gen.go
+++ b/cases/gen.go
@@ -335,7 +335,7 @@
ri.entry |= exceptionBit
if len(exceptionData) >= 1<<numExceptionBits {
- log.Fatalf("%U:exceptionData too large %x > %d bits", ri.Rune, len(exceptionData), numExceptionBits)
+ log.Fatalf("%U:exceptionData too large %#x > %d bits", ri.Rune, len(exceptionData), numExceptionBits)
}
// Set the offset in the exceptionData array.
diff --git a/cases/gen_trieval.go b/cases/gen_trieval.go
index 376d22c..26fadd6 100644
--- a/cases/gen_trieval.go
+++ b/cases/gen_trieval.go
@@ -19,8 +19,7 @@
// The per-rune values have the following format:
//
// if (exception) {
-// 15..5 unsigned exception index
-// 4 unused
+// 15..4 unsigned exception index
// } else {
// 15..8 XOR pattern or index to XOR pattern for case mapping
// Only 13..8 are used for XOR patterns.
@@ -52,8 +51,8 @@
isMidBit = 1 << 6
exceptionBit = 1 << 3
- exceptionShift = 5
- numExceptionBits = 11
+ exceptionShift = 4
+ numExceptionBits = 12
xorIndexBit = 1 << 6
xorShift = 8
diff --git a/cases/tables10.0.0.go b/cases/tables10.0.0.go
index 9800782..0bb70a6 100644
--- a/cases/tables10.0.0.go
+++ b/cases/tables10.0.0.go
@@ -218,7 +218,7 @@
return 0
}
-// caseTrie. Total size: 11892 bytes (11.61 KiB). Checksum: abd4a0bc39341b30.
+// caseTrie. Total size: 11892 bytes (11.61 KiB). Checksum: 9391c32b0d24e7f0.
type caseTrie struct{}
func newCaseTrie(i int) *caseTrie {
@@ -269,43 +269,43 @@
0xf6: 0x0312, 0xf7: 0x4153, 0xf8: 0x0113, 0xf9: 0x0112, 0xfa: 0x0012, 0xfb: 0x0010,
0xfc: 0x0113, 0xfd: 0x0112, 0xfe: 0x0012, 0xff: 0x4452,
// Block 0x4, offset 0x100
- 0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x04cb, 0x105: 0x05c9,
- 0x106: 0x06ca, 0x107: 0x078b, 0x108: 0x0889, 0x109: 0x098a, 0x10a: 0x0a4b, 0x10b: 0x0b49,
- 0x10c: 0x0c4a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313,
+ 0x100: 0x0010, 0x101: 0x0010, 0x102: 0x0010, 0x103: 0x0010, 0x104: 0x026b, 0x105: 0x02e9,
+ 0x106: 0x036a, 0x107: 0x03cb, 0x108: 0x0449, 0x109: 0x04ca, 0x10a: 0x052b, 0x10b: 0x05a9,
+ 0x10c: 0x062a, 0x10d: 0x0313, 0x10e: 0x0312, 0x10f: 0x1f13, 0x110: 0x1f12, 0x111: 0x0313,
0x112: 0x0312, 0x113: 0x0713, 0x114: 0x0712, 0x115: 0x0313, 0x116: 0x0312, 0x117: 0x0f13,
0x118: 0x0f12, 0x119: 0x0313, 0x11a: 0x0312, 0x11b: 0x0713, 0x11c: 0x0712, 0x11d: 0x1452,
0x11e: 0x0113, 0x11f: 0x0112, 0x120: 0x0113, 0x121: 0x0112, 0x122: 0x0113, 0x123: 0x0112,
0x124: 0x0113, 0x125: 0x0112, 0x126: 0x0113, 0x127: 0x0112, 0x128: 0x0113, 0x129: 0x0112,
0x12a: 0x0113, 0x12b: 0x0112, 0x12c: 0x0113, 0x12d: 0x0112, 0x12e: 0x0113, 0x12f: 0x0112,
- 0x130: 0x0d0a, 0x131: 0x0e0b, 0x132: 0x0f09, 0x133: 0x100a, 0x134: 0x0113, 0x135: 0x0112,
+ 0x130: 0x068a, 0x131: 0x070b, 0x132: 0x0789, 0x133: 0x080a, 0x134: 0x0113, 0x135: 0x0112,
0x136: 0x2353, 0x137: 0x4453, 0x138: 0x0113, 0x139: 0x0112, 0x13a: 0x0113, 0x13b: 0x0112,
0x13c: 0x0113, 0x13d: 0x0112, 0x13e: 0x0113, 0x13f: 0x0112,
// Block 0x5, offset 0x140
- 0x140: 0x136a, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53,
+ 0x140: 0x09ba, 0x141: 0x0313, 0x142: 0x0312, 0x143: 0x0853, 0x144: 0x4753, 0x145: 0x4a53,
0x146: 0x0113, 0x147: 0x0112, 0x148: 0x0113, 0x149: 0x0112, 0x14a: 0x0113, 0x14b: 0x0112,
- 0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x140a, 0x151: 0x14aa,
- 0x152: 0x154a, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152,
- 0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x15ea, 0x15d: 0x0012,
- 0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x168a, 0x162: 0x0012, 0x163: 0x2052,
- 0x164: 0x0012, 0x165: 0x172a, 0x166: 0x17ca, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652,
- 0x16a: 0x186a, 0x16b: 0x190a, 0x16c: 0x19aa, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52,
- 0x170: 0x0012, 0x171: 0x1a4a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252,
+ 0x14c: 0x0113, 0x14d: 0x0112, 0x14e: 0x0113, 0x14f: 0x0112, 0x150: 0x0a0a, 0x151: 0x0a5a,
+ 0x152: 0x0aaa, 0x153: 0x0b52, 0x154: 0x0b52, 0x155: 0x0012, 0x156: 0x0e52, 0x157: 0x1152,
+ 0x158: 0x0012, 0x159: 0x1752, 0x15a: 0x0012, 0x15b: 0x1a52, 0x15c: 0x0afa, 0x15d: 0x0012,
+ 0x15e: 0x0012, 0x15f: 0x0012, 0x160: 0x1d52, 0x161: 0x0b4a, 0x162: 0x0012, 0x163: 0x2052,
+ 0x164: 0x0012, 0x165: 0x0b9a, 0x166: 0x0bea, 0x167: 0x0012, 0x168: 0x2652, 0x169: 0x2652,
+ 0x16a: 0x0c3a, 0x16b: 0x0c8a, 0x16c: 0x0cda, 0x16d: 0x0012, 0x16e: 0x0012, 0x16f: 0x1d52,
+ 0x170: 0x0012, 0x171: 0x0d2a, 0x172: 0x2c52, 0x173: 0x0012, 0x174: 0x0012, 0x175: 0x3252,
0x176: 0x0012, 0x177: 0x0012, 0x178: 0x0012, 0x179: 0x0012, 0x17a: 0x0012, 0x17b: 0x0012,
- 0x17c: 0x0012, 0x17d: 0x1aea, 0x17e: 0x0012, 0x17f: 0x0012,
+ 0x17c: 0x0012, 0x17d: 0x0d7a, 0x17e: 0x0012, 0x17f: 0x0012,
// Block 0x6, offset 0x180
0x180: 0x3552, 0x181: 0x0012, 0x182: 0x0012, 0x183: 0x3852, 0x184: 0x0012, 0x185: 0x0012,
- 0x186: 0x0012, 0x187: 0x1b8a, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52,
+ 0x186: 0x0012, 0x187: 0x0dca, 0x188: 0x3552, 0x189: 0x4752, 0x18a: 0x3b52, 0x18b: 0x3e52,
0x18c: 0x4a52, 0x18d: 0x0012, 0x18e: 0x0012, 0x18f: 0x0012, 0x190: 0x0012, 0x191: 0x0012,
0x192: 0x4152, 0x193: 0x0012, 0x194: 0x0010, 0x195: 0x0012, 0x196: 0x0012, 0x197: 0x0012,
- 0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x1c2a,
- 0x19e: 0x1cca, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012,
+ 0x198: 0x0012, 0x199: 0x0012, 0x19a: 0x0012, 0x19b: 0x0012, 0x19c: 0x0012, 0x19d: 0x0e1a,
+ 0x19e: 0x0e6a, 0x19f: 0x0012, 0x1a0: 0x0012, 0x1a1: 0x0012, 0x1a2: 0x0012, 0x1a3: 0x0012,
0x1a4: 0x0012, 0x1a5: 0x0012, 0x1a6: 0x0012, 0x1a7: 0x0012, 0x1a8: 0x0012, 0x1a9: 0x0012,
0x1aa: 0x0012, 0x1ab: 0x0012, 0x1ac: 0x0012, 0x1ad: 0x0012, 0x1ae: 0x0012, 0x1af: 0x0012,
0x1b0: 0x0015, 0x1b1: 0x0015, 0x1b2: 0x0015, 0x1b3: 0x0015, 0x1b4: 0x0015, 0x1b5: 0x0015,
0x1b6: 0x0015, 0x1b7: 0x0015, 0x1b8: 0x0015, 0x1b9: 0x0014, 0x1ba: 0x0014, 0x1bb: 0x0014,
0x1bc: 0x0014, 0x1bd: 0x0014, 0x1be: 0x0014, 0x1bf: 0x0014,
// Block 0x7, offset 0x1c0
- 0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x1d6d,
+ 0x1c0: 0x0024, 0x1c1: 0x0024, 0x1c2: 0x0024, 0x1c3: 0x0024, 0x1c4: 0x0024, 0x1c5: 0x0ebd,
0x1c6: 0x0024, 0x1c7: 0x0034, 0x1c8: 0x0034, 0x1c9: 0x0034, 0x1ca: 0x0024, 0x1cb: 0x0024,
0x1cc: 0x0024, 0x1cd: 0x0034, 0x1ce: 0x0034, 0x1cf: 0x0014, 0x1d0: 0x0024, 0x1d1: 0x0024,
0x1d2: 0x0024, 0x1d3: 0x0034, 0x1d4: 0x0034, 0x1d5: 0x0034, 0x1d6: 0x0034, 0x1d7: 0x0024,
@@ -319,32 +319,32 @@
// Block 0x8, offset 0x200
0x204: 0x0004, 0x205: 0x0004,
0x206: 0x2a13, 0x207: 0x0054, 0x208: 0x2513, 0x209: 0x2713, 0x20a: 0x2513,
- 0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x1e2a, 0x211: 0x2013,
+ 0x20c: 0x5653, 0x20e: 0x5953, 0x20f: 0x5c53, 0x210: 0x0f1a, 0x211: 0x2013,
0x212: 0x2013, 0x213: 0x2013, 0x214: 0x2013, 0x215: 0x2013, 0x216: 0x2013, 0x217: 0x2013,
0x218: 0x2013, 0x219: 0x2013, 0x21a: 0x2013, 0x21b: 0x2013, 0x21c: 0x2013, 0x21d: 0x2013,
0x21e: 0x2013, 0x21f: 0x2013, 0x220: 0x5f53, 0x221: 0x5f53, 0x223: 0x5f53,
0x224: 0x5f53, 0x225: 0x5f53, 0x226: 0x5f53, 0x227: 0x5f53, 0x228: 0x5f53, 0x229: 0x5f53,
0x22a: 0x5f53, 0x22b: 0x5f53, 0x22c: 0x2a12, 0x22d: 0x2512, 0x22e: 0x2712, 0x22f: 0x2512,
- 0x230: 0x1fea, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012,
+ 0x230: 0x0ffa, 0x231: 0x2012, 0x232: 0x2012, 0x233: 0x2012, 0x234: 0x2012, 0x235: 0x2012,
0x236: 0x2012, 0x237: 0x2012, 0x238: 0x2012, 0x239: 0x2012, 0x23a: 0x2012, 0x23b: 0x2012,
0x23c: 0x2012, 0x23d: 0x2012, 0x23e: 0x2012, 0x23f: 0x2012,
// Block 0x9, offset 0x240
- 0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x21aa, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52,
+ 0x240: 0x5f52, 0x241: 0x5f52, 0x242: 0x10da, 0x243: 0x5f52, 0x244: 0x5f52, 0x245: 0x5f52,
0x246: 0x5f52, 0x247: 0x5f52, 0x248: 0x5f52, 0x249: 0x5f52, 0x24a: 0x5f52, 0x24b: 0x5f52,
- 0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x226a, 0x251: 0x232a,
- 0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x23ea, 0x256: 0x24aa, 0x257: 0x1812,
+ 0x24c: 0x5652, 0x24d: 0x5952, 0x24e: 0x5c52, 0x24f: 0x1813, 0x250: 0x113a, 0x251: 0x119a,
+ 0x252: 0x0013, 0x253: 0x0013, 0x254: 0x0013, 0x255: 0x11fa, 0x256: 0x125a, 0x257: 0x1812,
0x258: 0x0113, 0x259: 0x0112, 0x25a: 0x0113, 0x25b: 0x0112, 0x25c: 0x0113, 0x25d: 0x0112,
0x25e: 0x0113, 0x25f: 0x0112, 0x260: 0x0113, 0x261: 0x0112, 0x262: 0x0113, 0x263: 0x0112,
0x264: 0x0113, 0x265: 0x0112, 0x266: 0x0113, 0x267: 0x0112, 0x268: 0x0113, 0x269: 0x0112,
0x26a: 0x0113, 0x26b: 0x0112, 0x26c: 0x0113, 0x26d: 0x0112, 0x26e: 0x0113, 0x26f: 0x0112,
- 0x270: 0x256a, 0x271: 0x262a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x26ea,
+ 0x270: 0x12ba, 0x271: 0x131a, 0x272: 0x0b12, 0x273: 0x5352, 0x274: 0x6253, 0x275: 0x137a,
0x277: 0x0f13, 0x278: 0x0f12, 0x279: 0x0b13, 0x27a: 0x0113, 0x27b: 0x0112,
0x27c: 0x0012, 0x27d: 0x4d53, 0x27e: 0x5053, 0x27f: 0x5053,
// Block 0xa, offset 0x280
0x280: 0x0812, 0x281: 0x0812, 0x282: 0x0812, 0x283: 0x0812, 0x284: 0x0812, 0x285: 0x0812,
0x288: 0x0813, 0x289: 0x0813, 0x28a: 0x0813, 0x28b: 0x0813,
- 0x28c: 0x0813, 0x28d: 0x0813, 0x290: 0x372a, 0x291: 0x0812,
- 0x292: 0x386a, 0x293: 0x0812, 0x294: 0x3a2a, 0x295: 0x0812, 0x296: 0x3bea, 0x297: 0x0812,
+ 0x28c: 0x0813, 0x28d: 0x0813, 0x290: 0x1b9a, 0x291: 0x0812,
+ 0x292: 0x1c3a, 0x293: 0x0812, 0x294: 0x1d1a, 0x295: 0x0812, 0x296: 0x1dfa, 0x297: 0x0812,
0x299: 0x0813, 0x29b: 0x0813, 0x29d: 0x0813,
0x29f: 0x0813, 0x2a0: 0x0812, 0x2a1: 0x0812, 0x2a2: 0x0812, 0x2a3: 0x0812,
0x2a4: 0x0812, 0x2a5: 0x0812, 0x2a6: 0x0812, 0x2a7: 0x0812, 0x2a8: 0x0813, 0x2a9: 0x0813,
@@ -353,37 +353,37 @@
0x2b6: 0x9452, 0x2b7: 0x9452, 0x2b8: 0x9752, 0x2b9: 0x9752, 0x2ba: 0x9a52, 0x2bb: 0x9a52,
0x2bc: 0x4d52, 0x2bd: 0x4d52,
// Block 0xb, offset 0x2c0
- 0x2c0: 0x3daa, 0x2c1: 0x3f8a, 0x2c2: 0x416a, 0x2c3: 0x434a, 0x2c4: 0x452a, 0x2c5: 0x470a,
- 0x2c6: 0x48ea, 0x2c7: 0x4aca, 0x2c8: 0x4ca9, 0x2c9: 0x4e89, 0x2ca: 0x5069, 0x2cb: 0x5249,
- 0x2cc: 0x5429, 0x2cd: 0x5609, 0x2ce: 0x57e9, 0x2cf: 0x59c9, 0x2d0: 0x5baa, 0x2d1: 0x5d8a,
- 0x2d2: 0x5f6a, 0x2d3: 0x614a, 0x2d4: 0x632a, 0x2d5: 0x650a, 0x2d6: 0x66ea, 0x2d7: 0x68ca,
- 0x2d8: 0x6aa9, 0x2d9: 0x6c89, 0x2da: 0x6e69, 0x2db: 0x7049, 0x2dc: 0x7229, 0x2dd: 0x7409,
- 0x2de: 0x75e9, 0x2df: 0x77c9, 0x2e0: 0x79aa, 0x2e1: 0x7b8a, 0x2e2: 0x7d6a, 0x2e3: 0x7f4a,
- 0x2e4: 0x812a, 0x2e5: 0x830a, 0x2e6: 0x84ea, 0x2e7: 0x86ca, 0x2e8: 0x88a9, 0x2e9: 0x8a89,
- 0x2ea: 0x8c69, 0x2eb: 0x8e49, 0x2ec: 0x9029, 0x2ed: 0x9209, 0x2ee: 0x93e9, 0x2ef: 0x95c9,
- 0x2f0: 0x0812, 0x2f1: 0x0812, 0x2f2: 0x97aa, 0x2f3: 0x99ca, 0x2f4: 0x9b6a,
- 0x2f6: 0x9d2a, 0x2f7: 0x9e6a, 0x2f8: 0x0813, 0x2f9: 0x0813, 0x2fa: 0x8b53, 0x2fb: 0x8b53,
- 0x2fc: 0xa0e9, 0x2fd: 0x0004, 0x2fe: 0xa28a, 0x2ff: 0x0004,
+ 0x2c0: 0x1eda, 0x2c1: 0x1fca, 0x2c2: 0x20ba, 0x2c3: 0x21aa, 0x2c4: 0x229a, 0x2c5: 0x238a,
+ 0x2c6: 0x247a, 0x2c7: 0x256a, 0x2c8: 0x2659, 0x2c9: 0x2749, 0x2ca: 0x2839, 0x2cb: 0x2929,
+ 0x2cc: 0x2a19, 0x2cd: 0x2b09, 0x2ce: 0x2bf9, 0x2cf: 0x2ce9, 0x2d0: 0x2dda, 0x2d1: 0x2eca,
+ 0x2d2: 0x2fba, 0x2d3: 0x30aa, 0x2d4: 0x319a, 0x2d5: 0x328a, 0x2d6: 0x337a, 0x2d7: 0x346a,
+ 0x2d8: 0x3559, 0x2d9: 0x3649, 0x2da: 0x3739, 0x2db: 0x3829, 0x2dc: 0x3919, 0x2dd: 0x3a09,
+ 0x2de: 0x3af9, 0x2df: 0x3be9, 0x2e0: 0x3cda, 0x2e1: 0x3dca, 0x2e2: 0x3eba, 0x2e3: 0x3faa,
+ 0x2e4: 0x409a, 0x2e5: 0x418a, 0x2e6: 0x427a, 0x2e7: 0x436a, 0x2e8: 0x4459, 0x2e9: 0x4549,
+ 0x2ea: 0x4639, 0x2eb: 0x4729, 0x2ec: 0x4819, 0x2ed: 0x4909, 0x2ee: 0x49f9, 0x2ef: 0x4ae9,
+ 0x2f0: 0x0812, 0x2f1: 0x0812, 0x2f2: 0x4bda, 0x2f3: 0x4cea, 0x2f4: 0x4dba,
+ 0x2f6: 0x4e9a, 0x2f7: 0x4f3a, 0x2f8: 0x0813, 0x2f9: 0x0813, 0x2fa: 0x8b53, 0x2fb: 0x8b53,
+ 0x2fc: 0x5079, 0x2fd: 0x0004, 0x2fe: 0x514a, 0x2ff: 0x0004,
// Block 0xc, offset 0x300
- 0x300: 0x0004, 0x301: 0x0004, 0x302: 0xa34a, 0x303: 0xa56a, 0x304: 0xa70a,
- 0x306: 0xa8ca, 0x307: 0xaa0a, 0x308: 0x8e53, 0x309: 0x8e53, 0x30a: 0x9153, 0x30b: 0x9153,
- 0x30c: 0xac89, 0x30d: 0x0004, 0x30e: 0x0004, 0x30f: 0x0004, 0x310: 0x0812, 0x311: 0x0812,
- 0x312: 0xae2a, 0x313: 0xafea, 0x316: 0xb1aa, 0x317: 0xb2ea,
+ 0x300: 0x0004, 0x301: 0x0004, 0x302: 0x51aa, 0x303: 0x52ba, 0x304: 0x538a,
+ 0x306: 0x546a, 0x307: 0x550a, 0x308: 0x8e53, 0x309: 0x8e53, 0x30a: 0x9153, 0x30b: 0x9153,
+ 0x30c: 0x5649, 0x30d: 0x0004, 0x30e: 0x0004, 0x30f: 0x0004, 0x310: 0x0812, 0x311: 0x0812,
+ 0x312: 0x571a, 0x313: 0x57fa, 0x316: 0x58da, 0x317: 0x597a,
0x318: 0x0813, 0x319: 0x0813, 0x31a: 0x9453, 0x31b: 0x9453, 0x31d: 0x0004,
- 0x31e: 0x0004, 0x31f: 0x0004, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0xb4aa, 0x323: 0xb66a,
- 0x324: 0xb82a, 0x325: 0x0912, 0x326: 0xb96a, 0x327: 0xbaaa, 0x328: 0x0813, 0x329: 0x0813,
+ 0x31e: 0x0004, 0x31f: 0x0004, 0x320: 0x0812, 0x321: 0x0812, 0x322: 0x5a5a, 0x323: 0x5b3a,
+ 0x324: 0x5c1a, 0x325: 0x0912, 0x326: 0x5cba, 0x327: 0x5d5a, 0x328: 0x0813, 0x329: 0x0813,
0x32a: 0x9a53, 0x32b: 0x9a53, 0x32c: 0x0913, 0x32d: 0x0004, 0x32e: 0x0004, 0x32f: 0x0004,
- 0x332: 0xbc6a, 0x333: 0xbe8a, 0x334: 0xc02a,
- 0x336: 0xc1ea, 0x337: 0xc32a, 0x338: 0x9753, 0x339: 0x9753, 0x33a: 0x4d53, 0x33b: 0x4d53,
- 0x33c: 0xc5a9, 0x33d: 0x0004, 0x33e: 0x0004,
+ 0x332: 0x5e3a, 0x333: 0x5f4a, 0x334: 0x601a,
+ 0x336: 0x60fa, 0x337: 0x619a, 0x338: 0x9753, 0x339: 0x9753, 0x33a: 0x4d53, 0x33b: 0x4d53,
+ 0x33c: 0x62d9, 0x33d: 0x0004, 0x33e: 0x0004,
// Block 0xd, offset 0x340
0x342: 0x0013,
0x347: 0x0013, 0x34a: 0x0012, 0x34b: 0x0013,
0x34c: 0x0013, 0x34d: 0x0013, 0x34e: 0x0012, 0x34f: 0x0012, 0x350: 0x0013, 0x351: 0x0013,
0x352: 0x0013, 0x353: 0x0012, 0x355: 0x0013,
0x359: 0x0013, 0x35a: 0x0013, 0x35b: 0x0013, 0x35c: 0x0013, 0x35d: 0x0013,
- 0x364: 0x0013, 0x366: 0xc74b, 0x368: 0x0013,
- 0x36a: 0xc80b, 0x36b: 0xc88b, 0x36c: 0x0013, 0x36d: 0x0013, 0x36f: 0x0012,
+ 0x364: 0x0013, 0x366: 0x63ab, 0x368: 0x0013,
+ 0x36a: 0x640b, 0x36b: 0x644b, 0x36c: 0x0013, 0x36d: 0x0013, 0x36f: 0x0012,
0x370: 0x0013, 0x371: 0x0013, 0x372: 0x9d53, 0x373: 0x0013, 0x374: 0x0012, 0x375: 0x0010,
0x376: 0x0010, 0x377: 0x0010, 0x378: 0x0010, 0x379: 0x0012,
0x37c: 0x0012, 0x37d: 0x0012, 0x37e: 0x0013, 0x37f: 0x0013,
@@ -401,27 +401,27 @@
0x3cc: 0x6552, 0x3cd: 0x6552, 0x3ce: 0x6552, 0x3cf: 0x6552, 0x3d0: 0xa952, 0x3d1: 0xa952,
0x3d2: 0xa952, 0x3d3: 0xa952, 0x3d4: 0xa952, 0x3d5: 0xa952, 0x3d6: 0xa952, 0x3d7: 0xa952,
0x3d8: 0xa952, 0x3d9: 0xa952, 0x3da: 0xa952, 0x3db: 0xa952, 0x3dc: 0xa952, 0x3dd: 0xa952,
- 0x3de: 0xa952, 0x3e0: 0x0113, 0x3e1: 0x0112, 0x3e2: 0xc94b, 0x3e3: 0x8853,
- 0x3e4: 0xca0b, 0x3e5: 0xcaca, 0x3e6: 0xcb4a, 0x3e7: 0x0f13, 0x3e8: 0x0f12, 0x3e9: 0x0313,
- 0x3ea: 0x0312, 0x3eb: 0x0713, 0x3ec: 0x0712, 0x3ed: 0xcbcb, 0x3ee: 0xcc8b, 0x3ef: 0xcd4b,
- 0x3f0: 0xce0b, 0x3f1: 0x0012, 0x3f2: 0x0113, 0x3f3: 0x0112, 0x3f4: 0x0012, 0x3f5: 0x0313,
+ 0x3de: 0xa952, 0x3e0: 0x0113, 0x3e1: 0x0112, 0x3e2: 0x64ab, 0x3e3: 0x8853,
+ 0x3e4: 0x650b, 0x3e5: 0x656a, 0x3e6: 0x65aa, 0x3e7: 0x0f13, 0x3e8: 0x0f12, 0x3e9: 0x0313,
+ 0x3ea: 0x0312, 0x3eb: 0x0713, 0x3ec: 0x0712, 0x3ed: 0x65eb, 0x3ee: 0x664b, 0x3ef: 0x66ab,
+ 0x3f0: 0x670b, 0x3f1: 0x0012, 0x3f2: 0x0113, 0x3f3: 0x0112, 0x3f4: 0x0012, 0x3f5: 0x0313,
0x3f6: 0x0312, 0x3f7: 0x0012, 0x3f8: 0x0012, 0x3f9: 0x0012, 0x3fa: 0x0012, 0x3fb: 0x0012,
- 0x3fc: 0x0015, 0x3fd: 0x0015, 0x3fe: 0xcecb, 0x3ff: 0xcf8b,
+ 0x3fc: 0x0015, 0x3fd: 0x0015, 0x3fe: 0x676b, 0x3ff: 0x67cb,
// Block 0x10, offset 0x400
0x400: 0x0113, 0x401: 0x0112, 0x402: 0x0113, 0x403: 0x0112, 0x404: 0x0113, 0x405: 0x0112,
0x406: 0x0113, 0x407: 0x0112, 0x408: 0x0014, 0x409: 0x0014, 0x40a: 0x0014, 0x40b: 0x0713,
- 0x40c: 0x0712, 0x40d: 0xd04b, 0x40e: 0x0012, 0x40f: 0x0010, 0x410: 0x0113, 0x411: 0x0112,
+ 0x40c: 0x0712, 0x40d: 0x682b, 0x40e: 0x0012, 0x40f: 0x0010, 0x410: 0x0113, 0x411: 0x0112,
0x412: 0x0113, 0x413: 0x0112, 0x414: 0x0012, 0x415: 0x0012, 0x416: 0x0113, 0x417: 0x0112,
0x418: 0x0113, 0x419: 0x0112, 0x41a: 0x0113, 0x41b: 0x0112, 0x41c: 0x0113, 0x41d: 0x0112,
0x41e: 0x0113, 0x41f: 0x0112, 0x420: 0x0113, 0x421: 0x0112, 0x422: 0x0113, 0x423: 0x0112,
0x424: 0x0113, 0x425: 0x0112, 0x426: 0x0113, 0x427: 0x0112, 0x428: 0x0113, 0x429: 0x0112,
- 0x42a: 0xd10b, 0x42b: 0xd1cb, 0x42c: 0xd28b, 0x42d: 0xd34b, 0x42e: 0xd40b,
- 0x430: 0xd4cb, 0x431: 0xd58b, 0x432: 0xd64b, 0x433: 0xac53, 0x434: 0x0113, 0x435: 0x0112,
+ 0x42a: 0x688b, 0x42b: 0x68eb, 0x42c: 0x694b, 0x42d: 0x69ab, 0x42e: 0x6a0b,
+ 0x430: 0x6a6b, 0x431: 0x6acb, 0x432: 0x6b2b, 0x433: 0xac53, 0x434: 0x0113, 0x435: 0x0112,
0x436: 0x0113, 0x437: 0x0112,
// Block 0x11, offset 0x440
- 0x440: 0xd70a, 0x441: 0xd80a, 0x442: 0xd90a, 0x443: 0xda0a, 0x444: 0xdb6a, 0x445: 0xdcca,
- 0x446: 0xddca,
- 0x453: 0xdeca, 0x454: 0xe08a, 0x455: 0xe24a, 0x456: 0xe40a, 0x457: 0xe5ca,
+ 0x440: 0x6b8a, 0x441: 0x6c0a, 0x442: 0x6c8a, 0x443: 0x6d0a, 0x444: 0x6dba, 0x445: 0x6e6a,
+ 0x446: 0x6eea,
+ 0x453: 0x6f6a, 0x454: 0x704a, 0x455: 0x712a, 0x456: 0x720a, 0x457: 0x72ea,
0x45d: 0x0010,
0x45e: 0x0034, 0x45f: 0x0010, 0x460: 0x0010, 0x461: 0x0010, 0x462: 0x0010, 0x463: 0x0010,
0x464: 0x0010, 0x465: 0x0010, 0x466: 0x0010, 0x467: 0x0010, 0x468: 0x0010,
@@ -583,21 +583,21 @@
{value: 0x0014, lo: 0xad, hi: 0xad},
{value: 0x0004, lo: 0xaf, hi: 0xaf},
{value: 0x0004, lo: 0xb4, hi: 0xb4},
- {value: 0x002a, lo: 0xb5, hi: 0xb5},
+ {value: 0x001a, lo: 0xb5, hi: 0xb5},
{value: 0x0054, lo: 0xb7, hi: 0xb7},
{value: 0x0004, lo: 0xb8, hi: 0xb8},
{value: 0x0012, lo: 0xba, hi: 0xba},
// Block 0x1, offset 0x9
{value: 0x2013, lo: 0x80, hi: 0x96},
{value: 0x2013, lo: 0x98, hi: 0x9e},
- {value: 0x00ea, lo: 0x9f, hi: 0x9f},
+ {value: 0x007a, lo: 0x9f, hi: 0x9f},
{value: 0x2012, lo: 0xa0, hi: 0xb6},
{value: 0x2012, lo: 0xb8, hi: 0xbe},
{value: 0x0252, lo: 0xbf, hi: 0xbf},
// Block 0x2, offset 0xf
{value: 0x0117, lo: 0x80, hi: 0xaf},
- {value: 0x01eb, lo: 0xb0, hi: 0xb0},
- {value: 0x02ea, lo: 0xb1, hi: 0xb1},
+ {value: 0x00fb, lo: 0xb0, hi: 0xb0},
+ {value: 0x017a, lo: 0xb1, hi: 0xb1},
{value: 0x0117, lo: 0xb2, hi: 0xb7},
{value: 0x0012, lo: 0xb8, hi: 0xb8},
{value: 0x0316, lo: 0xb9, hi: 0xba},
@@ -610,24 +610,24 @@
{value: 0x0716, lo: 0x83, hi: 0x84},
{value: 0x0316, lo: 0x85, hi: 0x86},
{value: 0x0f16, lo: 0x87, hi: 0x88},
- {value: 0x034a, lo: 0x89, hi: 0x89},
+ {value: 0x01aa, lo: 0x89, hi: 0x89},
{value: 0x0117, lo: 0x8a, hi: 0xb7},
{value: 0x0253, lo: 0xb8, hi: 0xb8},
{value: 0x0316, lo: 0xb9, hi: 0xba},
{value: 0x0716, lo: 0xbb, hi: 0xbc},
{value: 0x0316, lo: 0xbd, hi: 0xbe},
- {value: 0x044a, lo: 0xbf, hi: 0xbf},
+ {value: 0x022a, lo: 0xbf, hi: 0xbf},
// Block 0x4, offset 0x24
{value: 0x0117, lo: 0x80, hi: 0x9f},
{value: 0x2f53, lo: 0xa0, hi: 0xa0},
{value: 0x0012, lo: 0xa1, hi: 0xa1},
{value: 0x0117, lo: 0xa2, hi: 0xb3},
{value: 0x0012, lo: 0xb4, hi: 0xb9},
- {value: 0x10cb, lo: 0xba, hi: 0xba},
+ {value: 0x086b, lo: 0xba, hi: 0xba},
{value: 0x0716, lo: 0xbb, hi: 0xbc},
{value: 0x2953, lo: 0xbd, hi: 0xbd},
- {value: 0x11cb, lo: 0xbe, hi: 0xbe},
- {value: 0x12ca, lo: 0xbf, hi: 0xbf},
+ {value: 0x08eb, lo: 0xbe, hi: 0xbe},
+ {value: 0x096a, lo: 0xbf, hi: 0xbf},
// Block 0x5, offset 0x2e
{value: 0x0015, lo: 0x80, hi: 0x81},
{value: 0x0014, lo: 0x82, hi: 0x97},
@@ -676,7 +676,7 @@
{value: 0x3012, lo: 0xb0, hi: 0xbf},
// Block 0xd, offset 0x54
{value: 0x6852, lo: 0x80, hi: 0x86},
- {value: 0x27aa, lo: 0x87, hi: 0x87},
+ {value: 0x13da, lo: 0x87, hi: 0x87},
{value: 0x0034, lo: 0x91, hi: 0x91},
{value: 0x0024, lo: 0x92, hi: 0x95},
{value: 0x0034, lo: 0x96, hi: 0x96},
@@ -1299,15 +1299,15 @@
{value: 0x0010, lo: 0x8d, hi: 0xb7},
{value: 0x0014, lo: 0xb8, hi: 0xbd},
// Block 0x5a, offset 0x277
- {value: 0x296a, lo: 0x80, hi: 0x80},
- {value: 0x2a2a, lo: 0x81, hi: 0x81},
- {value: 0x2aea, lo: 0x82, hi: 0x82},
- {value: 0x2baa, lo: 0x83, hi: 0x83},
- {value: 0x2c6a, lo: 0x84, hi: 0x84},
- {value: 0x2d2a, lo: 0x85, hi: 0x85},
- {value: 0x2dea, lo: 0x86, hi: 0x86},
- {value: 0x2eaa, lo: 0x87, hi: 0x87},
- {value: 0x2f6a, lo: 0x88, hi: 0x88},
+ {value: 0x14ba, lo: 0x80, hi: 0x80},
+ {value: 0x151a, lo: 0x81, hi: 0x81},
+ {value: 0x157a, lo: 0x82, hi: 0x82},
+ {value: 0x15da, lo: 0x83, hi: 0x83},
+ {value: 0x163a, lo: 0x84, hi: 0x84},
+ {value: 0x169a, lo: 0x85, hi: 0x85},
+ {value: 0x16fa, lo: 0x86, hi: 0x86},
+ {value: 0x175a, lo: 0x87, hi: 0x87},
+ {value: 0x17ba, lo: 0x88, hi: 0x88},
// Block 0x5b, offset 0x280
{value: 0x0024, lo: 0x90, hi: 0x92},
{value: 0x0034, lo: 0x94, hi: 0x99},
@@ -1353,14 +1353,14 @@
{value: 0x0117, lo: 0x80, hi: 0xbf},
// Block 0x61, offset 0x2a5
{value: 0x0117, lo: 0x80, hi: 0x95},
- {value: 0x306a, lo: 0x96, hi: 0x96},
- {value: 0x316a, lo: 0x97, hi: 0x97},
- {value: 0x326a, lo: 0x98, hi: 0x98},
- {value: 0x336a, lo: 0x99, hi: 0x99},
- {value: 0x346a, lo: 0x9a, hi: 0x9a},
- {value: 0x356a, lo: 0x9b, hi: 0x9b},
+ {value: 0x183a, lo: 0x96, hi: 0x96},
+ {value: 0x18ba, lo: 0x97, hi: 0x97},
+ {value: 0x193a, lo: 0x98, hi: 0x98},
+ {value: 0x19ba, lo: 0x99, hi: 0x99},
+ {value: 0x1a3a, lo: 0x9a, hi: 0x9a},
+ {value: 0x1aba, lo: 0x9b, hi: 0x9b},
{value: 0x0012, lo: 0x9c, hi: 0x9d},
- {value: 0x366b, lo: 0x9e, hi: 0x9e},
+ {value: 0x1b3b, lo: 0x9e, hi: 0x9e},
{value: 0x0012, lo: 0x9f, hi: 0x9f},
{value: 0x0117, lo: 0xa0, hi: 0xbf},
// Block 0x62, offset 0x2b0
diff --git a/cases/trieval.go b/cases/trieval.go
index fb221f8..99e0396 100644
--- a/cases/trieval.go
+++ b/cases/trieval.go
@@ -15,8 +15,7 @@
// The per-rune values have the following format:
//
// if (exception) {
-// 15..5 unsigned exception index
-// 4 unused
+// 15..4 unsigned exception index
// } else {
// 15..8 XOR pattern or index to XOR pattern for case mapping
// Only 13..8 are used for XOR patterns.
@@ -48,8 +47,8 @@
isMidBit = 1 << 6
exceptionBit = 1 << 3
- exceptionShift = 5
- numExceptionBits = 11
+ exceptionShift = 4
+ numExceptionBits = 12
xorIndexBit = 1 << 6
xorShift = 8