1# RUN: llvm-mc %s -triple=riscv32 -M no-aliases \ 2# RUN: | FileCheck -check-prefixes=CHECK-EXPAND,CHECK-INST,CHECK-ASM-NOALIAS %s 3# RUN: llvm-mc %s -triple=riscv32 \ 4# RUN: | FileCheck -check-prefixes=CHECK-EXPAND,CHECK-ALIAS,CHECK-ASM %s 5# RUN: llvm-mc -filetype=obj -triple riscv32 < %s \ 6# RUN: | llvm-objdump -M no-aliases --no-print-imm-hex -d -r - \ 7# RUN: | FileCheck -check-prefixes=CHECK-OBJ-NOALIAS,CHECK-EXPAND,CHECK-INST %s 8# RUN: llvm-mc -filetype=obj -triple riscv32 < %s \ 9# RUN: | llvm-objdump --no-print-imm-hex -d -r - \ 10# RUN: | FileCheck -check-prefixes=CHECK-EXPAND,CHECK-ALIAS %s 11 12# The following check prefixes are used in this test: 13# CHECK-INST.....Match the canonical instr (tests alias to instr. mapping) 14# CHECK-ALIAS....Match the alias (tests instr. to alias mapping) 15# CHECK-EXPAND...Match canonical instr. unconditionally (tests alias expansion) 16 17# Needed for testing valid %pcrel_lo expressions 18.Lpcrel_hi0: auipc a0, %pcrel_hi(foo) 19 20# Needed for testing li with a symbol difference 21.Lbuf: .skip 8 22.Lbuf_end: 23 24# CHECK-INST: addi a0, zero, 0 25# CHECK-ALIAS: li a0, 0 26li x10, 0 27# CHECK-INST: addi a0, zero, 1 28# CHECK-ALIAS: li a0, 1 29li x10, 1 30# CHECK-INST: addi a0, zero, -1 31# CHECK-ALIAS: li a0, -1 32li x10, -1 33# CHECK-INST: addi a0, zero, 2047 34# CHECK-ALIAS: li a0, 2047 35li x10, 2047 36# CHECK-INST: addi a0, zero, -2047 37# CHECK-ALIAS: li a0, -2047 38li x10, -2047 39# CHECK-INST: addi a1, zero, 1 40# CHECK-INST: slli a1, a1, 11 41# CHECK-ALIAS: li a1, 1 42# CHECK-ALIAS: slli a1, a1, 11 43li x11, 2048 44# CHECK-INST: addi a1, zero, -2048 45# CHECK-ALIAS: li a1, -2048 46li x11, -2048 47# CHECK-EXPAND: lui a1, 1 48# CHECK-EXPAND: addi a1, a1, -2047 49li x11, 2049 50# CHECK-EXPAND: lui a1, 1048575 51# CHECK-EXPAND: addi a1, a1, 2047 52li x11, -2049 53# CHECK-EXPAND: lui a1, 1 54# CHECK-EXPAND: addi a1, a1, -1 55li x11, 4095 56# CHECK-EXPAND: lui a1, 1048575 57# CHECK-EXPAND: addi a1, a1, 1 58li x11, -4095 59# CHECK-EXPAND: lui a2, 1 60li x12, 4096 61# CHECK-EXPAND: lui a2, 1048575 62li x12, -4096 63# CHECK-EXPAND: lui a2, 1 64# CHECK-EXPAND: addi a2, a2, 1 65li x12, 4097 66# CHECK-EXPAND: lui a2, 1048575 67# CHECK-EXPAND: addi a2, a2, -1 68li x12, -4097 69# CHECK-EXPAND: lui a2, 524288 70# CHECK-EXPAND: addi a2, a2, -1 71li x12, 2147483647 72# CHECK-EXPAND: lui a2, 524288 73# CHECK-EXPAND: addi a2, a2, 1 74li x12, -2147483647 75# CHECK-EXPAND: lui a2, 524288 76li x12, -2147483648 77# CHECK-EXPAND: lui a2, 524288 78li x12, -0x80000000 79 80# CHECK-EXPAND: lui a2, 524288 81li x12, 0x80000000 82# CHECK-INST: addi a2, zero, -1 83# CHECK-ALIAS: li a2, -1 84li x12, 0xFFFFFFFF 85 86# CHECK-INST: addi a0, zero, 1110 87# CHECK-ALIAS: li a0, 1110 88li a0, %lo(0x123456) 89 90# CHECK-OBJ-NOALIAS: addi a0, zero, 0 91# CHECK-OBJ: R_RISCV_LO12 92li a0, %lo(foo) 93# CHECK-OBJ-NOALIAS: addi a0, zero, 0 94# CHECK-OBJ: R_RISCV_PCREL_LO12 95li a0, %pcrel_lo(.Lpcrel_hi0) 96 97.equ CONST, 0x123456 98# CHECK-EXPAND: lui a0, 291 99# CHECK-EXPAND: addi a0, a0, 1110 100li a0, CONST 101# CHECK-EXPAND: lui a0, 291 102# CHECK-EXPAND: addi a0, a0, 1111 103li a0, CONST+1 104 105.equ CONST, 0x654321 106# CHECK-EXPAND: lui a0, 1620 107# CHECK-EXPAND: addi a0, a0, 801 108li a0, CONST 109 110.equ CONST, .Lbuf_end - .Lbuf 111# CHECK-ASM: li a0, CONST 112# CHECK-ASM-NOALIAS: addi a0, zero, CONST 113# CHECK-OBJ-NOALIAS: addi a0, zero, 8 114li a0, CONST 115 116# CHECK-ASM: addi a0, zero, .Lbuf_end-.Lbuf 117# CHECK-ASM-NOALIAS: addi a0, zero, .Lbuf_end-.Lbuf 118# CHECK-OBJ-NOALIAS: addi a0, zero, 8 119li a0, .Lbuf_end - .Lbuf 120 121# CHECK-INST: addi a0, zero, 0 122# CHECK-ALIAS: li a0, 0 123la x10, 0 124lla x10, 0 125# CHECK-INST: addi a0, zero, 1 126# CHECK-ALIAS: li a0, 1 127la x10, 1 128lla x10, 1 129# CHECK-INST: addi a0, zero, -1 130# CHECK-ALIAS: li a0, -1 131la x10, -1 132lla x10, -1 133# CHECK-INST: addi a0, zero, 2047 134# CHECK-ALIAS: li a0, 2047 135la x10, 2047 136lla x10, 2047 137# CHECK-INST: addi a0, zero, -2047 138# CHECK-ALIAS: li a0, -2047 139la x10, -2047 140lla x10, -2047 141# CHECK-INST: addi a1, zero, 1 142# CHECK-INST: slli a1, a1, 11 143# CHECK-ALIAS: li a1, 1 144# CHECK-ALIAS: slli a1, a1, 11 145la x11, 2048 146lla x11, 2048 147# CHECK-INST: addi a1, zero, -2048 148# CHECK-ALIAS: li a1, -2048 149la x11, -2048 150lla x11, -2048 151# CHECK-EXPAND: lui a1, 1 152# CHECK-EXPAND: addi a1, a1, -2047 153la x11, 2049 154lla x11, 2049 155# CHECK-EXPAND: lui a1, 1048575 156# CHECK-EXPAND: addi a1, a1, 2047 157la x11, -2049 158lla x11, -2049 159# CHECK-EXPAND: lui a1, 1 160# CHECK-EXPAND: addi a1, a1, -1 161la x11, 4095 162lla x11, 4095 163# CHECK-EXPAND: lui a1, 1048575 164# CHECK-EXPAND: addi a1, a1, 1 165la x11, -4095 166lla x11, -4095 167# CHECK-EXPAND: lui a2, 1 168la x12, 4096 169lla x12, 4096 170# CHECK-EXPAND: lui a2, 1048575 171la x12, -4096 172lla x12, -4096 173# CHECK-EXPAND: lui a2, 1 174# CHECK-EXPAND: addi a2, a2, 1 175la x12, 4097 176lla x12, 4097 177# CHECK-EXPAND: lui a2, 1048575 178# CHECK-EXPAND: addi a2, a2, -1 179la x12, -4097 180lla x12, -4097 181# CHECK-EXPAND: lui a2, 524288 182# CHECK-EXPAND: addi a2, a2, -1 183la x12, 2147483647 184lla x12, 2147483647 185# CHECK-EXPAND: lui a2, 524288 186# CHECK-EXPAND: addi a2, a2, 1 187la x12, -2147483647 188lla x12, -2147483647 189# CHECK-EXPAND: lui a2, 524288 190la x12, -2147483648 191lla x12, -2147483648 192# CHECK-EXPAND: lui a2, 524288 193la x12, -0x80000000 194lla x12, -0x80000000 195 196# CHECK-EXPAND: lui a2, 524288 197la x12, 0x80000000 198lla x12, 0x80000000 199# CHECK-INST: addi a2, zero, -1 200# CHECK-ALIAS: li a2, -1 201la x12, 0xFFFFFFFF 202lla x12, 0xFFFFFFFF 203 204.equ CONSTANT, 0x123456 205# CHECK-EXPAND: lui a0, 291 206# CHECK-EXPAND: addi a0, a0, 1110 207la a0, CONSTANT 208lla a0, CONSTANT 209# CHECK-EXPAND: lui a0, 291 210# CHECK-EXPAND: addi a0, a0, 1111 211la a0, CONSTANT+1 212lla a0, CONSTANT+1 213 214.equ CONSTANT, 0x654321 215# CHECK-EXPAND: lui a0, 1620 216# CHECK-EXPAND: addi a0, a0, 801 217la a0, CONSTANT 218lla a0, CONSTANT 219 220# CHECK-INST: csrrs t4, instreth, zero 221# CHECK-ALIAS: rdinstreth t4 222rdinstreth x29 223# CHECK-INST: csrrs s11, cycleh, zero 224# CHECK-ALIAS: rdcycleh s11 225rdcycleh x27 226# CHECK-INST: csrrs t3, timeh, zero 227# CHECK-ALIAS: rdtimeh t3 228rdtimeh x28 229 230# CHECK-EXPAND: lb a0, 0(a1) 231lb x10, (x11) 232# CHECK-EXPAND: lh a0, 0(a1) 233lh x10, (x11) 234# CHECK-EXPAND: lw a0, 0(a1) 235lw x10, (x11) 236# CHECK-EXPAND: lbu a0, 0(a1) 237lbu x10, (x11) 238# CHECK-EXPAND: lhu a0, 0(a1) 239lhu x10, (x11) 240 241# CHECK-EXPAND: sb a0, 0(a1) 242sb x10, (x11) 243# CHECK-EXPAND: sh a0, 0(a1) 244sh x10, (x11) 245# CHECK-EXPAND: sw a0, 0(a1) 246sw x10, (x11) 247 248# CHECK-EXPAND: slli a0, a1, 24 249# CHECK-EXPAND: srai a0, a0, 24 250sext.b x10, x11 251 252# CHECK-EXPAND: slli a0, a1, 16 253# CHECK-EXPAND: srai a0, a0, 16 254sext.h x10, x11 255 256# CHECK-INST: andi a0, a1, 255 257# CHECK-ALIAS: andi a0, a1, 255 258zext.b x10, x11 259 260# CHECK-EXPAND: slli a0, a1, 16 261# CHECK-EXPAND: srli a0, a0, 16 262zext.h x10, x11 263