1## Test valid memory access 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: ld.b $s1, $a4, 21 17# CHECK-ASM: encoding: [0x18,0x55,0x00,0x28] 18ld.b $s1, $a4, 21 19 20# CHECK-ASM-AND-OBJ: ld.h $a3, $t6, 80 21# CHECK-ASM: encoding: [0x47,0x42,0x41,0x28] 22ld.h $a3, $t6, 80 23 24# CHECK-ASM-AND-OBJ: ld.w $t6, $s3, 92 25# CHECK-ASM: encoding: [0x52,0x73,0x81,0x28] 26ld.w $t6, $s3, 92 27 28# CHECK-ASM-AND-OBJ: ld.bu $t1, $t1, 150 29# CHECK-ASM: encoding: [0xad,0x59,0x02,0x2a] 30ld.bu $t1, $t1, 150 31 32# CHECK-ASM-AND-OBJ: ld.hu $t6, $s6, 198 33# CHECK-ASM: encoding: [0xb2,0x1b,0x43,0x2a] 34ld.hu $t6, $s6, 198 35 36# CHECK-ASM-AND-OBJ: st.b $sp, $a3, 95 37# CHECK-ASM: encoding: [0xe3,0x7c,0x01,0x29] 38st.b $sp, $a3, 95 39 40# CHECK-ASM-AND-OBJ: st.h $s2, $t4, 122 41# CHECK-ASM: encoding: [0x19,0xea,0x41,0x29] 42st.h $s2, $t4, 122 43 44# CHECK-ASM-AND-OBJ: st.w $t1, $t1, 175 45# CHECK-ASM: encoding: [0xad,0xbd,0x82,0x29] 46st.w $t1, $t1, 175 47 48# CHECK-ASM-AND-OBJ: preld 10, $zero, 23 49# CHECK-ASM: encoding: [0x0a,0x5c,0xc0,0x2a] 50preld 10, $zero, 23 51 52 53############################################################# 54## Instructions only for loongarch64 55############################################################# 56 57.ifdef LA64 58 59# CHECK64-ASM-AND-OBJ: ld.wu $t2, $t7, 31 60# CHECK64-ASM: encoding: [0x6e,0x7e,0x80,0x2a] 61ld.wu $t2, $t7, 31 62 63# CHECK: ld.d $t6, $t8, 159 64# CHECK: encoding: [0x92,0x7e,0xc2,0x28] 65ld.d $t6, $t8, 159 66 67# CHECK64-ASM-AND-OBJ: st.d $s7, $s7, 60 68# CHECK64-ASM: encoding: [0xde,0xf3,0xc0,0x29] 69st.d $s7, $s7, 60 70 71# CHECK64-ASM-AND-OBJ: ldx.b $s1, $ra, $tp 72# CHECK64-ASM: encoding: [0x38,0x08,0x00,0x38] 73ldx.b $s1, $ra, $tp 74 75# CHECK64-ASM-AND-OBJ: ldx.h $fp, $fp, $t5 76# CHECK64-ASM: encoding: [0xd6,0x46,0x04,0x38] 77ldx.h $fp, $fp, $t5 78 79# CHECK64-ASM-AND-OBJ: ldx.w $s2, $a7, $s0 80# CHECK64-ASM: encoding: [0x79,0x5d,0x08,0x38] 81ldx.w $s2, $a7, $s0 82 83# CHECK64-ASM-AND-OBJ: ldx.d $t6, $s0, $t8 84# CHECK64-ASM: encoding: [0xf2,0x52,0x0c,0x38] 85ldx.d $t6, $s0, $t8 86 87# CHECK64-ASM-AND-OBJ: ldx.bu $a7, $a5, $a5 88# CHECK64-ASM: encoding: [0x2b,0x25,0x20,0x38] 89ldx.bu $a7, $a5, $a5 90 91# CHECK64-ASM-AND-OBJ: ldx.hu $fp, $s0, $s4 92# CHECK64-ASM: encoding: [0xf6,0x6e,0x24,0x38] 93ldx.hu $fp, $s0, $s4 94 95# CHECK64-ASM-AND-OBJ: ldx.wu $a4, $s1, $s5 96# CHECK64-ASM: encoding: [0x08,0x73,0x28,0x38] 97ldx.wu $a4, $s1, $s5 98 99# CHECK64-ASM-AND-OBJ: stx.b $t7, $ra, $sp 100# CHECK64-ASM: encoding: [0x33,0x0c,0x10,0x38] 101stx.b $t7, $ra, $sp 102 103# CHECK64-ASM-AND-OBJ: stx.h $zero, $s5, $s3 104# CHECK64-ASM: encoding: [0x80,0x6b,0x14,0x38] 105stx.h $zero, $s5, $s3 106 107# CHECK64-ASM-AND-OBJ: stx.w $a3, $a0, $s8 108# CHECK64-ASM: encoding: [0x87,0x7c,0x18,0x38] 109stx.w $a3, $a0, $s8 110 111# CHECK64-ASM-AND-OBJ: stx.d $a3, $s8, $a6 112# CHECK64-ASM: encoding: [0xe7,0x2b,0x1c,0x38] 113stx.d $a3, $s8, $a6 114 115# CHECK64-ASM-AND-OBJ: ldptr.w $s3, $a2, 60 116# CHECK64-ASM: encoding: [0xda,0x3c,0x00,0x24] 117ldptr.w $s3, $a2, 60 118 119# CHECK64-ASM-AND-OBJ: ldptr.d $a1, $s6, 244 120# CHECK64-ASM: encoding: [0xa5,0xf7,0x00,0x26] 121ldptr.d $a1, $s6, 244 122 123# CHECK64-ASM-AND-OBJ: stptr.w $s5, $a1, 216 124# CHECK64-ASM: encoding: [0xbc,0xd8,0x00,0x25] 125stptr.w $s5, $a1, 216 126 127# CHECK64-ASM-AND-OBJ: stptr.d $t2, $s1, 196 128# CHECK64-ASM: encoding: [0x0e,0xc7,0x00,0x27] 129stptr.d $t2, $s1, 196 130 131.endif 132 133