<!--
{
  "availability" : [
    "macOS: 15.2.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Hypervisor",
  "identifier" : "/documentation/Hypervisor/hv_vcpu_get_sme_state(_:_:)",
  "metadataVersion" : "0.1.0",
  "role" : "Function",
  "symbol" : {
    "kind" : "Function",
    "modules" : [
      "Hypervisor"
    ],
    "preciseIdentifier" : "c:@F@hv_vcpu_get_sme_state"
  },
  "title" : "hv_vcpu_get_sme_state(_:_:)"
}
-->

# hv_vcpu_get_sme_state(_:_:)

Gets the current Scalable Matrix Extension (SME) state.

```
func hv_vcpu_get_sme_state(_ vcpu: hv_vcpu_t, _ sme_state: UnsafeMutablePointer<hv_vcpu_sme_state_t>) -> hv_return_t
```

## Parameters

`vcpu`

The vcpu ID of the vCPU instance.

`sme_state`

A pointer to the SME state.

## Return Value

`HV_SUCCESS` on success, `HV_UNSUPPORTED` if SME is not supported on the platform, an error code otherwise.

## Discussion

> Important:
> You must call this on the owning thread.

This SME state consists of the streaming Scalable Vector Extension (SVE) mode (PSTATE.SM) and ZA storage enable (PSTATE.ZA). In streaming SVE mode, the system aliases the SIMD Q registers to the bottom `128` bits of the corresponding Z register, and any modification reflects on the Z register state.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)