On May 20, 2018 7:02:40 PM GMT+02:00, Allan Sandfeld Jensen <li...@carewolf.com> wrote: >On Sonntag, 20. Mai 2018 15:07:59 CEST Richard Biener wrote: >> On May 20, 2018 11:01:54 AM GMT+02:00, Allan Sandfeld Jensen ><li...@carewolf.com> wrote: >> >A little over a year back we had a regression in a point release of >gcc >> > >> >because the builtin __builtin_clzs got removed from i386, in part >> >because it >> >is was wrongly named for a target specific builtin, but we were >using >> >it in Qt >> >since it existed in multiple compilers. I got the patch removing it >> >partially >> >reverted and the problem solved, but in the meantime I had worked on >a >> >patch >> >to make it a generic builtin instead. I have rebased it and added it >> >below, >> >should I clean it up futher, finish the other builtins add tests and >> >propose >> >it, or is this not something we want? >> >> Can't users simply do clz((unsigned short) s) - 16? GCC should be >able to >> handle this for instruction selection With The addition of some >folding >> patterns using the corresponding internal function. >> >Of course, but we already have the builtin for i386, and a version of >the >builtin for all integer types except short for all platforms. Note the >patch >also generally adds short versions for all the general integer >builtins, not >just clzs and they are not all that trivial to synthesize (without >knowing the >trick, which gcc does).
For other builtins using them with short types is even easier... Richard. > > >'Allan