Files
TheRock/compiler/amd-llvm/llvm/test/MC/RISCV/rvy/rvy-basic.s
T
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

256 lines
11 KiB
ArmAsm

// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --use-same-for-encoding --version 6
// RUN: llvm-mc --triple=riscv32 -mattr=+experimental-y --riscv-no-aliases --show-encoding --show-inst --defsym=XLEN=32 < %s \
// RUN: | FileCheck --check-prefixes=CHECK,CHECK-ASM,CHECK-ASM-32,CHECK-32 %s
// RUN: llvm-mc --filetype=obj --triple=riscv32 --mattr=+experimental-y --defsym=XLEN=32 --riscv-add-build-attributes < %s \
// RUN: | llvm-objdump -M no-aliases -d --no-print-imm-hex - | FileCheck %s --check-prefixes=CHECK,CHECK-32
// RUN: llvm-mc --triple=riscv64 --mattr=+experimental-y --riscv-no-aliases --show-encoding --show-inst --defsym=XLEN=64 < %s \
// RUN: | FileCheck --check-prefixes=CHECK,CHECK-ASM,CHECK-ASM-64,CHECK-64 %s
// RUN: llvm-mc --filetype=obj --triple=riscv64 --mattr=+experimental-y --defsym=XLEN=64 --riscv-add-build-attributes < %s \
// RUN: | llvm-objdump -M no-aliases -d --no-print-imm-hex - | FileCheck %s --check-prefixes=CHECK,CHECK-64
yadd a0, a0, a1
// CHECK: yadd a0, a0, a1
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0xb5,0x06]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST1:]] YADD{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X11>>
yaddi a0, a0, 12
// CHECK: yaddi a0, a0, 12
// CHECK-ASM-SAME: # encoding: [0x7b,0x45,0xc5,0x00]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST2:]] YADDI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Imm:12>>
yadd a0, a0, 12
// CHECK: yaddi a0, a0, 12
// CHECK-ASM-SAME: # encoding: [0x7b,0x45,0xc5,0x00]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST2:]] YADDI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Imm:12>>
yaddrw a0, a0, a1
// CHECK: yaddrw a0, a0, a1
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0xb5,0x16]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST3:]] YADDRW{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X11>>
ypermc a0, a0, a0
// CHECK: ypermc a0, a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0xa5,0x26]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST4:]] YPERMC{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>>
ymv a0, a0
// CHECK: ymv a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0x05,0x06]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST5:]] YMV{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>>
//# Note: mv expands to integer addi and not capability ymv:
mv a0, a0
// CHECK: addi a0, a0, 0
// CHECK-ASM-SAME: # encoding: [0x13,0x05,0x05,0x00]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST6:]] ADDI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>
// CHECK-ASM-NEXT: # <MCOperand Imm:0>>
packy a0, a0, a0
// CHECK: packy a0, a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0xa5,0x02]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST7:]] PACKY{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>>
yhiw a0, a0, a0
// CHECK: packy a0, a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0xa5,0x02]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST7:]] PACKY{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>>
ybndsw a0, a0, a0
// CHECK: ybndsw a0, a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0xa5,0x36]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST8:]] YBNDSW{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>>
ybndsrw a0, a0, a0
// CHECK: ybndsrw a0, a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0xa5,0x46]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST9:]] YBNDSRW{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>>
ybndswi a0, a0, 12
// CHECK: ybndswi a0, a0, 12
// CHECK-ASM-SAME: # encoding: [0x7b,0x55,0xc5,0xe0]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST10:]] YBNDSWI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Imm:12>>
ybndswi a0, a0, 12
// CHECK: ybndswi a0, a0, 12
// CHECK-ASM-SAME: # encoding: [0x7b,0x55,0xc5,0xe0]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST10:]] YBNDSWI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Imm:12>>
//# Test all the min and max values for the ybndswi encoding
ybndswi a0, a0, 1
// CHECK: ybndswi a0, a0, 1
// CHECK-ASM-SAME: # encoding: [0x7b,0x55,0x15,0xe0]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST10:]] YBNDSWI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Imm:1>>
ybndswi a0, a0, 255
// CHECK: ybndswi a0, a0, 255
// CHECK-ASM-SAME: # encoding: [0x7b,0x55,0xf5,0xef]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST10:]] YBNDSWI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Imm:255>>
ybndswi a0, a0, 264
// CHECK: ybndswi a0, a0, 264
// CHECK-ASM-SAME: # encoding: [0x7b,0x55,0x05,0xf1]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST10:]] YBNDSWI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Imm:264>>
ybndswi a0, a0, 504
// CHECK: ybndswi a0, a0, 504
// CHECK-ASM-SAME: # encoding: [0x7b,0x55,0xf5,0xf1]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST10:]] YBNDSWI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Imm:504>>
ybndswi a0, a0, 512
// CHECK-ASM: ybndswi a0, a0, 512
// CHECK-ASM-SAME: # encoding: [0x7b,0x55,0x05,0xf2]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST10:]] YBNDSWI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Imm:512>>
ybndswi a0, a0, 528
// CHECK-ASM: ybndswi a0, a0, 528
// CHECK-ASM-SAME: # encoding: [0x7b,0x55,0x15,0xf2]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST10:]] YBNDSWI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Imm:528>>
ybndswi a0, a0, 2048
// CHECK-ASM: ybndswi a0, a0, 2048
// CHECK-ASM-SAME: # encoding: [0x7b,0x55,0x05,0xf8]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST10:]] YBNDSWI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Imm:2048>>
ybndswi a0, a0, 4080
// CHECK-ASM: ybndswi a0, a0, 4080
// CHECK-ASM-SAME: # encoding: [0x7b,0x55,0xf5,0xff]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST10:]] YBNDSWI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Imm:4080>>
ybndswi a0, a0, 4096
// CHECK: ybndswi a0, a0, 4096
// CHECK-ASM-SAME: # encoding: [0x7b,0x55,0x05,0xe0]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST10:]] YBNDSWI{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Imm:4096>>
ysunseal a0, a0, a0
// CHECK: ysunseal a0, a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0xa5,0x0e]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST11:]] YSUNSEAL{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>>
ybld a0, a0, a0
// CHECK: ybld a0, a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0xa5,0x1e]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST12:]] YBLD{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>>
ybaser a0, a0
// CHECK: ybaser a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0x05,0xf4]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST13:]] YBASER{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>>
ylenr a0, a0
// CHECK: ylenr a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0x35,0xf4]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST14:]] YLENR{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>>
ytopr a0, a0
// CHECK: ytopr a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0x25,0xf4]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST15:]] YTOPR{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>>
ytagr a0, a0
// CHECK: ytagr a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0x45,0xf4]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST16:]] YTAGR{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>>
ypermr a0, a0
// CHECK: ypermr a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0x15,0xf4]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST17:]] YPERMR{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>>
ytyper a0, a0
// CHECK: ytyper a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0x55,0xf4]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST18:]] YTYPER{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>>
srliy a0, a0, XLEN
// CHECK-32: srliy a0, a0, 32
// CHECK-64: srliy a0, a0, 64
// CHECK-ASM-32-SAME: # encoding: [0x7b,0x55,0x05,0x02]
// CHECK-ASM-64-SAME: # encoding: [0x7b,0x55,0x05,0x04]
// CHECK-ASM: # <MCInst #[[#MCINST19:]] SRLIY{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-32-NEXT: # <MCOperand Imm:32>>
// CHECK-ASM-64-NEXT: # <MCOperand Imm:64>>
yhir a0, a0
// CHECK-32: srliy a0, a0, 32
// CHECK-64: srliy a0, a0, 64
// CHECK-ASM-32-SAME: # encoding: [0x7b,0x55,0x05,0x02]
// CHECK-ASM-64-SAME: # encoding: [0x7b,0x55,0x05,0x04]
// CHECK-ASM: # <MCInst #[[#MCINST19:]] SRLIY{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-32-NEXT: # <MCOperand Imm:32>>
// CHECK-ASM-64-NEXT: # <MCOperand Imm:64>>
yeq a0, a0, a0
// CHECK: yeq a0, a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0xa5,0x0c]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST20:]] YEQ{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>>
yss a0, a0, a0
// CHECK: yss a0, a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0xa5,0x1c]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST21:]] YSS{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10_Y>>
yamask a0, a0
// CHECK: yamask a0, a0
// CHECK-ASM-SAME: # encoding: [0x7b,0x05,0x05,0xf0]
// CHECK-ASM-NEXT: # <MCInst #[[#MCINST22:]] YAMASK{{$}}
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>
// CHECK-ASM-NEXT: # <MCOperand Reg:X10>>