brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.0 KiB · 7edde9e Raw
220 lines · plain
1# RUN: llvm-mc %s -triple=riscv32 -mattr=+f -M no-aliases -show-encoding \2# RUN:     | FileCheck -check-prefixes=CHECK-ASM %s3# RUN: llvm-mc %s -triple riscv64 -mattr=+f -M no-aliases -show-encoding \4# RUN:     | FileCheck -check-prefixes=CHECK-ASM %s5# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+f < %s \6# RUN:     | llvm-objdump --mattr=+f -M no-aliases -d -r - \7# RUN:     | FileCheck -check-prefixes=CHECK-OBJ %s8# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+f < %s \9# RUN:     | llvm-objdump --mattr=+f -M no-aliases -d -r - \10# RUN:     | FileCheck -check-prefixes=CHECK-OBJ %s11 12target:13 14# CHECK-ASM: .insn r 51, 0, 0, a0, a1, a215# CHECK-ASM: encoding: [0x33,0x85,0xc5,0x00]16# CHECK-OBJ: add a0, a1, a217.insn r  0x33,  0,  0, a0, a1, a218# CHECK-ASM: .insn r 51, 0, 0, a0, a1, a219# CHECK-ASM: encoding: [0x33,0x85,0xc5,0x00]20# CHECK-OBJ: add a0, a1, a221.insn r  OP,  0,  0, a0, a1, a222 23# CHECK-ASM: .insn i 19, 0, a0, a1, 1324# CHECK-ASM: encoding: [0x13,0x85,0xd5,0x00]25# CHECK-OBJ: addi a0, a1, 0xd26.insn i  0x13,  0, a0, a1, 1327# CHECK-ASM: .insn i 19, 0, a0, a1, 1328# CHECK-ASM: encoding: [0x13,0x85,0xd5,0x00]29# CHECK-OBJ: addi a0, a1, 0xd30.insn i  OP_IMM,  0, a0, a1, 1331 32# CHECK-ASM: .insn i 103, 0, a0, 10(a1)33# CHECK-ASM: encoding: [0x67,0x85,0xa5,0x00]34# CHECK-OBJ: jalr a0, 0xa(a1)35.insn i  0x67,  0, a0, 10(a1)36# CHECK-ASM: .insn i 103, 0, a0, 10(a1)37# CHECK-ASM: encoding: [0x67,0x85,0xa5,0x00]38# CHECK-OBJ: jalr a0, 0xa(a1)39.insn i  JALR,  0, a0, 10(a1)40 41# CHECK-ASM: .insn i 103, 0, a0, 0(a1)42# CHECK-ASM: encoding: [0x67,0x85,0x05,0x00]43# CHECK-OBJ: jalr a0, 0x0(a1)44.insn i  0x67,  0, a0, (a1)45# CHECK-ASM: .insn i 103, 0, a0, 0(a1)46# CHECK-ASM: encoding: [0x67,0x85,0x05,0x00]47# CHECK-OBJ: jalr a0, 0x0(a1)48.insn i  JALR,  0, a0, (a1)49 50# CHECK-ASM: .insn i 3, 0, a0, 4(a1)51# CHECK-ASM: encoding: [0x03,0x85,0x45,0x00]52# CHECK-OBJ: lb a0, 0x4(a1)53.insn i   0x3,  0, a0, 4(a1)54# CHECK-ASM: .insn i 3, 0, a0, 4(a1)55# CHECK-ASM: encoding: [0x03,0x85,0x45,0x00]56# CHECK-OBJ: lb a0, 0x4(a1)57.insn i   LOAD,  0, a0, 4(a1)58 59# CHECK-ASM: .insn i 3, 0, a0, 0(a1)60# CHECK-ASM: encoding: [0x03,0x85,0x05,0x00]61# CHECK-OBJ: lb a0, 0x0(a1)62.insn i   0x3,  0, a0, (a1)63# CHECK-ASM: .insn i 3, 0, a0, 0(a1)64# CHECK-ASM: encoding: [0x03,0x85,0x05,0x00]65# CHECK-OBJ: lb a0, 0x0(a1)66.insn i   LOAD,  0, a0, (a1)67 68# CHECK-ASM: .insn b 99, 0, a0, a1, target69# CHECK-ASM: [0x63'A',A,0xb5'A',A]70# CHECK-OBJ: beq a0, a1, 0x0 <target>71.insn sb 0x63,  0, a0, a1, target72# CHECK-ASM: .insn b 99, 0, a0, a1, target73# CHECK-ASM: [0x63'A',A,0xb5'A',A]74# CHECK-OBJ: beq a0, a1, 0x0 <target>75.insn sb BRANCH,  0, a0, a1, target76 77# CHECK-ASM: .insn b 99, 0, a0, a1, target78# CHECK-ASM: [0x63'A',A,0xb5'A',A]79# CHECK-OBJ: beq a0, a1, 0x0 <target>80.insn b  0x63,  0, a0, a1, target81# CHECK-ASM: .insn b 99, 0, a0, a1, target82# CHECK-ASM: [0x63'A',A,0xb5'A',A]83# CHECK-OBJ: beq a0, a1, 0x0 <target>84.insn b  BRANCH,  0, a0, a1, target85 86# CHECK-ASM: .insn s 35, 0, a0, 4(a1)87# CHECK-ASM: encoding: [0x23,0x82,0xa5,0x00]88# CHECK-OBJ: sb a0, 0x4(a1)89.insn s  0x23,  0, a0, 4(a1)90# CHECK-ASM: .insn s 35, 0, a0, 4(a1)91# CHECK-ASM: encoding: [0x23,0x82,0xa5,0x00]92# CHECK-OBJ: sb a0, 0x4(a1)93.insn s  STORE,  0, a0, 4(a1)94 95# CHECK-ASM: .insn s 35, 0, a0, 0(a1)96# CHECK-ASM: encoding: [0x23,0x80,0xa5,0x00]97# CHECK-OBJ: sb a0, 0x0(a1)98.insn s  0x23,  0, a0, (a1)99# CHECK-ASM: .insn s 35, 0, a0, 0(a1)100# CHECK-ASM: encoding: [0x23,0x80,0xa5,0x00]101# CHECK-OBJ: sb a0, 0x0(a1)102.insn s  STORE,  0, a0, (a1)103 104# CHECK-ASM: .insn u 55, a0, 4095105# CHECK-ASM: encoding: [0x37,0xf5,0xff,0x00]106# CHECK-OBJ: lui a0, 0xfff107.insn u  0x37, a0, 0xfff108# CHECK-ASM: .insn u 55, a0, 4095109# CHECK-ASM: encoding: [0x37,0xf5,0xff,0x00]110# CHECK-OBJ: lui a0, 0xfff111.insn u  LUI, a0, 0xfff112 113# CHECK-ASM: .insn j 111, a0, target114# CHECK-ASM: encoding: [0x6f,0bAAAA0101,A,A]115# CHECK-OBJ: jal a0, 0x0 <target>116.insn uj 0x6f, a0, target117# CHECK-ASM: .insn j 111, a0, target118# CHECK-ASM: encoding: [0x6f,0bAAAA0101,A,A]119# CHECK-OBJ: jal a0, 0x0 <target>120.insn uj JAL, a0, target121 122# CHECK-ASM: .insn j 111, a0, target123# CHECK-ASM: encoding: [0x6f,0bAAAA0101,A,A]124# CHECK-OBJ: jal a0, 0x0 <target>125.insn j  0x6f, a0, target126# CHECK-ASM: .insn j 111, a0, target127# CHECK-ASM: encoding: [0x6f,0bAAAA0101,A,A]128# CHECK-OBJ: jal a0, 0x0 <target>129.insn j  JAL, a0, target130 131# CHECK-ASM: .insn r4 67, 0, 0, fa0, fa1, fa2, fa3132# CHECK-ASM: encoding: [0x43,0x85,0xc5,0x68]133# CHECK-OBJ: fmadd.s fa0, fa1, fa2, fa3, rne134.insn r  0x43,  0,  0, fa0, fa1, fa2, fa3135# CHECK-ASM: .insn r4 67, 0, 0, fa0, fa1, fa2, fa3136# CHECK-ASM: encoding: [0x43,0x85,0xc5,0x68]137# CHECK-OBJ: fmadd.s fa0, fa1, fa2, fa3, rne138.insn r  MADD,  0,  0, fa0, fa1, fa2, fa3139 140# CHECK-ASM: .insn r4 67, 0, 0, fa0, fa1, fa2, fa3141# CHECK-ASM: encoding: [0x43,0x85,0xc5,0x68]142# CHECK-OBJ: fmadd.s fa0, fa1, fa2, fa3, rne143.insn r4 0x43,  0,  0, fa0, fa1, fa2, fa3144# CHECK-ASM: .insn r4 67, 0, 0, fa0, fa1, fa2, fa3145# CHECK-ASM: encoding: [0x43,0x85,0xc5,0x68]146# CHECK-OBJ: fmadd.s fa0, fa1, fa2, fa3, rne147.insn r4 MADD,  0,  0, fa0, fa1, fa2, fa3148 149# CHECK-ASM: .insn i 3, 5, t1, %lo(2048)(t2)150# CHECK-ASM: encoding: [0x03,0xd3,0bAAAA0011,A]151# CHECK-OBJ: lhu t1, -0x800(t2)152.insn i 0x3, 0x5, x6, %lo(2048)(x7)153# CHECK-ASM: .insn i 3, 5, t1, %lo(2048)(t2)154# CHECK-ASM: encoding: [0x03,0xd3,0bAAAA0011,A]155# CHECK-OBJ: lhu t1, -0x800(t2)156.insn i LOAD, 0x5, x6, %lo(2048)(x7)157 158# CHECK-ASM: .insn 0x4, 19159# CHECK-ASM: encoding: [0x13,0x00,0x00,0x00]160# CHECK-OBJ: addi zero, zero, 0x0161.insn 0x13162 163# CHECK-ASM: .insn 0x4, 19164# CHECK-ASM: encoding: [0x13,0x00,0x00,0x00]165# CHECK-OBJ: addi zero, zero, 0x0166.insn 0x4, 0x13167 168# CHECK-ASM: .insn 0x6, 31169# CHECK-ASM: encoding: [0x1f,0x00,0x00,0x00,0x00,0x00]170# CHECK-OBJ: <unknown>171.insn 6, 0x1f172 173# CHECK-ASM: .insn 0x8, 63174# CHECK-ASM: encoding: [0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00]175# CHECK-OBJ: <unknown>176.insn 8, 0x3f177 178# CHECK-ASM: .insn 0x6, 281474976710623179# CHECK-ASM: encoding: [0xdf,0xff,0xff,0xff,0xff,0xff]180# CHECK-OBJ: <unknown>181.insn 0x6, 0xffffffffffdf182 183# CHECK-ASM: .insn 0x8, -65184# CHECK-ASM: encoding: [0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff]185# CHECK-OBJ: <unknown>186.insn 0x8, 0xffffffffffffffbf187 188# CHECK-ASM: .insn 0x4, 3971189# CHECK-ASM: encoding: [0x83,0x0f,0x00,0x00]190# CHECK-OBJ: lb t6, 0x0(zero)191.insn 0x2 + 0x2, 0x3 | (31 << 7)192 193# CHECK-ASM: .insn 0x8, -576460752303423297194# CHECK-ASM: encoding: [0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0xf8]195# CHECK-OBJ: <unknown>196.insn 0x4 * 0x2, 0xbf | (31 << 59)197 198odd_lengths:199# CHECK-ASM-LABEL: odd_lengths:200# CHECK-OBJ-LABEL: <odd_lengths>:201 202## These deliberately disagree with the lengths objdump expects them to have, so203## keep them at the end so that the disassembled instruction stream is not out204## of sync with the encoded instruction stream. We don't check for `<unknown>`205## as we could get any number of those, so instead check for the encoding206## halfwords. These might be split into odd 16-bit chunks, so each chunk is on207## one line.208 209# CHECK-ASM: .insn 0x4, 65503210# CHECK-ASM: encoding: [0xdf,0xff,0x00,0x00]211# CHECK-OBJ: ffdf212# CHECK-OBJ: 0000213.insn 0xffdf214 215# CHECK-ASM: .insn 0x4, 65471216# CHECK-ASM: encoding: [0xbf,0xff,0x00,0x00]217# CHECK-OBJ: ffbf218# CHECK-OBJ: 0000219.insn 0xffbf220