xref: /llvm-project/llvm/test/MC/LoongArch/Basic/Integer/misc.s (revision 7898587e948cc24af6e22f86c921949169f4f87b)
1## Test valid misc instructions.
2
3# RUN: llvm-mc %s --triple=loongarch32 --show-encoding \
4# RUN:     | FileCheck --check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s
5# RUN: llvm-mc %s --triple=loongarch64 --show-encoding --defsym=LA64=1 \
6# RUN:     | FileCheck --check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ,CHECK64-ASM,CHECK64-ASM-AND-OBJ %s
7# RUN: llvm-mc %s --triple=loongarch32 --filetype=obj | llvm-objdump -d - \
8# RUN:     | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s
9# RUN: llvm-mc %s --triple=loongarch64 --filetype=obj --defsym=LA64=1 | llvm-objdump -d - \
10# RUN:     | FileCheck --check-prefixes=CHECK-ASM-AND-OBJ,CHECK64-ASM-AND-OBJ %s
11
12#############################################################
13## Instructions for both loongarch32 and loongarch64
14#############################################################
15
16# CHECK-ASM-AND-OBJ: syscall 100
17# CHECK-ASM: encoding: [0x64,0x00,0x2b,0x00]
18syscall 100
19
20# CHECK-ASM-AND-OBJ: break 199
21# CHECK-ASM: encoding: [0xc7,0x00,0x2a,0x00]
22break 199
23
24# CHECK-ASM-AND-OBJ: rdtimel.w $s1, $a0
25# CHECK-ASM: encoding: [0x98,0x60,0x00,0x00]
26rdtimel.w $s1, $a0
27
28# CHECK-ASM-AND-OBJ: rdtimeh.w $a7, $a1
29# CHECK-ASM: encoding: [0xab,0x64,0x00,0x00]
30rdtimeh.w $a7, $a1
31
32# CHECK-ASM-AND-OBJ: cpucfg $sp, $a4
33# CHECK-ASM: encoding: [0x03,0x6d,0x00,0x00]
34cpucfg $sp, $a4
35
36
37#############################################################
38## Instructions only for loongarch64
39#############################################################
40
41.ifdef LA64
42
43# CHECK64-ASM-AND-OBJ: asrtle.d $t0, $t5
44# CHECK64-ASM: encoding: [0x80,0x45,0x01,0x00]
45asrtle.d $t0, $t5
46
47# CHECK64-ASM-AND-OBJ: asrtgt.d $t8, $t8
48# CHECK64-ASM: encoding: [0x80,0xd2,0x01,0x00]
49asrtgt.d $t8, $t8
50
51# CHECK64-ASM-AND-OBJ: rdtime.d $tp, $t3
52# CHECK64-ASM: encoding: [0xe2,0x69,0x00,0x00]
53rdtime.d $tp, $t3
54
55.endif
56
57