Bug 418702

Summary: ARMv8.1 Paired register compare-and-swap instructions are not supported
Product: [Developer tools] valgrind Reporter: ahashmi <assad.hashmi>
Component: vexAssignee: Julian Seward <jseward>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version First Reported In: 3.14.0   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Bug Depends on:    
Bug Blocks: 414270    
Attachments: Patch implements ARM v8.1 CASP instructions
Patch tests ARM v8.1 CASP instructions
Patch tests ARM v8.1 CASP instructions

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!