1# RUN: llvm-mc -triple riscv32 -mattr=+c -show-encoding < %s \ 2# RUN: | FileCheck -check-prefixes=CHECK,CHECK-ALIAS,CHECK-ALIASASM %s 3# RUN: llvm-mc -triple riscv32 -mattr=+c -show-encoding \ 4# RUN: -M no-aliases < %s | FileCheck -check-prefixes=CHECK,CHECK-INST,CHECK-INSTASM %s 5# RUN: llvm-mc -triple riscv32 -mattr=+c -filetype=obj < %s \ 6# RUN: | llvm-objdump --triple=riscv32 --mattr=+c --no-print-imm-hex -d - \ 7# RUN: | FileCheck -check-prefixes=CHECK-BYTES,CHECK-ALIAS,CHECK-ALIASOBJ32 %s 8# RUN: llvm-mc -triple riscv32 -mattr=+c -filetype=obj < %s \ 9# RUN: | llvm-objdump --triple=riscv32 --mattr=+c --no-print-imm-hex -d -M no-aliases - \ 10# RUN: | FileCheck -check-prefixes=CHECK-BYTES,CHECK-INST,CHECK-INSTOBJ32 %s 11 12# RUN: llvm-mc -triple riscv64 -mattr=+c -show-encoding < %s \ 13# RUN: | FileCheck -check-prefixes=CHECK-ALIAS,CHECK-ALIASASM %s 14# RUN: llvm-mc -triple riscv64 -mattr=+c -show-encoding \ 15# RUN: -M no-aliases < %s | FileCheck -check-prefixes=CHECK-INST,CHECK-INSTASM %s 16# RUN: llvm-mc -triple riscv64 -mattr=+c -filetype=obj < %s \ 17# RUN: | llvm-objdump --triple=riscv64 --mattr=+c --no-print-imm-hex -d - \ 18# RUN: | FileCheck -check-prefixes=CHECK-BYTES,CHECK-ALIAS,CHECK-ALIASOBJ64 %s 19# RUN: llvm-mc -triple riscv64 -mattr=+c -filetype=obj < %s \ 20# RUN: | llvm-objdump --triple=riscv64 --mattr=+c --no-print-imm-hex -d -M no-aliases - \ 21# RUN: | FileCheck -check-prefixes=CHECK-BYTES,CHECK-INST,CHECK-INSTOBJ64 %s 22 23# CHECK-BYTES: 852e 24# CHECK-ALIAS: mv a0, a1 25# CHECK-INST: c.mv a0, a1 26# CHECK: # encoding: [0x2e,0x85] 27addi a0, a1, 0 28 29# CHECK-BYTES: 1fe0 30# CHECK-ALIAS: addi s0, sp, 1020 31# CHECK-INST: c.addi4spn s0, sp, 1020 32# CHECK: # encoding: [0xe0,0x1f] 33addi s0, sp, 1020 34 35# CHECK-BYTES: 5fe0 36# CHECK-ALIAS: lw s0, 124(a5) 37# CHECK-INST: c.lw s0, 124(a5) 38# CHECK: # encoding: [0xe0,0x5f] 39lw s0, 124(a5) 40 41# CHECK-BYTES: dfe0 42# CHECK-ALIAS: sw s0, 124(a5) 43# CHECK-INST: c.sw s0, 124(a5) 44# CHECK: # encoding: [0xe0,0xdf] 45sw s0, 124(a5) 46 47# CHECK-BYTES: 0001 48# CHECK-ALIAS: nop 49# CHECK-INST: c.nop 50# CHECK: # encoding: [0x01,0x00] 51nop 52 53# CHECK-BYTES: 1081 54# CHECK-ALIAS: addi ra, ra, -32 55# CHECK-INST: c.addi ra, -32 56# CHECK: # encoding: [0x81,0x10] 57addi ra, ra, -32 58 59# CHECK-BYTES: 5085 60# CHECK-ALIAS: li ra, -31 61# CHECK-INST: c.li ra, -31 62# CHECK: # encoding: [0x85,0x50] 63li ra, -31 64 65# CHECK-BYTES: 7139 66# CHECK-ALIAS: addi sp, sp, -64 67# CHECK-INST: c.addi16sp sp, -64 68# CHECK: # encoding: [0x39,0x71] 69addi sp, sp, -64 70 71# CHECK-BYTES: 61fd 72# CHECK-ALIAS: lui gp, 31 73# CHECK-INST: c.lui gp, 31 74# CHECK: # encoding: [0xfd,0x61] 75lui gp, 31 76 77# CHECK-BYTES: 807d 78# CHECK-ALIAS: srli s0, s0, 31 79# CHECK-INST: c.srli s0, 31 80# CHECK: # encoding: [0x7d,0x80] 81srli s0, s0, 31 82 83# CHECK-BYTES: 847d 84# CHECK-ALIAS: srai s0, s0, 31 85# CHECK-INST: c.srai s0, 31 86# CHECK: # encoding: [0x7d,0x84] 87srai s0, s0, 31 88 89# CHECK-BYTES: 887d 90# CHECK-ALIAS: andi s0, s0, 31 91# CHECK-INST: c.andi s0, 31 92# CHECK: # encoding: [0x7d,0x88] 93andi s0, s0, 31 94 95# CHECK-BYTES: 8c1d 96# CHECK-ALIAS: sub s0, s0, a5 97# CHECK-INST: c.sub s0, a5 98# CHECK: # encoding: [0x1d,0x8c] 99sub s0, s0, a5 100 101# CHECK-BYTES: 8c3d 102# CHECK-ALIAS: xor s0, s0, a5 103# CHECK-INST: c.xor s0, a5 104# CHECK: # encoding: [0x3d,0x8c] 105xor s0, s0, a5 106 107# CHECK-BYTES: 8c3d 108# CHECK-ALIAS: xor s0, s0, a5 109# CHECK-INST: c.xor s0, a5 110# CHECK: # encoding: [0x3d,0x8c] 111xor s0, a5, s0 112 113# CHECK-BYTES: 8c5d 114# CHECK-ALIAS: or s0, s0, a5 115# CHECK-INST: c.or s0, a5 116# CHECK: # encoding: [0x5d,0x8c] 117or s0, s0, a5 118 119# CHECK-BYTES: 8c45 120# CHECK-ALIAS: or s0, s0, s1 121# CHECK-INST: c.or s0, s1 122# CHECK: # encoding: [0x45,0x8c] 123or s0, s1, s0 124 125# CHECK-BYTES: 8c7d 126# CHECK-ALIAS: and s0, s0, a5 127# CHECK-INST: c.and s0, a5 128# CHECK: # encoding: [0x7d,0x8c] 129and s0, s0, a5 130 131# CHECK-BYTES: 8c7d 132# CHECK-ALIAS: and s0, s0, a5 133# CHECK-INST: c.and s0, a5 134# CHECK: # encoding: [0x7d,0x8c] 135and s0, a5, s0 136 137# CHECK-BYTES: b001 138# CHECK-ALIASASM: j -2048 139# CHECK-ALIASOBJ32: j 0xfffff826 140# CHECK-ALIASOBJ64: j 0xfffffffffffff826 141# CHECK-INSTASM: c.j -2048 142# CHECK-INSTOBJ32: c.j 0xfffff826 143# CHECK-INSTOBJ64: c.j 0xfffffffffffff826 144# CHECK: # encoding: [0x01,0xb0] 145jal zero, -2048 146 147# CHECK-BYTES: d001 148# CHECK-ALIASASM: beqz s0, -256 149# CHECK-ALIASOBJ32: beqz s0, 0xffffff28 150# CHECK-ALIASOBJ64: beqz s0, 0xffffffffffffff28 151# CHECK-INSTASM: c.beqz s0, -256 152# CHECK-INSTOBJ32: c.beqz s0, 0xffffff28 153# CHECK-INSTOBJ64: c.beqz s0, 0xffffffffffffff28 154# CHECK: # encoding: [0x01,0xd0] 155beq s0, zero, -256 156 157# CHECK-BYTES: d001 158# CHECK-ALIASASM: beqz s0, -256 159# CHECK-ALIASOBJ32: beqz s0, 0xffffff2a 160# CHECK-ALIASOBJ64: beqz s0, 0xffffffffffffff2a 161# CHECK-INSTASM: c.beqz s0, -256 162# CHECK-INSTOBJ32: c.beqz s0, 0xffffff2a 163# CHECK-INSTOBJ64: c.beqz s0, 0xffffffffffffff2a 164# CHECK: # encoding: [0x01,0xd0] 165beq zero, s0, -256 166 167# CHECK-BYTES: ec7d 168# CHECK-ALIASASM: bnez s0, 254 169# CHECK-ALIASOBJ32: bnez s0, 0x12a 170# CHECK-ALIASOBJ64: bnez s0, 0x12a 171# CHECK-INSTASM: c.bnez s0, 254 172# CHECK-INSTOBJ32: c.bnez s0, 0x12a 173# CHECK-INSTOBJ64: c.bnez s0, 0x12a 174# CHECK: # encoding: [0x7d,0xec] 175bne s0, zero, 254 176 177# CHECK-BYTES: ec7d 178# CHECK-ALIASASM: bnez s0, 254 179# CHECK-ALIASOBJ32: bnez s0, 0x12c 180# CHECK-ALIASOBJ64: bnez s0, 0x12c 181# CHECK-INSTASM: c.bnez s0, 254 182# CHECK-INSTOBJ32: c.bnez s0, 0x12c 183# CHECK-INSTOBJ64: c.bnez s0, 0x12c 184# CHECK: # encoding: [0x7d,0xec] 185bne zero, s0, 254 186 187# CHECK-BYTES: 047e 188# CHECK-ALIAS: slli s0, s0, 31 189# CHECK-INST: c.slli s0, 31 190# CHECK: # encoding: [0x7e,0x04] 191slli s0, s0, 31 192 193# CHECK-BYTES: 50fe 194# CHECK-ALIAS: lw ra, 252(sp) 195# CHECK-INST: c.lwsp ra, 252(sp) 196# CHECK: # encoding: [0xfe,0x50] 197lw ra, 252(sp) 198 199# CHECK-BYTES: 8082 200# CHECK-ALIAS: ret 201# CHECK-INST: c.jr ra 202# CHECK: # encoding: [0x82,0x80] 203jalr zero, 0(ra) 204 205# CHECK-BYTES: 8092 206# CHECK-ALIAS: mv ra, tp 207# CHECK-INST: c.mv ra, tp 208# CHECK: # encoding: [0x92,0x80] 209add ra, zero, tp 210 211# CHECK-BYTES: 8092 212# CHECK-ALIAS: mv ra, tp 213# CHECK-INST: c.mv ra, tp 214# CHECK: # encoding: [0x92,0x80] 215add ra, tp, zero 216 217# CHECK-BYTES: 9002 218# CHECK-ALIAS: ebreak 219# CHECK-INST: c.ebreak 220# CHECK: # encoding: [0x02,0x90] 221ebreak 222 223# CHECK-BYTES: 9402 224# CHECK-ALIAS: jalr s0 225# CHECK-INST: c.jalr s0 226# CHECK: # encoding: [0x02,0x94] 227jalr ra, 0(s0) 228 229# CHECK-BYTES: 943e 230# CHECK-ALIAS: add s0, s0, a5 231# CHECK-INST: c.add s0, a5 232# CHECK: # encoding: [0x3e,0x94] 233add s0, a5, s0 234 235# CHECK-BYTES: 943e 236# CHECK-ALIAS: add s0, s0, a5 237# CHECK-INST: c.add s0, a5 238# CHECK: # encoding: [0x3e,0x94] 239add s0, s0, a5 240 241# CHECK-BYTES: df82 242# CHECK-ALIAS: sw zero, 252(sp) 243# CHECK-INST: c.swsp zero, 252(sp) 244# CHECK: # encoding: [0x82,0xdf] 245sw zero, 252(sp) 246 247# CHECK-BYTES: 0000 248# CHECK-ALIAS: unimp 249# CHECK-INST: c.unimp 250# CHECK: # encoding: [0x00,0x00] 251unimp 252