Jesse Huang 20b5728b7b
[RISCV] Implement the implications of C extension (#132259)
Implement the following implications according to the [Zc
spec](https://github.com/riscvarchive/riscv-code-size-reduction/blob/main/Zc-specification/Zc.adoc#13-c)

> As C defines the same instructions as Zca, Zcf and Zcd, the rule is
that:
> * C always implies Zca
> * C+F implies Zcf (RV32 only)
> * C+D implies Zcd
2025-03-22 14:48:52 +08:00

30 lines
896 B
ArmAsm

## Test llvm-mc could handle .attribute correctly.
# RUN: llvm-mc %s -triple=riscv32 -filetype=asm | FileCheck %s
# RUN: llvm-mc %s -triple=riscv64 -filetype=asm | FileCheck %s
# RUN: llvm-mc %s -triple=riscv32 -filetype=asm -riscv-add-build-attributes \
# RUN: | FileCheck %s
# RUN: llvm-mc %s -triple=riscv64 -filetype=asm -riscv-add-build-attributes \
# RUN: | FileCheck %s
.attribute stack_align, 16
# CHECK: attribute 4, 16
.attribute arch, "rv32i2p1_m2p0_a2p1_c2p0_zmmul1p0_zaamo1p0_zalrsc1p0"
# CHECK: attribute 5, "rv32i2p1_m2p0_a2p1_c2p0_zmmul1p0_zaamo1p0_zalrsc1p0_zca1p0"
.attribute unaligned_access, 0
# CHECK: attribute 6, 0
.attribute priv_spec, 2
# CHECK: attribute 8, 2
.attribute priv_spec_minor, 0
# CHECK: attribute 10, 0
.attribute priv_spec_revision, 0
# CHECK: attribute 12, 0
.attribute atomic_abi, 0
# CHECK: attribute 14, 0