Bug 418702 - ARMv8.1 Paired register compare-and-swap instructions are not supported
Summary: ARMv8.1 Paired register compare-and-swap instructions are not supported
Status: RESOLVED FIXED
Alias: None
Product: valgrind
Classification: Developer tools
Component: vex (other bugs)
Version First Reported In: 3.14.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Julian Seward
URL:
Keywords:
Depends on:
Blocks: 414270
  Show dependency treegraph
 
Reported: 2020-03-10 11:22 UTC by ahashmi
Modified: 2020-03-11 14:09 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
Patch implements ARM v8.1 CASP instructions (10.10 KB, text/plain)
2020-03-10 14:32 UTC, ahashmi
Details
Patch tests ARM v8.1 CASP instructions (1.30 MB, text/plain)
2020-03-10 14:33 UTC, ahashmi
Details
Patch tests ARM v8.1 CASP instructions (497.56 KB, patch)
2020-03-10 15:11 UTC, ahashmi
Details

Note You need to log in before you can comment on or make changes to this bug.
Description ahashmi 2020-03-10 11:22:17 UTC
SUMMARY
The following paired register compare-and-swap instructions are not currently supported:
CASP, CASPA, CASPAL, CASPL

STEPS TO REPRODUCE
Compile with -march=armv8.1-a and if the compiler generates any of the above, valgrind will exit with unknown instruction error.

ADDITIONAL INFORMATION
These are also referred to as double register compare-and-swap instructions on some architectures.
Comment 1 ahashmi 2020-03-10 14:32:20 UTC
Created attachment 126710 [details]
Patch implements ARM v8.1 CASP instructions
Comment 2 ahashmi 2020-03-10 14:33:12 UTC
Created attachment 126711 [details]
Patch tests ARM v8.1 CASP instructions
Comment 3 ahashmi 2020-03-10 15:11:55 UTC
Created attachment 126714 [details]
Patch tests ARM v8.1 CASP instructions
Comment 4 Julian Seward 2020-03-11 14:09:00 UTC
Committed:

9608e801932b8c76f0c23e40b384a08c59b368f0 implementation
1e1b7976938956ef709d7537ffaa723b76103c05 test cases

Thanks for the patches!