Spec-Zone.ru › Homebrew

Модуль: OS::Linux::Hardware::CPU::ClassMethods Закрытый

Расширен модулем:
T::Helpers
Определён в:
extend/os/linux/hardware/cpu.rb

Этот модуль является частью закрытого API. Этот модуль можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого модуля, так как он может быть удалён или изменён без предупреждения.

Сводка методов экземпляра свернуть

  • #amd_family(family, cpu_model) ⇒ Symbol? закрытый
  • #family ⇒ Symbol закрытый
  • #features ⇒ Array<Symbol> закрытый

    Совместимость с методом Mac, который возвращает символы в нижнем регистре вместо строк.

  • #flags ⇒ Array<String> закрытый

    Поддерживаемые инструкции ЦП.

  • #intel_family(family, cpu_model) ⇒ Symbol? закрытый
  • #optimization_flags ⇒ Hash{Symbol => String} закрытый
  • #sse3? ⇒ Boolean закрытый
  • #sse4? ⇒ Boolean закрытый

Подробное описание методов экземпляра

#amd_family(family, cpu_model) ⇒ Symbol?

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Параметры:

  • family (Integer)
  • cpu_model (Integer)

Возвращает:

  • (Symbol, nil)


100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'extend/os/linux/hardware/cpu.rb', line 100

def amd_family(family, cpu_model)
  case family
  when 0x06
    :amd_k7
  when 0x0f
    :amd_k8
  when 0x10
    :amd_k10
  when 0x11
    :amd_k8_k10_hybrid
  when 0x12
    :amd_k10_llano
  when 0x14
    :bobcat
  when 0x15
    :bulldozer
  when 0x16
    :jaguar
  when 0x17
    case cpu_model
    when 0x10..0x2f
      :zen
    when 0x30..0x3f, 0x47, 0x60..0x7f, 0x84..0x87, 0x90..0xaf
      :zen2
    end
  when 0x19
    case cpu_model
    when ..0x0f, 0x20..0x5f
      :zen3
    when 0x10..0x1f, 0x60..0x7f, 0xa0..0xaf
      :zen4
    end
  when 0x1a
    :zen5
  end
end

#family ⇒ Symbol

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Symbol)


23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'extend/os/linux/hardware/cpu.rb', line 23

def family
  return :arm if arm?
  return :ppc if ppc?
  return :dunno unless intel?

  # See https://software.intel.com/en-us/articles/intel-architecture-and-processor-identification-with-cpuid-model-and-family-numbers
  # and https://github.com/llvm/llvm-project/blob/main/llvm/lib/TargetParser/Host.cpp
  # and https://en.wikipedia.org/wiki/List_of_Intel_CPU_microarchitectures#Roadmap
  vendor_id = cpuinfo[/^vendor_id\s*: (.*)/, 1]
  cpu_family = cpuinfo[/^cpu family\s*: ([0-9]+)/, 1].to_i
  cpu_model = cpuinfo[/^model\s*: ([0-9]+)/, 1].to_i
  unknown = :"unknown_0x#{cpu_family.to_s(16)}_0x#{cpu_model.to_s(16)}"
  case vendor_id
  when "GenuineIntel"
    intel_family(cpu_family, cpu_model)
  when "AuthenticAMD"
    amd_family(cpu_family, cpu_model)
  end || unknown
end

#features ⇒ Array<Symbol>

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Совместимость с методом Mac, который возвращает символы в нижнем регистре вместо строк.

Возвращает:

  • (Array<Symbol>)


147
148
149
# File 'extend/os/linux/hardware/cpu.rb', line 147

def features
  @features ||= T.let(flags.map(&:intern), T.nilable(T::Array[Symbol]))
end

#flags ⇒ Array<String>

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Поддерживаемые инструкции ЦП

Возвращает:

  • (Array<String>)


139
140
141
142
# File 'extend/os/linux/hardware/cpu.rb', line 139

def flags
  @flags ||= T.let(cpuinfo[/^(?:flags|Features)\s*: (.*)/, 1]&.split, T.nilable(T::Array[String]))
  @flags ||= []
end

#intel_family(family, cpu_model) ⇒ Symbol?

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Параметры:

  • family (Integer)
  • cpu_model (Integer)

Возвращает:

  • (Symbol, nil)


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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'extend/os/linux/hardware/cpu.rb', line 44

def intel_family(family, cpu_model)
  case family
  when 0x06
    case cpu_model
    when 0x3a, 0x3e
      :ivybridge
    when 0x2a, 0x2d
      :sandybridge
    when 0x25, 0x2c, 0x2f
      :westmere
    when 0x1a, 0x1e, 0x1f, 0x2e
      :nehalem
    when 0x17, 0x1d
      :penryn
    when 0x0f, 0x16
      :merom
    when 0x0d
      :dothan
    when 0x1c, 0x26, 0x27, 0x35, 0x36
      :atom
    when 0x3c, 0x3f, 0x45, 0x46
      :haswell
    when 0x3d, 0x47, 0x4f, 0x56
      :broadwell
    when 0x4e, 0x5e, 0x8e, 0x9e, 0xa5, 0xa6
      :skylake
    when 0x66
      :cannonlake
    when 0x6a, 0x6c, 0x7d, 0x7e
      :icelake
    when 0xa7
      :rocketlake
    when 0x8c, 0x8d
      :tigerlake
    when 0x97, 0x9a, 0xbe, 0xb7, 0xba, 0xbf, 0xaa, 0xac
      :alderlake
    when 0xc5, 0xb5, 0xc6, 0xbd
      :arrowlake
    when 0xcc
      :pantherlake
    when 0xad, 0xae
      :graniterapids
    when 0xcf, 0x8f
      :sapphirerapids
    end
  when 0x0f
    case cpu_model
    when 0x06
      :presler
    when 0x03, 0x04
      :prescott
    end
  end
end

#optimization_flags ⇒ Hash{Symbol => String}

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Hash{Symbol => String})


14
15
16
17
18
19
20
# File 'extend/os/linux/hardware/cpu.rb', line 14

def optimization_flags
  @optimization_flags ||= T.let(begin
    flags = super.dup
    flags[:native] = arch_flag(Homebrew::EnvConfig.arch)
    flags
  end, T.nilable(T::Hash[Symbol, String]))
end

#sse3? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


159
160
161
# File 'extend/os/linux/hardware/cpu.rb', line 159

def sse3?
  flags.include?("pni") || flags.include?("sse3")
end

#sse4? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, так как он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Boolean)


164
165
166
# File 'extend/os/linux/hardware/cpu.rb', line 164

def sse4?
  flags.include? "sse4_1"
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/OS/Linux/Hardware/CPU/ClassMethods.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API