[llvm] r264053 - [mips] Range check vsplat_uimm[1234568].

Daniel Sanders via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 22 07:17:42 PDT 2016


Author: dsanders
Date: Tue Mar 22 09:17:41 2016
New Revision: 264053

URL: http://llvm.org/viewvc/llvm-project?rev=264053&view=rev
Log:
[mips] Range check vsplat_uimm[1234568].

Summary:

Reviewers: vkalintiris

Subscribers: dsanders, llvm-commits

Differential Revision: http://reviews.llvm.org/D18143

Modified:
    llvm/trunk/lib/Target/Mips/MipsInstrInfo.td
    llvm/trunk/lib/Target/Mips/MipsMSAInstrInfo.td
    llvm/trunk/test/MC/Mips/msa/invalid.s

Modified: llvm/trunk/lib/Target/Mips/MipsInstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsInstrInfo.td?rev=264053&r1=264052&r2=264053&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsInstrInfo.td (original)
+++ llvm/trunk/lib/Target/Mips/MipsInstrInfo.td Tue Mar 22 09:17:41 2016
@@ -716,6 +716,13 @@ foreach I = {1, 2, 3, 4} in
         !cast<AsmOperandClass>("ConstantUImm" # I # "AsmOperandClass");
   }
 
+foreach I = {1, 2, 3, 4, 5, 6, 8} in
+  def vsplat_uimm # I : Operand<vAny> {
+    let PrintMethod = "printUImm<" # I # ">";
+    let ParserMatchClass =
+        !cast<AsmOperandClass>("ConstantUImm" # I # "AsmOperandClass");
+  }
+
 // Signed operands
 foreach I = {4} in
   def simm # I : Operand<i32> {

Modified: llvm/trunk/lib/Target/Mips/MipsMSAInstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsMSAInstrInfo.td?rev=264053&r1=264052&r2=264053&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsMSAInstrInfo.td (original)
+++ llvm/trunk/lib/Target/Mips/MipsMSAInstrInfo.td Tue Mar 22 09:17:41 2016
@@ -72,34 +72,6 @@ def immZExt4Ptr : ImmLeaf<iPTR, [{return
 
 def simm5 : Operand<i32>;
 
-def vsplat_uimm1 : Operand<vAny> {
-  let PrintMethod = "printUImm<8>";
-}
-
-def vsplat_uimm2 : Operand<vAny> {
-  let PrintMethod = "printUImm<8>";
-}
-
-def vsplat_uimm3 : Operand<vAny> {
-  let PrintMethod = "printUImm<8>";
-}
-
-def vsplat_uimm4 : Operand<vAny> {
-  let PrintMethod = "printUImm<8>";
-}
-
-def vsplat_uimm5 : Operand<vAny> {
-  let PrintMethod = "printUImm<8>";
-}
-
-def vsplat_uimm6 : Operand<vAny> {
-  let PrintMethod = "printUImm<8>";
-}
-
-def vsplat_uimm8 : Operand<vAny> {
-  let PrintMethod = "printUImm<8>";
-}
-
 def vsplat_simm5 : Operand<vAny>;
 
 def vsplat_simm10 : Operand<vAny>;
@@ -328,15 +300,33 @@ def vsplat_uimm_inv_pow2 : ComplexPatter
 
 // Any build_vector that is a constant splat with only a consecutive sequence
 // of left-most bits set.
-def vsplat_maskl_bits : SplatComplexPattern<vsplat_uimm8, vAny, 1,
-                                            "selectVSplatMaskL",
-                                            [build_vector, bitconvert]>;
+def vsplat_maskl_bits_uimm3
+    : SplatComplexPattern<vsplat_uimm3, vAny, 1, "selectVSplatMaskL",
+                          [build_vector, bitconvert]>;
+def vsplat_maskl_bits_uimm4
+    : SplatComplexPattern<vsplat_uimm4, vAny, 1, "selectVSplatMaskL",
+                          [build_vector, bitconvert]>;
+def vsplat_maskl_bits_uimm5
+    : SplatComplexPattern<vsplat_uimm5, vAny, 1, "selectVSplatMaskL",
+                          [build_vector, bitconvert]>;
+def vsplat_maskl_bits_uimm6
+    : SplatComplexPattern<vsplat_uimm6, vAny, 1, "selectVSplatMaskL",
+                          [build_vector, bitconvert]>;
 
 // Any build_vector that is a constant splat with only a consecutive sequence
 // of right-most bits set.
-def vsplat_maskr_bits : SplatComplexPattern<vsplat_uimm8, vAny, 1,
-                                            "selectVSplatMaskR",
-                                            [build_vector, bitconvert]>;
+def vsplat_maskr_bits_uimm3
+    : SplatComplexPattern<vsplat_uimm3, vAny, 1, "selectVSplatMaskR",
+                          [build_vector, bitconvert]>;
+def vsplat_maskr_bits_uimm4
+    : SplatComplexPattern<vsplat_uimm4, vAny, 1, "selectVSplatMaskR",
+                          [build_vector, bitconvert]>;
+def vsplat_maskr_bits_uimm5
+    : SplatComplexPattern<vsplat_uimm5, vAny, 1, "selectVSplatMaskR",
+                          [build_vector, bitconvert]>;
+def vsplat_maskr_bits_uimm6
+    : SplatComplexPattern<vsplat_uimm6, vAny, 1, "selectVSplatMaskR",
+                          [build_vector, bitconvert]>;
 
 // Any build_vector that is a constant splat with a value that equals 1
 // FIXME: These should be a ComplexPattern but we can't use them because the
@@ -1177,11 +1167,11 @@ class MSA_BIT_X_DESC_BASE<string instr_a
 }
 
 class MSA_BIT_BINSXI_DESC_BASE<string instr_asm, ValueType Ty,
-                               ComplexPattern Mask, RegisterOperand ROWD,
+                               SplatComplexPattern Mask, RegisterOperand ROWD,
                                RegisterOperand ROWS = ROWD,
                                InstrItinClass itin = NoItinerary> {
   dag OutOperandList = (outs ROWD:$wd);
-  dag InOperandList = (ins ROWD:$wd_in, ROWS:$ws, vsplat_uimm8:$m);
+  dag InOperandList = (ins ROWD:$wd_in, ROWS:$ws, Mask.OpClass:$m);
   string AsmString = !strconcat(instr_asm, "\t$wd, $ws, $m");
   // Note that binsxi and vselect treat the condition operand the opposite
   // way to each other.
@@ -1194,16 +1184,16 @@ class MSA_BIT_BINSXI_DESC_BASE<string in
 }
 
 class MSA_BIT_BINSLI_DESC_BASE<string instr_asm, ValueType Ty,
-                               RegisterOperand ROWD,
+                               SplatComplexPattern ImmOp, RegisterOperand ROWD,
                                RegisterOperand ROWS = ROWD,
                                InstrItinClass itin = NoItinerary> :
-  MSA_BIT_BINSXI_DESC_BASE<instr_asm, Ty, vsplat_maskl_bits, ROWD, ROWS, itin>;
+  MSA_BIT_BINSXI_DESC_BASE<instr_asm, Ty, ImmOp, ROWD, ROWS, itin>;
 
 class MSA_BIT_BINSRI_DESC_BASE<string instr_asm, ValueType Ty,
-                               RegisterOperand ROWD,
+                               SplatComplexPattern ImmOp, RegisterOperand ROWD,
                                RegisterOperand ROWS = ROWD,
                                InstrItinClass itin = NoItinerary> :
-  MSA_BIT_BINSXI_DESC_BASE<instr_asm, Ty, vsplat_maskr_bits, ROWD, ROWS, itin>;
+  MSA_BIT_BINSXI_DESC_BASE<instr_asm, Ty, ImmOp, ROWD, ROWS, itin>;
 
 class MSA_BIT_SPLAT_DESC_BASE<string instr_asm, SDPatternOperator OpNode,
                               SplatComplexPattern SplatImm,
@@ -1635,10 +1625,10 @@ class BINSL_W_DESC : MSA_3R_BINSX_DESC_B
 class BINSL_D_DESC : MSA_3R_BINSX_DESC_BASE<"binsl.d", int_mips_binsl_d,
                                             MSA128DOpnd>;
 
-class BINSLI_B_DESC : MSA_BIT_BINSLI_DESC_BASE<"binsli.b", v16i8, MSA128BOpnd>;
-class BINSLI_H_DESC : MSA_BIT_BINSLI_DESC_BASE<"binsli.h", v8i16, MSA128HOpnd>;
-class BINSLI_W_DESC : MSA_BIT_BINSLI_DESC_BASE<"binsli.w", v4i32, MSA128WOpnd>;
-class BINSLI_D_DESC : MSA_BIT_BINSLI_DESC_BASE<"binsli.d", v2i64, MSA128DOpnd>;
+class BINSLI_B_DESC : MSA_BIT_BINSLI_DESC_BASE<"binsli.b", v16i8, vsplat_maskl_bits_uimm3, MSA128BOpnd>;
+class BINSLI_H_DESC : MSA_BIT_BINSLI_DESC_BASE<"binsli.h", v8i16, vsplat_maskl_bits_uimm4, MSA128HOpnd>;
+class BINSLI_W_DESC : MSA_BIT_BINSLI_DESC_BASE<"binsli.w", v4i32, vsplat_maskl_bits_uimm5, MSA128WOpnd>;
+class BINSLI_D_DESC : MSA_BIT_BINSLI_DESC_BASE<"binsli.d", v2i64, vsplat_maskl_bits_uimm6, MSA128DOpnd>;
 
 class BINSR_B_DESC : MSA_3R_BINSX_DESC_BASE<"binsr.b", int_mips_binsr_b,
                                             MSA128BOpnd>;
@@ -1649,10 +1639,18 @@ class BINSR_W_DESC : MSA_3R_BINSX_DESC_B
 class BINSR_D_DESC : MSA_3R_BINSX_DESC_BASE<"binsr.d", int_mips_binsr_d,
                                             MSA128DOpnd>;
 
-class BINSRI_B_DESC : MSA_BIT_BINSRI_DESC_BASE<"binsri.b", v16i8, MSA128BOpnd>;
-class BINSRI_H_DESC : MSA_BIT_BINSRI_DESC_BASE<"binsri.h", v8i16, MSA128HOpnd>;
-class BINSRI_W_DESC : MSA_BIT_BINSRI_DESC_BASE<"binsri.w", v4i32, MSA128WOpnd>;
-class BINSRI_D_DESC : MSA_BIT_BINSRI_DESC_BASE<"binsri.d", v2i64, MSA128DOpnd>;
+class BINSRI_B_DESC
+    : MSA_BIT_BINSRI_DESC_BASE<"binsri.b", v16i8, vsplat_maskr_bits_uimm3,
+                               MSA128BOpnd>;
+class BINSRI_H_DESC
+    : MSA_BIT_BINSRI_DESC_BASE<"binsri.h", v8i16, vsplat_maskr_bits_uimm4,
+                               MSA128HOpnd>;
+class BINSRI_W_DESC
+    : MSA_BIT_BINSRI_DESC_BASE<"binsri.w", v4i32, vsplat_maskr_bits_uimm5,
+                               MSA128WOpnd>;
+class BINSRI_D_DESC
+    : MSA_BIT_BINSRI_DESC_BASE<"binsri.d", v2i64, vsplat_maskr_bits_uimm6,
+                               MSA128DOpnd>;
 
 class BMNZ_V_DESC {
   dag OutOperandList = (outs MSA128BOpnd:$wd);

Modified: llvm/trunk/test/MC/Mips/msa/invalid.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Mips/msa/invalid.s?rev=264053&r1=264052&r2=264053&view=diff
==============================================================================
--- llvm/trunk/test/MC/Mips/msa/invalid.s (original)
+++ llvm/trunk/test/MC/Mips/msa/invalid.s Tue Mar 22 09:17:41 2016
@@ -5,28 +5,100 @@
 # RUN: FileCheck %s < %t1
 
     .set noat
-    copy_s.b $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
-    copy_s.b $2, $w9[16] # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
-    copy_s.h $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
-    copy_s.h $2, $w9[8]  # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
-    copy_s.w $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 2-bit unsigned immediate
-    copy_s.w $2, $w9[4]  # CHECK: :[[@LINE]]:22: error: expected 2-bit unsigned immediate
-    copy_s.d $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate
-    copy_s.d $2, $w9[2]  # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate
-    copy_u.b $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
-    copy_u.b $2, $w9[16] # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
-    copy_u.h $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
-    copy_u.h $2, $w9[8]  # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
-    copy_u.w $2, $w9[-1] # CHECK: :[[@LINE]]:22: error: expected 2-bit unsigned immediate
-    copy_u.w $2, $w9[4]  # CHECK: :[[@LINE]]:22: error: expected 2-bit unsigned immediate
-    insert.b $w9[-1], $2 # CHECK: :[[@LINE]]:18: error: expected 4-bit unsigned immediate
-    insert.b $w9[16], $2 # CHECK: :[[@LINE]]:18: error: expected 4-bit unsigned immediate
-    insert.h $w9[-1], $2 # CHECK: :[[@LINE]]:18: error: expected 3-bit unsigned immediate
-    insert.h $w9[8], $2  # CHECK: :[[@LINE]]:18: error: expected 3-bit unsigned immediate
-    insert.w $w9[-1], $2 # CHECK: :[[@LINE]]:18: error: expected 2-bit unsigned immediate
-    insert.w $w9[4], $2  # CHECK: :[[@LINE]]:18: error: expected 2-bit unsigned immediate
-    insert.d $w9[-1], $2 # CHECK: :[[@LINE]]:18: error: expected 1-bit unsigned immediate
-    insert.d $w9[2], $2  # CHECK: :[[@LINE]]:18: error: expected 1-bit unsigned immediate
+    addvi.b $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    addvi.b $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    addvi.h $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    addvi.h $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    addvi.w $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    addvi.w $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    addvi.d $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    addvi.d $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    andi.b $w1, $w2, -1  # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate
+    andi.b $w1, $w2, 256 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate
+    bclri.b $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate
+    bclri.b $w1, $w2, 8  # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate
+    bclri.h $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 4-bit unsigned immediate
+    bclri.h $w1, $w2, 16 # CHECK: :[[@LINE]]:23: error: expected 4-bit unsigned immediate
+    bclri.w $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    bclri.w $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    bclri.d $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 6-bit unsigned immediate
+    bclri.d $w1, $w2, 64 # CHECK: :[[@LINE]]:23: error: expected 6-bit unsigned immediate
+    binsli.b $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate
+    binsli.b $w1, $w2, 8  # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate
+    binsli.h $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate
+    binsli.h $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate
+    binsli.w $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    binsli.w $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    binsli.d $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate
+    binsli.d $w1, $w2, 64 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate
+    binsri.b $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate
+    binsri.b $w1, $w2, 8  # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate
+    binsri.h $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate
+    binsri.h $w1, $w2, 16 # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate
+    binsri.w $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    binsri.w $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    binsri.d $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate
+    binsri.d $w1, $w2, 64 # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate
+    bmnzi.b $w1, $w2, -1  # CHECK: :[[@LINE]]:23: error: expected 8-bit unsigned immediate
+    bmnzi.b $w1, $w2, 256 # CHECK: :[[@LINE]]:23: error: expected 8-bit unsigned immediate
+    bmzi.b $w1, $w2, -1   # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate
+    bmzi.b $w1, $w2, 256  # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate
+    bnegi.b $w1, $w2, -1  # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate
+    bnegi.b $w1, $w2, 8   # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate
+    bnegi.h $w1, $w2, -1  # CHECK: :[[@LINE]]:23: error: expected 4-bit unsigned immediate
+    bnegi.h $w1, $w2, 16  # CHECK: :[[@LINE]]:23: error: expected 4-bit unsigned immediate
+    bnegi.w $w1, $w2, -1  # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    bnegi.w $w1, $w2, 32  # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    bnegi.d $w1, $w2, -1  # CHECK: :[[@LINE]]:23: error: expected 6-bit unsigned immediate
+    bnegi.d $w1, $w2, 64  # CHECK: :[[@LINE]]:23: error: expected 6-bit unsigned immediate
+    bseli.b $w1, $w2, -1  # CHECK: :[[@LINE]]:23: error: expected 8-bit unsigned immediate
+    bseli.b $w1, $w2, 256 # CHECK: :[[@LINE]]:23: error: expected 8-bit unsigned immediate
+    bseti.b $w1, $w2, -1  # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate
+    bseti.b $w1, $w2, 8   # CHECK: :[[@LINE]]:23: error: expected 3-bit unsigned immediate
+    bseti.h $w1, $w2, -1  # CHECK: :[[@LINE]]:23: error: expected 4-bit unsigned immediate
+    bseti.h $w1, $w2, 16  # CHECK: :[[@LINE]]:23: error: expected 4-bit unsigned immediate
+    bseti.w $w1, $w2, -1  # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    bseti.w $w1, $w2, 32  # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    bseti.d $w1, $w2, -1  # CHECK: :[[@LINE]]:23: error: expected 6-bit unsigned immediate
+    bseti.d $w1, $w2, 64  # CHECK: :[[@LINE]]:23: error: expected 6-bit unsigned immediate
+    clei_u.b $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clei_u.b $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clei_u.h $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clei_u.h $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clei_u.w $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clei_u.w $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clei_u.d $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clei_u.d $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clti_u.b $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clti_u.b $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clti_u.h $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clti_u.h $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clti_u.w $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clti_u.w $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clti_u.d $w1, $w2, -1 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    clti_u.d $w1, $w2, 32 # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    copy_s.b $2, $w9[-1]  # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
+    copy_s.b $2, $w9[16]  # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
+    copy_s.h $2, $w9[-1]  # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
+    copy_s.h $2, $w9[8]   # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
+    copy_s.w $2, $w9[-1]  # CHECK: :[[@LINE]]:22: error: expected 2-bit unsigned immediate
+    copy_s.w $2, $w9[4]   # CHECK: :[[@LINE]]:22: error: expected 2-bit unsigned immediate
+    copy_s.d $2, $w9[-1]  # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate
+    copy_s.d $2, $w9[2]   # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate
+    copy_u.b $2, $w9[-1]  # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
+    copy_u.b $2, $w9[16]  # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
+    copy_u.h $2, $w9[-1]  # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
+    copy_u.h $2, $w9[8]   # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
+    copy_u.w $2, $w9[-1]  # CHECK: :[[@LINE]]:22: error: expected 2-bit unsigned immediate
+    copy_u.w $2, $w9[4]   # CHECK: :[[@LINE]]:22: error: expected 2-bit unsigned immediate
+    insert.b $w9[-1], $2  # CHECK: :[[@LINE]]:18: error: expected 4-bit unsigned immediate
+    insert.b $w9[16], $2  # CHECK: :[[@LINE]]:18: error: expected 4-bit unsigned immediate
+    insert.h $w9[-1], $2  # CHECK: :[[@LINE]]:18: error: expected 3-bit unsigned immediate
+    insert.h $w9[8], $2   # CHECK: :[[@LINE]]:18: error: expected 3-bit unsigned immediate
+    insert.w $w9[-1], $2  # CHECK: :[[@LINE]]:18: error: expected 2-bit unsigned immediate
+    insert.w $w9[4], $2   # CHECK: :[[@LINE]]:18: error: expected 2-bit unsigned immediate
+    insert.d $w9[-1], $2  # CHECK: :[[@LINE]]:18: error: expected 1-bit unsigned immediate
+    insert.d $w9[2], $2   # CHECK: :[[@LINE]]:18: error: expected 1-bit unsigned immediate
     insve.b $w25[-1], $w9[0] # CHECK: :[[@LINE]]:18: error: expected 4-bit unsigned immediate
     insve.b $w25[16], $w9[0] # CHECK: :[[@LINE]]:18: error: expected 4-bit unsigned immediate
     insve.h $w24[-1], $w2[0] # CHECK: :[[@LINE]]:18: error: expected 3-bit unsigned immediate
@@ -41,6 +113,26 @@
     insve.d $w3[0], $w18[1] # CHECK: :[[@LINE]]:26: error: expected '0'
     lsa     $2, $3, $4, 0   # CHECK: :[[@LINE]]:25: error: expected immediate in range 1 .. 4
     lsa     $2, $3, $4, 5   # CHECK: :[[@LINE]]:25: error: expected immediate in range 1 .. 4
+    maxi_u.b $w1, $w2, -1   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    maxi_u.b $w1, $w2, 32   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    maxi_u.h $w1, $w2, -1   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    maxi_u.h $w1, $w2, 32   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    maxi_u.w $w1, $w2, -1   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    maxi_u.w $w1, $w2, 32   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    maxi_u.d $w1, $w2, -1   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    maxi_u.d $w1, $w2, 32   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    mini_u.b $w1, $w2, -1   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    mini_u.b $w1, $w2, 32   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    mini_u.h $w1, $w2, -1   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    mini_u.h $w1, $w2, 32   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    mini_u.w $w1, $w2, -1   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    mini_u.w $w1, $w2, 32   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    mini_u.d $w1, $w2, -1   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    mini_u.d $w1, $w2, 32   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
+    nori.b $w1, $w2, -1     # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate
+    nori.b $w1, $w2, 256    # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate
+    ori.b $w1, $w2, -1      # CHECK: :[[@LINE]]:21: error: expected 8-bit unsigned immediate
+    ori.b $w1, $w2, 256     # CHECK: :[[@LINE]]:21: error: expected 8-bit unsigned immediate
     sat_s.b $w31, $w31, -1  # CHECK: :[[@LINE]]:25: error: expected 3-bit unsigned immediate
     sat_s.b $w31, $w31, 8   # CHECK: :[[@LINE]]:25: error: expected 3-bit unsigned immediate
     sat_s.h $w31, $w31, -1  # CHECK: :[[@LINE]]:25: error: expected 4-bit unsigned immediate
@@ -65,12 +157,36 @@
     shf.w $w14, $w3, 256    # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate
     sldi.b $w0, $w29[-1]    # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
     sldi.b $w0, $w29[16]    # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
-    sldi.d $w4, $w12[-1]    # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate
-    sldi.d $w4, $w12[2]     # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate
     sldi.h $w8, $w17[-1]    # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
     sldi.h $w8, $w17[8]     # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
     sldi.w $w20, $w27[-1]   # CHECK: :[[@LINE]]:23: error: expected 2-bit unsigned immediate
     sldi.w $w20, $w27[4]    # CHECK: :[[@LINE]]:23: error: expected 2-bit unsigned immediate
+    sldi.d $w4, $w12[-1]    # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate
+    sldi.d $w4, $w12[2]     # CHECK: :[[@LINE]]:22: error: expected 1-bit unsigned immediate
+    slli.b $w1, $w2, -1     # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
+    slli.b $w1, $w2, 8      # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
+    slli.h $w1, $w2, -1     # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
+    slli.h $w1, $w2, 16     # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
+    slli.w $w1, $w2, -1     # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate
+    slli.w $w1, $w2, 32     # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate
+    slli.d $w1, $w2, -1     # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate
+    slli.d $w1, $w2, 64     # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate
+    splati.b $w0, $w29[-1]  # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate
+    splati.b $w0, $w29[16]  # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate
+    splati.h $w8, $w17[-1]  # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate
+    splati.h $w8, $w17[8]   # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate
+    splati.w $w2, $w27[-1]  # CHECK: :[[@LINE]]:24: error: expected 2-bit unsigned immediate
+    splati.w $w2, $w27[4]   # CHECK: :[[@LINE]]:24: error: expected 2-bit unsigned immediate
+    splati.d $w4, $w12[-1]  # CHECK: :[[@LINE]]:24: error: expected 1-bit unsigned immediate
+    splati.d $w4, $w12[2]   # CHECK: :[[@LINE]]:24: error: expected 1-bit unsigned immediate
+    srai.b $w1, $w2, -1     # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
+    srai.b $w1, $w2, 8      # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
+    srai.h $w1, $w2, -1     # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
+    srai.h $w1, $w2, 16     # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
+    srai.w $w1, $w2, -1     # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate
+    srai.w $w1, $w2, 32     # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate
+    srai.d $w1, $w2, -1     # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate
+    srai.d $w1, $w2, 64     # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate
     srari.b $w5, $w25, -1   # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate
     srari.b $w5, $w25, 8    # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate
     srari.h $w5, $w25, -1   # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate
@@ -79,6 +195,14 @@
     srari.w $w5, $w25, 32   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
     srari.d $w5, $w25, -1   # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate
     srari.d $w5, $w25, 64   # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate
+    srli.b $w1, $w2, -1     # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
+    srli.b $w1, $w2, 8      # CHECK: :[[@LINE]]:22: error: expected 3-bit unsigned immediate
+    srli.h $w1, $w2, -1     # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
+    srli.h $w1, $w2, 16     # CHECK: :[[@LINE]]:22: error: expected 4-bit unsigned immediate
+    srli.w $w1, $w2, -1     # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate
+    srli.w $w1, $w2, 32     # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate
+    srli.d $w1, $w2, -1     # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate
+    srli.d $w1, $w2, 64     # CHECK: :[[@LINE]]:22: error: expected 6-bit unsigned immediate
     srlri.b $w18, $w3, -1   # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate
     srlri.b $w18, $w3, 8    # CHECK: :[[@LINE]]:24: error: expected 3-bit unsigned immediate
     srlri.h $w18, $w3, -1   # CHECK: :[[@LINE]]:24: error: expected 4-bit unsigned immediate
@@ -87,3 +211,13 @@
     srlri.w $w18, $w3, 32   # CHECK: :[[@LINE]]:24: error: expected 5-bit unsigned immediate
     srlri.d $w18, $w3, -1   # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate
     srlri.d $w18, $w3, 64   # CHECK: :[[@LINE]]:24: error: expected 6-bit unsigned immediate
+    subvi.b $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    subvi.b $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    subvi.h $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    subvi.h $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    subvi.w $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    subvi.w $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    subvi.d $w1, $w2, -1 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    subvi.d $w1, $w2, 32 # CHECK: :[[@LINE]]:23: error: expected 5-bit unsigned immediate
+    xori.b $w1, $w2, -1  # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate
+    xori.b $w1, $w2, 256 # CHECK: :[[@LINE]]:22: error: expected 8-bit unsigned immediate




More information about the llvm-commits mailing list