diff options
author | Ana Pazos <apazos@codeaurora.org> | 2018-01-18 18:54:05 +0000 |
---|---|---|
committer | Ana Pazos <apazos@codeaurora.org> | 2018-01-18 18:54:05 +0000 |
commit | 1b57c7a0f44c0f76b398ffcef6a64bef7ec17d07 (patch) | |
tree | 1148271d984df73ed09d57c1982c703924f87810 /llvm/test | |
parent | d05541f7d6ec3db9210b4cdd3d1f3a5e549ebdf5 (diff) | |
download | bcm5719-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.s | 7 | ||||
-rw-r--r-- | llvm/test/MC/RISCV/rv32dc-valid.s | 10 | ||||
-rw-r--r-- | llvm/test/MC/RISCV/rv32fc-valid.s | 14 | ||||
-rw-r--r-- | llvm/test/MC/RISCV/rv64c-valid.s | 14 | ||||
-rw-r--r-- | llvm/test/MC/RISCV/rv64dc-valid.s | 29 |
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) |