* Fix VRSHR and VSHR to have the correct encoding for the immediate.
* Update the NEON shift instruction test to expect what 'as' produces. llvm-svn: 127293
This commit is contained in:
		
							parent
							
								
									40fa548ee7
								
							
						
					
					
						commit
						e313f16ad9
					
				| 
						 | 
					@ -2288,17 +2288,17 @@ class N2VQPLInt2<bits<2> op24_23, bits<2> op21_20, bits<2> op19_18,
 | 
				
			||||||
// Shift by immediate,
 | 
					// Shift by immediate,
 | 
				
			||||||
// both double- and quad-register.
 | 
					// both double- and quad-register.
 | 
				
			||||||
class N2VDSh<bit op24, bit op23, bits<4> op11_8, bit op7, bit op4,
 | 
					class N2VDSh<bit op24, bit op23, bits<4> op11_8, bit op7, bit op4,
 | 
				
			||||||
             Format f, InstrItinClass itin, string OpcodeStr, string Dt,
 | 
					             Format f, InstrItinClass itin, Operand ImmTy,
 | 
				
			||||||
             ValueType Ty, SDNode OpNode>
 | 
					             string OpcodeStr, string Dt, ValueType Ty, SDNode OpNode>
 | 
				
			||||||
  : N2VImm<op24, op23, op11_8, op7, 0, op4,
 | 
					  : N2VImm<op24, op23, op11_8, op7, 0, op4,
 | 
				
			||||||
           (outs DPR:$Vd), (ins DPR:$Vm, i32imm:$SIMM), f, itin,
 | 
					           (outs DPR:$Vd), (ins DPR:$Vm, ImmTy:$SIMM), f, itin,
 | 
				
			||||||
           OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "",
 | 
					           OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "",
 | 
				
			||||||
           [(set DPR:$Vd, (Ty (OpNode (Ty DPR:$Vm), (i32 imm:$SIMM))))]>;
 | 
					           [(set DPR:$Vd, (Ty (OpNode (Ty DPR:$Vm), (i32 imm:$SIMM))))]>;
 | 
				
			||||||
class N2VQSh<bit op24, bit op23, bits<4> op11_8, bit op7, bit op4,
 | 
					class N2VQSh<bit op24, bit op23, bits<4> op11_8, bit op7, bit op4,
 | 
				
			||||||
             Format f, InstrItinClass itin, string OpcodeStr, string Dt,
 | 
					             Format f, InstrItinClass itin, Operand ImmTy,
 | 
				
			||||||
             ValueType Ty, SDNode OpNode>
 | 
					             string OpcodeStr, string Dt, ValueType Ty, SDNode OpNode>
 | 
				
			||||||
  : N2VImm<op24, op23, op11_8, op7, 1, op4,
 | 
					  : N2VImm<op24, op23, op11_8, op7, 1, op4,
 | 
				
			||||||
           (outs QPR:$Vd), (ins QPR:$Vm, i32imm:$SIMM), f, itin,
 | 
					           (outs QPR:$Vd), (ins QPR:$Vm, ImmTy:$SIMM), f, itin,
 | 
				
			||||||
           OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "",
 | 
					           OpcodeStr, Dt, "$Vd, $Vm, $SIMM", "",
 | 
				
			||||||
           [(set QPR:$Vd, (Ty (OpNode (Ty QPR:$Vm), (i32 imm:$SIMM))))]>;
 | 
					           [(set QPR:$Vd, (Ty (OpNode (Ty QPR:$Vm), (i32 imm:$SIMM))))]>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3010,40 +3010,77 @@ multiclass N2VPLInt2_QHS<bits<2> op24_23, bits<2> op21_20, bits<2> op17_16,
 | 
				
			||||||
// Neon 2-register vector shift by immediate,
 | 
					// Neon 2-register vector shift by immediate,
 | 
				
			||||||
//   with f of either N2RegVShLFrm or N2RegVShRFrm
 | 
					//   with f of either N2RegVShLFrm or N2RegVShRFrm
 | 
				
			||||||
//   element sizes of 8, 16, 32 and 64 bits:
 | 
					//   element sizes of 8, 16, 32 and 64 bits:
 | 
				
			||||||
multiclass N2VSh_QHSD<bit op24, bit op23, bits<4> op11_8, bit op4,
 | 
					multiclass N2VShL_QHSD<bit op24, bit op23, bits<4> op11_8, bit op4,
 | 
				
			||||||
                     InstrItinClass itin, string OpcodeStr, string Dt,
 | 
					                       InstrItinClass itin, string OpcodeStr, string Dt,
 | 
				
			||||||
                     SDNode OpNode, Format f> {
 | 
					                       SDNode OpNode> {
 | 
				
			||||||
  // 64-bit vector types.
 | 
					  // 64-bit vector types.
 | 
				
			||||||
  def v8i8  : N2VDSh<op24, op23, op11_8, 0, op4, f, itin,
 | 
					  def v8i8  : N2VDSh<op24, op23, op11_8, 0, op4, N2RegVShLFrm, itin, i32imm,
 | 
				
			||||||
                     OpcodeStr, !strconcat(Dt, "8"), v8i8, OpNode> {
 | 
					                     OpcodeStr, !strconcat(Dt, "8"), v8i8, OpNode> {
 | 
				
			||||||
    let Inst{21-19} = 0b001; // imm6 = 001xxx
 | 
					    let Inst{21-19} = 0b001; // imm6 = 001xxx
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  def v4i16 : N2VDSh<op24, op23, op11_8, 0, op4, f, itin,
 | 
					  def v4i16 : N2VDSh<op24, op23, op11_8, 0, op4, N2RegVShLFrm, itin, i32imm,
 | 
				
			||||||
                     OpcodeStr, !strconcat(Dt, "16"), v4i16, OpNode> {
 | 
					                     OpcodeStr, !strconcat(Dt, "16"), v4i16, OpNode> {
 | 
				
			||||||
    let Inst{21-20} = 0b01;  // imm6 = 01xxxx
 | 
					    let Inst{21-20} = 0b01;  // imm6 = 01xxxx
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  def v2i32 : N2VDSh<op24, op23, op11_8, 0, op4, f, itin,
 | 
					  def v2i32 : N2VDSh<op24, op23, op11_8, 0, op4, N2RegVShLFrm, itin, i32imm,
 | 
				
			||||||
                     OpcodeStr, !strconcat(Dt, "32"), v2i32, OpNode> {
 | 
					                     OpcodeStr, !strconcat(Dt, "32"), v2i32, OpNode> {
 | 
				
			||||||
    let Inst{21} = 0b1;      // imm6 = 1xxxxx
 | 
					    let Inst{21} = 0b1;      // imm6 = 1xxxxx
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  def v1i64 : N2VDSh<op24, op23, op11_8, 1, op4, f, itin,
 | 
					  def v1i64 : N2VDSh<op24, op23, op11_8, 1, op4, N2RegVShLFrm, itin, i32imm,
 | 
				
			||||||
                     OpcodeStr, !strconcat(Dt, "64"), v1i64, OpNode>;
 | 
					                     OpcodeStr, !strconcat(Dt, "64"), v1i64, OpNode>;
 | 
				
			||||||
                             // imm6 = xxxxxx
 | 
					                             // imm6 = xxxxxx
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  // 128-bit vector types.
 | 
					  // 128-bit vector types.
 | 
				
			||||||
  def v16i8 : N2VQSh<op24, op23, op11_8, 0, op4, f, itin,
 | 
					  def v16i8 : N2VQSh<op24, op23, op11_8, 0, op4, N2RegVShLFrm, itin, i32imm,
 | 
				
			||||||
                     OpcodeStr, !strconcat(Dt, "8"), v16i8, OpNode> {
 | 
					                     OpcodeStr, !strconcat(Dt, "8"), v16i8, OpNode> {
 | 
				
			||||||
    let Inst{21-19} = 0b001; // imm6 = 001xxx
 | 
					    let Inst{21-19} = 0b001; // imm6 = 001xxx
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  def v8i16 : N2VQSh<op24, op23, op11_8, 0, op4, f, itin,
 | 
					  def v8i16 : N2VQSh<op24, op23, op11_8, 0, op4, N2RegVShLFrm, itin, i32imm,
 | 
				
			||||||
                     OpcodeStr, !strconcat(Dt, "16"), v8i16, OpNode> {
 | 
					                     OpcodeStr, !strconcat(Dt, "16"), v8i16, OpNode> {
 | 
				
			||||||
    let Inst{21-20} = 0b01;  // imm6 = 01xxxx
 | 
					    let Inst{21-20} = 0b01;  // imm6 = 01xxxx
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  def v4i32 : N2VQSh<op24, op23, op11_8, 0, op4, f, itin,
 | 
					  def v4i32 : N2VQSh<op24, op23, op11_8, 0, op4, N2RegVShLFrm, itin, i32imm,
 | 
				
			||||||
                     OpcodeStr, !strconcat(Dt, "32"), v4i32, OpNode> {
 | 
					                     OpcodeStr, !strconcat(Dt, "32"), v4i32, OpNode> {
 | 
				
			||||||
    let Inst{21} = 0b1;      // imm6 = 1xxxxx
 | 
					    let Inst{21} = 0b1;      // imm6 = 1xxxxx
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  def v2i64 : N2VQSh<op24, op23, op11_8, 1, op4, f, itin,
 | 
					  def v2i64 : N2VQSh<op24, op23, op11_8, 1, op4, N2RegVShLFrm, itin, i32imm,
 | 
				
			||||||
 | 
					                     OpcodeStr, !strconcat(Dt, "64"), v2i64, OpNode>;
 | 
				
			||||||
 | 
					                             // imm6 = xxxxxx
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					multiclass N2VShR_QHSD<bit op24, bit op23, bits<4> op11_8, bit op4,
 | 
				
			||||||
 | 
					                       InstrItinClass itin, string OpcodeStr, string Dt,
 | 
				
			||||||
 | 
					                       SDNode OpNode> {
 | 
				
			||||||
 | 
					  // 64-bit vector types.
 | 
				
			||||||
 | 
					  def v8i8  : N2VDSh<op24, op23, op11_8, 0, op4, N2RegVShRFrm, itin, shr_imm8,
 | 
				
			||||||
 | 
					                     OpcodeStr, !strconcat(Dt, "8"), v8i8, OpNode> {
 | 
				
			||||||
 | 
					    let Inst{21-19} = 0b001; // imm6 = 001xxx
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  def v4i16 : N2VDSh<op24, op23, op11_8, 0, op4, N2RegVShRFrm, itin, shr_imm16,
 | 
				
			||||||
 | 
					                     OpcodeStr, !strconcat(Dt, "16"), v4i16, OpNode> {
 | 
				
			||||||
 | 
					    let Inst{21-20} = 0b01;  // imm6 = 01xxxx
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  def v2i32 : N2VDSh<op24, op23, op11_8, 0, op4, N2RegVShRFrm, itin, shr_imm32,
 | 
				
			||||||
 | 
					                     OpcodeStr, !strconcat(Dt, "32"), v2i32, OpNode> {
 | 
				
			||||||
 | 
					    let Inst{21} = 0b1;      // imm6 = 1xxxxx
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  def v1i64 : N2VDSh<op24, op23, op11_8, 1, op4, N2RegVShRFrm, itin, shr_imm64,
 | 
				
			||||||
 | 
					                     OpcodeStr, !strconcat(Dt, "64"), v1i64, OpNode>;
 | 
				
			||||||
 | 
					                             // imm6 = xxxxxx
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // 128-bit vector types.
 | 
				
			||||||
 | 
					  def v16i8 : N2VQSh<op24, op23, op11_8, 0, op4, N2RegVShRFrm, itin, shr_imm8,
 | 
				
			||||||
 | 
					                     OpcodeStr, !strconcat(Dt, "8"), v16i8, OpNode> {
 | 
				
			||||||
 | 
					    let Inst{21-19} = 0b001; // imm6 = 001xxx
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  def v8i16 : N2VQSh<op24, op23, op11_8, 0, op4, N2RegVShRFrm, itin, shr_imm16,
 | 
				
			||||||
 | 
					                     OpcodeStr, !strconcat(Dt, "16"), v8i16, OpNode> {
 | 
				
			||||||
 | 
					    let Inst{21-20} = 0b01;  // imm6 = 01xxxx
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  def v4i32 : N2VQSh<op24, op23, op11_8, 0, op4, N2RegVShRFrm, itin, shr_imm32,
 | 
				
			||||||
 | 
					                     OpcodeStr, !strconcat(Dt, "32"), v4i32, OpNode> {
 | 
				
			||||||
 | 
					    let Inst{21} = 0b1;      // imm6 = 1xxxxx
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  def v2i64 : N2VQSh<op24, op23, op11_8, 1, op4, N2RegVShRFrm, itin, shr_imm64,
 | 
				
			||||||
                     OpcodeStr, !strconcat(Dt, "64"), v2i64, OpNode>;
 | 
					                     OpcodeStr, !strconcat(Dt, "64"), v2i64, OpNode>;
 | 
				
			||||||
                             // imm6 = xxxxxx
 | 
					                             // imm6 = xxxxxx
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -3920,14 +3957,13 @@ defm VSHLs    : N3VInt_QHSDSh<0, 0, 0b0100, 0, N3RegVShFrm,
 | 
				
			||||||
defm VSHLu    : N3VInt_QHSDSh<1, 0, 0b0100, 0, N3RegVShFrm,
 | 
					defm VSHLu    : N3VInt_QHSDSh<1, 0, 0b0100, 0, N3RegVShFrm,
 | 
				
			||||||
                            IIC_VSHLiD, IIC_VSHLiD, IIC_VSHLiQ, IIC_VSHLiQ,
 | 
					                            IIC_VSHLiD, IIC_VSHLiD, IIC_VSHLiQ, IIC_VSHLiQ,
 | 
				
			||||||
                            "vshl", "u", int_arm_neon_vshiftu>;
 | 
					                            "vshl", "u", int_arm_neon_vshiftu>;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//   VSHL     : Vector Shift Left (Immediate)
 | 
					//   VSHL     : Vector Shift Left (Immediate)
 | 
				
			||||||
defm VSHLi    : N2VSh_QHSD<0, 1, 0b0101, 1, IIC_VSHLiD, "vshl", "i", NEONvshl,
 | 
					defm VSHLi    : N2VShL_QHSD<0, 1, 0b0101, 1, IIC_VSHLiD, "vshl", "i", NEONvshl>;
 | 
				
			||||||
                           N2RegVShLFrm>;
 | 
					
 | 
				
			||||||
//   VSHR     : Vector Shift Right (Immediate)
 | 
					//   VSHR     : Vector Shift Right (Immediate)
 | 
				
			||||||
defm VSHRs    : N2VSh_QHSD<0, 1, 0b0000, 1, IIC_VSHLiD, "vshr", "s", NEONvshrs,
 | 
					defm VSHRs    : N2VShR_QHSD<0, 1, 0b0000, 1, IIC_VSHLiD, "vshr", "s",NEONvshrs>;
 | 
				
			||||||
                           N2RegVShRFrm>;
 | 
					defm VSHRu    : N2VShR_QHSD<1, 1, 0b0000, 1, IIC_VSHLiD, "vshr", "u",NEONvshru>;
 | 
				
			||||||
defm VSHRu    : N2VSh_QHSD<1, 1, 0b0000, 1, IIC_VSHLiD, "vshr", "u", NEONvshru,
 | 
					 | 
				
			||||||
                           N2RegVShRFrm>;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//   VSHLL    : Vector Shift Left Long
 | 
					//   VSHLL    : Vector Shift Left Long
 | 
				
			||||||
defm VSHLLs   : N2VLSh_QHS<0, 1, 0b1010, 0, 0, 1, "vshll", "s", NEONvshlls>;
 | 
					defm VSHLLs   : N2VLSh_QHS<0, 1, 0b1010, 0, 0, 1, "vshll", "s", NEONvshlls>;
 | 
				
			||||||
| 
						 | 
					@ -3960,10 +3996,8 @@ defm VRSHLu   : N3VInt_QHSDSh<1, 0, 0b0101, 0, N3RegVShFrm,
 | 
				
			||||||
                            IIC_VSHLi4D, IIC_VSHLi4D, IIC_VSHLi4Q, IIC_VSHLi4Q,
 | 
					                            IIC_VSHLi4D, IIC_VSHLi4D, IIC_VSHLi4Q, IIC_VSHLi4Q,
 | 
				
			||||||
                            "vrshl", "u", int_arm_neon_vrshiftu>;
 | 
					                            "vrshl", "u", int_arm_neon_vrshiftu>;
 | 
				
			||||||
//   VRSHR    : Vector Rounding Shift Right
 | 
					//   VRSHR    : Vector Rounding Shift Right
 | 
				
			||||||
defm VRSHRs   : N2VSh_QHSD<0,1,0b0010,1, IIC_VSHLi4D, "vrshr", "s", NEONvrshrs,
 | 
					defm VRSHRs   : N2VShR_QHSD<0,1,0b0010,1, IIC_VSHLi4D, "vrshr", "s",NEONvrshrs>;
 | 
				
			||||||
                           N2RegVShRFrm>;
 | 
					defm VRSHRu   : N2VShR_QHSD<1,1,0b0010,1, IIC_VSHLi4D, "vrshr", "u",NEONvrshru>;
 | 
				
			||||||
defm VRSHRu   : N2VSh_QHSD<1,1,0b0010,1, IIC_VSHLi4D, "vrshr", "u", NEONvrshru,
 | 
					 | 
				
			||||||
                           N2RegVShRFrm>;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//   VRSHRN   : Vector Rounding Shift Right and Narrow
 | 
					//   VRSHRN   : Vector Rounding Shift Right and Narrow
 | 
				
			||||||
defm VRSHRN   : N2VNSh_HSD<0, 1, 0b1000, 0, 1, 1, IIC_VSHLi4D, "vrshrn", "i",
 | 
					defm VRSHRN   : N2VNSh_HSD<0, 1, 0b1000, 0, 1, 1, IIC_VSHLi4D, "vrshrn", "i",
 | 
				
			||||||
| 
						 | 
					@ -3977,13 +4011,11 @@ defm VQSHLu   : N3VInt_QHSDSh<1, 0, 0b0100, 1, N3RegVShFrm,
 | 
				
			||||||
                            IIC_VSHLi4D, IIC_VSHLi4D, IIC_VSHLi4Q, IIC_VSHLi4Q,
 | 
					                            IIC_VSHLi4D, IIC_VSHLi4D, IIC_VSHLi4Q, IIC_VSHLi4Q,
 | 
				
			||||||
                            "vqshl", "u", int_arm_neon_vqshiftu>;
 | 
					                            "vqshl", "u", int_arm_neon_vqshiftu>;
 | 
				
			||||||
//   VQSHL    : Vector Saturating Shift Left (Immediate)
 | 
					//   VQSHL    : Vector Saturating Shift Left (Immediate)
 | 
				
			||||||
defm VQSHLsi  : N2VSh_QHSD<0,1,0b0111,1, IIC_VSHLi4D, "vqshl", "s",NEONvqshls,
 | 
					defm VQSHLsi  : N2VShL_QHSD<0,1,0b0111,1, IIC_VSHLi4D, "vqshl", "s",NEONvqshls>;
 | 
				
			||||||
                           N2RegVShLFrm>;
 | 
					defm VQSHLui  : N2VShL_QHSD<1,1,0b0111,1, IIC_VSHLi4D, "vqshl", "u",NEONvqshlu>;
 | 
				
			||||||
defm VQSHLui  : N2VSh_QHSD<1,1,0b0111,1, IIC_VSHLi4D, "vqshl", "u",NEONvqshlu,
 | 
					
 | 
				
			||||||
                           N2RegVShLFrm>;
 | 
					 | 
				
			||||||
//   VQSHLU   : Vector Saturating Shift Left (Immediate, Unsigned)
 | 
					//   VQSHLU   : Vector Saturating Shift Left (Immediate, Unsigned)
 | 
				
			||||||
defm VQSHLsu  : N2VSh_QHSD<1,1,0b0110,1, IIC_VSHLi4D,"vqshlu","s",NEONvqshlsu,
 | 
					defm VQSHLsu  : N2VShL_QHSD<1,1,0b0110,1, IIC_VSHLi4D,"vqshlu","s",NEONvqshlsu>;
 | 
				
			||||||
                           N2RegVShLFrm>;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//   VQSHRN   : Vector Saturating Shift Right and Narrow
 | 
					//   VQSHRN   : Vector Saturating Shift Right and Narrow
 | 
				
			||||||
defm VQSHRNs  : N2VNSh_HSD<0, 1, 0b1001, 0, 0, 1, IIC_VSHLi4D, "vqshrn", "s",
 | 
					defm VQSHRNs  : N2VNSh_HSD<0, 1, 0b1001, 0, 0, 1, IIC_VSHLi4D, "vqshrn", "s",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,174 +1,173 @@
 | 
				
			||||||
@ RUN: llvm-mc -mcpu=cortex-a8 -triple arm-unknown-unknown -show-encoding < %s | FileCheck %s
 | 
					@ RUN: llvm-mc -mcpu=cortex-a8 -triple arm-unknown-unknown -show-encoding < %s | FileCheck %s
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ CHECK: vshl.u8	d16, d17, d16           @ encoding: [0xa1,0x04,0x40,0xf3]
 | 
					_foo:
 | 
				
			||||||
 | 
					@ CHECK: vshl.u8	d16, d17, d16  @ encoding: [0xa1,0x04,0x40,0xf3]
 | 
				
			||||||
	vshl.u8	d16, d17, d16
 | 
						vshl.u8	d16, d17, d16
 | 
				
			||||||
@ CHECK: vshl.u16	d16, d17, d16   @ encoding: [0xa1,0x04,0x50,0xf3]
 | 
					@ CHECK: vshl.u16	d16, d17, d16  @ encoding: [0xa1,0x04,0x50,0xf3]
 | 
				
			||||||
	vshl.u16	d16, d17, d16
 | 
						vshl.u16	d16, d17, d16
 | 
				
			||||||
@ CHECK: vshl.u32	d16, d17, d16   @ encoding: [0xa1,0x04,0x60,0xf3]
 | 
					@ CHECK: vshl.u32	d16, d17, d16  @ encoding: [0xa1,0x04,0x60,0xf3]
 | 
				
			||||||
	vshl.u32	d16, d17, d16
 | 
						vshl.u32	d16, d17, d16
 | 
				
			||||||
@ CHECK: vshl.u64	d16, d17, d16   @ encoding: [0xa1,0x04,0x70,0xf3]
 | 
					@ CHECK: vshl.u64	d16, d17, d16  @ encoding: [0xa1,0x04,0x70,0xf3]
 | 
				
			||||||
	vshl.u64	d16, d17, d16
 | 
						vshl.u64	d16, d17, d16
 | 
				
			||||||
@ CHECK: vshl.i8	d16, d16, #7            @ encoding: [0x30,0x05,0xcf,0xf2]
 | 
					@ CHECK: vshl.i8	d16, d16, #7  @ encoding: [0x30,0x05,0xcf,0xf2]
 | 
				
			||||||
	vshl.i8	d16, d16, #7
 | 
						vshl.i8	d16, d16, #7
 | 
				
			||||||
@ CHECK: vshl.i16	d16, d16, #15   @ encoding: [0x30,0x05,0xdf,0xf2]
 | 
					@ CHECK: vshl.i16	d16, d16, #15  @ encoding: [0x30,0x05,0xdf,0xf2]
 | 
				
			||||||
	vshl.i16	d16, d16, #15
 | 
						vshl.i16	d16, d16, #15
 | 
				
			||||||
@ CHECK: vshl.i32	d16, d16, #31   @ encoding: [0x30,0x05,0xff,0xf2]
 | 
					@ CHECK: vshl.i32	d16, d16, #31  @ encoding: [0x30,0x05,0xff,0xf2]
 | 
				
			||||||
	vshl.i32	d16, d16, #31
 | 
						vshl.i32	d16, d16, #31
 | 
				
			||||||
@ CHECK: vshl.i64	d16, d16, #63   @ encoding: [0xb0,0x05,0xff,0xf2]
 | 
					@ CHECK: vshl.i64	d16, d16, #63  @ encoding: [0xb0,0x05,0xff,0xf2]
 | 
				
			||||||
	vshl.i64	d16, d16, #63
 | 
						vshl.i64	d16, d16, #63
 | 
				
			||||||
@ CHECK: vshl.u8	q8, q9, q8              @ encoding: [0xe2,0x04,0x40,0xf3]
 | 
					@ CHECK: vshl.u8	q8, q9, q8  @ encoding: [0xe2,0x04,0x40,0xf3]
 | 
				
			||||||
	vshl.u8	q8, q9, q8
 | 
						vshl.u8	q8, q9, q8
 | 
				
			||||||
@ CHECK: vshl.u16	q8, q9, q8      @ encoding: [0xe2,0x04,0x50,0xf3]
 | 
					@ CHECK: vshl.u16	q8, q9, q8  @ encoding: [0xe2,0x04,0x50,0xf3]
 | 
				
			||||||
	vshl.u16	q8, q9, q8
 | 
						vshl.u16	q8, q9, q8
 | 
				
			||||||
@ CHECK: vshl.u32	q8, q9, q8      @ encoding: [0xe2,0x04,0x60,0xf3]
 | 
					@ CHECK: vshl.u32	q8, q9, q8  @ encoding: [0xe2,0x04,0x60,0xf3]
 | 
				
			||||||
	vshl.u32	q8, q9, q8
 | 
						vshl.u32	q8, q9, q8
 | 
				
			||||||
@ CHECK: vshl.u64	q8, q9, q8      @ encoding: [0xe2,0x04,0x70,0xf3]
 | 
					@ CHECK: vshl.u64	q8, q9, q8  @ encoding: [0xe2,0x04,0x70,0xf3]
 | 
				
			||||||
	vshl.u64	q8, q9, q8
 | 
						vshl.u64	q8, q9, q8
 | 
				
			||||||
@ CHECK: vshl.i8	q8, q8, #7              @ encoding: [0x70,0x05,0xcf,0xf2]
 | 
					@ CHECK: vshl.i8	q8, q8, #7  @ encoding: [0x70,0x05,0xcf,0xf2]
 | 
				
			||||||
	vshl.i8	q8, q8, #7
 | 
						vshl.i8	q8, q8, #7
 | 
				
			||||||
@ CHECK: vshl.i16	q8, q8, #15     @ encoding: [0x70,0x05,0xdf,0xf2]
 | 
					@ CHECK: vshl.i16	q8, q8, #15  @ encoding: [0x70,0x05,0xdf,0xf2]
 | 
				
			||||||
	vshl.i16	q8, q8, #15
 | 
						vshl.i16	q8, q8, #15
 | 
				
			||||||
@ CHECK: vshl.i32	q8, q8, #31     @ encoding: [0x70,0x05,0xff,0xf2]
 | 
					@ CHECK: vshl.i32	q8, q8, #31  @ encoding: [0x70,0x05,0xff,0xf2]
 | 
				
			||||||
	vshl.i32	q8, q8, #31
 | 
						vshl.i32	q8, q8, #31
 | 
				
			||||||
@ CHECK: vshl.i64	q8, q8, #63     @ encoding: [0xf0,0x05,0xff,0xf2]
 | 
					@ CHECK: vshl.i64	q8, q8, #63  @ encoding: [0xf0,0x05,0xff,0xf2]
 | 
				
			||||||
	vshl.i64	q8, q8, #63
 | 
						vshl.i64	q8, q8, #63
 | 
				
			||||||
@ CHECK: vshr.u8	d16, d16, #8            @ encoding: [0x30,0x00,0xc8,0xf3]
 | 
					@ CHECK: vshr.u8	d16, d16, #7  @ encoding: [0x30,0x00,0xc9,0xf3]
 | 
				
			||||||
	vshr.u8	d16, d16, #8
 | 
						vshr.u8	d16, d16, #7
 | 
				
			||||||
@ CHECK: vshr.u16	d16, d16, #16   @ encoding: [0x30,0x00,0xd0,0xf3]
 | 
					@ CHECK: vshr.u16	d16, d16, #15  @ encoding: [0x30,0x00,0xd1,0xf3]
 | 
				
			||||||
	vshr.u16	d16, d16, #16
 | 
						vshr.u16	d16, d16, #15
 | 
				
			||||||
@ CHECK: vshr.u32	d16, d16, #32   @ encoding: [0x30,0x00,0xe0,0xf3]
 | 
					@ CHECK: vshr.u32	d16, d16, #31  @ encoding: [0x30,0x00,0xe1,0xf3]
 | 
				
			||||||
	vshr.u32	d16, d16, #32
 | 
						vshr.u32	d16, d16, #31
 | 
				
			||||||
@ CHECK: vshr.u64	d16, d16, #64   @ encoding: [0xb0,0x00,0xc0,0xf3]
 | 
					@ CHECK: vshr.u64	d16, d16, #63  @ encoding: [0xb0,0x00,0xc1,0xf3]
 | 
				
			||||||
	vshr.u64	d16, d16, #64
 | 
						vshr.u64	d16, d16, #63
 | 
				
			||||||
@ CHECK: vshr.u8	q8, q8, #8              @ encoding: [0x70,0x00,0xc8,0xf3]
 | 
					@ CHECK: vshr.u8	q8, q8, #7  @ encoding: [0x70,0x00,0xc9,0xf3]
 | 
				
			||||||
	vshr.u8	q8, q8, #8
 | 
						vshr.u8	q8, q8, #7
 | 
				
			||||||
@ CHECK: vshr.u16	q8, q8, #16     @ encoding: [0x70,0x00,0xd0,0xf3]
 | 
					@ CHECK: vshr.u16	q8, q8, #15  @ encoding: [0x70,0x00,0xd1,0xf3]
 | 
				
			||||||
	vshr.u16	q8, q8, #16
 | 
						vshr.u16	q8, q8, #15
 | 
				
			||||||
@ CHECK: vshr.u32	q8, q8, #32     @ encoding: [0x70,0x00,0xe0,0xf3]
 | 
					@ CHECK: vshr.u32	q8, q8, #31  @ encoding: [0x70,0x00,0xe1,0xf3]
 | 
				
			||||||
	vshr.u32	q8, q8, #32
 | 
						vshr.u32	q8, q8, #31
 | 
				
			||||||
@ CHECK: vshr.u64	q8, q8, #64     @ encoding: [0xf0,0x00,0xc0,0xf3]
 | 
					@ CHECK: vshr.u64	q8, q8, #63  @ encoding: [0xf0,0x00,0xc1,0xf3]
 | 
				
			||||||
	vshr.u64	q8, q8, #64
 | 
						vshr.u64	q8, q8, #63
 | 
				
			||||||
@ CHECK: vshr.s8	d16, d16, #8            @ encoding: [0x30,0x00,0xc8,0xf2]
 | 
					@ CHECK: vshr.s8	d16, d16, #7  @ encoding: [0x30,0x00,0xc9,0xf2]
 | 
				
			||||||
	vshr.s8	d16, d16, #8
 | 
						vshr.s8	d16, d16, #7
 | 
				
			||||||
@ CHECK: vshr.s16	d16, d16, #16   @ encoding: [0x30,0x00,0xd0,0xf2]
 | 
					@ CHECK: vshr.s16	d16, d16, #15  @ encoding: [0x30,0x00,0xd1,0xf2]
 | 
				
			||||||
	vshr.s16	d16, d16, #16
 | 
						vshr.s16	d16, d16, #15
 | 
				
			||||||
@ CHECK: vshr.s32	d16, d16, #32   @ encoding: [0x30,0x00,0xe0,0xf2]
 | 
					@ CHECK: vshr.s32	d16, d16, #31  @ encoding: [0x30,0x00,0xe1,0xf2]
 | 
				
			||||||
	vshr.s32	d16, d16, #32
 | 
						vshr.s32	d16, d16, #31
 | 
				
			||||||
@ CHECK: vshr.s64	d16, d16, #64   @ encoding: [0xb0,0x00,0xc0,0xf2]
 | 
					@ CHECK: vshr.s64	d16, d16, #63  @ encoding: [0xb0,0x00,0xc1,0xf2]
 | 
				
			||||||
	vshr.s64	d16, d16, #64
 | 
						vshr.s64	d16, d16, #63
 | 
				
			||||||
@ CHECK: vshr.s8	q8, q8, #8              @ encoding: [0x70,0x00,0xc8,0xf2]
 | 
					@ CHECK: vshr.s8	q8, q8, #7  @ encoding: [0x70,0x00,0xc9,0xf2]
 | 
				
			||||||
	vshr.s8	q8, q8, #8
 | 
						vshr.s8	q8, q8, #7
 | 
				
			||||||
@ CHECK: vshr.s16	q8, q8, #16     @ encoding: [0x70,0x00,0xd0,0xf2]
 | 
					@ CHECK: vshr.s16	q8, q8, #15  @ encoding: [0x70,0x00,0xd1,0xf2]
 | 
				
			||||||
	vshr.s16	q8, q8, #16
 | 
						vshr.s16	q8, q8, #15
 | 
				
			||||||
@ CHECK: vshr.s32	q8, q8, #32     @ encoding: [0x70,0x00,0xe0,0xf2
 | 
					@ CHECK: vshr.s32	q8, q8, #31  @ encoding: [0x70,0x00,0xe1,0xf2]
 | 
				
			||||||
	vshr.s32	q8, q8, #32
 | 
						vshr.s32	q8, q8, #31
 | 
				
			||||||
@ CHECK: vshr.s64	q8, q8, #64     @ encoding: [0xf0,0x00,0xc0,0xf2]
 | 
					@ CHECK: vshr.s64	q8, q8, #63  @ encoding: [0xf0,0x00,0xc1,0xf2]
 | 
				
			||||||
	vshr.s64	q8, q8, #64
 | 
						vshr.s64	q8, q8, #63
 | 
				
			||||||
@ CHECK: vshll.s8	q8, d16, #7     @ encoding: [0x30,0x0a,0xcf,0xf2]
 | 
					@ CHECK: vshll.s8	q8, d16, #7  @ encoding: [0x30,0x0a,0xcf,0xf2]
 | 
				
			||||||
	vshll.s8	q8, d16, #7
 | 
						vshll.s8	q8, d16, #7
 | 
				
			||||||
@ CHECK: vshll.s16	q8, d16, #15    @ encoding: [0x30,0x0a,0xdf,0xf2]
 | 
					@ CHECK: vshll.s16	q8, d16, #15  @ encoding: [0x30,0x0a,0xdf,0xf2]
 | 
				
			||||||
	vshll.s16	q8, d16, #15
 | 
						vshll.s16	q8, d16, #15
 | 
				
			||||||
@ CHECK: vshll.s32	q8, d16, #31    @ encoding: [0x30,0x0a,0xff,0xf2]
 | 
					@ CHECK: vshll.s32	q8, d16, #31  @ encoding: [0x30,0x0a,0xff,0xf2]
 | 
				
			||||||
	vshll.s32	q8, d16, #31
 | 
						vshll.s32	q8, d16, #31
 | 
				
			||||||
@ CHECK: vshll.u8	q8, d16, #7     @ encoding: [0x30,0x0a,0xcf,0xf3]
 | 
					@ CHECK: vshll.u8	q8, d16, #7  @ encoding: [0x30,0x0a,0xcf,0xf3]
 | 
				
			||||||
	vshll.u8	q8, d16, #7
 | 
						vshll.u8	q8, d16, #7
 | 
				
			||||||
@ CHECK: vshll.u16	q8, d16, #15    @ encoding: [0x30,0x0a,0xdf,0xf3]
 | 
					@ CHECK: vshll.u16	q8, d16, #15  @ encoding: [0x30,0x0a,0xdf,0xf3]
 | 
				
			||||||
	vshll.u16	q8, d16, #15
 | 
						vshll.u16	q8, d16, #15
 | 
				
			||||||
@ CHECK: vshll.u32	q8, d16, #31    @ encoding: [0x30,0x0a,0xff,0xf3]
 | 
					@ CHECK: vshll.u32	q8, d16, #31  @ encoding: [0x30,0x0a,0xff,0xf3]
 | 
				
			||||||
	vshll.u32	q8, d16, #31
 | 
						vshll.u32	q8, d16, #31
 | 
				
			||||||
@ CHECK: vshll.i8	q8, d16, #8     @ encoding: [0x20,0x03,0xf2,0xf3]
 | 
					@ CHECK: vshll.i8	q8, d16, #8  @ encoding: [0x20,0x03,0xf2,0xf3]
 | 
				
			||||||
	vshll.i8	q8, d16, #8
 | 
						vshll.i8	q8, d16, #8
 | 
				
			||||||
@ CHECK: vshll.i16	q8, d16, #16    @ encoding: [0x20,0x03,0xf6,0xf3]
 | 
					@ CHECK: vshll.i16	q8, d16, #16  @ encoding: [0x20,0x03,0xf6,0xf3]
 | 
				
			||||||
	vshll.i16	q8, d16, #16
 | 
						vshll.i16	q8, d16, #16
 | 
				
			||||||
@ CHECK: vshll.i32	q8, d16, #32    @ encoding: [0x20,0x03,0xfa,0xf3]
 | 
					@ CHECK: vshll.i32	q8, d16, #32  @ encoding: [0x20,0x03,0xfa,0xf3]
 | 
				
			||||||
	vshll.i32	q8, d16, #32
 | 
						vshll.i32	q8, d16, #32
 | 
				
			||||||
@ CHECK: vshrn.i16	d16, q8, #8     @ encoding: [0x30,0x08,0xc8,0xf2]
 | 
					@ CHECK: vshrn.i16	d16, q8, #8  @ encoding: [0x30,0x08,0xc8,0xf2]
 | 
				
			||||||
	vshrn.i16	d16, q8, #8
 | 
						vshrn.i16	d16, q8, #8
 | 
				
			||||||
@ CHECK: vshrn.i32	d16, q8, #16    @ encoding: [0x30,0x08,0xd0,0xf2]
 | 
					@ CHECK: vshrn.i32	d16, q8, #16  @ encoding: [0x30,0x08,0xd0,0xf2]
 | 
				
			||||||
	vshrn.i32	d16, q8, #16
 | 
						vshrn.i32	d16, q8, #16
 | 
				
			||||||
@ CHECK: vshrn.i64	d16, q8, #32    @ encoding: [0x30,0x08,0xe0,0xf2]
 | 
					@ CHECK: vshrn.i64	d16, q8, #32  @ encoding: [0x30,0x08,0xe0,0xf2]
 | 
				
			||||||
	vshrn.i64	d16, q8, #32
 | 
						vshrn.i64	d16, q8, #32
 | 
				
			||||||
@ CHECK: vrshl.s8	d16, d17, d16   @ encoding: [0xa1,0x05,0x40,0xf2]
 | 
					@ CHECK: vrshl.s8	d16, d17, d16  @ encoding: [0xa1,0x05,0x40,0xf2]
 | 
				
			||||||
	vrshl.s8	d16, d17, d16
 | 
						vrshl.s8	d16, d17, d16
 | 
				
			||||||
@ CHECK: vrshl.s16	d16, d17, d16   @ encoding: [0xa1,0x05,0x50,0xf2]
 | 
					@ CHECK: vrshl.s16	d16, d17, d16  @ encoding: [0xa1,0x05,0x50,0xf2]
 | 
				
			||||||
	vrshl.s16	d16, d17, d16
 | 
						vrshl.s16	d16, d17, d16
 | 
				
			||||||
@ CHECK: vrshl.s32	d16, d17, d16   @ encoding: [0xa1,0x05,0x60,0xf2]
 | 
					@ CHECK: vrshl.s32	d16, d17, d16  @ encoding: [0xa1,0x05,0x60,0xf2]
 | 
				
			||||||
	vrshl.s32	d16, d17, d16
 | 
						vrshl.s32	d16, d17, d16
 | 
				
			||||||
@ CHECK: vrshl.s64	d16, d17, d16   @ encoding: [0xa1,0x05,0x70,0
 | 
					@ CHECK: vrshl.s64	d16, d17, d16  @ encoding: [0xa1,0x05,0x70,0xf2]
 | 
				
			||||||
	vrshl.s64	d16, d17, d16
 | 
						vrshl.s64	d16, d17, d16
 | 
				
			||||||
@ CHECK: vrshl.u8	d16, d17, d16   @ encoding: [0xa1,0x05,0x40,0xf3]
 | 
					@ CHECK: vrshl.u8	d16, d17, d16  @ encoding: [0xa1,0x05,0x40,0xf3]
 | 
				
			||||||
	vrshl.u8	d16, d17, d16
 | 
						vrshl.u8	d16, d17, d16
 | 
				
			||||||
@ CHECK: vrshl.u16	d16, d17, d16   @ encoding: [0xa1,0x05,0x50,0xf3]
 | 
					@ CHECK: vrshl.u16	d16, d17, d16  @ encoding: [0xa1,0x05,0x50,0xf3]
 | 
				
			||||||
	vrshl.u16	d16, d17, d16
 | 
						vrshl.u16	d16, d17, d16
 | 
				
			||||||
@ CHECK: vrshl.u32	d16, d17, d16   @ encoding: [0xa1,0x05,0x60,0xf3]
 | 
					@ CHECK: vrshl.u32	d16, d17, d16  @ encoding: [0xa1,0x05,0x60,0xf3]
 | 
				
			||||||
	vrshl.u32	d16, d17, d16
 | 
						vrshl.u32	d16, d17, d16
 | 
				
			||||||
@ CHECK: vrshl.u64	d16, d17, d16   @ encoding: [0xa1,0x05,0x70,0xf3]
 | 
					@ CHECK: vrshl.u64	d16, d17, d16  @ encoding: [0xa1,0x05,0x70,0xf3]
 | 
				
			||||||
	vrshl.u64	d16, d17, d16
 | 
						vrshl.u64	d16, d17, d16
 | 
				
			||||||
@ CHECK: vrshl.s8	q8, q9, q8      @ encoding: [0xe2,0x05,0x40,0xf2]
 | 
					@ CHECK: vrshl.s8	q8, q9, q8  @ encoding: [0xe2,0x05,0x40,0xf2]
 | 
				
			||||||
	vrshl.s8	q8, q9, q8
 | 
						vrshl.s8	q8, q9, q8
 | 
				
			||||||
@ CHECK: vrshl.s16	q8, q9, q8      @ encoding: [0xe2,0x05,0x50,0xf2]
 | 
					@ CHECK: vrshl.s16	q8, q9, q8  @ encoding: [0xe2,0x05,0x50,0xf2]
 | 
				
			||||||
	vrshl.s16	q8, q9, q8
 | 
						vrshl.s16	q8, q9, q8
 | 
				
			||||||
@ CHECK: vrshl.s32	q8, q9, q8      @ encoding: [0xe2,0x05,0x60,0xf2]
 | 
					@ CHECK: vrshl.s32	q8, q9, q8  @ encoding: [0xe2,0x05,0x60,0xf2]
 | 
				
			||||||
	vrshl.s32	q8, q9, q8
 | 
						vrshl.s32	q8, q9, q8
 | 
				
			||||||
@ CHECK: vrshl.s64	q8, q9, q8      @ encoding: [0xe2,0x05,0x70,0xf2]
 | 
					@ CHECK: vrshl.s64	q8, q9, q8  @ encoding: [0xe2,0x05,0x70,0xf2]
 | 
				
			||||||
	vrshl.s64	q8, q9, q8
 | 
						vrshl.s64	q8, q9, q8
 | 
				
			||||||
@ CHECK: vrshl.u8	q8, q9, q8      @ encoding: [0xe2,0x05,0x40,0xf3]
 | 
					@ CHECK: vrshl.u8	q8, q9, q8  @ encoding: [0xe2,0x05,0x40,0xf3]
 | 
				
			||||||
	vrshl.u8	q8, q9, q8
 | 
						vrshl.u8	q8, q9, q8
 | 
				
			||||||
@ CHECK: vrshl.u16	q8, q9, q8      @ encoding: [0xe2,0x05,0x50,0xf3]
 | 
					@ CHECK: vrshl.u16	q8, q9, q8  @ encoding: [0xe2,0x05,0x50,0xf3]
 | 
				
			||||||
	vrshl.u16	q8, q9, q8
 | 
						vrshl.u16	q8, q9, q8
 | 
				
			||||||
@ CHECK: vrshl.u32	q8, q9, q8      @ encoding: [0xe2,0x05,0x60,0xf3]
 | 
					@ CHECK: vrshl.u32	q8, q9, q8  @ encoding: [0xe2,0x05,0x60,0xf3]
 | 
				
			||||||
	vrshl.u32	q8, q9, q8
 | 
						vrshl.u32	q8, q9, q8
 | 
				
			||||||
@ CHECK: vrshl.u64	q8, q9, q8      @ encoding: [0xe2,0x05,0x70,0xf3]
 | 
					@ CHECK: vrshl.u64	q8, q9, q8  @ encoding: [0xe2,0x05,0x70,0xf3]
 | 
				
			||||||
	vrshl.u64	q8, q9, q8
 | 
						vrshl.u64	q8, q9, q8
 | 
				
			||||||
@ CHECK: vrshr.s8	d16, d16, #8    @ encoding: [0x30,0x02,0xc8,0xf2]
 | 
					@ CHECK: vrshr.s8	d16, d16, #8  @ encoding: [0x30,0x02,0xc8,0xf2]
 | 
				
			||||||
	vrshr.s8	d16, d16, #8
 | 
						vrshr.s8	d16, d16, #8
 | 
				
			||||||
@ CHECK: vrshr.s16	d16, d16, #16   @ encoding: [0x30,0x02,0xd0,0xf2]
 | 
					@ CHECK: vrshr.s16	d16, d16, #16  @ encoding: [0x30,0x02,0xd0,0xf2]
 | 
				
			||||||
	vrshr.s16	d16, d16, #16
 | 
						vrshr.s16	d16, d16, #16
 | 
				
			||||||
@ CHECK: vrshr.s32	d16, d16, #32   @ encoding: [0x30,0x02,0xe0,0xf2]
 | 
					@ CHECK: vrshr.s32	d16, d16, #32  @ encoding: [0x30,0x02,0xe0,0xf2]
 | 
				
			||||||
	vrshr.s32	d16, d16, #32
 | 
						vrshr.s32	d16, d16, #32
 | 
				
			||||||
@ CHECK: vrshr.s64	d16, d16, #64   @ encoding: [0xb0,0x02,0xc0,0xf2]
 | 
					@ CHECK: vrshr.s64	d16, d16, #64  @ encoding: [0xb0,0x02,0xc0,0xf2]
 | 
				
			||||||
	vrshr.s64	d16, d16, #64
 | 
						vrshr.s64	d16, d16, #64
 | 
				
			||||||
@ CHECK: vrshr.u8	d16, d16, #8    @ encoding: [0x30,0x02,0xc8,0xf3]
 | 
					@ CHECK: vrshr.u8	d16, d16, #8  @ encoding: [0x30,0x02,0xc8,0xf3]
 | 
				
			||||||
	vrshr.u8	d16, d16, #8
 | 
						vrshr.u8	d16, d16, #8
 | 
				
			||||||
@ CHECK: vrshr.u16	d16, d16, #16   @ encoding: [0x30,0x02,0xd0,0xf3]
 | 
					@ CHECK: vrshr.u16	d16, d16, #16  @ encoding: [0x30,0x02,0xd0,0xf3]
 | 
				
			||||||
	vrshr.u16	d16, d16, #16
 | 
						vrshr.u16	d16, d16, #16
 | 
				
			||||||
@ CHECK: vrshr.u32	d16, d16, #32   @ encoding: [0x30,0x02,0xe0,0xf3]
 | 
					@ CHECK: vrshr.u32	d16, d16, #32  @ encoding: [0x30,0x02,0xe0,0xf3]
 | 
				
			||||||
	vrshr.u32	d16, d16, #32
 | 
						vrshr.u32	d16, d16, #32
 | 
				
			||||||
@ CHECK: vrshr.u64	d16, d16, #64   @ encoding: [0xb0,0x02,0xc0,0xf3]
 | 
					@ CHECK: vrshr.u64	d16, d16, #64  @ encoding: [0xb0,0x02,0xc0,0xf3]
 | 
				
			||||||
	vrshr.u64	d16, d16, #64
 | 
						vrshr.u64	d16, d16, #64
 | 
				
			||||||
@ CHECK: vrshr.s8	q8, q8, #8      @ encoding: [0x70,0x02,0xc8,0xf2]
 | 
					@ CHECK: vrshr.s8	q8, q8, #8  @ encoding: [0x70,0x02,0xc8,0xf2]
 | 
				
			||||||
	vrshr.s8	q8, q8, #8
 | 
						vrshr.s8	q8, q8, #8
 | 
				
			||||||
@ CHECK: vrshr.s16	q8, q8, #16     @ encoding: [0x70,0x02,0xd0,0xf2]
 | 
					@ CHECK: vrshr.s16	q8, q8, #16  @ encoding: [0x70,0x02,0xd0,0xf2]
 | 
				
			||||||
	vrshr.s16	q8, q8, #16
 | 
						vrshr.s16	q8, q8, #16
 | 
				
			||||||
@ CHECK: vrshr.s32	q8, q8, #32     @ encoding: [0x70,0x02,0xe0,0xf2]
 | 
					@ CHECK: vrshr.s32	q8, q8, #32  @ encoding: [0x70,0x02,0xe0,0xf2]
 | 
				
			||||||
	vrshr.s32	q8, q8, #32
 | 
						vrshr.s32	q8, q8, #32
 | 
				
			||||||
@ CHECK: vrshr.s64	q8, q8, #64     @ encoding: [0xf0,0x02,0xc0,0xf2]
 | 
					@ CHECK: vrshr.s64	q8, q8, #64  @ encoding: [0xf0,0x02,0xc0,0xf2]
 | 
				
			||||||
	vrshr.s64	q8, q8, #64
 | 
						vrshr.s64	q8, q8, #64
 | 
				
			||||||
@ CHECK: vrshr.u8	q8, q8, #8      @ encoding: [0x70,0x02,0xc8,0xf3]
 | 
					@ CHECK: vrshr.u8	q8, q8, #8  @ encoding: [0x70,0x02,0xc8,0xf3]
 | 
				
			||||||
	vrshr.u8	q8, q8, #8
 | 
						vrshr.u8	q8, q8, #8
 | 
				
			||||||
@ CHECK: vrshr.u16	q8, q8, #16     @ encoding: [0x70,0x02,0xd0,0xf3]
 | 
					@ CHECK: vrshr.u16	q8, q8, #16  @ encoding: [0x70,0x02,0xd0,0xf3]
 | 
				
			||||||
	vrshr.u16	q8, q8, #16
 | 
						vrshr.u16	q8, q8, #16
 | 
				
			||||||
@ CHECK: vrshr.u32	q8, q8, #32     @ encoding: [0x70,0x02,0xe0,0xf3]
 | 
					@ CHECK: vrshr.u32	q8, q8, #32  @ encoding: [0x70,0x02,0xe0,0xf3]
 | 
				
			||||||
	vrshr.u32	q8, q8, #32
 | 
						vrshr.u32	q8, q8, #32
 | 
				
			||||||
@ CHECK: vrshr.u64	q8, q8, #64     @ encoding: [0xf0,0x02,0xc0,0xf3]
 | 
					@ CHECK: vrshr.u64	q8, q8, #64  @ encoding: [0xf0,0x02,0xc0,0xf3]
 | 
				
			||||||
	vrshr.u64	q8, q8, #64
 | 
						vrshr.u64	q8, q8, #64
 | 
				
			||||||
@ CHECK: vrshrn.i16	d16, q8, #8     @ encoding: [0x70,0x08,0xc8,0xf2]
 | 
					@ CHECK: vrshrn.i16	d16, q8, #8  @ encoding: [0x70,0x08,0xc8,0xf2]
 | 
				
			||||||
	vrshrn.i16	d16, q8, #8
 | 
						vrshrn.i16	d16, q8, #8
 | 
				
			||||||
@ CHECK: vrshrn.i32	d16, q8, #16    @ encoding: [0x70,0x08,0xd0,0xf2]
 | 
					@ CHECK: vrshrn.i32	d16, q8, #16  @ encoding: [0x70,0x08,0xd0,0xf2]
 | 
				
			||||||
	vrshrn.i32	d16, q8, #16
 | 
						vrshrn.i32	d16, q8, #16
 | 
				
			||||||
@ CHECK: vrshrn.i64	d16, q8, #32    @ encoding: [0x70,0x08,0xe0,0xf2]
 | 
					@ CHECK: vrshrn.i64	d16, q8, #32  @ encoding: [0x70,0x08,0xe0,0xf2]
 | 
				
			||||||
	vrshrn.i64	d16, q8, #32
 | 
						vrshrn.i64	d16, q8, #32
 | 
				
			||||||
 | 
					@ CHECK: vqrshrn.s16	d16, q8, #4  @ encoding: [0x70,0x09,0xcc,0xf2]
 | 
				
			||||||
@ CHECK: vqrshrn.s16	d16, q8, #4     @ encoding: [0x70,0x09,0xcc,0xf2]
 | 
						vqrshrn.s16	d16, q8, #4
 | 
				
			||||||
        vqrshrn.s16	d16, q8, #4
 | 
					@ CHECK: vqrshrn.s32	d16, q8, #13  @ encoding: [0x70,0x09,0xd3,0xf2]
 | 
				
			||||||
@ CHECK: vqrshrn.s32	d16, q8, #13    @ encoding: [0x70,0x09,0xd3,0xf2]
 | 
						vqrshrn.s32	d16, q8, #13
 | 
				
			||||||
        vqrshrn.s32	d16, q8, #13
 | 
					@ CHECK: vqrshrn.s64	d16, q8, #13  @ encoding: [0x70,0x09,0xf3,0xf2]
 | 
				
			||||||
@ CHECK: vqrshrn.s64	d16, q8, #13    @ encoding: [0x70,0x09,0xf3,0xf2]
 | 
						vqrshrn.s64	d16, q8, #13
 | 
				
			||||||
        vqrshrn.s64	d16, q8, #13
 | 
					@ CHECK: vqrshrn.u16	d16, q8, #4  @ encoding: [0x70,0x09,0xcc,0xf3]
 | 
				
			||||||
 | 
						vqrshrn.u16	d16, q8, #4
 | 
				
			||||||
@ CHECK: vqrshrn.u16	d16, q8, #4     @ encoding: [0x70,0x09,0xcc,0xf3]
 | 
					@ CHECK: vqrshrn.u32	d16, q8, #13  @ encoding: [0x70,0x09,0xd3,0xf3]
 | 
				
			||||||
        vqrshrn.u16	d16, q8, #4
 | 
						vqrshrn.u32	d16, q8, #13
 | 
				
			||||||
@ CHECK: vqrshrn.u32	d16, q8, #13    @ encoding: [0x70,0x09,0xd3,0xf3]
 | 
					@ CHECK: vqrshrn.u64	d16, q8, #13  @ encoding: [0x70,0x09,0xf3,0xf3]
 | 
				
			||||||
        vqrshrn.u32	d16, q8, #13
 | 
						vqrshrn.u64	d16, q8, #13
 | 
				
			||||||
@ CHECK: vqrshrn.u64	d16, q8, #13    @ encoding: [0x70,0x09,0xf3,0xf3]
 | 
					 | 
				
			||||||
        vqrshrn.u64	d16, q8, #13
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue