message: ruy::ThreadPool: when there is only 1 task, don't even touch atomic counters.
  Saves a store-release and a load-acquire (total ~100 cycles) per matmul.
diff: @@ -153,6 +153,7 @@ class Thread {
  void ThreadPool::ExecuteImpl(int task_count, int stride, Task* tasks) {
  RUY_DCHECK_GE(task_count, 1);
  + if (task_count > 1) {
  // Task #0 will be run on the current thread.
  CreateThreads(task_count - 1);
  counter_to_decrement_when_ready_.Reset(task_count - 1);
  @@ -160,11 +161,16 @@ void ThreadPool::ExecuteImpl(int task_count, int stride, Task* tasks) {
  auto task_address = reinterpret_cast<std::uintptr_t>(tasks) + i * stride;
  threads_[i - 1]->StartWork(reinterpret_cast<Task*>(task_address));
  }
  - // Execute task #0 workload immediately on the current thread.
  + }
  +
  + // Execute task #0 immediately on the current thread.
  (tasks + 0)->Run();
  +
  + if (task_count > 1) {
  // Wait for the threads submitted above to finish.
  counter_to_decrement_when_ready_.Wait();
  }
  +}
  // Ensures that the pool has at least the given count of threads.
  // If any new thread has to be created, this function waits for it to
  