kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

builtin_33_chip_hints_features.c (908B)


      1 int test_main(void) {
      2   enum {
      3     unknown_target_feature =
      4         __builtin_kit_target_has("kit-feature-that-does-not-exist")
      5   };
      6   int value = 7;
      7   int values[2] = {1, 7};
      8   int* aligned;
      9 
     10   __builtin_prefetch(&value);
     11   __builtin_prefetch(&value, 1);
     12   __builtin_prefetch(&value, 0, 3);
     13   aligned = (int*)__builtin_assume_aligned(&value, _Alignof(int));
     14   if (aligned != &value || *aligned != 7) return 1;
     15   aligned = (int*)__builtin_assume_aligned(&values[1], 8, sizeof(int));
     16   if (aligned != &values[1] || *aligned != 7) return 7;
     17 
     18   __builtin_kit_cpu_relax();
     19 
     20   if (unknown_target_feature) return 2;
     21 #if defined(__x86_64__)
     22   if (!__builtin_kit_target_has("sse2")) return 3;
     23   if (__builtin_kit_target_has("popcnt")) return 6;
     24 #elif defined(__riscv)
     25   if (!__builtin_kit_target_has("i")) return 4;
     26 #elif defined(__wasm__)
     27   if (!__builtin_kit_target_has("threads")) return 5;
     28 #endif
     29   return 42;
     30 }