451 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			451 lines
		
	
	
		
			22 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| // RUN: llvm-mc -triple=aarch64-none-linux-gnu -mattr=+neon,+fullfp16 -show-encoding < %s | FileCheck %s
 | |
| 
 | |
| // Check that the assembler can handle the documented syntax for AArch64
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector shift right by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          sshr v0.8b, v1.8b, #3
 | |
|          sshr v0.4h, v1.4h, #3
 | |
|          sshr v0.2s, v1.2s, #3
 | |
|          sshr v0.16b, v1.16b, #3
 | |
|          sshr v0.8h, v1.8h, #3
 | |
|          sshr v0.4s, v1.4s, #3
 | |
|          sshr v0.2d, v1.2d, #3
 | |
| // CHECK:	sshr	v0.8b, v1.8b, #3        // encoding: [0x20,0x04,0x0d,0x0f]
 | |
| // CHECK:	sshr	v0.4h, v1.4h, #3        // encoding: [0x20,0x04,0x1d,0x0f]
 | |
| // CHECK:	sshr	v0.2s, v1.2s, #3        // encoding: [0x20,0x04,0x3d,0x0f]
 | |
| // CHECK:	sshr	v0.16b, v1.16b, #3      // encoding: [0x20,0x04,0x0d,0x4f]
 | |
| // CHECK:	sshr	v0.8h, v1.8h, #3        // encoding: [0x20,0x04,0x1d,0x4f]
 | |
| // CHECK:	sshr	v0.4s, v1.4s, #3        // encoding: [0x20,0x04,0x3d,0x4f]
 | |
| // CHECK:	sshr	v0.2d, v1.2d, #3        // encoding: [0x20,0x04,0x7d,0x4f]
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector  shift right by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          ushr v0.8b, v1.8b, #3
 | |
|          ushr v0.4h, v1.4h, #3
 | |
|          ushr v0.2s, v1.2s, #3
 | |
|          ushr v0.16b, v1.16b, #3
 | |
|          ushr v0.8h, v1.8h, #3
 | |
|          ushr v0.4s, v1.4s, #3
 | |
|          ushr v0.2d, v1.2d, #3
 | |
| 
 | |
| // CHECK: 	ushr	v0.8b, v1.8b, #3        // encoding: [0x20,0x04,0x0d,0x2f]
 | |
| // CHECK: 	ushr	v0.4h, v1.4h, #3        // encoding: [0x20,0x04,0x1d,0x2f]
 | |
| // CHECK:	ushr	v0.2s, v1.2s, #3        // encoding: [0x20,0x04,0x3d,0x2f]
 | |
| // CHECK:	ushr	v0.16b, v1.16b, #3      // encoding: [0x20,0x04,0x0d,0x6f]
 | |
| // CHECK:	ushr	v0.8h, v1.8h, #3        // encoding: [0x20,0x04,0x1d,0x6f]
 | |
| // CHECK:	ushr	v0.4s, v1.4s, #3        // encoding: [0x20,0x04,0x3d,0x6f]
 | |
| // CHECK:	ushr	v0.2d, v1.2d, #3        // encoding: [0x20,0x04,0x7d,0x6f]
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector shift right and accumulate by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          ssra v0.8b, v1.8b, #3
 | |
|          ssra v0.4h, v1.4h, #3
 | |
|          ssra v0.2s, v1.2s, #3
 | |
|          ssra v0.16b, v1.16b, #3
 | |
|          ssra v0.8h, v1.8h, #3
 | |
|          ssra v0.4s, v1.4s, #3
 | |
|          ssra v0.2d, v1.2d, #3
 | |
| 
 | |
| // CHECK:	ssra	v0.8b, v1.8b, #3        // encoding: [0x20,0x14,0x0d,0x0f]
 | |
| // CHECK:	ssra	v0.4h, v1.4h, #3        // encoding: [0x20,0x14,0x1d,0x0f]
 | |
| // CHECK:	ssra	v0.2s, v1.2s, #3        // encoding: [0x20,0x14,0x3d,0x0f]
 | |
| // CHECK:	ssra	v0.16b, v1.16b, #3      // encoding: [0x20,0x14,0x0d,0x4f]
 | |
| // CHECK:	ssra	v0.8h, v1.8h, #3        // encoding: [0x20,0x14,0x1d,0x4f]
 | |
| // CHECK:	ssra	v0.4s, v1.4s, #3        // encoding: [0x20,0x14,0x3d,0x4f]
 | |
| // CHECK:	ssra	v0.2d, v1.2d, #3        // encoding: [0x20,0x14,0x7d,0x4f]
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector  shift right and accumulate by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          usra v0.8b, v1.8b, #3
 | |
|          usra v0.4h, v1.4h, #3
 | |
|          usra v0.2s, v1.2s, #3
 | |
|          usra v0.16b, v1.16b, #3
 | |
|          usra v0.8h, v1.8h, #3
 | |
|          usra v0.4s, v1.4s, #3
 | |
|          usra v0.2d, v1.2d, #3
 | |
| 
 | |
| // CHECK:	usra	v0.8b, v1.8b, #3        // encoding: [0x20,0x14,0x0d,0x2f]
 | |
| // CHECK:	usra	v0.4h, v1.4h, #3        // encoding: [0x20,0x14,0x1d,0x2f]
 | |
| // CHECK:	usra	v0.2s, v1.2s, #3        // encoding: [0x20,0x14,0x3d,0x2f]
 | |
| // CHECK:	usra	v0.16b, v1.16b, #3      // encoding: [0x20,0x14,0x0d,0x6f]
 | |
| // CHECK:	usra	v0.8h, v1.8h, #3        // encoding: [0x20,0x14,0x1d,0x6f]
 | |
| // CHECK:	usra	v0.4s, v1.4s, #3        // encoding: [0x20,0x14,0x3d,0x6f]
 | |
| // CHECK:	usra	v0.2d, v1.2d, #3        // encoding: [0x20,0x14,0x7d,0x6f]
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector rounding shift right by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          srshr v0.8b, v1.8b, #3
 | |
|          srshr v0.4h, v1.4h, #3
 | |
|          srshr v0.2s, v1.2s, #3
 | |
|          srshr v0.16b, v1.16b, #3
 | |
|          srshr v0.8h, v1.8h, #3
 | |
|          srshr v0.4s, v1.4s, #3
 | |
|          srshr v0.2d, v1.2d, #3
 | |
| 
 | |
| // CHECK:	srshr	v0.8b, v1.8b, #3        // encoding: [0x20,0x24,0x0d,0x0f]
 | |
| // CHECK:	srshr	v0.4h, v1.4h, #3        // encoding: [0x20,0x24,0x1d,0x0f]
 | |
| // CHECK:	srshr	v0.2s, v1.2s, #3        // encoding: [0x20,0x24,0x3d,0x0f]
 | |
| // CHECK:	srshr	v0.16b, v1.16b, #3      // encoding: [0x20,0x24,0x0d,0x4f]
 | |
| // CHECK:	srshr	v0.8h, v1.8h, #3        // encoding: [0x20,0x24,0x1d,0x4f]
 | |
| // CHECK:	srshr	v0.4s, v1.4s, #3        // encoding: [0x20,0x24,0x3d,0x4f]
 | |
| // CHECK:	srshr	v0.2d, v1.2d, #3        // encoding: [0x20,0x24,0x7d,0x4f]
 | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vecotr rounding shift right by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          urshr v0.8b, v1.8b, #3
 | |
|          urshr v0.4h, v1.4h, #3
 | |
|          urshr v0.2s, v1.2s, #3
 | |
|          urshr v0.16b, v1.16b, #3
 | |
|          urshr v0.8h, v1.8h, #3
 | |
|          urshr v0.4s, v1.4s, #3
 | |
|          urshr v0.2d, v1.2d, #3
 | |
| 
 | |
| // CHECK:	urshr	v0.8b, v1.8b, #3        // encoding: [0x20,0x24,0x0d,0x2f]
 | |
| // CHECK:	urshr	v0.4h, v1.4h, #3        // encoding: [0x20,0x24,0x1d,0x2f]
 | |
| // CHECK:	urshr	v0.2s, v1.2s, #3        // encoding: [0x20,0x24,0x3d,0x2f]
 | |
| // CHECK:	urshr	v0.16b, v1.16b, #3      // encoding: [0x20,0x24,0x0d,0x6f]
 | |
| // CHECK:	urshr	v0.8h, v1.8h, #3        // encoding: [0x20,0x24,0x1d,0x6f]
 | |
| // CHECK:	urshr	v0.4s, v1.4s, #3        // encoding: [0x20,0x24,0x3d,0x6f]
 | |
| // CHECK:	urshr	v0.2d, v1.2d, #3        // encoding: [0x20,0x24,0x7d,0x6f]
 | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector rounding shift right and accumulate by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          srsra v0.8b, v1.8b, #3
 | |
|          srsra v0.4h, v1.4h, #3
 | |
|          srsra v0.2s, v1.2s, #3
 | |
|          srsra v0.16b, v1.16b, #3
 | |
|          srsra v0.8h, v1.8h, #3
 | |
|          srsra v0.4s, v1.4s, #3
 | |
|          srsra v0.2d, v1.2d, #3
 | |
| 
 | |
| // CHECK:	srsra	v0.8b, v1.8b, #3        // encoding: [0x20,0x34,0x0d,0x0f]
 | |
| // CHECK:	srsra	v0.4h, v1.4h, #3        // encoding: [0x20,0x34,0x1d,0x0f]
 | |
| // CHECK:	srsra	v0.2s, v1.2s, #3        // encoding: [0x20,0x34,0x3d,0x0f]
 | |
| // CHECK:	srsra	v0.16b, v1.16b, #3      // encoding: [0x20,0x34,0x0d,0x4f]
 | |
| // CHECK:	srsra	v0.8h, v1.8h, #3        // encoding: [0x20,0x34,0x1d,0x4f]
 | |
| // CHECK:	srsra	v0.4s, v1.4s, #3        // encoding: [0x20,0x34,0x3d,0x4f]
 | |
| // CHECK:	srsra	v0.2d, v1.2d, #3        // encoding: [0x20,0x34,0x7d,0x4f]
 | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector rounding shift right and accumulate by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          ursra v0.8b, v1.8b, #3
 | |
|          ursra v0.4h, v1.4h, #3
 | |
|          ursra v0.2s, v1.2s, #3
 | |
|          ursra v0.16b, v1.16b, #3
 | |
|          ursra v0.8h, v1.8h, #3
 | |
|          ursra v0.4s, v1.4s, #3
 | |
|          ursra v0.2d, v1.2d, #3
 | |
| 
 | |
| // CHECK:	ursra	v0.8b, v1.8b, #3        // encoding: [0x20,0x34,0x0d,0x2f]
 | |
| // CHECK:	ursra	v0.4h, v1.4h, #3        // encoding: [0x20,0x34,0x1d,0x2f]
 | |
| // CHECK:	ursra	v0.2s, v1.2s, #3        // encoding: [0x20,0x34,0x3d,0x2f]
 | |
| // CHECK:	ursra	v0.16b, v1.16b, #3      // encoding: [0x20,0x34,0x0d,0x6f]
 | |
| // CHECK:	ursra	v0.8h, v1.8h, #3        // encoding: [0x20,0x34,0x1d,0x6f]
 | |
| // CHECK:	ursra	v0.4s, v1.4s, #3        // encoding: [0x20,0x34,0x3d,0x6f]
 | |
| // CHECK:	ursra	v0.2d, v1.2d, #3        // encoding: [0x20,0x34,0x7d,0x6f]
 | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector shift right and insert by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          sri v0.8b, v1.8b, #3
 | |
|          sri v0.4h, v1.4h, #3
 | |
|          sri v0.2s, v1.2s, #3
 | |
|          sri v0.16b, v1.16b, #3
 | |
|          sri v0.8h, v1.8h, #3
 | |
|          sri v0.4s, v1.4s, #3
 | |
|          sri v0.2d, v1.2d, #3
 | |
| 
 | |
| // CHECK:	sri	v0.8b, v1.8b, #3        // encoding: [0x20,0x44,0x0d,0x2f]
 | |
| // CHECK:	sri	v0.4h, v1.4h, #3        // encoding: [0x20,0x44,0x1d,0x2f]
 | |
| // CHECK:	sri	v0.2s, v1.2s, #3        // encoding: [0x20,0x44,0x3d,0x2f]
 | |
| // CHECK:	sri	v0.16b, v1.16b, #3      // encoding: [0x20,0x44,0x0d,0x6f]
 | |
| // CHECK:	sri	v0.8h, v1.8h, #3        // encoding: [0x20,0x44,0x1d,0x6f]
 | |
| // CHECK:	sri	v0.4s, v1.4s, #3        // encoding: [0x20,0x44,0x3d,0x6f]
 | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector shift left and insert by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          sli v0.8b, v1.8b, #3
 | |
|          sli v0.4h, v1.4h, #3
 | |
|          sli v0.2s, v1.2s, #3
 | |
|          sli v0.16b, v1.16b, #3
 | |
|          sli v0.8h, v1.8h, #3
 | |
|          sli v0.4s, v1.4s, #3
 | |
|          sli v0.2d, v1.2d, #3
 | |
| 
 | |
| // CHECK:	sli	v0.8b, v1.8b, #3        // encoding: [0x20,0x54,0x0b,0x2f]
 | |
| // CHECK:	sli	v0.4h, v1.4h, #3        // encoding: [0x20,0x54,0x13,0x2f]
 | |
| // CHECK:	sli	v0.2s, v1.2s, #3        // encoding: [0x20,0x54,0x23,0x2f]
 | |
| // CHECK:	sli	v0.16b, v1.16b, #3      // encoding: [0x20,0x54,0x0b,0x6f]
 | |
| // CHECK:	sli	v0.8h, v1.8h, #3        // encoding: [0x20,0x54,0x13,0x6f]
 | |
| // CHECK:	sli	v0.4s, v1.4s, #3        // encoding: [0x20,0x54,0x23,0x6f]
 | |
| // CHECK:	sli	v0.2d, v1.2d, #3        // encoding: [0x20,0x54,0x43,0x6f]
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector saturating shift left unsigned by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          sqshlu v0.8b, v1.8b, #3
 | |
|          sqshlu v0.4h, v1.4h, #3
 | |
|          sqshlu v0.2s, v1.2s, #3
 | |
|          sqshlu v0.16b, v1.16b, #3
 | |
|          sqshlu v0.8h, v1.8h, #3
 | |
|          sqshlu v0.4s, v1.4s, #3
 | |
|          sqshlu v0.2d, v1.2d, #3
 | |
| 
 | |
| // CHECK:	sqshlu	v0.8b, v1.8b, #3        // encoding: [0x20,0x64,0x0b,0x2f]
 | |
| // CHECK:	sqshlu	v0.4h, v1.4h, #3        // encoding: [0x20,0x64,0x13,0x2f]
 | |
| // CHECK:	sqshlu	v0.2s, v1.2s, #3        // encoding: [0x20,0x64,0x23,0x2f]
 | |
| // CHECK:	sqshlu	v0.16b, v1.16b, #3      // encoding: [0x20,0x64,0x0b,0x6f]
 | |
| // CHECK:	sqshlu	v0.8h, v1.8h, #3        // encoding: [0x20,0x64,0x13,0x6f]
 | |
| // CHECK:	sqshlu	v0.4s, v1.4s, #3        // encoding: [0x20,0x64,0x23,0x6f]
 | |
| // CHECK:	sqshlu	v0.2d, v1.2d, #3        // encoding: [0x20,0x64,0x43,0x6f]
 | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector saturating shift left by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          sqshl v0.8b, v1.8b, #3
 | |
|          sqshl v0.4h, v1.4h, #3
 | |
|          sqshl v0.2s, v1.2s, #3
 | |
|          sqshl v0.16b, v1.16b, #3
 | |
|          sqshl v0.8h, v1.8h, #3
 | |
|          sqshl v0.4s, v1.4s, #3
 | |
|          sqshl v0.2d, v1.2d, #3
 | |
| 
 | |
| // CHECK:	sqshl	v0.8b, v1.8b, #3        // encoding: [0x20,0x74,0x0b,0x0f]
 | |
| // CHECK:	sqshl	v0.4h, v1.4h, #3        // encoding: [0x20,0x74,0x13,0x0f]
 | |
| // CHECK:	sqshl	v0.2s, v1.2s, #3        // encoding: [0x20,0x74,0x23,0x0f]
 | |
| // CHECK:	sqshl	v0.16b, v1.16b, #3      // encoding: [0x20,0x74,0x0b,0x4f]
 | |
| // CHECK:	sqshl	v0.8h, v1.8h, #3        // encoding: [0x20,0x74,0x13,0x4f]
 | |
| // CHECK:	sqshl	v0.4s, v1.4s, #3        // encoding: [0x20,0x74,0x23,0x4f]
 | |
| // CHECK:	sqshl	v0.2d, v1.2d, #3        // encoding: [0x20,0x74,0x43,0x4f]
 | |
| 
 | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector saturating shift left by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          uqshl v0.8b, v1.8b, #3
 | |
|          uqshl v0.4h, v1.4h, #3
 | |
|          uqshl v0.2s, v1.2s, #3
 | |
|          uqshl v0.16b, v1.16b, #3
 | |
|          uqshl v0.8h, v1.8h, #3
 | |
|          uqshl v0.4s, v1.4s, #3
 | |
|          uqshl v0.2d, v1.2d, #3
 | |
| 
 | |
| // CHECK:	uqshl	v0.8b, v1.8b, #3        // encoding: [0x20,0x74,0x0b,0x2f]
 | |
| // CHECK:	uqshl	v0.4h, v1.4h, #3        // encoding: [0x20,0x74,0x13,0x2f]
 | |
| // CHECK:	uqshl	v0.2s, v1.2s, #3        // encoding: [0x20,0x74,0x23,0x2f]
 | |
| // CHECK:	uqshl	v0.16b, v1.16b, #3      // encoding: [0x20,0x74,0x0b,0x6f]
 | |
| // CHECK:	uqshl	v0.8h, v1.8h, #3        // encoding: [0x20,0x74,0x13,0x6f]
 | |
| // CHECK:	uqshl	v0.4s, v1.4s, #3        // encoding: [0x20,0x74,0x23,0x6f]
 | |
| // CHECK:	uqshl	v0.2d, v1.2d, #3        // encoding: [0x20,0x74,0x43,0x6f]
 | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector shift right narrow by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          shrn v0.8b, v1.8h, #3
 | |
|          shrn v0.4h, v1.4s, #3
 | |
|          shrn v0.2s, v1.2d, #3
 | |
|          shrn2 v0.16b, v1.8h, #3
 | |
|          shrn2 v0.8h, v1.4s, #3
 | |
|          shrn2 v0.4s, v1.2d, #3
 | |
| 
 | |
| // CHECK:	shrn	v0.8b, v1.8h, #3        // encoding: [0x20,0x84,0x0d,0x0f]
 | |
| // CHECK:	shrn	v0.4h, v1.4s, #3        // encoding: [0x20,0x84,0x1d,0x0f]
 | |
| // CHECK:	shrn	v0.2s, v1.2d, #3        // encoding: [0x20,0x84,0x3d,0x0f]
 | |
| // CHECK:	shrn2	v0.16b, v1.8h, #3       // encoding: [0x20,0x84,0x0d,0x4f]
 | |
| // CHECK:	shrn2	v0.8h, v1.4s, #3        // encoding: [0x20,0x84,0x1d,0x4f]
 | |
| // CHECK:	shrn2	v0.4s, v1.2d, #3        // encoding: [0x20,0x84,0x3d,0x4f]
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector saturating shift right unsigned narrow by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          sqshrun v0.8b, v1.8h, #3
 | |
|          sqshrun v0.4h, v1.4s, #3
 | |
|          sqshrun v0.2s, v1.2d, #3
 | |
|          sqshrun2 v0.16b, v1.8h, #3
 | |
|          sqshrun2 v0.8h, v1.4s, #3
 | |
|          sqshrun2 v0.4s, v1.2d, #3
 | |
| 
 | |
| // CHECK:	sqshrun	v0.8b, v1.8h, #3        // encoding: [0x20,0x84,0x0d,0x2f]
 | |
| // CHECK:	sqshrun	v0.4h, v1.4s, #3        // encoding: [0x20,0x84,0x1d,0x2f]
 | |
| // CHECK:	sqshrun	v0.2s, v1.2d, #3        // encoding: [0x20,0x84,0x3d,0x2f]
 | |
| // CHECK:	sqshrun2	v0.16b, v1.8h, #3 	// encoding: [0x20,0x84,0x0d,0x6f]
 | |
| // CHECK:	sqshrun2	v0.8h, v1.4s, #3 	// encoding: [0x20,0x84,0x1d,0x6f]
 | |
| // CHECK:	sqshrun2	v0.4s, v1.2d, #3 	// encoding: [0x20,0x84,0x3d,0x6f]
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector rounding shift right narrow by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          rshrn v0.8b, v1.8h, #3
 | |
|          rshrn v0.4h, v1.4s, #3
 | |
|          rshrn v0.2s, v1.2d, #3
 | |
|          rshrn2 v0.16b, v1.8h, #3
 | |
|          rshrn2 v0.8h, v1.4s, #3
 | |
|          rshrn2 v0.4s, v1.2d, #3
 | |
| 
 | |
| // CHECK:	rshrn	v0.8b, v1.8h, #3        // encoding: [0x20,0x8c,0x0d,0x0f]
 | |
| // CHECK:	rshrn	v0.4h, v1.4s, #3        // encoding: [0x20,0x8c,0x1d,0x0f]
 | |
| // CHECK:	rshrn	v0.2s, v1.2d, #3        // encoding: [0x20,0x8c,0x3d,0x0f]
 | |
| // CHECK:	rshrn2	v0.16b, v1.8h, #3       // encoding: [0x20,0x8c,0x0d,0x4f]
 | |
| // CHECK:	rshrn2	v0.8h, v1.4s, #3        // encoding: [0x20,0x8c,0x1d,0x4f]
 | |
| // CHECK:	rshrn2	v0.4s, v1.2d, #3        // encoding: [0x20,0x8c,0x3d,0x4f]
 | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector saturating shift right rounded unsigned narrow by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          sqrshrun v0.8b, v1.8h, #3
 | |
|          sqrshrun v0.4h, v1.4s, #3
 | |
|          sqrshrun v0.2s, v1.2d, #3
 | |
|          sqrshrun2 v0.16b, v1.8h, #3
 | |
|          sqrshrun2 v0.8h, v1.4s, #3
 | |
|          sqrshrun2 v0.4s, v1.2d, #3
 | |
| 
 | |
| // CHECK:	sqrshrun	v0.8b, v1.8h, #3    // encoding: [0x20,0x8c,0x0d,0x2f]
 | |
| // CHECK:	sqrshrun	v0.4h, v1.4s, #3    // encoding: [0x20,0x8c,0x1d,0x2f]
 | |
| // CHECK:	sqrshrun	v0.2s, v1.2d, #3    // encoding: [0x20,0x8c,0x3d,0x2f]
 | |
| // CHECK:	sqrshrun2	v0.16b, v1.8h, #3   // encoding: [0x20,0x8c,0x0d,0x6f]
 | |
| // CHECK:	sqrshrun2	v0.8h, v1.4s, #3    // encoding: [0x20,0x8c,0x1d,0x6f]
 | |
| // CHECK:	sqrshrun2	v0.4s, v1.2d, #3    // encoding: [0x20,0x8c,0x3d,0x6f]
 | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector saturating shift right narrow by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          sqshrn v0.8b, v1.8h, #3
 | |
|          sqshrn v0.4h, v1.4s, #3
 | |
|          sqshrn v0.2s, v1.2d, #3
 | |
|          sqshrn2 v0.16b, v1.8h, #3
 | |
|          sqshrn2 v0.8h, v1.4s, #3
 | |
|          sqshrn2 v0.4s, v1.2d, #3
 | |
| 
 | |
| // CHECK:	sqshrn	v0.8b, v1.8h, #3        // encoding: [0x20,0x94,0x0d,0x0f]
 | |
| // CHECK:	sqshrn	v0.4h, v1.4s, #3        // encoding: [0x20,0x94,0x1d,0x0f]
 | |
| // CHECK:	sqshrn	v0.2s, v1.2d, #3        // encoding: [0x20,0x94,0x3d,0x0f]
 | |
| // CHECK:	sqshrn2	v0.16b, v1.8h, #3       // encoding: [0x20,0x94,0x0d,0x4f]
 | |
| // CHECK:	sqshrn2	v0.8h, v1.4s, #3        // encoding: [0x20,0x94,0x1d,0x4f]
 | |
| // CHECK:	sqshrn2	v0.4s, v1.2d, #3        // encoding: [0x20,0x94,0x3d,0x4f]
 | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector saturating shift right narrow by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          uqshrn v0.8b, v1.8h, #3
 | |
|          uqshrn v0.4h, v1.4s, #3
 | |
|          uqshrn v0.2s, v1.2d, #3
 | |
|          uqshrn2 v0.16b, v1.8h, #3
 | |
|          uqshrn2 v0.8h, v1.4s, #3
 | |
|          uqshrn2 v0.4s, v1.2d, #3
 | |
| 
 | |
| // CHECK:	uqshrn	v0.8b, v1.8h, #3        // encoding: [0x20,0x94,0x0d,0x2f]
 | |
| // CHECK:	uqshrn	v0.4h, v1.4s, #3        // encoding: [0x20,0x94,0x1d,0x2f]
 | |
| // CHECK:	uqshrn	v0.2s, v1.2d, #3        // encoding: [0x20,0x94,0x3d,0x2f]
 | |
| // CHECK:	uqshrn2	v0.16b, v1.8h, #3       // encoding: [0x20,0x94,0x0d,0x6f]
 | |
| // CHECK:	uqshrn2	v0.8h, v1.4s, #3        // encoding: [0x20,0x94,0x1d,0x6f]
 | |
| // CHECK:	uqshrn2	v0.4s, v1.2d, #3        // encoding: [0x20,0x94,0x3d,0x6f]
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector saturating shift right rounded narrow by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          sqrshrn v0.8b, v1.8h, #3
 | |
|          sqrshrn v0.4h, v1.4s, #3
 | |
|          sqrshrn v0.2s, v1.2d, #3
 | |
|          sqrshrn2 v0.16b, v1.8h, #3
 | |
|          sqrshrn2 v0.8h, v1.4s, #3
 | |
|          sqrshrn2 v0.4s, v1.2d, #3
 | |
| 
 | |
| // CHECK:	sqrshrn	v0.8b, v1.8h, #3        // encoding: [0x20,0x9c,0x0d,0x0f]
 | |
| // CHECK:	sqrshrn	v0.4h, v1.4s, #3        // encoding: [0x20,0x9c,0x1d,0x0f]
 | |
| // CHECK:	sqrshrn	v0.2s, v1.2d, #3        // encoding: [0x20,0x9c,0x3d,0x0f]
 | |
| // CHECK:	sqrshrn2	v0.16b, v1.8h, #3   // encoding: [0x20,0x9c,0x0d,0x4f]
 | |
| // CHECK:	sqrshrn2	v0.8h, v1.4s, #3    // encoding: [0x20,0x9c,0x1d,0x4f]
 | |
| // CHECK:	sqrshrn2	v0.4s, v1.2d, #3    // encoding: [0x20,0x9c,0x3d,0x4f]
 | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Vector saturating shift right rounded narrow by immediate
 | |
| //------------------------------------------------------------------------------
 | |
|          uqrshrn v0.8b, v1.8h, #3
 | |
|          uqrshrn v0.4h, v1.4s, #3
 | |
|          uqrshrn v0.2s, v1.2d, #3
 | |
|          uqrshrn2 v0.16b, v1.8h, #3
 | |
|          uqrshrn2 v0.8h, v1.4s, #3
 | |
|          uqrshrn2 v0.4s, v1.2d, #3
 | |
| 
 | |
| // CHECK:	uqrshrn	v0.8b, v1.8h, #3        // encoding: [0x20,0x9c,0x0d,0x2f]
 | |
| // CHECK:	uqrshrn	v0.4h, v1.4s, #3        // encoding: [0x20,0x9c,0x1d,0x2f]
 | |
| // CHECK:	uqrshrn	v0.2s, v1.2d, #3        // encoding: [0x20,0x9c,0x3d,0x2f]
 | |
| // CHECK:	uqrshrn2	v0.16b, v1.8h, #3   // encoding: [0x20,0x9c,0x0d,0x6f]
 | |
| // CHECK:	uqrshrn2	v0.8h, v1.4s, #3    // encoding: [0x20,0x9c,0x1d,0x6f]
 | |
| // CHECK:	uqrshrn2	v0.4s, v1.2d, #3    // encoding: [0x20,0x9c,0x3d,0x6f]
 | |
| 
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Fixed-point convert to floating-point
 | |
| //------------------------------------------------------------------------------
 | |
|          scvtf v0.4h, v1.4h, #3
 | |
|          scvtf v0.8h, v1.8h, #3
 | |
|          scvtf v0.2s, v1.2s, #3
 | |
|          scvtf v0.4s, v1.4s, #3
 | |
|          scvtf v0.2d, v1.2d, #3
 | |
|          ucvtf v0.4h, v1.4h, #3
 | |
|          ucvtf v0.8h, v1.8h, #3
 | |
|          ucvtf v0.2s, v1.2s, #3
 | |
|          ucvtf v0.4s, v1.4s, #3
 | |
|          ucvtf v0.2d, v1.2d, #3
 | |
| 
 | |
| // CHECK: scvtf v0.4h, v1.4h, #3        // encoding: [0x20,0xe4,0x1d,0x0f]
 | |
| // CHECK: scvtf v0.8h, v1.8h, #3        // encoding: [0x20,0xe4,0x1d,0x4f]
 | |
| // CHECK:	scvtf	v0.2s, v1.2s, #3        // encoding: [0x20,0xe4,0x3d,0x0f]
 | |
| // CHECK:	scvtf	v0.4s, v1.4s, #3        // encoding: [0x20,0xe4,0x3d,0x4f]
 | |
| // CHECK:	scvtf	v0.2d, v1.2d, #3        // encoding: [0x20,0xe4,0x7d,0x4f]
 | |
| // CHECK:	ucvtf v0.4h, v1.4h, #3        // encoding: [0x20,0xe4,0x1d,0x2f]
 | |
| // CHECK:	ucvtf v0.8h, v1.8h, #3        // encoding: [0x20,0xe4,0x1d,0x6f]
 | |
| // CHECK:	ucvtf	v0.2s, v1.2s, #3        // encoding: [0x20,0xe4,0x3d,0x2f]
 | |
| // CHECK:	ucvtf	v0.4s, v1.4s, #3        // encoding: [0x20,0xe4,0x3d,0x6f]
 | |
| // CHECK:	ucvtf	v0.2d, v1.2d, #3        // encoding: [0x20,0xe4,0x7d,0x6f]
 | |
| 
 | |
| //------------------------------------------------------------------------------
 | |
| // Floating-point convert to fixed-point
 | |
| //------------------------------------------------------------------------------
 | |
|          fcvtzs v0.4h, v1.4h, #3
 | |
|          fcvtzs v0.8h, v1.8h, #3
 | |
|          fcvtzs v0.2s, v1.2s, #3
 | |
|          fcvtzs v0.4s, v1.4s, #3
 | |
|          fcvtzs v0.2d, v1.2d, #3
 | |
|          fcvtzu v0.4h, v1.4h, #3
 | |
|          fcvtzu v0.8h, v1.8h, #3
 | |
|          fcvtzu v0.2s, v1.2s, #3
 | |
|          fcvtzu v0.4s, v1.4s, #3
 | |
|          fcvtzu v0.2d, v1.2d, #3
 | |
| 
 | |
| 
 | |
| // CHECK:	fcvtzs  v0.4h, v1.4h, #3        // encoding: [0x20,0xfc,0x1d,0x0f]
 | |
| // CHECK:	fcvtzs  v0.8h, v1.8h, #3        // encoding: [0x20,0xfc,0x1d,0x4f]
 | |
| // CHECK:	fcvtzs	v0.2s, v1.2s, #3        // encoding: [0x20,0xfc,0x3d,0x0f]
 | |
| // CHECK:	fcvtzs	v0.4s, v1.4s, #3        // encoding: [0x20,0xfc,0x3d,0x4f]
 | |
| // CHECK:	fcvtzs	v0.2d, v1.2d, #3        // encoding: [0x20,0xfc,0x7d,0x4f]
 | |
| // CHECK:	fcvtzu  v0.4h, v1.4h, #3        // encoding: [0x20,0xfc,0x1d,0x2f]
 | |
| // CHECK:	fcvtzu  v0.8h, v1.8h, #3        // encoding: [0x20,0xfc,0x1d,0x6f]
 | |
| // CHECK:	fcvtzu	v0.2s, v1.2s, #3        // encoding: [0x20,0xfc,0x3d,0x2f]
 | |
| // CHECK:	fcvtzu	v0.4s, v1.4s, #3        // encoding: [0x20,0xfc,0x3d,0x6f]
 | |
| // CHECK:	fcvtzu	v0.2d, v1.2d, #3        // encoding: [0x20,0xfc,0x7d,0x6f]
 | |
| 
 |