Summary: Currently we dispatch the writing mode off of a runtime enum passed in by the constructor. This causes very unfortunate codegen for the GPU targets where we get worst-case codegen because of the unused function pointer for `sprintf`. Instead, this patch moves all of this to a template so it can be masked out. This results in no dynamic stack and uses 60 VGPRs instead of 117. It also compiles about 5x as fast.
41 lines
891 B
JSON
41 lines
891 B
JSON
{
|
|
"errno": {
|
|
"LIBC_CONF_ERRNO_MODE": {
|
|
"value": "LIBC_ERRNO_MODE_SHARED"
|
|
}
|
|
},
|
|
"printf": {
|
|
"LIBC_CONF_PRINTF_DISABLE_FLOAT": {
|
|
"value": true
|
|
},
|
|
"LIBC_CONF_PRINTF_DISABLE_INDEX_MODE": {
|
|
"value": true
|
|
},
|
|
"LIBC_CONF_PRINTF_DISABLE_WRITE_INT": {
|
|
"value": true
|
|
},
|
|
"LIBC_CONF_PRINTF_FLOAT_TO_STR_USE_MEGA_LONG_DOUBLE_TABLE": {
|
|
"value": false
|
|
},
|
|
"LIBC_CONF_PRINTF_DISABLE_STRERROR": {
|
|
"value": true
|
|
},
|
|
"LIBC_CONF_PRINTF_RUNTIME_DISPATCH": {
|
|
"value": false
|
|
}
|
|
},
|
|
"scanf": {
|
|
"LIBC_CONF_SCANF_DISABLE_FLOAT": {
|
|
"value": true
|
|
},
|
|
"LIBC_CONF_SCANF_DISABLE_INDEX_MODE": {
|
|
"value": true
|
|
}
|
|
},
|
|
"math": {
|
|
"LIBC_CONF_MATH_OPTIMIZATIONS": {
|
|
"value": "(LIBC_MATH_SKIP_ACCURATE_PASS | LIBC_MATH_SMALL_TABLES | LIBC_MATH_NO_ERRNO | LIBC_MATH_NO_EXCEPT)"
|
|
}
|
|
}
|
|
}
|