Home | History | Annotate | Download | only in AArch64
      1 // RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s
      2 
      3 // Check that the assembler can handle the documented syntax for AArch64
      4 
      5 //------------------------------------------------------------------------------
      6 // Instructions for permute
      7 //------------------------------------------------------------------------------
      8 
      9         uzp1 v0.8b, v1.8b, v2.8b
     10         uzp1 v0.16b, v1.16b, v2.16b
     11         uzp1 v0.4h, v1.4h, v2.4h
     12         uzp1 v0.8h, v1.8h, v2.8h
     13         uzp1 v0.2s, v1.2s, v2.2s
     14         uzp1 v0.4s, v1.4s, v2.4s
     15         uzp1 v0.2d, v1.2d, v2.2d
     16 
     17 // CHECK: uzp1	v0.8b, v1.8b, v2.8b     // encoding: [0x20,0x18,0x02,0x0e]
     18 // CHECK: uzp1	v0.16b, v1.16b, v2.16b  // encoding: [0x20,0x18,0x02,0x4e]
     19 // CHECK: uzp1	v0.4h, v1.4h, v2.4h     // encoding: [0x20,0x18,0x42,0x0e]
     20 // CHECK: uzp1	v0.8h, v1.8h, v2.8h     // encoding: [0x20,0x18,0x42,0x4e]
     21 // CHECK: uzp1	v0.2s, v1.2s, v2.2s     // encoding: [0x20,0x18,0x82,0x0e]
     22 // CHECK: uzp1	v0.4s, v1.4s, v2.4s     // encoding: [0x20,0x18,0x82,0x4e]
     23 // CHECK: uzp1	v0.2d, v1.2d, v2.2d     // encoding: [0x20,0x18,0xc2,0x4e]
     24 
     25         trn1 v0.8b, v1.8b, v2.8b
     26         trn1 v0.16b, v1.16b, v2.16b
     27         trn1 v0.4h, v1.4h, v2.4h
     28         trn1 v0.8h, v1.8h, v2.8h
     29         trn1 v0.2s, v1.2s, v2.2s
     30         trn1 v0.4s, v1.4s, v2.4s
     31         trn1 v0.2d, v1.2d, v2.2d
     32 
     33 // CHECK: trn1	v0.8b, v1.8b, v2.8b     // encoding: [0x20,0x28,0x02,0x0e]
     34 // CHECK: trn1	v0.16b, v1.16b, v2.16b  // encoding: [0x20,0x28,0x02,0x4e]
     35 // CHECK: trn1	v0.4h, v1.4h, v2.4h     // encoding: [0x20,0x28,0x42,0x0e]
     36 // CHECK: trn1	v0.8h, v1.8h, v2.8h     // encoding: [0x20,0x28,0x42,0x4e]
     37 // CHECK: trn1	v0.2s, v1.2s, v2.2s     // encoding: [0x20,0x28,0x82,0x0e]
     38 // CHECK: trn1	v0.4s, v1.4s, v2.4s     // encoding: [0x20,0x28,0x82,0x4e]
     39 // CHECK: trn1	v0.2d, v1.2d, v2.2d     // encoding: [0x20,0x28,0xc2,0x4e]
     40 
     41         zip1 v0.8b, v1.8b, v2.8b
     42         zip1 v0.16b, v1.16b, v2.16b
     43         zip1 v0.4h, v1.4h, v2.4h
     44         zip1 v0.8h, v1.8h, v2.8h
     45         zip1 v0.2s, v1.2s, v2.2s
     46         zip1 v0.4s, v1.4s, v2.4s
     47         zip1 v0.2d, v1.2d, v2.2d
     48 
     49 // CHECK: zip1	v0.8b, v1.8b, v2.8b     // encoding: [0x20,0x38,0x02,0x0e]
     50 // CHECK: zip1	v0.16b, v1.16b, v2.16b  // encoding: [0x20,0x38,0x02,0x4e]
     51 // CHECK: zip1	v0.4h, v1.4h, v2.4h     // encoding: [0x20,0x38,0x42,0x0e]
     52 // CHECK: zip1	v0.8h, v1.8h, v2.8h     // encoding: [0x20,0x38,0x42,0x4e]
     53 // CHECK: zip1	v0.2s, v1.2s, v2.2s     // encoding: [0x20,0x38,0x82,0x0e]
     54 // CHECK: zip1	v0.4s, v1.4s, v2.4s     // encoding: [0x20,0x38,0x82,0x4e]
     55 // CHECK: zip1	v0.2d, v1.2d, v2.2d     // encoding: [0x20,0x38,0xc2,0x4e]
     56 
     57         uzp2 v0.8b, v1.8b, v2.8b
     58         uzp2 v0.16b, v1.16b, v2.16b
     59         uzp2 v0.4h, v1.4h, v2.4h
     60         uzp2 v0.8h, v1.8h, v2.8h
     61         uzp2 v0.2s, v1.2s, v2.2s
     62         uzp2 v0.4s, v1.4s, v2.4s
     63         uzp2 v0.2d, v1.2d, v2.2d
     64 
     65 // CHECK: uzp2	v0.8b, v1.8b, v2.8b     // encoding: [0x20,0x58,0x02,0x0e]
     66 // CHECK: uzp2	v0.16b, v1.16b, v2.16b  // encoding: [0x20,0x58,0x02,0x4e]
     67 // CHECK: uzp2	v0.4h, v1.4h, v2.4h     // encoding: [0x20,0x58,0x42,0x0e]
     68 // CHECK: uzp2	v0.8h, v1.8h, v2.8h     // encoding: [0x20,0x58,0x42,0x4e]
     69 // CHECK: uzp2	v0.2s, v1.2s, v2.2s     // encoding: [0x20,0x58,0x82,0x0e]
     70 // CHECK: uzp2	v0.4s, v1.4s, v2.4s     // encoding: [0x20,0x58,0x82,0x4e]
     71 // CHECK: uzp2	v0.2d, v1.2d, v2.2d     // encoding: [0x20,0x58,0xc2,0x4e]
     72 
     73         trn2 v0.8b, v1.8b, v2.8b
     74         trn2 v0.16b, v1.16b, v2.16b
     75         trn2 v0.4h, v1.4h, v2.4h
     76         trn2 v0.8h, v1.8h, v2.8h
     77         trn2 v0.2s, v1.2s, v2.2s
     78         trn2 v0.4s, v1.4s, v2.4s
     79         trn2 v0.2d, v1.2d, v2.2d
     80 
     81 // CHECK: trn2	v0.8b, v1.8b, v2.8b     // encoding: [0x20,0x68,0x02,0x0e]
     82 // CHECK: trn2	v0.16b, v1.16b, v2.16b  // encoding: [0x20,0x68,0x02,0x4e]
     83 // CHECK: trn2	v0.4h, v1.4h, v2.4h     // encoding: [0x20,0x68,0x42,0x0e]
     84 // CHECK: trn2	v0.8h, v1.8h, v2.8h     // encoding: [0x20,0x68,0x42,0x4e]
     85 // CHECK: trn2	v0.2s, v1.2s, v2.2s     // encoding: [0x20,0x68,0x82,0x0e]
     86 // CHECK: trn2	v0.4s, v1.4s, v2.4s     // encoding: [0x20,0x68,0x82,0x4e]
     87 // CHECK: trn2	v0.2d, v1.2d, v2.2d     // encoding: [0x20,0x68,0xc2,0x4e]
     88 
     89         zip2 v0.8b, v1.8b, v2.8b
     90         zip2 v0.16b, v1.16b, v2.16b
     91         zip2 v0.4h, v1.4h, v2.4h
     92         zip2 v0.8h, v1.8h, v2.8h
     93         zip2 v0.2s, v1.2s, v2.2s
     94         zip2 v0.4s, v1.4s, v2.4s
     95         zip2 v0.2d, v1.2d, v2.2d
     96 
     97 // CHECK: zip2	v0.8b, v1.8b, v2.8b     // encoding: [0x20,0x78,0x02,0x0e]
     98 // CHECK: zip2	v0.16b, v1.16b, v2.16b  // encoding: [0x20,0x78,0x02,0x4e]
     99 // CHECK: zip2	v0.4h, v1.4h, v2.4h     // encoding: [0x20,0x78,0x42,0x0e]
    100 // CHECK: zip2	v0.8h, v1.8h, v2.8h     // encoding: [0x20,0x78,0x42,0x4e]
    101 // CHECK: zip2	v0.2s, v1.2s, v2.2s     // encoding: [0x20,0x78,0x82,0x0e]
    102 // CHECK: zip2	v0.4s, v1.4s, v2.4s     // encoding: [0x20,0x78,0x82,0x4e]
    103 // CHECK: zip2	v0.2d, v1.2d, v2.2d     // encoding: [0x20,0x78,0xc2,0x4e]
    104