summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorAna Pazos <apazos@codeaurora.org>2018-01-18 18:54:05 +0000
committerAna Pazos <apazos@codeaurora.org>2018-01-18 18:54:05 +0000
commit1b57c7a0f44c0f76b398ffcef6a64bef7ec17d07 (patch)
tree1148271d984df73ed09d57c1982c703924f87810 /llvm/test
parentd05541f7d6ec3db9210b4cdd3d1f3a5e549ebdf5 (diff)
downloadbcm5719-llvm-1b57c7a0f44c0f76b398ffcef6a64bef7ec17d07.tar.gz
bcm5719-llvm-1b57c7a0f44c0f76b398ffcef6a64bef7ec17d07.zip
[RISCV] Fixed setting predicates for compressed instructions.
Summary: Fixed setting predicates for compressed instructions. Some instructions were being generated with C extension enabled only, without proper checks for the other required extensions like F, D and 32 and 64-bit target checks. Affected instructions: C_FLD, C_FLW, C_LD, C_FSD, C_FSW, C_SD, C_JAL, C_ADDIW, C_SUBW, C_ADDW, C_FLDSP, C_FLWSP, C_LDSP, C_FSDSP, C_FSWSP, C_SDSP Reviewers: asb, shiva0217 Reviewed By: asb Subscribers: rbar, johnrusso, simoncook, jordy.potman.lists, sabuasal, niosHD, llvm-commits Differential Revision: https://reviews.llvm.org/D42132 llvm-svn: 322876
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/MC/RISCV/rv32c-only-valid.s7
-rw-r--r--llvm/test/MC/RISCV/rv32dc-valid.s10
-rw-r--r--llvm/test/MC/RISCV/rv32fc-valid.s14
-rw-r--r--llvm/test/MC/RISCV/rv64c-valid.s14
-rw-r--r--llvm/test/MC/RISCV/rv64dc-valid.s29
5 files changed, 74 insertions, 0 deletions
diff --git a/llvm/test/MC/RISCV/rv32c-only-valid.s b/llvm/test/MC/RISCV/rv32c-only-valid.s
index 468cfcddcb6..dc985fc1a5e 100644
--- a/llvm/test/MC/RISCV/rv32c-only-valid.s
+++ b/llvm/test/MC/RISCV/rv32c-only-valid.s
@@ -2,7 +2,14 @@
# RUN: | FileCheck -check-prefixes=CHECK,CHECK-INST %s
# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+c -riscv-no-aliases < %s \
# RUN: | llvm-objdump -mattr=+c -d - | FileCheck -check-prefix=CHECK-INST %s
+# RUN: not llvm-mc -triple riscv32 \
+# RUN: -riscv-no-aliases -show-encoding < %s 2>&1 \
+# RUN: | FileCheck -check-prefixes=CHECK-NO-EXT %s
+# RUN: not llvm-mc -triple riscv64 -mattr=+c \
+# RUN: -riscv-no-aliases -show-encoding < %s 2>&1 \
+# RUN: | FileCheck -check-prefixes=CHECK-NO-EXT %s
# CHECK-INST: c.jal 2046
# CHECK: encoding: [0xfd,0x2f]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.jal 2046
diff --git a/llvm/test/MC/RISCV/rv32dc-valid.s b/llvm/test/MC/RISCV/rv32dc-valid.s
index b6c7bb37d26..507b39170ec 100644
--- a/llvm/test/MC/RISCV/rv32dc-valid.s
+++ b/llvm/test/MC/RISCV/rv32dc-valid.s
@@ -3,17 +3,27 @@
# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+c,+d < %s \
# RUN: | llvm-objdump -mattr=+c,+d -riscv-no-aliases -d - \
# RUN: | FileCheck -check-prefix=CHECK-INST %s
+# RUN: not llvm-mc -triple riscv32 -mattr=+c\
+# RUN: -riscv-no-aliases -show-encoding < %s 2>&1 \
+# RUN: | FileCheck -check-prefixes=CHECK-NO-EXT %s
+# RUN: not llvm-mc -triple riscv32 \
+# RUN: -riscv-no-aliases -show-encoding < %s 2>&1 \
+# RUN: | FileCheck -check-prefixes=CHECK-NO-EXT %s
# CHECK-INST: c.fldsp fs0, 504(sp)
# CHECK: encoding: [0x7e,0x34]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.fldsp fs0, 504(sp)
# CHECK-INST: c.fsdsp fa7, 504(sp)
# CHECK: encoding: [0xc6,0xbf]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.fsdsp fa7, 504(sp)
# CHECK-INST: c.fld fa3, 248(a5)
# CHECK: encoding: [0xf4,0x3f]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.fld fa3, 248(a5)
# CHECK-INST: c.fsd fa2, 248(a1)
# CHECK: encoding: [0xf0,0xbd]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.fsd fa2, 248(a1)
diff --git a/llvm/test/MC/RISCV/rv32fc-valid.s b/llvm/test/MC/RISCV/rv32fc-valid.s
index d5562062ddf..b07bef9d87c 100644
--- a/llvm/test/MC/RISCV/rv32fc-valid.s
+++ b/llvm/test/MC/RISCV/rv32fc-valid.s
@@ -3,17 +3,31 @@
# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+c,+f < %s \
# RUN: | llvm-objdump -mattr=+c,+f -riscv-no-aliases -d - \
# RUN: | FileCheck -check-prefix=CHECK-INST %s
+# RUN: not llvm-mc -triple riscv32 -mattr=+c \
+# RUN: -riscv-no-aliases -show-encoding < %s 2>&1 \
+# RUN: | FileCheck -check-prefixes=CHECK-NO-EXT %s
+# RUN: not llvm-mc -triple riscv32 \
+# RUN: -riscv-no-aliases -show-encoding < %s 2>&1 \
+# RUN: | FileCheck -check-prefixes=CHECK-NO-EXT %s
+# RUN: not llvm-mc -triple riscv64 -mattr=+c,+f \
+# RUN: -riscv-no-aliases -show-encoding < %s 2>&1 \
+# RUN: | FileCheck -check-prefixes=CHECK-NO-EXT %s
+
# CHECK-INST: c.flwsp fs0, 252(sp)
# CHECK: encoding: [0x7e,0x74]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.flwsp fs0, 252(sp)
# CHECK-INST: c.fswsp fa7, 252(sp)
# CHECK: encoding: [0xc6,0xff]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.fswsp fa7, 252(sp)
# CHECK-INST: c.flw fa3, 124(a5)
# CHECK: encoding: [0xf4,0x7f]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.flw fa3, 124(a5)
# CHECK-INST: c.fsw fa2, 124(a1)
# CHECK: encoding: [0xf0,0xfd]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.fsw fa2, 124(a1)
diff --git a/llvm/test/MC/RISCV/rv64c-valid.s b/llvm/test/MC/RISCV/rv64c-valid.s
index 605695dd924..5e7b901ad0e 100644
--- a/llvm/test/MC/RISCV/rv64c-valid.s
+++ b/llvm/test/MC/RISCV/rv64c-valid.s
@@ -3,20 +3,30 @@
# RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+c < %s \
# RUN: | llvm-objdump -mattr=+c -riscv-no-aliases -d - \
# RUN: | FileCheck -check-prefix=CHECK-INST %s
+# RUN: not llvm-mc -triple riscv64 \
+# RUN: -riscv-no-aliases -show-encoding < %s 2>&1 \
+# RUN: | FileCheck -check-prefixes=CHECK-NO-EXT %s
+# RUN: not llvm-mc -triple riscv32 -mattr=+c\
+# RUN: -riscv-no-aliases -show-encoding < %s 2>&1 \
+# RUN: | FileCheck -check-prefixes=CHECK-NO-EXT %s
# TODO: more exhaustive testing of immediate encoding.
# CHECK-INST: c.ldsp ra, 0(sp)
# CHECK: encoding: [0x82,0x60]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.ldsp ra, 0(sp)
# CHECK-INST: c.sdsp ra, 504(sp)
# CHECK: encoding: [0x86,0xff]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.sdsp ra, 504(sp)
# CHECK-INST: c.ld a4, 0(a3)
# CHECK: encoding: [0x98,0x62]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.ld a4, 0(a3)
# CHECK-INST: c.sd a5, 248(a3)
# CHECK: encoding: [0xfc,0xfe]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.sd a5, 248(a3)
# CHECK-INST: c.subw a3, a4
@@ -24,17 +34,21 @@ c.sd a5, 248(a3)
c.subw a3, a4
# CHECK-INST: c.addw a0, a2
# CHECK: encoding: [0x31,0x9d]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.addw a0, a2
# CHECK-INST: c.addiw a3, -32
# CHECK: encoding: [0x81,0x36]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.addiw a3, -32
# CHECK-INST: c.addiw a3, 31
# CHECK: encoding: [0xfd,0x26]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.addiw a3, 31
# CHECK-INST: c.slli s0, 1
# CHECK: encoding: [0x06,0x04]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
c.slli s0, 1
# CHECK-INST: c.srli a3, 63
# CHECK: encoding: [0xfd,0x92]
diff --git a/llvm/test/MC/RISCV/rv64dc-valid.s b/llvm/test/MC/RISCV/rv64dc-valid.s
new file mode 100644
index 00000000000..43d39df0dcc
--- /dev/null
+++ b/llvm/test/MC/RISCV/rv64dc-valid.s
@@ -0,0 +1,29 @@
+# RUN: llvm-mc %s -triple=riscv64 -mattr=+c,+d -riscv-no-aliases -show-encoding \
+# RUN: | FileCheck -check-prefixes=CHECK,CHECK-INST %s
+# RUN: llvm-mc -filetype=obj -triple=riscv64 -mattr=+c,+d < %s \
+# RUN: | llvm-objdump -mattr=+c,+d -riscv-no-aliases -d - \
+# RUN: | FileCheck -check-prefix=CHECK-INST %s
+# RUN: not llvm-mc -triple riscv64 -mattr=+c\
+# RUN: -riscv-no-aliases -show-encoding < %s 2>&1 \
+# RUN: | FileCheck -check-prefixes=CHECK-NO-EXT %s
+# RUN: not llvm-mc -triple riscv64 \
+# RUN: -riscv-no-aliases -show-encoding < %s 2>&1 \
+# RUN: | FileCheck -check-prefixes=CHECK-NO-EXT %s
+
+# CHECK-INST: c.fldsp fs0, 504(sp)
+# CHECK: encoding: [0x7e,0x34]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
+c.fldsp fs0, 504(sp)
+# CHECK-INST: c.fsdsp fa7, 504(sp)
+# CHECK: encoding: [0xc6,0xbf]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
+c.fsdsp fa7, 504(sp)
+
+# CHECK-INST: c.fld fa3, 248(a5)
+# CHECK: encoding: [0xf4,0x3f]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
+c.fld fa3, 248(a5)
+# CHECK-INST: c.fsd fa2, 248(a1)
+# CHECK: encoding: [0xf0,0xbd]
+# CHECK-NO-EXT: error: instruction use requires an option to be enabled
+c.fsd fa2, 248(a1)
OpenPOWER on IntegriCloud