//===---------- Support/UnicodeCaseFold.cpp -------------------------------===//
//
// This file was generated by utils/unicode-case-fold.py from the Unicode
// case folding database at
//    http://www.unicode.org/Public/9.0.0/ucd/CaseFolding.txt
//
// To regenerate this file, run:
//   utils/unicode-case-fold.py \
//     "http://www.unicode.org/Public/9.0.0/ucd/CaseFolding.txt" \
//     > lib/Support/UnicodeCaseFold.cpp
//
//===----------------------------------------------------------------------===//

#include "llvm/Support/Unicode.h"

int llvm::sys::unicode::foldCharSimple(int C) {
  if (C < 0x0041)
    return C;
  // 26 characters
  if (C <= 0x005a)
    return C + 32;
  // MICRO SIGN
  if (C == 0x00b5)
    return 0x03bc;
  if (C < 0x00c0)
    return C;
  // 23 characters
  if (C <= 0x00d6)
    return C + 32;
  if (C < 0x00d8)
    return C;
  // 7 characters
  if (C <= 0x00de)
    return C + 32;
  if (C < 0x0100)
    return C;
  // 24 characters
  if (C <= 0x012e)
    return C | 1;
  if (C < 0x0132)
    return C;
  // 3 characters
  if (C <= 0x0136)
    return C | 1;
  if (C < 0x0139)
    return C;
  // 8 characters
  if (C <= 0x0147 && C % 2 == 1)
    return C + 1;
  if (C < 0x014a)
    return C;
  // 23 characters
  if (C <= 0x0176)
    return C | 1;
  // LATIN CAPITAL LETTER Y WITH DIAERESIS
  if (C == 0x0178)
    return 0x00ff;
  if (C < 0x0179)
    return C;
  // 3 characters
  if (C <= 0x017d && C % 2 == 1)
    return C + 1;
  // LATIN SMALL LETTER LONG S
  if (C == 0x017f)
    return 0x0073;
  // LATIN CAPITAL LETTER B WITH HOOK
  if (C == 0x0181)
    return 0x0253;
  if (C < 0x0182)
    return C;
  // 2 characters
  if (C <= 0x0184)
    return C | 1;
  // LATIN CAPITAL LETTER OPEN O
  if (C == 0x0186)
    return 0x0254;
  // LATIN CAPITAL LETTER C WITH HOOK
  if (C == 0x0187)
    return 0x0188;
  if (C < 0x0189)
    return C;
  // 2 characters
  if (C <= 0x018a)
    return C + 205;
  // LATIN CAPITAL LETTER D WITH TOPBAR
  if (C == 0x018b)
    return 0x018c;
  // LATIN CAPITAL LETTER REVERSED E
  if (C == 0x018e)
    return 0x01dd;
  // LATIN CAPITAL LETTER SCHWA
  if (C == 0x018f)
    return 0x0259;
  // LATIN CAPITAL LETTER OPEN E
  if (C == 0x0190)
    return 0x025b;
  // LATIN CAPITAL LETTER F WITH HOOK
  if (C == 0x0191)
    return 0x0192;
  // LATIN CAPITAL LETTER G WITH HOOK
  if (C == 0x0193)
    return 0x0260;
  // LATIN CAPITAL LETTER GAMMA
  if (C == 0x0194)
    return 0x0263;
  // LATIN CAPITAL LETTER IOTA
  if (C == 0x0196)
    return 0x0269;
  // LATIN CAPITAL LETTER I WITH STROKE
  if (C == 0x0197)
    return 0x0268;
  // LATIN CAPITAL LETTER K WITH HOOK
  if (C == 0x0198)
    return 0x0199;
  // LATIN CAPITAL LETTER TURNED M
  if (C == 0x019c)
    return 0x026f;
  // LATIN CAPITAL LETTER N WITH LEFT HOOK
  if (C == 0x019d)
    return 0x0272;
  // LATIN CAPITAL LETTER O WITH MIDDLE TILDE
  if (C == 0x019f)
    return 0x0275;
  if (C < 0x01a0)
    return C;
  // 3 characters
  if (C <= 0x01a4)
    return C | 1;
  // LATIN LETTER YR
  if (C == 0x01a6)
    return 0x0280;
  // LATIN CAPITAL LETTER TONE TWO
  if (C == 0x01a7)
    return 0x01a8;
  // LATIN CAPITAL LETTER ESH
  if (C == 0x01a9)
    return 0x0283;
  // LATIN CAPITAL LETTER T WITH HOOK
  if (C == 0x01ac)
    return 0x01ad;
  // LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
  if (C == 0x01ae)
    return 0x0288;
  // LATIN CAPITAL LETTER U WITH HORN
  if (C == 0x01af)
    return 0x01b0;
  if (C < 0x01b1)
    return C;
  // 2 characters
  if (C <= 0x01b2)
    return C + 217;
  if (C < 0x01b3)
    return C;
  // 2 characters
  if (C <= 0x01b5 && C % 2 == 1)
    return C + 1;
  // LATIN CAPITAL LETTER EZH
  if (C == 0x01b7)
    return 0x0292;
  if (C < 0x01b8)
    return C;
  // 2 characters
  if (C <= 0x01bc && C % 4 == 0)
    return C + 1;
  // LATIN CAPITAL LETTER DZ WITH CARON
  if (C == 0x01c4)
    return 0x01c6;
  // LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
  if (C == 0x01c5)
    return 0x01c6;
  // LATIN CAPITAL LETTER LJ
  if (C == 0x01c7)
    return 0x01c9;
  // LATIN CAPITAL LETTER L WITH SMALL LETTER J
  if (C == 0x01c8)
    return 0x01c9;
  // LATIN CAPITAL LETTER NJ
  if (C == 0x01ca)
    return 0x01cc;
  if (C < 0x01cb)
    return C;
  // 9 characters
  if (C <= 0x01db && C % 2 == 1)
    return C + 1;
  if (C < 0x01de)
    return C;
  // 9 characters
  if (C <= 0x01ee)
    return C | 1;
  // LATIN CAPITAL LETTER DZ
  if (C == 0x01f1)
    return 0x01f3;
  if (C < 0x01f2)
    return C;
  // 2 characters
  if (C <= 0x01f4)
    return C | 1;
  // LATIN CAPITAL LETTER HWAIR
  if (C == 0x01f6)
    return 0x0195;
  // LATIN CAPITAL LETTER WYNN
  if (C == 0x01f7)
    return 0x01bf;
  if (C < 0x01f8)
    return C;
  // 20 characters
  if (C <= 0x021e)
    return C | 1;
  // LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
  if (C == 0x0220)
    return 0x019e;
  if (C < 0x0222)
    return C;
  // 9 characters
  if (C <= 0x0232)
    return C | 1;
  // LATIN CAPITAL LETTER A WITH STROKE
  if (C == 0x023a)
    return 0x2c65;
  // LATIN CAPITAL LETTER C WITH STROKE
  if (C == 0x023b)
    return 0x023c;
  // LATIN CAPITAL LETTER L WITH BAR
  if (C == 0x023d)
    return 0x019a;
  // LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
  if (C == 0x023e)
    return 0x2c66;
  // LATIN CAPITAL LETTER GLOTTAL STOP
  if (C == 0x0241)
    return 0x0242;
  // LATIN CAPITAL LETTER B WITH STROKE
  if (C == 0x0243)
    return 0x0180;
  // LATIN CAPITAL LETTER U BAR
  if (C == 0x0244)
    return 0x0289;
  // LATIN CAPITAL LETTER TURNED V
  if (C == 0x0245)
    return 0x028c;
  if (C < 0x0246)
    return C;
  // 5 characters
  if (C <= 0x024e)
    return C | 1;
  // COMBINING GREEK YPOGEGRAMMENI
  if (C == 0x0345)
    return 0x03b9;
  if (C < 0x0370)
    return C;
  // 2 characters
  if (C <= 0x0372)
    return C | 1;
  // GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
  if (C == 0x0376)
    return 0x0377;
  // GREEK CAPITAL LETTER YOT
  if (C == 0x037f)
    return 0x03f3;
  // GREEK CAPITAL LETTER ALPHA WITH TONOS
  if (C == 0x0386)
    return 0x03ac;
  if (C < 0x0388)
    return C;
  // 3 characters
  if (C <= 0x038a)
    return C + 37;
  // GREEK CAPITAL LETTER OMICRON WITH TONOS
  if (C == 0x038c)
    return 0x03cc;
  if (C < 0x038e)
    return C;
  // 2 characters
  if (C <= 0x038f)
    return C + 63;
  if (C < 0x0391)
    return C;
  // 17 characters
  if (C <= 0x03a1)
    return C + 32;
  if (C < 0x03a3)
    return C;
  // 9 characters
  if (C <= 0x03ab)
    return C + 32;
  // GREEK SMALL LETTER FINAL SIGMA
  if (C == 0x03c2)
    return 0x03c3;
  // GREEK CAPITAL KAI SYMBOL
  if (C == 0x03cf)
    return 0x03d7;
  // GREEK BETA SYMBOL
  if (C == 0x03d0)
    return 0x03b2;
  // GREEK THETA SYMBOL
  if (C == 0x03d1)
    return 0x03b8;
  // GREEK PHI SYMBOL
  if (C == 0x03d5)
    return 0x03c6;
  // GREEK PI SYMBOL
  if (C == 0x03d6)
    return 0x03c0;
  if (C < 0x03d8)
    return C;
  // 12 characters
  if (C <= 0x03ee)
    return C | 1;
  // GREEK KAPPA SYMBOL
  if (C == 0x03f0)
    return 0x03ba;
  // GREEK RHO SYMBOL
  if (C == 0x03f1)
    return 0x03c1;
  // GREEK CAPITAL THETA SYMBOL
  if (C == 0x03f4)
    return 0x03b8;
  // GREEK LUNATE EPSILON SYMBOL
  if (C == 0x03f5)
    return 0x03b5;
  // GREEK CAPITAL LETTER SHO
  if (C == 0x03f7)
    return 0x03f8;
  // GREEK CAPITAL LUNATE SIGMA SYMBOL
  if (C == 0x03f9)
    return 0x03f2;
  // GREEK CAPITAL LETTER SAN
  if (C == 0x03fa)
    return 0x03fb;
  if (C < 0x03fd)
    return C;
  // 3 characters
  if (C <= 0x03ff)
    return C + -130;
  if (C < 0x0400)
    return C;
  // 16 characters
  if (C <= 0x040f)
    return C + 80;
  if (C < 0x0410)
    return C;
  // 32 characters
  if (C <= 0x042f)
    return C + 32;
  if (C < 0x0460)
    return C;
  // 17 characters
  if (C <= 0x0480)
    return C | 1;
  if (C < 0x048a)
    return C;
  // 27 characters
  if (C <= 0x04be)
    return C | 1;
  // CYRILLIC LETTER PALOCHKA
  if (C == 0x04c0)
    return 0x04cf;
  if (C < 0x04c1)
    return C;
  // 7 characters
  if (C <= 0x04cd && C % 2 == 1)
    return C + 1;
  if (C < 0x04d0)
    return C;
  // 48 characters
  if (C <= 0x052e)
    return C | 1;
  if (C < 0x0531)
    return C;
  // 38 characters
  if (C <= 0x0556)
    return C + 48;
  if (C < 0x10a0)
    return C;
  // 38 characters
  if (C <= 0x10c5)
    return C + 7264;
  if (C < 0x10c7)
    return C;
  // 2 characters
  if (C <= 0x10cd && C % 6 == 5)
    return C + 7264;
  if (C < 0x13f8)
    return C;
  // 6 characters
  if (C <= 0x13fd)
    return C + -8;
  // CYRILLIC SMALL LETTER ROUNDED VE
  if (C == 0x1c80)
    return 0x0432;
  // CYRILLIC SMALL LETTER LONG-LEGGED DE
  if (C == 0x1c81)
    return 0x0434;
  // CYRILLIC SMALL LETTER NARROW O
  if (C == 0x1c82)
    return 0x043e;
  if (C < 0x1c83)
    return C;
  // 2 characters
  if (C <= 0x1c84)
    return C + -6210;
  // CYRILLIC SMALL LETTER THREE-LEGGED TE
  if (C == 0x1c85)
    return 0x0442;
  // CYRILLIC SMALL LETTER TALL HARD SIGN
  if (C == 0x1c86)
    return 0x044a;
  // CYRILLIC SMALL LETTER TALL YAT
  if (C == 0x1c87)
    return 0x0463;
  // CYRILLIC SMALL LETTER UNBLENDED UK
  if (C == 0x1c88)
    return 0xa64b;
  if (C < 0x1e00)
    return C;
  // 75 characters
  if (C <= 0x1e94)
    return C | 1;
  // LATIN SMALL LETTER LONG S WITH DOT ABOVE
  if (C == 0x1e9b)
    return 0x1e61;
  // LATIN CAPITAL LETTER SHARP S
  if (C == 0x1e9e)
    return 0x00df;
  if (C < 0x1ea0)
    return C;
  // 48 characters
  if (C <= 0x1efe)
    return C | 1;
  if (C < 0x1f08)
    return C;
  // 8 characters
  if (C <= 0x1f0f)
    return C + -8;
  if (C < 0x1f18)
    return C;
  // 6 characters
  if (C <= 0x1f1d)
    return C + -8;
  if (C < 0x1f28)
    return C;
  // 8 characters
  if (C <= 0x1f2f)
    return C + -8;
  if (C < 0x1f38)
    return C;
  // 8 characters
  if (C <= 0x1f3f)
    return C + -8;
  if (C < 0x1f48)
    return C;
  // 6 characters
  if (C <= 0x1f4d)
    return C + -8;
  if (C < 0x1f59)
    return C;
  // 4 characters
  if (C <= 0x1f5f && C % 2 == 1)
    return C + -8;
  if (C < 0x1f68)
    return C;
  // 8 characters
  if (C <= 0x1f6f)
    return C + -8;
  if (C < 0x1f88)
    return C;
  // 8 characters
  if (C <= 0x1f8f)
    return C + -8;
  if (C < 0x1f98)
    return C;
  // 8 characters
  if (C <= 0x1f9f)
    return C + -8;
  if (C < 0x1fa8)
    return C;
  // 8 characters
  if (C <= 0x1faf)
    return C + -8;
  if (C < 0x1fb8)
    return C;
  // 2 characters
  if (C <= 0x1fb9)
    return C + -8;
  if (C < 0x1fba)
    return C;
  // 2 characters
  if (C <= 0x1fbb)
    return C + -74;
  // GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
  if (C == 0x1fbc)
    return 0x1fb3;
  // GREEK PROSGEGRAMMENI
  if (C == 0x1fbe)
    return 0x03b9;
  if (C < 0x1fc8)
    return C;
  // 4 characters
  if (C <= 0x1fcb)
    return C + -86;
  // GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
  if (C == 0x1fcc)
    return 0x1fc3;
  if (C < 0x1fd8)
    return C;
  // 2 characters
  if (C <= 0x1fd9)
    return C + -8;
  if (C < 0x1fda)
    return C;
  // 2 characters
  if (C <= 0x1fdb)
    return C + -100;
  if (C < 0x1fe8)
    return C;
  // 2 characters
  if (C <= 0x1fe9)
    return C + -8;
  if (C < 0x1fea)
    return C;
  // 2 characters
  if (C <= 0x1feb)
    return C + -112;
  // GREEK CAPITAL LETTER RHO WITH DASIA
  if (C == 0x1fec)
    return 0x1fe5;
  if (C < 0x1ff8)
    return C;
  // 2 characters
  if (C <= 0x1ff9)
    return C + -128;
  if (C < 0x1ffa)
    return C;
  // 2 characters
  if (C <= 0x1ffb)
    return C + -126;
  // GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
  if (C == 0x1ffc)
    return 0x1ff3;
  // OHM SIGN
  if (C == 0x2126)
    return 0x03c9;
  // KELVIN SIGN
  if (C == 0x212a)
    return 0x006b;
  // ANGSTROM SIGN
  if (C == 0x212b)
    return 0x00e5;
  // TURNED CAPITAL F
  if (C == 0x2132)
    return 0x214e;
  if (C < 0x2160)
    return C;
  // 16 characters
  if (C <= 0x216f)
    return C + 16;
  // ROMAN NUMERAL REVERSED ONE HUNDRED
  if (C == 0x2183)
    return 0x2184;
  if (C < 0x24b6)
    return C;
  // 26 characters
  if (C <= 0x24cf)
    return C + 26;
  if (C < 0x2c00)
    return C;
  // 47 characters
  if (C <= 0x2c2e)
    return C + 48;
  // LATIN CAPITAL LETTER L WITH DOUBLE BAR
  if (C == 0x2c60)
    return 0x2c61;
  // LATIN CAPITAL LETTER L WITH MIDDLE TILDE
  if (C == 0x2c62)
    return 0x026b;
  // LATIN CAPITAL LETTER P WITH STROKE
  if (C == 0x2c63)
    return 0x1d7d;
  // LATIN CAPITAL LETTER R WITH TAIL
  if (C == 0x2c64)
    return 0x027d;
  if (C < 0x2c67)
    return C;
  // 3 characters
  if (C <= 0x2c6b && C % 2 == 1)
    return C + 1;
  // LATIN CAPITAL LETTER ALPHA
  if (C == 0x2c6d)
    return 0x0251;
  // LATIN CAPITAL LETTER M WITH HOOK
  if (C == 0x2c6e)
    return 0x0271;
  // LATIN CAPITAL LETTER TURNED A
  if (C == 0x2c6f)
    return 0x0250;
  // LATIN CAPITAL LETTER TURNED ALPHA
  if (C == 0x2c70)
    return 0x0252;
  if (C < 0x2c72)
    return C;
  // 2 characters
  if (C <= 0x2c75 && C % 3 == 2)
    return C + 1;
  if (C < 0x2c7e)
    return C;
  // 2 characters
  if (C <= 0x2c7f)
    return C + -10815;
  if (C < 0x2c80)
    return C;
  // 50 characters
  if (C <= 0x2ce2)
    return C | 1;
  if (C < 0x2ceb)
    return C;
  // 2 characters
  if (C <= 0x2ced && C % 2 == 1)
    return C + 1;
  if (C < 0x2cf2)
    return C;
  // 2 characters
  if (C <= 0xa640 && C % 31054 == 11506)
    return C + 1;
  if (C < 0xa642)
    return C;
  // 22 characters
  if (C <= 0xa66c)
    return C | 1;
  if (C < 0xa680)
    return C;
  // 14 characters
  if (C <= 0xa69a)
    return C | 1;
  if (C < 0xa722)
    return C;
  // 7 characters
  if (C <= 0xa72e)
    return C | 1;
  if (C < 0xa732)
    return C;
  // 31 characters
  if (C <= 0xa76e)
    return C | 1;
  if (C < 0xa779)
    return C;
  // 2 characters
  if (C <= 0xa77b && C % 2 == 1)
    return C + 1;
  // LATIN CAPITAL LETTER INSULAR G
  if (C == 0xa77d)
    return 0x1d79;
  if (C < 0xa77e)
    return C;
  // 5 characters
  if (C <= 0xa786)
    return C | 1;
  // LATIN CAPITAL LETTER SALTILLO
  if (C == 0xa78b)
    return 0xa78c;
  // LATIN CAPITAL LETTER TURNED H
  if (C == 0xa78d)
    return 0x0265;
  if (C < 0xa790)
    return C;
  // 2 characters
  if (C <= 0xa792)
    return C | 1;
  if (C < 0xa796)
    return C;
  // 10 characters
  if (C <= 0xa7a8)
    return C | 1;
  // LATIN CAPITAL LETTER H WITH HOOK
  if (C == 0xa7aa)
    return 0x0266;
  // LATIN CAPITAL LETTER REVERSED OPEN E
  if (C == 0xa7ab)
    return 0x025c;
  // LATIN CAPITAL LETTER SCRIPT G
  if (C == 0xa7ac)
    return 0x0261;
  // LATIN CAPITAL LETTER L WITH BELT
  if (C == 0xa7ad)
    return 0x026c;
  // LATIN CAPITAL LETTER SMALL CAPITAL I
  if (C == 0xa7ae)
    return 0x026a;
  // LATIN CAPITAL LETTER TURNED K
  if (C == 0xa7b0)
    return 0x029e;
  // LATIN CAPITAL LETTER TURNED T
  if (C == 0xa7b1)
    return 0x0287;
  // LATIN CAPITAL LETTER J WITH CROSSED-TAIL
  if (C == 0xa7b2)
    return 0x029d;
  // LATIN CAPITAL LETTER CHI
  if (C == 0xa7b3)
    return 0xab53;
  if (C < 0xa7b4)
    return C;
  // 2 characters
  if (C <= 0xa7b6)
    return C | 1;
  if (C < 0xab70)
    return C;
  // 80 characters
  if (C <= 0xabbf)
    return C + -38864;
  if (C < 0xff21)
    return C;
  // 26 characters
  if (C <= 0xff3a)
    return C + 32;
  if (C < 0x10400)
    return C;
  // 40 characters
  if (C <= 0x10427)
    return C + 40;
  if (C < 0x104b0)
    return C;
  // 36 characters
  if (C <= 0x104d3)
    return C + 40;
  if (C < 0x10c80)
    return C;
  // 51 characters
  if (C <= 0x10cb2)
    return C + 64;
  if (C < 0x118a0)
    return C;
  // 32 characters
  if (C <= 0x118bf)
    return C + 32;
  if (C < 0x1e900)
    return C;
  // 34 characters
  if (C <= 0x1e921)
    return C + 34;

  return C;
}
