Skip to content

Mercury: Preserve ARM64 FP state across Mercury contexts - #2722

Merged
jpkenny merged 1 commit into
sstsimulator:develfrom
nab880:mercury-arm64-fcontext-fix
Sep 5, 2026
Merged

Mercury: Preserve ARM64 FP state across Mercury contexts#2722
jpkenny merged 1 commit into
sstsimulator:develfrom
nab880:mercury-arm64-fcontext-fix

Conversation

@nab880

@nab880 nab880 commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Fix Mercury’s ARM64 fcontext implementation to preserve the AAPCS64 callee-saved floating-point registers d8–d15 across context switches. Updates both ELF and Mach-O assembly.

@nab880
nab880 requested a review from jpkenny September 2, 2026 06:14
@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pre-Test Inspection' - Auto Inspected - Inspection is Not Necessary for this Pull Request.

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects:

Pull Request Auto Testing STARTING (click to expand)

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements

  • Build Num: 2875
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_Make-Dist

  • Build Num: 1623
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MT-2

  • Build Num: 2813
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MR-2

  • Build Num: 2815
  • Status: STARTED

Build Information

Test Name: SST__Autotest_OSX-15-XC16_OMPI-4.1.6_PY3.10_sst-elements

  • Build Num: 1349
  • Status: STARTED

Using Repos:

Repo: ELEMENTS (nab880/sst-elements)
  • Branch: mercury-arm64-fcontext-fix
  • SHA: 7ce8be8
  • Mode: TEST_REPO
Repo: SQE (sstsimulator/sst-sqe)
  • Branch: devel
  • SHA: a9902f112b890a614e31e56f47c75c815804474f
  • Mode: SUPPORT_REPO
Repo: CORE (sstsimulator/sst-core)
  • Branch: devel
  • SHA: 09bc3927b1fc23e65f3aa0795739cad36f315d5a
  • Mode: SUPPORT_REPO
Repo: MACRO (sstsimulator/sst-macro)
  • Branch: devel
  • SHA: cd50ac2eb723b7fd3e78b02b65e3a7ba7250c618
  • Mode: SUPPORT_REPO

Pull Request Author: nab880

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - Error: Jenkins Jobs - Timed out waiting for build 2875 to complete: Total Wait = 5460; Job Timeout = 5400

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - Jenkins Testing: 1 or more Jobs FAILED

Note: Testing will normally be attempted again in approx. 8 Hrs. If a change to the PR source branch occurs, the testing will be attempted again on next available autotester run.

Pull Request Auto Testing has FAILED (click to expand)

Job: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements

  • Result: FAILED
  • Build #: 2875
  • URL: Jenkins server at https://sst-jenkins.sandia.gov/view/SST/job/SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements/2875/consoleFull
  • Job: - Status: None

Job: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_Make-Dist

  • Result: FAILED
  • Build #: 1623
  • URL: Jenkins server at https://sst-jenkins.sandia.gov/view/SST/job/SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_Make-Dist/1623/consoleFull
  • Job: - Status: None

Job: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MT-2

  • Result: FAILED
  • Build #: 2813
  • URL: Jenkins server at https://sst-jenkins.sandia.gov/view/SST/job/SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MT-2/2813/consoleFull
  • Job: - Status: None

Job: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MR-2

  • Result: FAILED
  • Build #: 2815
  • URL: Jenkins server at https://sst-jenkins.sandia.gov/view/SST/job/SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MR-2/2815/consoleFull
  • Job: - Status: None

Job: SST__Autotest_OSX-15-XC16_OMPI-4.1.6_PY3.10_sst-elements

  • Result: PASSED
  • Build #: 1349
  • URL: Jenkins server at https://sst-jenkins.sandia.gov/view/SST/job/SST__Autotest_OSX-15-XC16_OMPI-4.1.6_PY3.10_sst-elements/1349/consoleFull

@jpkenny jpkenny left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All looks fine to me, I just want to document how this differs from historical practice in this code base:

To date, we've never needed to change the assembly here, which all comes straight from boost fcontext. We only modified the interface slightly to hook it into macro/mercury. How were these asm modifications actually obtained, and how would we go about preserving their effect if we need to bring in other boost fcontext updates down the road?

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - Failure: Timed out waiting for job SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MR-2 to start: Total Wait = 303

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects:

Pull Request Auto Testing STARTING (click to expand)

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements

  • Build Num: 2877
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_Make-Dist

  • Build Num: 1625
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MT-2

  • Build Num: 2815
  • Status: STARTED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MR-2

  • Build Num: 2816
  • Status: STARTED

Build Information

Test Name: SST__Autotest_OSX-15-XC16_OMPI-4.1.6_PY3.10_sst-elements

  • Build Num: 1350
  • Status: STARTED

Using Repos:

Repo: ELEMENTS (nab880/sst-elements)
  • Branch: mercury-arm64-fcontext-fix
  • SHA: 7ce8be8
  • Mode: TEST_REPO
Repo: SQE (sstsimulator/sst-sqe)
  • Branch: devel
  • SHA: a9902f112b890a614e31e56f47c75c815804474f
  • Mode: SUPPORT_REPO
Repo: CORE (sstsimulator/sst-core)
  • Branch: devel
  • SHA: 09bc3927b1fc23e65f3aa0795739cad36f315d5a
  • Mode: SUPPORT_REPO
Repo: MACRO (sstsimulator/sst-macro)
  • Branch: devel
  • SHA: cd50ac2eb723b7fd3e78b02b65e3a7ba7250c618
  • Mode: SUPPORT_REPO

Pull Request Author: nab880

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - Jenkins Testing: all Jobs PASSED

Pull Request Auto Testing has PASSED (click to expand)

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements

  • Build Num: 2877
  • Status: PASSED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_Make-Dist

  • Build Num: 1625
  • Status: PASSED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MT-2

  • Build Num: 2815
  • Status: PASSED

Build Information

Test Name: SST__Autotest_sst-test_OMPI-4.1.4_PY3.9_sst-elements_MR-2

  • Build Num: 2816
  • Status: PASSED

Build Information

Test Name: SST__Autotest_OSX-15-XC16_OMPI-4.1.6_PY3.10_sst-elements

  • Build Num: 1350
  • Status: PASSED

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pre-Merge Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging
THE LAST COMMIT TO THIS PULL REQUEST HAS BEEN REVIEWED, BUT NOT ACCEPTED OR REQUIRES CHANGES!

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

1 similar comment
@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@nab880

nab880 commented Sep 4, 2026

Copy link
Copy Markdown
Contributor Author

The bug existed in the boost library from October 2015 until November 2016 and Our copy sits in that window. sst-macro picked the fix up at some point (looks like Dec 2021); Mercury's copy never did.

So if we shouldn't really need to preserve this change, every upstream revision since boost 1.63 has it. The Mercury-local delta is still just the symbol prefix. I could update to a current Boost tag with as a separate PR as well, if that's preferable.

@sst-autotester

Copy link
Copy Markdown
Contributor

All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...

@jpkenny

jpkenny commented Sep 5, 2026

Copy link
Copy Markdown
Contributor

The bug existed in the boost library from October 2015 until November 2016 and Our copy sits in that window. sst-macro picked the fix up at some point (looks like Dec 2021); Mercury's copy never did.

So if we shouldn't really need to preserve this change, every upstream revision since boost 1.63 has it. The Mercury-local delta is still just the symbol prefix. I could update to a current Boost tag with as a separate PR as well, if that's preferable.

Ah, ok, so this is just an update to get back aligned with more recent boost. That's fine then. Preplexing if it was fixed in macro in 2021 as Mercury was split off long after that.

@jpkenny jpkenny left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pre-Merge Inspection' - SUCCESS: The last commit to this Pull Request has been INSPECTED AND APPROVED by [ jpkenny ]!

@sst-autotester

Copy link
Copy Markdown
Contributor

Status Flag 'Pull Request AutoTester' - Pull Request MUST BE MERGED MANUALLY BY Project Team - This Repo does not support Automerge

@jpkenny
jpkenny merged commit 9ff1c55 into sstsimulator:devel Sep 5, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants