/** @file
  Public header file for UEFI CPU library class.
  This library class defines some routines that are generic for IA32 family CPU
  to be UEFI specification compliant.
  Copyright (c) 2009 - 2021, Intel Corporation. All rights reserved.
  Copyright (c) 2020, AMD Inc. All rights reserved.
  SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __UEFI_CPU_LIB_H__
#define __UEFI_CPU_LIB_H__
/**
  Initializes floating point units for requirement of UEFI specification.
  This function initializes floating-point control word to 0x027F (all exceptions
  masked,double-precision, round-to-nearest) and multimedia-extensions control word
  (if supported) to 0x1F80 (all exceptions masked, round-to-nearest, flush to zero
  for masked underflow).
**/
VOID
EFIAPI
InitializeFloatingPointUnits (
  VOID
  );
/**
  Determine if the standard CPU signature is "AuthenticAMD".
  @retval TRUE  The CPU signature matches.
  @retval FALSE The CPU signature does not match.
**/
BOOLEAN
EFIAPI
StandardSignatureIsAuthenticAMD (
  VOID
  );
/**
  Return the 32bit CPU family and model value.
  @return CPUID[01h].EAX with Processor Type and Stepping ID cleared.
**/
UINT32
EFIAPI
GetCpuFamilyModel (
  VOID
  );
/**
  Return the CPU stepping ID.
  @return CPU stepping ID value in CPUID[01h].EAX.
**/
UINT8
EFIAPI
GetCpuSteppingId (
  VOID
  );
#endif