This patch implements the 2022 Architecture General Data-Processing Instructions They include: Common Short Sequence Compression (CSSC) instructions - scalar comparison instructions SMAX, SMIN, UMAX, UMIN (32/64 bits) with or without immediate - ABS (absolute), CNT (count non-zero bits), CTZ (count trailing zeroes) - command-line options for CSSC Associated with these instructions in the documentation is the Range Prefetch Memory (RPRFM) instruction, which signals to the memory system that data memory accesses from a specified range of addresses are likely to occur in the near future. The instruction lies in hint space, and is made unconditional. Specs for the individual instructions can be found here: https://developer.arm.com/documentation/ddi0602/2022-09/Base-Instructions/ contributors to this patch: - Cullen Rhodes - Son Tuan Vu - Mark Murray - Tomas Matheson - Sam Elliott - Ties Stuij Reviewed By: lenary Differential Revision: https://reviews.llvm.org/D138488
32 lines
1.3 KiB
ArmAsm
32 lines
1.3 KiB
ArmAsm
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+v9.4a < %s \
|
|
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
|
|
// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
|
|
// RUN: | FileCheck %s --check-prefix=CHECK-ERROR
|
|
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+v9.4a < %s \
|
|
// RUN: | llvm-objdump -d --mattr=+v9.4a - | FileCheck %s --check-prefix=CHECK-INST
|
|
// Disassemble encoding and check the re-encoding (-show-encoding) matches.
|
|
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+v9.4a < %s \
|
|
// RUN: | sed '/.text/d' | sed 's/.*encoding: //g' \
|
|
// RUN: | llvm-mc -triple=aarch64 -mattr=+v9.4a -disassemble -show-encoding \
|
|
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
|
|
|
|
cnt x0, x0
|
|
// CHECK-INST: cnt x0, x0
|
|
// CHECK-ENCODING: [0x00,0x1c,0xc0,0xda]
|
|
// CHECK-ERROR: instruction requires: cssc
|
|
|
|
cnt x21, x10
|
|
// CHECK-INST: cnt x21, x10
|
|
// CHECK-ENCODING: [0x55,0x1d,0xc0,0xda]
|
|
// CHECK-ERROR: instruction requires: cssc
|
|
|
|
cnt x23, x13
|
|
// CHECK-INST: cnt x23, x13
|
|
// CHECK-ENCODING: [0xb7,0x1d,0xc0,0xda]
|
|
// CHECK-ERROR: instruction requires: cssc
|
|
|
|
cnt xzr, xzr
|
|
// CHECK-INST: cnt xzr, xzr
|
|
// CHECK-ENCODING: [0xff,0x1f,0xc0,0xda]
|
|
// CHECK-ERROR: instruction requires: cssc
|