[llvm] 2f4b669 - [LoongArch][MC] Add invalid immediate testcases for LSX instructions

via llvm-commits llvm-commits at lists.llvm.org
Sat Aug 19 02:15:56 PDT 2023


Author: chenli
Date: 2023-08-19T17:15:22+08:00
New Revision: 2f4b6695836e16ec075061cd2508444bd403ad7d

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

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

Reviewed By: SixWeining

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

Added: 
    

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

Removed: 
    


################################################################################
diff  --git a/llvm/test/MC/LoongArch/lsx/invalid-imm.s b/llvm/test/MC/LoongArch/lsx/invalid-imm.s
index fb7e24c8348817..c3f9aaa082818e 100644
--- a/llvm/test/MC/LoongArch/lsx/invalid-imm.s
+++ b/llvm/test/MC/LoongArch/lsx/invalid-imm.s
@@ -3,53 +3,1190 @@
 # RUN: not llvm-mc --triple=loongarch64 %s 2>&1 | FileCheck %s
 
 ## uimm1
+vstelm.d $vr0, $a0, 8, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 1]
+
+vstelm.d $vr0, $a0, 8, 2
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 1]
+
+vreplvei.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 1]
+
 vreplvei.d $vr0, $vr1, 2
 # CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 1]
 
+vpickve2gr.du $a0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 1]
+
+vpickve2gr.du $a0, $vr1, 2
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 1]
+
+vpickve2gr.d $a0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 1]
+
+vpickve2gr.d $a0, $vr1, 2
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 1]
+
+vinsgr2vr.d $vr0, $a0, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 1]
+
+vinsgr2vr.d $vr0, $a0, 2
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 1]
+
+## uimm2
+vstelm.w $vr0, $a0, 4, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 3]
+
+vstelm.w $vr0, $a0, 4, 4
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 3]
+
+vreplvei.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 3]
+
+vreplvei.w $vr0, $vr1, 4
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 3]
+
+vpickve2gr.wu $a0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 3]
+
+vpickve2gr.wu $a0, $vr1, 4
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 3]
+
+vpickve2gr.w $a0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 3]
+
+vpickve2gr.w $a0, $vr1, 4
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 3]
+
+vinsgr2vr.w $vr0, $a0, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 3]
+
+vinsgr2vr.w $vr0, $a0, 4
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 3]
+
+## uimm3
+vstelm.h $vr0, $a0, 2, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+vstelm.h $vr0, $a0, 2, 8
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+vreplvei.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+vreplvei.h $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+vpickve2gr.hu $a0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 7]
+
+vpickve2gr.hu $a0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 7]
+
+vpickve2gr.h $a0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+vpickve2gr.h $a0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+vinsgr2vr.h $vr0, $a0, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+vinsgr2vr.h $vr0, $a0, 8
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+vbitrevi.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+vbitrevi.b $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+vbitseti.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+vbitseti.b $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+vbitclri.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+vbitclri.b $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 7]
+
+vsrari.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
+vsrari.b $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
+vsrlri.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
+vsrlri.b $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
+vsllwil.hu.bu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 7]
+
+vsllwil.hu.bu $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 7]
+
+vsllwil.h.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+vsllwil.h.b $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 7]
+
+vrotri.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
+vrotri.b $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 7]
+
+vsrai.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 7]
+
+vsrai.b $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 7]
+
+vsrli.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 7]
+
+vsrli.b $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 7]
+
+vslli.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 7]
+
+vslli.b $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 7]
+
+vsat.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:20: error: immediate must be an integer in the range [0, 7]
+
+vsat.b $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:20: error: immediate must be an integer in the range [0, 7]
+
+vsat.bu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 7]
+
+vsat.bu $vr0, $vr1, 8
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 7]
+
 ## uimm4
+vstelm.b $vr0, $a0, 1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vstelm.b $vr0, $a0, 1, 16
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vreplvei.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vreplvei.b $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vpickve2gr.bu $a0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+vpickve2gr.bu $a0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+vpickve2gr.b $a0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+vpickve2gr.b $a0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+vinsgr2vr.b $vr0, $a0, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vinsgr2vr.b $vr0, $a0, 16
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vbitrevi.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vbitrevi.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vbitseti.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vbitseti.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vbitclri.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vbitclri.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vssrarni.bu.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+vssrarni.bu.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+vssrlrni.bu.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+vssrlrni.bu.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+vssrarni.b.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+vssrarni.b.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+vssrlrni.b.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+vssrlrni.b.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+vssrani.bu.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+vssrani.bu.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+vssrlni.bu.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+vssrlni.bu.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 15]
+
+vssrani.b.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+vssrani.b.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+vssrlni.b.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+vssrlni.b.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+vsrarni.b.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+vsrarni.b.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+vsrlrni.b.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+vsrlrni.b.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+vsrani.b.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vsrani.b.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vsrlni.b.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vsrlni.b.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 15]
+
+vsrari.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+vsrari.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+vsrlri.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+vsrlri.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+vsllwil.wu.hu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+vsllwil.wu.hu $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 15]
+
+vsllwil.w.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+vsllwil.w.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 15]
+
+vrotri.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+vrotri.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 15]
+
+vsrai.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 15]
+
+vsrai.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 15]
+
+vsrli.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 15]
+
+vsrli.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 15]
+
+vslli.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 15]
+
+vslli.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 15]
+
+vsat.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:20: error: immediate must be an integer in the range [0, 15]
+
 vsat.h $vr0, $vr1, 16
 # CHECK: :[[#@LINE-1]]:20: error: immediate must be an integer in the range [0, 15]
 
+vsat.hu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 15]
+
+vsat.hu $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 15]
+
+## uimm5
+vbsrl.v $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
+vbsrl.v $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
+vbsll.v $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
+vbsll.v $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
+vslti.du $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslti.du $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslti.wu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslti.wu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslti.hu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslti.hu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslti.bu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslti.bu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslei.du $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslei.du $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslei.wu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslei.wu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslei.hu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslei.hu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslei.bu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vslei.bu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vfrstpi.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+vfrstpi.h $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+vfrstpi.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+vfrstpi.b $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 31]
+
+vbitrevi.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+vbitrevi.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+vbitseti.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+vbitseti.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+vbitclri.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+vbitclri.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+vssrarni.hu.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+vssrarni.hu.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+vssrlrni.hu.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+vssrlrni.hu.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+vssrarni.h.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+vssrarni.h.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+vssrlrni.h.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+vssrlrni.h.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+vssrani.hu.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+vssrani.hu.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+vssrlni.hu.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+vssrlni.hu.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 31]
+
+vssrani.h.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+vssrani.h.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+vssrlni.h.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+vssrlni.h.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+vsrarni.h.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+vsrarni.h.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+vsrlrni.h.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+vsrlrni.h.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+vsrani.h.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+vsrani.h.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+vsrlni.h.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+vsrlni.h.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 31]
+
+vsrari.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsrari.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsrlri.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsrlri.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsllwil.du.wu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+vsllwil.du.wu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 31]
+
+vsllwil.d.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+vsllwil.d.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 31]
+
+vrotri.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vrotri.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsrai.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
+vsrai.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
+vsrli.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
+vsrli.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
+vslli.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
+vslli.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
+vaddi.bu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vaddi.bu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vaddi.hu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vaddi.hu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vaddi.wu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vaddi.wu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vaddi.du $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vaddi.du $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsubi.bu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsubi.bu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsubi.hu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsubi.hu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsubi.wu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsubi.wu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsubi.du $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsubi.du $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmaxi.bu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmaxi.bu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmaxi.hu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmaxi.hu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmaxi.wu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmaxi.wu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmaxi.du $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmaxi.du $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmini.bu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmini.bu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmini.hu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmini.hu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmini.wu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmini.wu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmini.du $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vmini.du $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 31]
+
+vsat.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:20: error: immediate must be an integer in the range [0, 31]
+
+vsat.w $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:20: error: immediate must be an integer in the range [0, 31]
+
+vsat.wu $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
+vsat.wu $vr0, $vr1, 32
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 31]
+
 ## simm5
+vslti.d $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslti.d $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslti.w $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslti.w $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslti.h $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslti.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslti.b $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslti.b $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslei.d $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslei.d $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslei.w $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslei.w $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslei.h $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslei.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslei.b $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vslei.b $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vseqi.d $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vseqi.d $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vseqi.w $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vseqi.w $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vseqi.h $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vseqi.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vseqi.b $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
 vseqi.b $vr0, $vr1, 16
 # CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
 
+vmaxi.b $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmaxi.b $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmaxi.h $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmaxi.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmaxi.w $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmaxi.w $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmaxi.d $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmaxi.d $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmini.b $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmini.b $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmini.h $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmini.h $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmini.w $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmini.w $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmini.d $vr0, $vr1, -17
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+vmini.d $vr0, $vr1, 16
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15]
+
+## uimm6
+vbitrevi.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 63]
+
+vbitrevi.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 63]
+
+vbitseti.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 63]
+
+vbitseti.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 63]
+
+vbitclri.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 63]
+
+vbitclri.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 63]
+
+vssrarni.wu.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 63]
+
+vssrarni.wu.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 63]
+
+vssrlrni.wu.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 63]
+
+vssrlrni.wu.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 63]
+
+vssrarni.w.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+vssrarni.w.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+vssrlrni.w.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+vssrlrni.w.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+vssrani.wu.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+vssrani.wu.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+vssrlni.wu.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+vssrlni.wu.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 63]
+
+vssrani.w.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+vssrani.w.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+vssrlni.w.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+vssrlni.w.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+vsrarni.w.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+vsrarni.w.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+vsrlrni.w.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+vsrlrni.w.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 63]
+
+vsrani.w.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 63]
+
+vsrani.w.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 63]
+
+vsrlni.w.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 63]
+
+vsrlni.w.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 63]
+
+vsrari.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
+vsrari.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
+vsrlri.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
+vsrlri.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
+vrotri.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
+vrotri.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 63]
+
+vsrai.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 63]
+
+vsrai.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 63]
+
+vsrli.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 63]
+
+vsrli.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 63]
+
+vslli.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 63]
+
+vslli.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 63]
+
+vsat.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:20: error: immediate must be an integer in the range [0, 63]
+
+vsat.d $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:20: error: immediate must be an integer in the range [0, 63]
+
+vsat.du $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 63]
+
+vsat.du $vr0, $vr1, 64
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 63]
+
 ## uimm7
+vssrarni.du.q $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 127]
+
+vssrarni.du.q $vr0, $vr1, 128
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 127]
+
+vssrlrni.du.q $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 127]
+
+vssrlrni.du.q $vr0, $vr1, 128
+# CHECK: :[[#@LINE-1]]:27: error: immediate must be an integer in the range [0, 127]
+
+vssrarni.d.q $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+vssrarni.d.q $vr0, $vr1, 128
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+vssrlrni.d.q $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+vssrlrni.d.q $vr0, $vr1, 128
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+vssrani.du.q $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+vssrani.du.q $vr0, $vr1, 128
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+vssrlni.du.q $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+vssrlni.du.q $vr0, $vr1, 128
+# CHECK: :[[#@LINE-1]]:26: error: immediate must be an integer in the range [0, 127]
+
+vssrani.d.q $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 127]
+
+vssrani.d.q $vr0, $vr1, 128
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 127]
+
+vssrlni.d.q $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 127]
+
+vssrlni.d.q $vr0, $vr1, 128
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 127]
+
+vsrarni.d.q $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 127]
+
+vsrarni.d.q $vr0, $vr1, 128
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 127]
+
+vsrlrni.d.q $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 127]
+
+vsrlrni.d.q $vr0, $vr1, 128
+# CHECK: :[[#@LINE-1]]:25: error: immediate must be an integer in the range [0, 127]
+
+vsrani.d.q $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 127]
+
+vsrani.d.q $vr0, $vr1, 128
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 127]
+
+vsrlni.d.q $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 127]
+
 vsrlni.d.q $vr0, $vr1, 128
 # CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 127]
 
-## simm8
+## uimm8
+vextrins.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+vextrins.d $vr0, $vr1, 256
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+vextrins.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+vextrins.w $vr0, $vr1, 256
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+vextrins.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+vextrins.h $vr0, $vr1, 256
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+vextrins.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+vextrins.b $vr0, $vr1, 256
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+vpermi.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 255]
+
 vpermi.w $vr0, $vr1, 256
 # CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 255]
 
+vshuf4i.d $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
+
+vshuf4i.d $vr0, $vr1, 256
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
+
+vshuf4i.w $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
+
+vshuf4i.w $vr0, $vr1, 256
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
+
+vshuf4i.h $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
+
+vshuf4i.h $vr0, $vr1, 256
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
+
+vshuf4i.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
+
+vshuf4i.b $vr0, $vr1, 256
+# CHECK: :[[#@LINE-1]]:23: error: immediate must be an integer in the range [0, 255]
+
+vbitseli.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+vbitseli.b $vr0, $vr1, 256
+# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 255]
+
+vandi.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 255]
+
+vandi.b $vr0, $vr1, 256
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 255]
+
+vori.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:20: error: immediate must be an integer in the range [0, 255]
+
+vori.b $vr0, $vr1, 256
+# CHECK: :[[#@LINE-1]]:20: error: immediate must be an integer in the range [0, 255]
+
+vxori.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 255]
+
+vxori.b $vr0, $vr1, 256
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 255]
+
+vnori.b $vr0, $vr1, -1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 255]
+
+vnori.b $vr0, $vr1, 256
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [0, 255]
+
+## simm8
+vstelm.b $vr0, $a0, -129, 1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-128, 127]
+
+vstelm.b $vr0, $a0, 128, 1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-128, 127]
+
 ## simm8_lsl1
-vstelm.h $vr0, $a0, 255, 1
+vstelm.h $vr0, $a0, -258, 1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be a multiple of 2 in the range [-256, 254]
+
+vstelm.h $vr0, $a0, 256, 1
 # CHECK: :[[#@LINE-1]]:21: error: immediate must be a multiple of 2 in the range [-256, 254]
 
 ## simm8_lsl2
-vstelm.w $vr0, $a0, 512, 1
+vstelm.w $vr0, $a0, -516, 1
 # CHECK: :[[#@LINE-1]]:21: error: immediate must be a multiple of 4 in the range [-512, 508]
 
-## simm10
-vrepli.b $vr0, 512
-# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-512, 511]
+vstelm.w $vr0, $a0, 512, 1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be a multiple of 4 in the range [-512, 508]
 
 ## simm8_lsl3
+vstelm.d $vr0, $a0, -1032, 1
+# CHECK: :[[#@LINE-1]]:21: error: immediate must be a multiple of 8 in the range [-1024, 1016]
+
 vstelm.d $vr0, $a0, 1024, 1
 # CHECK: :[[#@LINE-1]]:21: error: immediate must be a multiple of 8 in the range [-1024, 1016]
 
 ## simm9_lsl3
+vldrepl.d $vr0, $a0, -2056
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 8 in the range [-2048, 2040]
+
 vldrepl.d $vr0, $a0, 2048
 # CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 8 in the range [-2048, 2040]
 
 ## simm10_lsl2
+vldrepl.w $vr0, $a0, -2052
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 4 in the range [-2048, 2044]
+
 vldrepl.w $vr0, $a0, 2048
 # CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 4 in the range [-2048, 2044]
 
+## simm10
+vrepli.b $vr0, -513
+# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-512, 511]
+
+vrepli.b $vr0, 512
+# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-512, 511]
+
+vrepli.h $vr0, -513
+# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-512, 511]
+
+vrepli.h $vr0, 512
+# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-512, 511]
+
+vrepli.w $vr0, -513
+# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-512, 511]
+
+vrepli.w $vr0, 512
+# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-512, 511]
+
+vrepli.d $vr0, -513
+# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-512, 511]
+
+vrepli.d $vr0, 512
+# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-512, 511]
+
 ## simm11_lsl1
+vldrepl.h $vr0, $a0, -2050
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 2 in the range [-2048, 2046]
+
 vldrepl.h $vr0, $a0, 2048
 # CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 2 in the range [-2048, 2046]
 
+## simm12
+vldrepl.b $vr0, $a0, -2049
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-2048, 2047]
+
+vldrepl.b $vr0, $a0, 2048
+# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [-2048, 2047]
+
+vst $vr0, $a0, -2049
+# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-2048, 2047]
+
+vst $vr0, $a0, 2048
+# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-2048, 2047]
+
+vld $vr0, $a0, -2049
+# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-2048, 2047]
+
+vld $vr0, $a0, 2048
+# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-2048, 2047]
+
 ## simm13
+vldi $vr0, -4097
+# CHECK: :[[#@LINE-1]]:12: error: immediate must be an integer in the range [-4096, 4095]
+
 vldi $vr0, 4096
 # CHECK: :[[#@LINE-1]]:12: error: immediate must be an integer in the range [-4096, 4095]


        


More information about the llvm-commits mailing list