[llvm] d163ae8 - [LoongArch][MC] Add invalid immediate testcases for LASX instructions

via llvm-commits llvm-commits at lists.llvm.org
Sat Aug 19 02:16:28 PDT 2023


Author: chenli
Date: 2023-08-19T17:16:12+08:00
New Revision: d163ae8c255f663707d4b0d5de03fcb18274b3eb

URL: https://github.com/llvm/llvm-project/commit/d163ae8c255f663707d4b0d5de03fcb18274b3eb
DIFF: https://github.com/llvm/llvm-project/commit/d163ae8c255f663707d4b0d5de03fcb18274b3eb.diff

LOG: [LoongArch][MC] Add invalid immediate testcases for LASX instructions

Reviewed By: SixWeining

Differential Revision: https://reviews.llvm.org/D157574

Added: 
    

Modified: 
    llvm/test/MC/LoongArch/lasx/invalid-imm.s

Removed: 
    


################################################################################
diff  --git a/llvm/test/MC/LoongArch/lasx/invalid-imm.s b/llvm/test/MC/LoongArch/lasx/invalid-imm.s
index 5c61a7a4200913..6f64a6f87802be 100644
--- a/llvm/test/MC/LoongArch/lasx/invalid-imm.s
+++ b/llvm/test/MC/LoongArch/lasx/invalid-imm.s
@@ -3,53 +3,1190 @@
 # RUN: not llvm-mc --triple=loongarch64 %s 2>&1 | FileCheck %s
 
 ## uimm1
+xvrepl128vei.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 1]
+
 xvrepl128vei.d $xr0, $xr1, 2
 # CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 1]
 
+## uimm2
+xvpickve.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 3]
+
+xvpickve.d $xr0, $xr1, 4
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 3]
+
+xvinsve0.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 3]
+
+xvinsve0.d $xr0, $xr1, 4
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 3]
+
+xvinsgr2vr.d $xr0, $a0, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 3]
+
+xvinsgr2vr.d $xr0, $a0, 4
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 3]
+
+xvpickve2gr.d $a0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 3]
+
+xvpickve2gr.d $a0, $xr1, 4
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 3]
+
+xvpickve2gr.du $a0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 3]
+
+xvpickve2gr.du $a0, $xr1, 4
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 3]
+
+xvstelm.d $xr0, $a0, 8, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 3]
+
+xvstelm.d $xr0, $a0, 8, 4
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 3]
+
+xvrepl128vei.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 3]
+
+xvrepl128vei.w $xr0, $xr1, 4
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 3]
+
+## uimm3
+xvpickve.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+xvpickve.w $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+xvinsve0.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+xvinsve0.w $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+xvinsgr2vr.w $xr0, $a0, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+xvinsgr2vr.w $xr0, $a0, 8
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+xvpickve2gr.wu $a0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 7]
+
+xvpickve2gr.wu $a0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 7]
+
+xvpickve2gr.w $a0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 7]
+
+xvpickve2gr.w $a0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 7]
+
+xvstelm.w $xr0, $a0, 4, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+xvstelm.w $xr0, $a0, 4, 8
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+xvrepl128vei.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 7]
+
+xvrepl128vei.h $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 7]
+
+xvbitrevi.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+xvbitrevi.b $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+xvbitseti.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+xvbitseti.b $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+xvbitclri.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+xvbitclri.b $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+xvsrari.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 7]
+
+xvsrari.b $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 7]
+
+xvsrlri.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 7]
+
+xvsrlri.b $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 7]
+
+xvsllwil.hu.bu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 7]
+
+xvsllwil.hu.bu $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 7]
+
+xvsllwil.h.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 7]
+
+xvsllwil.h.b $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 7]
+
+xvrotri.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 7]
+
+xvrotri.b $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 7]
+
+xvsrai.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
+xvsrai.b $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
+xvsrli.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
+xvsrli.b $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
+xvslli.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
+xvslli.b $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
+xvsat.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 7]
+
+xvsat.b $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 7]
+
+xvsat.bu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
+xvsat.bu $xr0, $xr1, 8
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
 ## uimm4
+xvstelm.h $xr0, $a0, 2, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+xvstelm.h $xr0, $a0, 2, 16
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+xvrepl128vei.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 15]
+
+xvrepl128vei.b $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 15]
+
+xvbitrevi.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+xvbitrevi.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+xvbitseti.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+xvbitseti.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+xvbitclri.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+xvbitclri.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+xvssrarni.bu.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 15]
+
+xvssrarni.bu.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 15]
+
+xvssrlrni.bu.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 15]
+
+xvssrlrni.bu.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 15]
+
+xvssrarni.b.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+xvssrarni.b.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+xvssrlrni.b.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+xvssrlrni.b.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+xvssrani.bu.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+xvssrani.bu.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+xvssrlni.bu.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+xvssrlni.bu.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+xvssrani.b.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+xvssrani.b.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+xvssrlni.b.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+xvssrlni.b.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+xvsrarni.b.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+xvsrarni.b.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+xvsrlrni.b.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+xvsrlrni.b.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+xvsrani.b.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+xvsrani.b.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+xvsrlni.b.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+xvsrlni.b.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+xvsrari.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 15]
+
+xvsrari.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 15]
+
+xvsrlri.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 15]
+
+xvsrlri.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 15]
+
+xvsllwil.wu.hu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 15]
+
+xvsllwil.wu.hu $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 15]
+
+xvsllwil.w.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+xvsllwil.w.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+xvrotri.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 15]
+
+xvrotri.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 15]
+
+xvsrai.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+xvsrai.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+xvsrli.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+xvsrli.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+xvslli.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+xvslli.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+xvsat.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 15]
+
 xvsat.h $xr0, $xr1, 16
 # CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 15]
 
+xvsat.hu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+xvsat.hu $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+## uimm5
+xvstelm.b $xr0, $a0, 1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+xvstelm.b $xr0, $a0, 1, 32
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+xvbsrl.v $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+xvbsrl.v $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+xvbsll.v $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+xvbsll.v $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+xvslti.du $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslti.du $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslti.wu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslti.wu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslti.hu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslti.hu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslti.bu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslti.bu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslei.du $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslei.du $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslei.wu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslei.wu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslei.hu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslei.hu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslei.bu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvslei.bu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvfrstpi.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+xvfrstpi.h $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+xvfrstpi.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+xvfrstpi.b $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+xvbitrevi.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+xvbitrevi.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+xvbitseti.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+xvbitseti.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+xvbitclri.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+xvbitclri.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+xvssrarni.hu.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 31]
+
+xvssrarni.hu.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 31]
+
+xvssrlrni.hu.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 31]
+
+xvssrlrni.hu.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 31]
+
+xvssrarni.h.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+xvssrarni.h.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+xvssrlrni.h.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+xvssrlrni.h.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+xvssrani.hu.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+xvssrani.hu.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+xvssrlni.hu.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+xvssrlni.hu.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+xvssrani.h.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+xvssrani.h.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+xvssrlni.h.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+xvssrlni.h.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+xvsrarni.h.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+xvsrarni.h.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+xvsrlrni.h.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+xvsrlrni.h.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+xvsrani.h.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+xvsrani.h.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+xvsrlni.h.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+xvsrlni.h.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+xvsrari.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsrari.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsrlri.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsrlri.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsllwil.du.wu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 31]
+
+xvsllwil.du.wu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 31]
+
+xvsllwil.d.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+xvsllwil.d.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+xvrotri.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvrotri.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsrai.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+xvsrai.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+xvsrli.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+xvsrli.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+xvslli.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+xvslli.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+xvaddi.bu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvaddi.bu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvaddi.hu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvaddi.hu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvaddi.wu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvaddi.wu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvaddi.du $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvaddi.du $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsubi.bu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsubi.bu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsubi.hu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsubi.hu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsubi.wu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsubi.wu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsubi.du $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsubi.du $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmaxi.bu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmaxi.bu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmaxi.hu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmaxi.hu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmaxi.wu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmaxi.wu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmaxi.du $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmaxi.du $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmini.bu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmini.bu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmini.hu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmini.hu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmini.wu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmini.wu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmini.du $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvmini.du $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+xvsat.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
+xvsat.w $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
+xvsat.wu $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+xvsat.wu $xr0, $xr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
 ## simm5
+xvslti.d $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslti.d $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslti.w $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslti.w $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslti.h $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslti.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslti.b $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslti.b $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslei.d $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslei.d $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslei.w $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslei.w $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslei.h $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslei.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslei.b $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvslei.b $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvseqi.d $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvseqi.d $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvseqi.w $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvseqi.w $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvseqi.h $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvseqi.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvseqi.b $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
 xvseqi.b $xr0, $xr1, 16
 # CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
 
+xvmaxi.b $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmaxi.b $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmaxi.h $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmaxi.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmaxi.w $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmaxi.w $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmaxi.d $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmaxi.d $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmini.b $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmini.b $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmini.h $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmini.h $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmini.w $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmini.w $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmini.d $xr0, $xr1, -17
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+xvmini.d $xr0, $xr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-16, 15]
+
+## uimm6
+xvbitrevi.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+xvbitrevi.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+xvbitseti.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+xvbitseti.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+xvbitclri.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+xvbitclri.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+xvssrarni.wu.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 63]
+
+xvssrarni.wu.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 63]
+
+xvssrlrni.wu.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 63]
+
+xvssrlrni.wu.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 63]
+
+xvssrarni.w.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 63]
+
+xvssrarni.w.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 63]
+
+xvssrlrni.w.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 63]
+
+xvssrlrni.w.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 63]
+
+xvssrani.wu.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 63]
+
+xvssrani.wu.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 63]
+
+xvssrlni.wu.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 63]
+
+xvssrlni.wu.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 63]
+
+xvssrani.w.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+xvssrani.w.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+xvssrlni.w.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+xvssrlni.w.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+xvsrarni.w.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+xvsrarni.w.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+xvsrlrni.w.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+xvsrlrni.w.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+xvsrani.w.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+xvsrani.w.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+xvsrlni.w.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+xvsrlni.w.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+xvsrari.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 63]
+
+xvsrari.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 63]
+
+xvsrlri.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 63]
+
+xvsrlri.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 63]
+
+xvrotri.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 63]
+
+xvrotri.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 63]
+
+xvsrai.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
+xvsrai.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
+xvsrli.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
+xvsrli.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
+xvslli.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
+xvslli.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
+xvsat.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 63]
+
+xvsat.d $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 63]
+
+xvsat.du $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
+xvsat.du $xr0, $xr1, 64
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
 ## uimm7
+xvssrarni.du.q $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 127]
+
+xvssrarni.du.q $xr0, $xr1, 128
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 127]
+
+xvssrlrni.du.q $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 127]
+
+xvssrlrni.du.q $xr0, $xr1, 128
+# CHECK: :[[#@LINE-1]]:28: error: immediate must be an integer in the range [0, 127]
+
+xvssrarni.d.q $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 127]
+
+xvssrarni.d.q $xr0, $xr1, 128
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 127]
+
+xvssrlrni.d.q $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 127]
+
+xvssrlrni.d.q $xr0, $xr1, 128
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 127]
+
+xvssrani.du.q $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 127]
+
+xvssrani.du.q $xr0, $xr1, 128
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 127]
+
+xvssrlni.du.q $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 127]
+
+xvssrlni.du.q $xr0, $xr1, 128
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 127]
+
+xvssrani.d.q $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+xvssrani.d.q $xr0, $xr1, 128
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+xvssrlni.d.q $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+xvssrlni.d.q $xr0, $xr1, 128
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+xvsrarni.d.q $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+xvsrarni.d.q $xr0, $xr1, 128
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+xvsrlrni.d.q $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+xvsrlrni.d.q $xr0, $xr1, 128
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+xvsrani.d.q $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 127]
+
+xvsrani.d.q $xr0, $xr1, 128
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 127]
+
+xvsrlni.d.q $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 127]
+
 xvsrlni.d.q $xr0, $xr1, 128
 # CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 127]
 
-## simm8
+## uimm8
+xvextrins.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 255]
+
+xvextrins.d $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 255]
+
+xvextrins.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 255]
+
+xvextrins.w $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 255]
+
+xvextrins.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 255]
+
+xvextrins.h $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 255]
+
+xvextrins.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 255]
+
+xvextrins.b $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 255]
+
+xvpermi.q $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
+
+xvpermi.q $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
+
+xvpermi.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
+
+xvpermi.d $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
+
+xvpermi.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
+
 xvpermi.w $xr0, $xr1, 256
 # CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
 
+xvshuf4i.d $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+xvshuf4i.d $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+xvshuf4i.w $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+xvshuf4i.w $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+xvshuf4i.h $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+xvshuf4i.h $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+xvshuf4i.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+xvshuf4i.b $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+xvbitseli.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 255]
+
+xvbitseli.b $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 255]
+
+xvandi.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 255]
+
+xvandi.b $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 255]
+
+xvori.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 255]
+
+xvori.b $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 255]
+
+xvxori.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 255]
+
+xvxori.b $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 255]
+
+xvnori.b $xr0, $xr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 255]
+
+xvnori.b $xr0, $xr1, 256
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 255]
+
+## simm8
+xvstelm.b $xr0, $a0, -129, 1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-128, 127]
+
+xvstelm.b $xr0, $a0, 128, 1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-128, 127]
+
 ## simm8_lsl1
-xvstelm.h $xr0, $a0, 255, 1
+xvstelm.h $xr0, $a0, -258, 1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 2 in the range [-256, 254]
+
+xvstelm.h $xr0, $a0, 256, 1
 # CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 2 in the range [-256, 254]
 
 ## simm8_lsl2
-xvstelm.w $xr0, $a0, 512, 1
+xvstelm.w $xr0, $a0, -516, 1
 # CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 4 in the range [-512, 508]
 
-## simm10
-xvrepli.b $xr0, 512
-# CHECK: :[[#@LINE-1]]:17: error: immediate must be an integer in the range [-512, 511]
+xvstelm.w $xr0, $a0, 512, 1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 4 in the range [-512, 508]
 
 ## simm8_lsl3
+xvstelm.d $xr0, $a0, -1032, 1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 8 in the range [-1024, 1016]
+
 xvstelm.d $xr0, $a0, 1024, 1
 # CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 8 in the range [-1024, 1016]
 
 ## simm9_lsl3
+xvldrepl.d $xr0, $a0, -2056
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be a multiple of 8 in the range [-2048, 2040]
+
 xvldrepl.d $xr0, $a0, 2048
 # CHECK: :[[#@LINE-1]]:23: error: immediate must be a multiple of 8 in the range [-2048, 2040]
 
 ## simm10_lsl2
+xvldrepl.w $xr0, $a0, -2052
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be a multiple of 4 in the range [-2048, 2044]
+
 xvldrepl.w $xr0, $a0, 2048
 # CHECK: :[[#@LINE-1]]:23: error: immediate must be a multiple of 4 in the range [-2048, 2044]
 
+## simm10
+xvrepli.b $xr0, -513
+# CHECK: :[[#@LINE-1]]:17: error: immediate must be an integer in the range [-512, 511]
+
+xvrepli.b $xr0, 512
+# CHECK: :[[#@LINE-1]]:17: error: immediate must be an integer in the range [-512, 511]
+
+xvrepli.h $xr0, -513
+# CHECK: :[[#@LINE-1]]:17: error: immediate must be an integer in the range [-512, 511]
+
+xvrepli.h $xr0, 512
+# CHECK: :[[#@LINE-1]]:17: error: immediate must be an integer in the range [-512, 511]
+
+xvrepli.w $xr0, -513
+# CHECK: :[[#@LINE-1]]:17: error: immediate must be an integer in the range [-512, 511]
+
+xvrepli.w $xr0, 512
+# CHECK: :[[#@LINE-1]]:17: error: immediate must be an integer in the range [-512, 511]
+
+xvrepli.d $xr0, -513
+# CHECK: :[[#@LINE-1]]:17: error: immediate must be an integer in the range [-512, 511]
+
+xvrepli.d $xr0, 512
+# CHECK: :[[#@LINE-1]]:17: error: immediate must be an integer in the range [-512, 511]
+
 ## simm11_lsl1
+xvldrepl.h $xr0, $a0, -2050
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be a multiple of 2 in the range [-2048, 2046]
+
 xvldrepl.h $xr0, $a0, 2048
 # CHECK: :[[#@LINE-1]]:23: error: immediate must be a multiple of 2 in the range [-2048, 2046]
 
+## simm12
+xvldrepl.b $xr0, $a0, -2049
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [-2048, 2047]
+
+xvldrepl.b $xr0, $a0, 2048
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [-2048, 2047]
+
+xvst $xr0, $a0, -2049
+# CHECK: :[[#@LINE-1]]:17: error: immediate must be an integer in the range [-2048, 2047]
+
+xvst $xr0, $a0, 2048
+# CHECK: :[[#@LINE-1]]:17: error: immediate must be an integer in the range [-2048, 2047]
+
+xvld $xr0, $a0, -2049
+# CHECK: :[[#@LINE-1]]:17: error: immediate must be an integer in the range [-2048, 2047]
+
+xvld $xr0, $a0, 2048
+# CHECK: :[[#@LINE-1]]:17: error: immediate must be an integer in the range [-2048, 2047]
+
 ## simm13
+xvldi $xr0, -4097
+# CHECK: :[[#@LINE-1]]:13: error: immediate must be an integer in the range [-4096, 4095]
+
 xvldi $xr0, 4096
 # CHECK: :[[#@LINE-1]]:13: error: immediate must be an integer in the range [-4096, 4095]


        


More information about the llvm-commits mailing list