Is sorted using SIMD instructions

rikki cattermole rikki at cattermole.co.nz
Thu Apr 12 10:14:55 UTC 2018


On 12/04/2018 7:25 PM, Per Nordlöw wrote:
> Neither GCC, LLVM nor ICC can auto-vectorize (and use SIMD) the seemly 
> simple function
> 
> bool is_sorted(const int32_t* input, size_t n) {
>      if (n < 2) {
>          return true;
>      }
> 
>      for (size_t i=0; i < n - 1; i++) {
>          if (input[i] > input[i + 1])
>              return false;
>      }
> 
>      return true;
> }
> 
> Can D's compilers do better?
> 
> See http://0x80.pl/notesen/2018-04-11-simd-is-sorted.html

Just checked, change int to float and it uses ucomiss (SIMD, ldc -O3).

There may not be an instruction for int's.


More information about the Digitalmars-d mailing list