793 lines
36 KiB
PHP
793 lines
36 KiB
PHP
#ifdef GET_SUPPORTED_EXTENSIONS
|
|
#undef GET_SUPPORTED_EXTENSIONS
|
|
|
|
static const RISCVSupportedExtension SupportedExtensions[] = {
|
|
{"a", {2, 1}},
|
|
{"b", {1, 0}},
|
|
{"c", {2, 0}},
|
|
{"d", {2, 2}},
|
|
{"e", {2, 0}},
|
|
{"f", {2, 2}},
|
|
{"h", {1, 0}},
|
|
{"i", {2, 1}},
|
|
{"m", {2, 0}},
|
|
{"q", {2, 2}},
|
|
{"sdext", {1, 0}},
|
|
{"sdtrig", {1, 0}},
|
|
{"sha", {1, 0}},
|
|
{"shcounterenw", {1, 0}},
|
|
{"shgatpa", {1, 0}},
|
|
{"shlcofideleg", {1, 0}},
|
|
{"shtvala", {1, 0}},
|
|
{"shvsatpa", {1, 0}},
|
|
{"shvstvala", {1, 0}},
|
|
{"shvstvecd", {1, 0}},
|
|
{"smaia", {1, 0}},
|
|
{"smcdeleg", {1, 0}},
|
|
{"smcntrpmf", {1, 0}},
|
|
{"smcsrind", {1, 0}},
|
|
{"smctr", {1, 0}},
|
|
{"smdbltrp", {1, 0}},
|
|
{"smepmp", {1, 0}},
|
|
{"smmpm", {1, 0}},
|
|
{"smnpm", {1, 0}},
|
|
{"smrnmi", {1, 0}},
|
|
{"smstateen", {1, 0}},
|
|
{"ssaia", {1, 0}},
|
|
{"ssccfg", {1, 0}},
|
|
{"ssccptr", {1, 0}},
|
|
{"sscofpmf", {1, 0}},
|
|
{"sscounterenw", {1, 0}},
|
|
{"sscsrind", {1, 0}},
|
|
{"ssctr", {1, 0}},
|
|
{"ssdbltrp", {1, 0}},
|
|
{"ssnpm", {1, 0}},
|
|
{"sspm", {1, 0}},
|
|
{"ssqosid", {1, 0}},
|
|
{"ssstateen", {1, 0}},
|
|
{"ssstrict", {1, 0}},
|
|
{"sstc", {1, 0}},
|
|
{"sstvala", {1, 0}},
|
|
{"sstvecd", {1, 0}},
|
|
{"ssu64xl", {1, 0}},
|
|
{"supm", {1, 0}},
|
|
{"svade", {1, 0}},
|
|
{"svadu", {1, 0}},
|
|
{"svbare", {1, 0}},
|
|
{"svinval", {1, 0}},
|
|
{"svnapot", {1, 0}},
|
|
{"svpbmt", {1, 0}},
|
|
{"svrsw60t59b", {1, 0}},
|
|
{"svvptc", {1, 0}},
|
|
{"v", {1, 0}},
|
|
{"xaifet", {1, 0}},
|
|
{"xandesbfhcvt", {5, 0}},
|
|
{"xandesperf", {5, 0}},
|
|
{"xandesvbfhcvt", {5, 0}},
|
|
{"xandesvdot", {5, 0}},
|
|
{"xandesvpackfph", {5, 0}},
|
|
{"xandesvsinth", {5, 0}},
|
|
{"xandesvsintload", {5, 0}},
|
|
{"xcheriot", {1, 0}},
|
|
{"xcvalu", {1, 0}},
|
|
{"xcvbi", {1, 0}},
|
|
{"xcvbitmanip", {1, 0}},
|
|
{"xcvelw", {1, 0}},
|
|
{"xcvmac", {1, 0}},
|
|
{"xcvmem", {1, 0}},
|
|
{"xcvsimd", {1, 0}},
|
|
{"xmipscbop", {1, 0}},
|
|
{"xmipscmov", {1, 0}},
|
|
{"xmipsexectl", {1, 0}},
|
|
{"xmipslsp", {1, 0}},
|
|
{"xqccmp", {0, 3}},
|
|
{"xqci", {0, 13}},
|
|
{"xqcia", {0, 7}},
|
|
{"xqciac", {0, 3}},
|
|
{"xqcibi", {0, 2}},
|
|
{"xqcibm", {0, 8}},
|
|
{"xqcicli", {0, 3}},
|
|
{"xqcicm", {0, 2}},
|
|
{"xqcics", {0, 2}},
|
|
{"xqcicsr", {0, 4}},
|
|
{"xqciint", {0, 10}},
|
|
{"xqciio", {0, 1}},
|
|
{"xqcilb", {0, 2}},
|
|
{"xqcili", {0, 2}},
|
|
{"xqcilia", {0, 2}},
|
|
{"xqcilo", {0, 3}},
|
|
{"xqcilsm", {0, 6}},
|
|
{"xqcisim", {0, 2}},
|
|
{"xqcisls", {0, 2}},
|
|
{"xqcisync", {0, 3}},
|
|
{"xsfcease", {1, 0}},
|
|
{"xsfmm128t", {0, 6}},
|
|
{"xsfmm16t", {0, 6}},
|
|
{"xsfmm32a", {0, 6}},
|
|
{"xsfmm32a16f", {0, 6}},
|
|
{"xsfmm32a32f", {0, 6}},
|
|
{"xsfmm32a8f", {0, 6}},
|
|
{"xsfmm32a8i", {0, 6}},
|
|
{"xsfmm32t", {0, 6}},
|
|
{"xsfmm64a64f", {0, 6}},
|
|
{"xsfmm64t", {0, 6}},
|
|
{"xsfmmbase", {0, 6}},
|
|
{"xsfvcp", {1, 0}},
|
|
{"xsfvfbfexp16e", {0, 5}},
|
|
{"xsfvfexp16e", {0, 5}},
|
|
{"xsfvfexp32e", {0, 5}},
|
|
{"xsfvfexpa", {0, 2}},
|
|
{"xsfvfexpa64e", {0, 2}},
|
|
{"xsfvfnrclipxfqf", {1, 0}},
|
|
{"xsfvfwmaccqqq", {1, 0}},
|
|
{"xsfvqmaccdod", {1, 0}},
|
|
{"xsfvqmaccqoq", {1, 0}},
|
|
{"xsifivecdiscarddlone", {1, 0}},
|
|
{"xsifivecflushdlone", {1, 0}},
|
|
{"xsmtvdot", {1, 0}},
|
|
{"xtheadba", {1, 0}},
|
|
{"xtheadbb", {1, 0}},
|
|
{"xtheadbs", {1, 0}},
|
|
{"xtheadcmo", {1, 0}},
|
|
{"xtheadcondmov", {1, 0}},
|
|
{"xtheadfmemidx", {1, 0}},
|
|
{"xtheadmac", {1, 0}},
|
|
{"xtheadmemidx", {1, 0}},
|
|
{"xtheadmempair", {1, 0}},
|
|
{"xtheadsync", {1, 0}},
|
|
{"xtheadvdot", {1, 0}},
|
|
{"xventanacondops", {1, 0}},
|
|
{"xwchc", {2, 2}},
|
|
{"za128rs", {1, 0}},
|
|
{"za64rs", {1, 0}},
|
|
{"zaamo", {1, 0}},
|
|
{"zabha", {1, 0}},
|
|
{"zacas", {1, 0}},
|
|
{"zalasr", {1, 0}},
|
|
{"zalrsc", {1, 0}},
|
|
{"zama16b", {1, 0}},
|
|
{"zawrs", {1, 0}},
|
|
{"zba", {1, 0}},
|
|
{"zbb", {1, 0}},
|
|
{"zbc", {1, 0}},
|
|
{"zbkb", {1, 0}},
|
|
{"zbkc", {1, 0}},
|
|
{"zbkx", {1, 0}},
|
|
{"zbs", {1, 0}},
|
|
{"zca", {1, 0}},
|
|
{"zcb", {1, 0}},
|
|
{"zcd", {1, 0}},
|
|
{"zce", {1, 0}},
|
|
{"zcf", {1, 0}},
|
|
{"zclsd", {1, 0}},
|
|
{"zcmop", {1, 0}},
|
|
{"zcmp", {1, 0}},
|
|
{"zcmt", {1, 0}},
|
|
{"zdinx", {1, 0}},
|
|
{"zfa", {1, 0}},
|
|
{"zfbfmin", {1, 0}},
|
|
{"zfh", {1, 0}},
|
|
{"zfhmin", {1, 0}},
|
|
{"zfinx", {1, 0}},
|
|
{"zhinx", {1, 0}},
|
|
{"zhinxmin", {1, 0}},
|
|
{"zic64b", {1, 0}},
|
|
{"zicbom", {1, 0}},
|
|
{"zicbop", {1, 0}},
|
|
{"zicboz", {1, 0}},
|
|
{"ziccamoa", {1, 0}},
|
|
{"ziccamoc", {1, 0}},
|
|
{"ziccid", {1, 0}},
|
|
{"ziccif", {1, 0}},
|
|
{"zicclsm", {1, 0}},
|
|
{"ziccrse", {1, 0}},
|
|
{"zicntr", {2, 0}},
|
|
{"zicond", {1, 0}},
|
|
{"zicsr", {2, 0}},
|
|
{"zifencei", {2, 0}},
|
|
{"zihintntl", {1, 0}},
|
|
{"zihintpause", {2, 0}},
|
|
{"zihpm", {2, 0}},
|
|
{"zilsd", {1, 0}},
|
|
{"zimop", {1, 0}},
|
|
{"zk", {1, 0}},
|
|
{"zkn", {1, 0}},
|
|
{"zknd", {1, 0}},
|
|
{"zkne", {1, 0}},
|
|
{"zknh", {1, 0}},
|
|
{"zkr", {1, 0}},
|
|
{"zks", {1, 0}},
|
|
{"zksed", {1, 0}},
|
|
{"zksh", {1, 0}},
|
|
{"zkt", {1, 0}},
|
|
{"zmmul", {1, 0}},
|
|
{"ztso", {1, 0}},
|
|
{"zvbb", {1, 0}},
|
|
{"zvbc", {1, 0}},
|
|
{"zve32f", {1, 0}},
|
|
{"zve32x", {1, 0}},
|
|
{"zve64d", {1, 0}},
|
|
{"zve64f", {1, 0}},
|
|
{"zve64x", {1, 0}},
|
|
{"zvfbfmin", {1, 0}},
|
|
{"zvfbfwma", {1, 0}},
|
|
{"zvfh", {1, 0}},
|
|
{"zvfhmin", {1, 0}},
|
|
{"zvkb", {1, 0}},
|
|
{"zvkg", {1, 0}},
|
|
{"zvkn", {1, 0}},
|
|
{"zvknc", {1, 0}},
|
|
{"zvkned", {1, 0}},
|
|
{"zvkng", {1, 0}},
|
|
{"zvknha", {1, 0}},
|
|
{"zvknhb", {1, 0}},
|
|
{"zvks", {1, 0}},
|
|
{"zvksc", {1, 0}},
|
|
{"zvksed", {1, 0}},
|
|
{"zvksg", {1, 0}},
|
|
{"zvksh", {1, 0}},
|
|
{"zvkt", {1, 0}},
|
|
{"zvl1024b", {1, 0}},
|
|
{"zvl128b", {1, 0}},
|
|
{"zvl16384b", {1, 0}},
|
|
{"zvl2048b", {1, 0}},
|
|
{"zvl256b", {1, 0}},
|
|
{"zvl32768b", {1, 0}},
|
|
{"zvl32b", {1, 0}},
|
|
{"zvl4096b", {1, 0}},
|
|
{"zvl512b", {1, 0}},
|
|
{"zvl64b", {1, 0}},
|
|
{"zvl65536b", {1, 0}},
|
|
{"zvl8192b", {1, 0}},
|
|
};
|
|
static const RISCVSupportedExtension SupportedExperimentalExtensions[] = {
|
|
{"p", {0, 21}},
|
|
{"smpmpmt", {0, 6}},
|
|
{"svukte", {0, 3}},
|
|
{"xqccmt", {0, 1}},
|
|
{"xsfmclic", {0, 1}},
|
|
{"xsfsclic", {0, 1}},
|
|
{"y", {0, 98}},
|
|
{"zibi", {0, 1}},
|
|
{"zicfilp", {1, 0}},
|
|
{"zicfiss", {1, 0}},
|
|
{"zvabd", {0, 7}},
|
|
{"zvbc32e", {0, 7}},
|
|
{"zvdot4a8i", {0, 1}},
|
|
{"zvfbdota32f", {0, 2}},
|
|
{"zvfbfa", {0, 1}},
|
|
{"zvfofp8min", {0, 2}},
|
|
{"zvfqwbdota8f", {0, 2}},
|
|
{"zvfqwdota8f", {0, 2}},
|
|
{"zvfwbdota16bf", {0, 2}},
|
|
{"zvfwdota16bf", {0, 2}},
|
|
{"zvkgs", {0, 7}},
|
|
{"zvqwbdota16i", {0, 2}},
|
|
{"zvqwbdota8i", {0, 2}},
|
|
{"zvqwdota16i", {0, 2}},
|
|
{"zvqwdota8i", {0, 2}},
|
|
{"zvvfmm", {0, 1}},
|
|
{"zvvmm", {0, 1}},
|
|
{"zvvmtls", {0, 1}},
|
|
{"zvvmttls", {0, 1}},
|
|
{"zvzip", {0, 1}},
|
|
};
|
|
|
|
#endif // GET_SUPPORTED_EXTENSIONS
|
|
|
|
#ifdef GET_IMPLIED_EXTENSIONS
|
|
#undef GET_IMPLIED_EXTENSIONS
|
|
|
|
|
|
static constexpr ImpliedExtsEntry ImpliedExts[] = {
|
|
{ {"a"}, "zaamo"},
|
|
{ {"a"}, "zalrsc"},
|
|
{ {"b"}, "zba"},
|
|
{ {"b"}, "zbb"},
|
|
{ {"b"}, "zbs"},
|
|
{ {"c"}, "zca"},
|
|
{ {"d"}, "f"},
|
|
{ {"f"}, "zicsr"},
|
|
{ {"m"}, "zmmul"},
|
|
{ {"p"}, "zba"},
|
|
{ {"p"}, "zbb"},
|
|
{ {"p"}, "zicsr"},
|
|
{ {"p"}, "zmmul"},
|
|
{ {"q"}, "d"},
|
|
{ {"sha"}, "h"},
|
|
{ {"sha"}, "shcounterenw"},
|
|
{ {"sha"}, "shgatpa"},
|
|
{ {"sha"}, "shtvala"},
|
|
{ {"sha"}, "shvsatpa"},
|
|
{ {"sha"}, "shvstvala"},
|
|
{ {"sha"}, "shvstvecd"},
|
|
{ {"sha"}, "ssstateen"},
|
|
{ {"smctr"}, "sscsrind"},
|
|
{ {"smdbltrp"}, "zicsr"},
|
|
{ {"ssctr"}, "sscsrind"},
|
|
{ {"ssdbltrp"}, "zicsr"},
|
|
{ {"v"}, "zve64d"},
|
|
{ {"v"}, "zvl128b"},
|
|
{ {"xaifet"}, "f"},
|
|
{ {"xandesbfhcvt"}, "f"},
|
|
{ {"xandesvbfhcvt"}, "zve32f"},
|
|
{ {"xandesvdot"}, "zve32x"},
|
|
{ {"xandesvpackfph"}, "f"},
|
|
{ {"xandesvsinth"}, "zve32x"},
|
|
{ {"xandesvsintload"}, "zve32x"},
|
|
{ {"xcheriot"}, "e"},
|
|
{ {"xcheriot"}, "m"},
|
|
{ {"xcheriot"}, "zca"},
|
|
{ {"xqccmp"}, "zca"},
|
|
{ {"xqccmt"}, "zca"},
|
|
{ {"xqccmt"}, "zicsr"},
|
|
{ {"xqci"}, "xqcia"},
|
|
{ {"xqci"}, "xqciac"},
|
|
{ {"xqci"}, "xqcibi"},
|
|
{ {"xqci"}, "xqcibm"},
|
|
{ {"xqci"}, "xqcicli"},
|
|
{ {"xqci"}, "xqcicm"},
|
|
{ {"xqci"}, "xqcics"},
|
|
{ {"xqci"}, "xqcicsr"},
|
|
{ {"xqci"}, "xqciint"},
|
|
{ {"xqci"}, "xqciio"},
|
|
{ {"xqci"}, "xqcilb"},
|
|
{ {"xqci"}, "xqcili"},
|
|
{ {"xqci"}, "xqcilia"},
|
|
{ {"xqci"}, "xqcilo"},
|
|
{ {"xqci"}, "xqcilsm"},
|
|
{ {"xqci"}, "xqcisim"},
|
|
{ {"xqci"}, "xqcisls"},
|
|
{ {"xqci"}, "xqcisync"},
|
|
{ {"xqciac"}, "zca"},
|
|
{ {"xqcibi"}, "zca"},
|
|
{ {"xqcibm"}, "zca"},
|
|
{ {"xqcicm"}, "zca"},
|
|
{ {"xqciint"}, "zca"},
|
|
{ {"xqcilb"}, "zca"},
|
|
{ {"xqcili"}, "zca"},
|
|
{ {"xqcilia"}, "zca"},
|
|
{ {"xqcilo"}, "zca"},
|
|
{ {"xqcisim"}, "zca"},
|
|
{ {"xqcisync"}, "zca"},
|
|
{ {"xsfmm128t"}, "xsfmmbase"},
|
|
{ {"xsfmm128t"}, "zvl512b"},
|
|
{ {"xsfmm16t"}, "xsfmmbase"},
|
|
{ {"xsfmm16t"}, "zvl64b"},
|
|
{ {"xsfmm32a"}, "xsfmm32a16f"},
|
|
{ {"xsfmm32a"}, "xsfmm32a32f"},
|
|
{ {"xsfmm32a"}, "xsfmm32a8i"},
|
|
{ {"xsfmm32a16f"}, "xsfmmbase"},
|
|
{ {"xsfmm32a16f"}, "zve32f"},
|
|
{ {"xsfmm32a32f"}, "xsfmmbase"},
|
|
{ {"xsfmm32a32f"}, "zve32f"},
|
|
{ {"xsfmm32a8f"}, "xsfmmbase"},
|
|
{ {"xsfmm32a8f"}, "zve32f"},
|
|
{ {"xsfmm32a8i"}, "xsfmmbase"},
|
|
{ {"xsfmm32t"}, "xsfmmbase"},
|
|
{ {"xsfmm32t"}, "zvl128b"},
|
|
{ {"xsfmm64a64f"}, "xsfmmbase"},
|
|
{ {"xsfmm64a64f"}, "zve64d"},
|
|
{ {"xsfmm64t"}, "xsfmmbase"},
|
|
{ {"xsfmm64t"}, "zvl256b"},
|
|
{ {"xsfmmbase"}, "zve32x"},
|
|
{ {"xsfvcp"}, "zve32x"},
|
|
{ {"xsfvfexp16e"}, "zvfh"},
|
|
{ {"xsfvfexp32e"}, "zve32f"},
|
|
{ {"xsfvfexpa"}, "zve32f"},
|
|
{ {"xsfvfexpa64e"}, "xsfvfexpa"},
|
|
{ {"xsfvfexpa64e"}, "zve64d"},
|
|
{ {"xsfvfnrclipxfqf"}, "zve32f"},
|
|
{ {"xsfvfwmaccqqq"}, "zvfbfmin"},
|
|
{ {"xsfvfwmaccqqq"}, "zvl128b"},
|
|
{ {"xsfvqmaccdod"}, "zve32x"},
|
|
{ {"xsfvqmaccdod"}, "zvl128b"},
|
|
{ {"xsfvqmaccqoq"}, "zve32x"},
|
|
{ {"xsfvqmaccqoq"}, "zvl256b"},
|
|
{ {"xsmtvdot"}, "zve32f"},
|
|
{ {"xtheadvdot"}, "v"},
|
|
{ {"xwchc"}, "zca"},
|
|
{ {"zabha"}, "zaamo"},
|
|
{ {"zacas"}, "zaamo"},
|
|
{ {"zbc"}, "zbkc"},
|
|
{ {"zcb"}, "zca"},
|
|
{ {"zcd"}, "d"},
|
|
{ {"zcd"}, "zca"},
|
|
{ {"zce"}, "zca"},
|
|
{ {"zce"}, "zcb"},
|
|
{ {"zce"}, "zcmp"},
|
|
{ {"zce"}, "zcmt"},
|
|
{ {"zcf"}, "f"},
|
|
{ {"zcf"}, "zca"},
|
|
{ {"zclsd"}, "zca"},
|
|
{ {"zclsd"}, "zilsd"},
|
|
{ {"zcmop"}, "zca"},
|
|
{ {"zcmp"}, "zca"},
|
|
{ {"zcmt"}, "zca"},
|
|
{ {"zcmt"}, "zicsr"},
|
|
{ {"zdinx"}, "zfinx"},
|
|
{ {"zfa"}, "f"},
|
|
{ {"zfbfmin"}, "f"},
|
|
{ {"zfh"}, "zfhmin"},
|
|
{ {"zfhmin"}, "f"},
|
|
{ {"zfinx"}, "zicsr"},
|
|
{ {"zhinx"}, "zhinxmin"},
|
|
{ {"zhinxmin"}, "zfinx"},
|
|
{ {"ziccid"}, "ziccif"},
|
|
{ {"zicfilp"}, "zicsr"},
|
|
{ {"zicfiss"}, "zicsr"},
|
|
{ {"zicfiss"}, "zimop"},
|
|
{ {"zicntr"}, "zicsr"},
|
|
{ {"zihpm"}, "zicsr"},
|
|
{ {"zk"}, "zkn"},
|
|
{ {"zk"}, "zkr"},
|
|
{ {"zk"}, "zkt"},
|
|
{ {"zkn"}, "zbkb"},
|
|
{ {"zkn"}, "zbkc"},
|
|
{ {"zkn"}, "zbkx"},
|
|
{ {"zkn"}, "zknd"},
|
|
{ {"zkn"}, "zkne"},
|
|
{ {"zkn"}, "zknh"},
|
|
{ {"zks"}, "zbkb"},
|
|
{ {"zks"}, "zbkc"},
|
|
{ {"zks"}, "zbkx"},
|
|
{ {"zks"}, "zksed"},
|
|
{ {"zks"}, "zksh"},
|
|
{ {"zvbb"}, "zvkb"},
|
|
{ {"zvbc"}, "zve64x"},
|
|
{ {"zvbc32e"}, "zve32x"},
|
|
{ {"zvdot4a8i"}, "zve32x"},
|
|
{ {"zve32f"}, "f"},
|
|
{ {"zve32f"}, "zve32x"},
|
|
{ {"zve32x"}, "zicsr"},
|
|
{ {"zve32x"}, "zvl32b"},
|
|
{ {"zve64d"}, "d"},
|
|
{ {"zve64d"}, "zve64f"},
|
|
{ {"zve64f"}, "zve32f"},
|
|
{ {"zve64f"}, "zve64x"},
|
|
{ {"zve64x"}, "zve32x"},
|
|
{ {"zve64x"}, "zvl64b"},
|
|
{ {"zvfbdota32f"}, "zve32f"},
|
|
{ {"zvfbfa"}, "zfbfmin"},
|
|
{ {"zvfbfa"}, "zve32f"},
|
|
{ {"zvfbfmin"}, "zve32f"},
|
|
{ {"zvfbfwma"}, "zfbfmin"},
|
|
{ {"zvfbfwma"}, "zvfbfmin"},
|
|
{ {"zvfh"}, "zfhmin"},
|
|
{ {"zvfh"}, "zvfhmin"},
|
|
{ {"zvfhmin"}, "zve32f"},
|
|
{ {"zvfofp8min"}, "zve32f"},
|
|
{ {"zvfqwbdota8f"}, "zve32f"},
|
|
{ {"zvfqwdota8f"}, "zve32f"},
|
|
{ {"zvfwbdota16bf"}, "zve32f"},
|
|
{ {"zvfwdota16bf"}, "zve32f"},
|
|
{ {"zvkb"}, "zve32x"},
|
|
{ {"zvkg"}, "zve32x"},
|
|
{ {"zvkgs"}, "zvkg"},
|
|
{ {"zvkn"}, "zvkb"},
|
|
{ {"zvkn"}, "zvkned"},
|
|
{ {"zvkn"}, "zvknhb"},
|
|
{ {"zvkn"}, "zvkt"},
|
|
{ {"zvknc"}, "zvbc"},
|
|
{ {"zvknc"}, "zvkn"},
|
|
{ {"zvkned"}, "zve32x"},
|
|
{ {"zvkng"}, "zvkg"},
|
|
{ {"zvkng"}, "zvkn"},
|
|
{ {"zvknha"}, "zve32x"},
|
|
{ {"zvknhb"}, "zve64x"},
|
|
{ {"zvknhb"}, "zvknha"},
|
|
{ {"zvks"}, "zvkb"},
|
|
{ {"zvks"}, "zvksed"},
|
|
{ {"zvks"}, "zvksh"},
|
|
{ {"zvks"}, "zvkt"},
|
|
{ {"zvksc"}, "zvbc"},
|
|
{ {"zvksc"}, "zvks"},
|
|
{ {"zvksed"}, "zve32x"},
|
|
{ {"zvksg"}, "zvkg"},
|
|
{ {"zvksg"}, "zvks"},
|
|
{ {"zvksh"}, "zve32x"},
|
|
{ {"zvl1024b"}, "zvl512b"},
|
|
{ {"zvl128b"}, "zvl64b"},
|
|
{ {"zvl16384b"}, "zvl8192b"},
|
|
{ {"zvl2048b"}, "zvl1024b"},
|
|
{ {"zvl256b"}, "zvl128b"},
|
|
{ {"zvl32768b"}, "zvl16384b"},
|
|
{ {"zvl4096b"}, "zvl2048b"},
|
|
{ {"zvl512b"}, "zvl256b"},
|
|
{ {"zvl64b"}, "zvl32b"},
|
|
{ {"zvl65536b"}, "zvl32768b"},
|
|
{ {"zvl8192b"}, "zvl4096b"},
|
|
{ {"zvqwbdota16i"}, "zve64x"},
|
|
{ {"zvqwbdota8i"}, "zve32x"},
|
|
{ {"zvqwdota16i"}, "zve64x"},
|
|
{ {"zvqwdota8i"}, "zve32x"},
|
|
{ {"zvvfmm"}, "zve32f"},
|
|
{ {"zvvmm"}, "zve32x"},
|
|
{ {"zvvmtls"}, "zve32x"},
|
|
{ {"zvvmttls"}, "zve32x"},
|
|
{ {"zvzip"}, "zve32x"},
|
|
};
|
|
|
|
#endif // GET_IMPLIED_EXTENSIONS
|
|
|
|
#ifdef GET_SUPPORTED_PROFILES
|
|
#undef GET_SUPPORTED_PROFILES
|
|
|
|
static constexpr RISCVProfile SupportedProfiles[] = {
|
|
{"rva20s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_zifencei2p0_za128rs1p0_ssccptr1p0_sstvala1p0_sstvecd1p0_svade1p0_svbare1p0"},
|
|
{"rva20u64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_za128rs1p0"},
|
|
{"rva22s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_zifencei2p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zkt1p0_ssccptr1p0_sscounterenw1p0_sstvala1p0_sstvecd1p0_svade1p0_svbare1p0_svinval1p0_svpbmt1p0"},
|
|
{"rva22u64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicsr2p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zkt1p0"},
|
|
{"rva23s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfhmin1p0_zcb1p0_zcmop1p0_zkt1p0_zvbb1p0_zvfhmin1p0_zvkt1p0_sha1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_ssnpm1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_supm1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"},
|
|
{"rva23u64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfhmin1p0_zcb1p0_zcmop1p0_zkt1p0_zvbb1p0_zvfhmin1p0_zvkt1p0_supm1p0"},
|
|
{"rvb23s64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zcb1p0_zcmop1p0_zkt1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"},
|
|
{"rvb23u64","rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zcb1p0_zcmop1p0_zkt1p0"},
|
|
{"rvi20u32","rv32i2p1"},
|
|
{"rvi20u64","rv64i2p1"},
|
|
};
|
|
static constexpr RISCVProfile SupportedExperimentalProfiles[] = {
|
|
{"rvm23u32","rv32i2p1_m2p0_b1p0_zicbop1p0_zicond1p0_zihintntl1p0_zihintpause2p0_zimop1p0_zce1p0_zcmop1p0"},
|
|
};
|
|
|
|
#endif // GET_SUPPORTED_PROFILES
|
|
|
|
#ifndef PROC
|
|
#define PROC(ENUM, NAME, DEFAULT_MARCH, FAST_SCALAR_UNALIGN, FAST_VECTOR_UNALIGN, MVENDORID, MARCHID, MIMPID)
|
|
#endif
|
|
|
|
PROC(AINEKKO_ERBIUM, {"an-erbium"}, {"rv64m2p0_f2p2_c2p0_xaifet1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(ANDES_A25, {"andes-a25"}, {"rv32i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(ANDES_A45, {"andes-a45"}, {"rv32i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(ANDES_AX25, {"andes-ax25"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(ANDES_AX45, {"andes-ax45"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(ANDES_AX45MPV, {"andes-ax45mpv"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(ANDES_N45, {"andes-n45"}, {"rv32i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(ANDES_NX45, {"andes-nx45"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_xandesperf5p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(ESPERANTO_SOC1, {"et-soc1"}, {"rv64m2p0_f2p2_c2p0_xaifet1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(GENERIC_RV32, {"generic-rv32"}, {"rv32i2p1"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(GENERIC_RV64, {"generic-rv64"}, {"rv64i2p1"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(MIPS_P8700, {"mips-p8700"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0_zba1p0_zbb1p0_xmipscbop1p0_xmipscmov1p0_xmipsexectl1p0_xmipslsp1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(ROCKET_RV32, {"rocket-rv32"}, {"rv32i2p1_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(ROCKET_RV64, {"rocket-rv64"}, {"rv64i2p1_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(RP2350_HAZARD3, {"rp2350-hazard3"}, {"rv32i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0_zcb1p0_zcmp1p0_zba1p0_zbb1p0_zbkb1p0_zbs1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_E20, {"sifive-e20"}, {"rv32i2p1_m2p0_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_E21, {"sifive-e21"}, {"rv32i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_E24, {"sifive-e24"}, {"rv32i2p1_m2p0_a2p1_f2p2_c2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_E31, {"sifive-e31"}, {"rv32i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_E34, {"sifive-e34"}, {"rv32i2p1_m2p0_a2p1_f2p2_c2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_E76, {"sifive-e76"}, {"rv32i2p1_m2p0_a2p1_f2p2_c2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_P450, {"sifive-p450"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zkt1p0"}, 1, 1, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_P470, {"sifive-p470"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zkt1p0_zvbb1p0_zvknc1p0_zvkng1p0_zvksc1p0_zvksg1p0_zvl128b1p0_xsifivecdiscarddlone1p0_xsifivecflushdlone1p0"}, 1, 1, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_P550, {"sifive-p550"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0_zba1p0_zbb1p0"}, 0, 0, 0x00000489, 0x8000000000000008, 0x0000000006220425)
|
|
PROC(SIFIVE_P670, {"sifive-p670"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfhmin1p0_zkt1p0_zvbb1p0_zvknc1p0_zvkng1p0_zvksc1p0_zvksg1p0_zvl128b1p0"}, 1, 1, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_P870_D, {"sifive-p870-d"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zama16b1p0_zawrs1p0_zfa1p0_zfh1p0_zfhmin1p0_zcb1p0_zcmop1p0_zkr1p0_zkt1p0_zvbb1p0_zvfbfmin1p0_zvfbfwma1p0_zvfh1p0_zvfhmin1p0_zvknc1p0_zvkng1p0_zvksc1p0_zvksg1p0_zvkt1p0_zvl128b1p0_supm1p0"}, 1, 1, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_S21, {"sifive-s21"}, {"rv64i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_S51, {"sifive-s51"}, {"rv64i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_S54, {"sifive-s54"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_S76, {"sifive-s76"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0_zihintpause2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_U54, {"sifive-u54"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_U74, {"sifive-u74"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_X160, {"sifive-x160"}, {"rv32i2p1_m2p0_a2p1_f2p2_c2p0_b1p0_zicbom1p0_zicbop1p0_zicboz1p0_zicfilp1p0_zicond1p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zcb1p0_zce1p0_zcf1p0_zcmop1p0_zcmp1p0_zcmt1p0_zkt1p0_zvbb1p0_zvdot4a8i0p1_zve32f1p0_zve32x1p0_zvfbfa0p1_zvfbfmin1p0_zvfbfwma1p0_zvfh1p0_zvkt1p0_zvl128b1p0_xsfcease1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_X180, {"sifive-x180"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_ziccrse1p0_zicfilp1p0_zicond1p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zcb1p0_zcd1p0_zcmop1p0_zkt1p0_zvbb1p0_zvdot4a8i0p1_zvfbfa0p1_zvfbfmin1p0_zvfbfwma1p0_zvfh1p0_zvkb1p0_zvkt1p0_zvl128b1p0_xsfcease1p0_xsfvfbfexp16e0p5_xsfvfexp16e0p5_xsfvfexp32e0p5_xsfvfexpa0p2_xsifivecflushdlone1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_X280, {"sifive-x280"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zifencei2p0_zfh1p0_zba1p0_zbb1p0_zvfh1p0_zvl512b1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SIFIVE_X390, {"sifive-x390"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_ziccrse1p0_zicfilp1p0_zicfiss1p0_zicntr2p0_zicond1p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfh1p0_zcb1p0_zcmop1p0_zkr1p0_zkt1p0_zvbb1p0_zvfbfmin1p0_zvfbfwma1p0_zvfh1p0_zvkt1p0_zvl1024b1p0_xsifivecdiscarddlone1p0_xsifivecflushdlone1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SPACEMIT_A100, {"spacemit-a100"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zfhmin1p0_zcb1p0_zcmop1p0_zbc1p0_zbkc1p0_zkt1p0_zvbb1p0_zvbc1p0_zvfbfwma1p0_zvfh1p0_zvfhmin1p0_zvkng1p0_zvknha1p0_zvksc1p0_zvksg1p0_zvkt1p0_zvl1024b1p0_smepmp1p0_smnpm1p0_smstateen1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_ssnpm1p0_sspm1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_supm1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"}, 1, 0, 0x00000710, 0x8000000041000002, 0x10000000d5686200)
|
|
PROC(SPACEMIT_X60, {"spacemit-x60"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintpause2p0_zihpm2p0_za64rs1p0_zfh1p0_zfhmin1p0_zbc1p0_zbkc1p0_zkt1p0_zvfh1p0_zvkt1p0_zvl256b1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sstc1p0_sstvala1p0_sstvecd1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0_xsmtvdot1p0"}, 1, 0, 0x00000710, 0x8000000058000001, 0x1000000049772200)
|
|
PROC(SPACEMIT_X100, {"spacemit-x100"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zfhmin1p0_zcb1p0_zcmop1p0_zbc1p0_zbkc1p0_zkt1p0_zvbb1p0_zvbc1p0_zvfbfwma1p0_zvfh1p0_zvfhmin1p0_zvkng1p0_zvknha1p0_zvksc1p0_zvksg1p0_zvkt1p0_zvl256b1p0_sha1p0_smepmp1p0_smnpm1p0_smstateen1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_ssnpm1p0_sspm1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_supm1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0_xsmtvdot1p0"}, 1, 0, 0x00000710, 0x8000000058000002, 0x0000000033d8a600)
|
|
PROC(SYNTACORE_SCR1_BASE, {"syntacore-scr1-base"}, {"rv32i2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SYNTACORE_SCR1_MAX, {"syntacore-scr1-max"}, {"rv32i2p1_m2p0_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SYNTACORE_SCR3_RV32, {"syntacore-scr3-rv32"}, {"rv32i2p1_m2p0_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SYNTACORE_SCR3_RV64, {"syntacore-scr3-rv64"}, {"rv64i2p1_m2p0_a2p1_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SYNTACORE_SCR4_RV32, {"syntacore-scr4-rv32"}, {"rv32i2p1_m2p0_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SYNTACORE_SCR4_RV64, {"syntacore-scr4-rv64"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SYNTACORE_SCR5_RV32, {"syntacore-scr5-rv32"}, {"rv32i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SYNTACORE_SCR5_RV64, {"syntacore-scr5-rv64"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicsr2p0_zifencei2p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(SYNTACORE_SCR7, {"syntacore-scr7"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_v1p0_zicsr2p0_zifencei2p0_zba1p0_zbb1p0_zbc1p0_zbs1p0_zkn1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(TENSTORRENT_ASCALON_X, {"tt-ascalon-x"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zfhmin1p0_zcb1p0_zcmop1p0_zkr1p0_zkt1p0_zvbb1p0_zvbc1p0_zvfbfmin1p0_zvfbfwma1p0_zvfh1p0_zvfhmin1p0_zvkng1p0_zvkt1p0_zvl256b1p0_sha1p0_smaia1p0_smmpm1p0_smnpm1p0_smrnmi1p0_smstateen1p0_ssaia1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_ssnpm1p0_ssstrict1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_supm1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"}, 1, 1, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(VENTANA_VEYRON_V1, {"veyron-v1"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicbom1p0_zicbop1p0_zicboz1p0_zicntr2p0_zicsr2p0_zifencei2p0_zihintpause2p0_zihpm2p0_zba1p0_zbb1p0_zbc1p0_zbs1p0_xventanacondops1p0"}, 0, 0, 0x0000061f, 0x8000000000010000, 0x0000000000000111)
|
|
PROC(XIANGSHAN_KUNMINGHU, {"xiangshan-kunminghu"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zacas1p0_zawrs1p0_zfa1p0_zfh1p0_zfhmin1p0_zcb1p0_zcmop1p0_zbc1p0_zkn1p0_zks1p0_zkt1p0_zvbb1p0_zvfh1p0_zvfhmin1p0_zvkt1p0_zvl128b1p0_sha1p0_smaia1p0_smcsrind1p0_smdbltrp1p0_smmpm1p0_smnpm1p0_smrnmi1p0_smstateen1p0_ssaia1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sscsrind1p0_ssdbltrp1p0_ssnpm1p0_sspm1p0_ssstrict1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_supm1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(XIANGSHAN_NANHU, {"xiangshan-nanhu"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_zicbom1p0_zicboz1p0_zicsr2p0_zifencei2p0_zba1p0_zbb1p0_zbc1p0_zbs1p0_zkn1p0_zksed1p0_zksh1p0_svinval1p0"}, 0, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(XUANTIE_C910V2, {"xt-c910v2"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_zicclsm1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zca1p0_zcb1p0_zcd1p0_zcmop1p0_zbc1p0_zkt1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0_xtheadba1p0_xtheadbb1p0_xtheadbs1p0_xtheadcmo1p0_xtheadcondmov1p0_xtheadfmemidx1p0_xtheadmac1p0_xtheadmemidx1p0_xtheadmempair1p0_xtheadsync1p0"}, 1, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
PROC(XUANTIE_C920V2, {"xt-c920v2"}, {"rv64i2p1_m2p0_a2p1_f2p2_d2p2_c2p0_b1p0_v1p0_zic64b1p0_zicbom1p0_zicbop1p0_zicboz1p0_ziccamoa1p0_ziccif1p0_ziccrse1p0_zicntr2p0_zicond1p0_zicsr2p0_zifencei2p0_zihintntl1p0_zihintpause2p0_zihpm2p0_zimop1p0_za64rs1p0_zawrs1p0_zfa1p0_zfbfmin1p0_zfh1p0_zca1p0_zcb1p0_zcd1p0_zcmop1p0_zbc1p0_zkt1p0_zvfbfmin1p0_zvfbfwma1p0_zvfh1p0_ssccptr1p0_sscofpmf1p0_sscounterenw1p0_sstc1p0_sstvala1p0_sstvecd1p0_ssu64xl1p0_svade1p0_svbare1p0_svinval1p0_svnapot1p0_svpbmt1p0_xtheadba1p0_xtheadbb1p0_xtheadbs1p0_xtheadcmo1p0_xtheadcondmov1p0_xtheadfmemidx1p0_xtheadmac1p0_xtheadmemidx1p0_xtheadmempair1p0_xtheadsync1p0_xtheadvdot1p0"}, 1, 0, 0x00000000, 0x0000000000000000, 0x0000000000000000)
|
|
|
|
#undef PROC
|
|
|
|
#ifndef TUNE_PROC
|
|
#define TUNE_PROC(ENUM, NAME)
|
|
#endif
|
|
|
|
TUNE_PROC(ANDES_45, "andes-45-series")
|
|
TUNE_PROC(GENERIC, "generic")
|
|
TUNE_PROC(GENERIC_OOO, "generic-ooo")
|
|
TUNE_PROC(ROCKET, "rocket")
|
|
TUNE_PROC(SIFIVE_7, "sifive-7-series")
|
|
|
|
#undef TUNE_PROC
|
|
#ifdef GET_RISCVExtensionBitmaskTable_IMPL
|
|
|
|
static const RISCVExtensionBitmask ExtensionBitmask[]={
|
|
{"a", 0, 0ULL},
|
|
{"b", 0, 1ULL},
|
|
{"c", 0, 2ULL},
|
|
{"d", 0, 3ULL},
|
|
{"e", 0, 4ULL},
|
|
{"f", 0, 5ULL},
|
|
{"h", 0, 7ULL},
|
|
{"i", 0, 8ULL},
|
|
{"m", 0, 12ULL},
|
|
{"q", 0, 16ULL},
|
|
{"v", 0, 21ULL},
|
|
{"zacas", 0, 26ULL},
|
|
{"zba", 0, 27ULL},
|
|
{"zbb", 0, 28ULL},
|
|
{"zbc", 0, 29ULL},
|
|
{"zbkb", 0, 30ULL},
|
|
{"zbkc", 0, 31ULL},
|
|
{"zbkx", 0, 32ULL},
|
|
{"zbs", 0, 33ULL},
|
|
{"zfa", 0, 34ULL},
|
|
{"zfh", 0, 35ULL},
|
|
{"zfhmin", 0, 36ULL},
|
|
{"zicboz", 0, 37ULL},
|
|
{"zicond", 0, 38ULL},
|
|
{"zihintntl", 0, 39ULL},
|
|
{"zihintpause", 0, 40ULL},
|
|
{"zknd", 0, 41ULL},
|
|
{"zkne", 0, 42ULL},
|
|
{"zknh", 0, 43ULL},
|
|
{"zksed", 0, 44ULL},
|
|
{"zksh", 0, 45ULL},
|
|
{"zkt", 0, 46ULL},
|
|
{"ztso", 0, 47ULL},
|
|
{"zvbb", 0, 48ULL},
|
|
{"zvbc", 0, 49ULL},
|
|
{"zvfh", 0, 50ULL},
|
|
{"zvfhmin", 0, 51ULL},
|
|
{"zvkb", 0, 52ULL},
|
|
{"zvkg", 0, 53ULL},
|
|
{"zvkned", 0, 54ULL},
|
|
{"zvknha", 0, 55ULL},
|
|
{"zvknhb", 0, 56ULL},
|
|
{"zvksed", 0, 57ULL},
|
|
{"zvksh", 0, 58ULL},
|
|
{"zvkt", 0, 59ULL},
|
|
{"zve32x", 0, 60ULL},
|
|
{"zve32f", 0, 61ULL},
|
|
{"zve64x", 0, 62ULL},
|
|
{"zve64f", 0, 63ULL},
|
|
{"zve64d", 1, 0ULL},
|
|
{"zimop", 1, 1ULL},
|
|
{"zca", 1, 2ULL},
|
|
{"zcb", 1, 3ULL},
|
|
{"zcd", 1, 4ULL},
|
|
{"zcf", 1, 5ULL},
|
|
{"zcmop", 1, 6ULL},
|
|
{"zawrs", 1, 7ULL},
|
|
{"zilsd", 1, 8ULL},
|
|
{"zclsd", 1, 9ULL},
|
|
{"zcmp", 1, 10ULL},
|
|
{"zifencei", 1, 11ULL},
|
|
{"zmmul", 1, 12ULL},
|
|
{"zibi", 1, 13ULL},
|
|
{"supm", 1, 14ULL},
|
|
{"zicntr", 1, 15ULL},
|
|
{"zihpm", 1, 16ULL},
|
|
{"zfbfmin", 1, 17ULL},
|
|
{"zvfbfmin", 1, 18ULL},
|
|
{"zvfbfwma", 1, 19ULL},
|
|
{"zicbom", 1, 20ULL},
|
|
{"zaamo", 1, 21ULL},
|
|
{"zalrsc", 1, 22ULL},
|
|
{"zabha", 1, 23ULL},
|
|
{"zalasr", 1, 24ULL},
|
|
{"zicbop", 1, 25ULL},
|
|
{"zicfiss", 1, 27ULL},
|
|
};
|
|
|
|
#undef GET_RISCVExtensionBitmaskTable_IMPL
|
|
#endif // GET_RISCVExtensionBitmaskTable_IMPL
|
|
|
|
#ifdef GET_TUNE_FEATURES
|
|
#undef GET_TUNE_FEATURES
|
|
|
|
|
|
#ifdef __GNUC__
|
|
#pragma GCC diagnostic push
|
|
#pragma GCC diagnostic ignored "-Woverlength-strings"
|
|
#endif
|
|
static constexpr char TuneFeatureStringsStorage[] =
|
|
"\0"
|
|
"conditional-cmv-fusion\0"
|
|
"no-conditional-cmv-fusion\0"
|
|
"disable-latency-sched-heuristic\0"
|
|
"enable-latency-sched-heuristic\0"
|
|
"disable-misched-load-clustering\0"
|
|
"enable-misched-load-clustering\0"
|
|
"disable-misched-store-clustering\0"
|
|
"enable-misched-store-clustering\0"
|
|
"disable-postmisched-load-clustering\0"
|
|
"enable-postmisched-load-clustering\0"
|
|
"disable-postmisched-store-clustering\0"
|
|
"enable-postmisched-store-clustering\0"
|
|
"single-element-vec-fp64\0"
|
|
"full-vec-fp64\0"
|
|
"no-default-unroll\0"
|
|
"enable-default-unroll\0"
|
|
"no-sink-splat-operands\0"
|
|
"sink-splat-operands\0"
|
|
"use-postra-scheduler\0"
|
|
"no-use-postra-scheduler\0"
|
|
"predictable-select-expensive\0"
|
|
"no-predictable-select-expensive\0"
|
|
"prefer-ascending-load-store\0"
|
|
"no-prefer-ascending-load-store\0"
|
|
"prefer-vsetvli-over-read-vlenb\0"
|
|
"no-prefer-vsetvli-over-read-vlenb\0"
|
|
"prefer-w-inst\0"
|
|
"no-prefer-w-inst\0"
|
|
"short-forward-branch-ialu\0"
|
|
"no-short-forward-branch-ialu\0"
|
|
"short-forward-branch-iload\0"
|
|
"no-short-forward-branch-iload\0"
|
|
"short-forward-branch-iminmax\0"
|
|
"no-short-forward-branch-iminmax\0"
|
|
"short-forward-branch-imul\0"
|
|
"no-short-forward-branch-imul\0"
|
|
"vl-dependent-latency\0"
|
|
"no-vl-dependent-latency\0"
|
|
"vxrm-pipeline-flush\0"
|
|
"no-vxrm-pipeline-flush\0"
|
|
;
|
|
#ifdef __GNUC__
|
|
#pragma GCC diagnostic pop
|
|
#endif
|
|
|
|
static constexpr llvm::StringTable
|
|
TuneFeatureStrings = TuneFeatureStringsStorage;
|
|
|
|
static constexpr RISCVTuneFeature TuneFeatures[] = {
|
|
{ 1, 24, 1 }, // 'conditional-cmv-fusion'
|
|
{ 50, 82, 50 }, // 'disable-latency-sched-heuristic'
|
|
{ 113, 145, 113 }, // 'disable-misched-load-clustering'
|
|
{ 176, 209, 176 }, // 'disable-misched-store-clustering'
|
|
{ 241, 277, 241 }, // 'disable-postmisched-load-clustering'
|
|
{ 312, 349, 312 }, // 'disable-postmisched-store-clustering'
|
|
{ 385, 409, 385 }, // 'single-element-vec-fp64'
|
|
{ 423, 441, 423 }, // 'no-default-unroll'
|
|
{ 463, 486, 463 }, // 'no-sink-splat-operands'
|
|
{ 506, 527, 506 }, // 'use-postra-scheduler'
|
|
{ 551, 580, 551 }, // 'predictable-select-expensive'
|
|
{ 612, 640, 612 }, // 'prefer-ascending-load-store'
|
|
{ 671, 702, 671 }, // 'prefer-vsetvli-over-read-vlenb'
|
|
{ 736, 750, 736 }, // 'prefer-w-inst'
|
|
{ 767, 793, 767 }, // 'short-forward-branch-ialu'
|
|
{ 822, 849, 822 }, // 'short-forward-branch-iload'
|
|
{ 879, 908, 879 }, // 'short-forward-branch-iminmax'
|
|
{ 940, 966, 940 }, // 'short-forward-branch-imul'
|
|
{ 995, 1016, 995 }, // 'vl-dependent-latency'
|
|
{ 1040, 1060, 1040 }, // 'vxrm-pipeline-flush'
|
|
};
|
|
|
|
static constexpr RISCVImpliedTuneFeature ImpliedTuneFeatures[] = {
|
|
{ 822, 767 }, // 'short-forward-branch-iload' -> 'short-forward-branch-ialu'
|
|
{ 879, 767 }, // 'short-forward-branch-iminmax' -> 'short-forward-branch-ialu'
|
|
{ 940, 767 }, // 'short-forward-branch-imul' -> 'short-forward-branch-ialu'
|
|
};
|
|
|
|
#endif // GET_TUNE_FEATURES
|
|
|
|
#ifdef GET_CONFIGURABLE_TUNE_FEATURES
|
|
#undef GET_CONFIGURABLE_TUNE_FEATURES
|
|
|
|
static constexpr RISCVConfigurableTuneFeatures ConfigurableTuneFeatures[] = {
|
|
{ { "sifive-x180" }, 385 },
|
|
{ { "sifive-x180" }, 409 },
|
|
{ { "sifive-x280" }, 385 },
|
|
{ { "sifive-x280" }, 409 },
|
|
{ { "sifive-x390" }, 385 },
|
|
{ { "sifive-x390" }, 409 },
|
|
};
|
|
|
|
#endif // GET_CONFIGURABLE_TUNE_FEATURES
|
|
|