summarylogtreecommitdiffstats
path: root/auto-cpu-optimization.sh
blob: 88665a08d89449d0c52b404b0fa7ddf8a244a6d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/bash

# Check if GCC is installed
check_gcc() {
  if ! [ -x "$(command -v gcc)" ]; then
    # Display error message if GCC is not installed
    echo "Error: GCC is not installed. Please install GCC and try again." >&2
    exit 1
  fi
}

# Call the function before running the rest of the script
check_gcc

# Get CPU type from GCC and convert to uppercase
MARCH=$(gcc -Q -march=native --help=target|grep -m1 march=|awk '{print $2}')

# Sync with 0005-cachy.patch using
# sed -E '/= -march=/!d;/^[+]/!d;/CONFIG_GENERIC_CPU/d;/-march=native/d;s/.+CONFIG_M([^)]+).+-march=([^ ]+).*/\2) MARCH=\1;;/g' 0005-cachy.patch

# Check for specific CPU types and set MARCH variable accordingly
case $MARCH in
  bonnell) MARCH=ATOM;;
  k8-sse3) MARCH=K8SSE3;;
  amdfam10) MARCH=K10;;
  barcelona) MARCH=BARCELONA;;
  btver1) MARCH=BOBCAT;;
  btver2) MARCH=JAGUAR;;
  bdver1) MARCH=BULLDOZER;;
  bdver2) MARCH=PILEDRIVER;;
  bdver3) MARCH=STEAMROLLER;;
  bdver4) MARCH=EXCAVATOR;;
  znver1) MARCH=ZEN;;
  znver2) MARCH=ZEN2;;
  znver3) MARCH=ZEN3;;
  znver4) MARCH=ZEN4;;
  znver5) MARCH=ZEN5;;
  nehalem) MARCH=NEHALEM;;
  westmere) MARCH=WESTMERE;;
  silvermont) MARCH=SILVERMONT;;
  goldmont) MARCH=GOLDMONT;;
  goldmont-plus) MARCH=GOLDMONTPLUS;;
  sandybridge) MARCH=SANDYBRIDGE;;
  ivybridge) MARCH=IVYBRIDGE;;
  haswell) MARCH=HASWELL;;
  broadwell) MARCH=BROADWELL;;
  skylake) MARCH=SKYLAKE;;
  skylake-avx512) MARCH=SKYLAKEX;;
  cannonlake) MARCH=CANNONLAKE;;
  icelake-server) MARCH=ICELAKE_SERVER;;
  icelake-client) MARCH=ICELAKE_CLIENT;;
  cascadelake) MARCH=CASCADELAKE;;
  cooperlake) MARCH=COOPERLAKE;;
  tigerlake) MARCH=TIGERLAKE;;
  sapphirerapids) MARCH=SAPPHIRERAPIDS;;
  rocketlake) MARCH=ROCKETLAKE;;
  alderlake) MARCH=ALDERLAKE;;
  raptorlake) MARCH=RAPTORLAKE;;
  meteorlake) MARCH=METEORLAKE;;
  emeraldrapids) MARCH=EMERALDRAPIDS;;
esac

# If doesn't match, re-use the arch name (uppercased) 

# Display detected CPU and apply optimization
echo "----------------------------------"
echo "| APPLYING AUTO-CPU-OPTIMIZATION |"
echo "----------------------------------"
echo "[*] DETECTED CPU (MARCH) : ${MARCH}"
scripts/config -k --disable CONFIG_GENERIC_CPU
scripts/config -k --enable CONFIG_M${MARCH^^}