Home | History | Annotate | Download | only in AArch64
      1 // RUN: llvm-mc -triple=aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s
      2 
      3 // Check that the assembler can handle the documented syntax for AArch64
      4 
      5 
      6 //------------------------------------------------------------------------------
      7 // Insert element (vector, from main)
      8 //------------------------------------------------------------------------------
      9          ins v2.b[2], w1
     10          ins v7.h[7], w14
     11          ins v20.s[0], w30
     12          ins v1.d[1], x7
     13 
     14          mov v2.b[2], w1
     15          mov v7.h[7], w14
     16          mov v20.s[0], w30
     17          mov v1.d[1], x7
     18 
     19 // CHECK: {{mov|ins}}	v2.b[2], w1           // encoding: [0x22,0x1c,0x05,0x4e]
     20 // CHECK: {{mov|ins}}	v7.h[7], w14          // encoding: [0xc7,0x1d,0x1e,0x4e]
     21 // CHECK: {{mov|ins}}	v20.s[0], w30         // encoding: [0xd4,0x1f,0x04,0x4e]
     22 // CHECK: {{mov|ins}}	v1.d[1], x7           // encoding: [0xe1,0x1c,0x18,0x4e]
     23 
     24 // CHECK: {{mov|ins}} v2.b[2], w1           // encoding: [0x22,0x1c,0x05,0x4e]
     25 // CHECK: {{mov|ins}} v7.h[7], w14          // encoding: [0xc7,0x1d,0x1e,0x4e]
     26 // CHECK: {{mov|ins}} v20.s[0], w30         // encoding: [0xd4,0x1f,0x04,0x4e]
     27 // CHECK: {{mov|ins}} v1.d[1], x7           // encoding: [0xe1,0x1c,0x18,0x4e]
     28 
     29 
     30 //------------------------------------------------------------------------------
     31 // Signed integer move (main, from element)
     32 //------------------------------------------------------------------------------
     33          smov w1, v0.b[15]
     34          smov w14, v6.h[4]
     35          smov x1, v0.b[15]
     36          smov x14, v6.h[4]
     37          smov x20, v9.s[2]
     38 
     39 // CHECK: smov	w1, v0.b[15]          // encoding: [0x01,0x2c,0x1f,0x0e]
     40 // CHECK: smov	w14, v6.h[4]          // encoding: [0xce,0x2c,0x12,0x0e]
     41 // CHECK: smov	x1, v0.b[15]          // encoding: [0x01,0x2c,0x1f,0x4e]
     42 // CHECK: smov	x14, v6.h[4]          // encoding: [0xce,0x2c,0x12,0x4e]
     43 // CHECK: smov	x20, v9.s[2]          // encoding: [0x34,0x2d,0x14,0x4e]
     44 
     45 
     46 //------------------------------------------------------------------------------
     47 // Unsigned integer move (main, from element)
     48 //------------------------------------------------------------------------------
     49          umov w1, v0.b[15]
     50          umov w14, v6.h[4]
     51          umov w20, v9.s[2]
     52          umov x7, v18.d[1]
     53 
     54          mov w20, v9.s[2]
     55          mov x7, v18.d[1]
     56 
     57 // CHECK: {{mov|umov}}	w1, v0.b[15]          // encoding: [0x01,0x3c,0x1f,0x0e]
     58 // CHECK: {{mov|umov}}	w14, v6.h[4]          // encoding: [0xce,0x3c,0x12,0x0e]
     59 // CHECK: {{mov|umov}}	w20, v9.s[2]          // encoding: [0x34,0x3d,0x14,0x0e]
     60 // CHECK: {{mov|umov}}	x7, v18.d[1]          // encoding: [0x47,0x3e,0x18,0x4e]
     61 
     62 // CHECK: {{mov|umov}}  w20, v9.s[2]          // encoding: [0x34,0x3d,0x14,0x0e]
     63 // CHECK: {{mov|umov}}  x7, v18.d[1]          // encoding: [0x47,0x3e,0x18,0x4e]
     64 
     65 //------------------------------------------------------------------------------
     66 // Insert element (vector, from element)
     67 //------------------------------------------------------------------------------
     68 
     69          ins v1.b[14], v3.b[6]
     70          ins v6.h[7], v7.h[5]
     71          ins v15.s[3], v22.s[2]
     72          ins v0.d[0], v4.d[1]
     73 
     74          mov v1.b[14], v3.b[6]
     75          mov v6.h[7], v7.h[5]
     76          mov v15.s[3], v22.s[2]
     77          mov v0.d[0], v4.d[1]
     78 
     79 // CHECK: {{mov|ins}}	v1.b[14], v3.b[6]       // encoding: [0x61,0x34,0x1d,0x6e]
     80 // CHECK: {{mov|ins}}	v6.h[7], v7.h[5]        // encoding: [0xe6,0x54,0x1e,0x6e]
     81 // CHECK: {{mov|ins}}	v15.s[3], v22.s[2]      // encoding: [0xcf,0x46,0x1c,0x6e]
     82 // CHECK: {{mov|ins}}	v0.d[0], v4.d[1]        // encoding: [0x80,0x44,0x08,0x6e]
     83 
     84 // CHECK: {{mov|ins}} v1.b[14], v3.b[6]       // encoding: [0x61,0x34,0x1d,0x6e]
     85 // CHECK: {{mov|ins}} v6.h[7], v7.h[5]        // encoding: [0xe6,0x54,0x1e,0x6e]
     86 // CHECK: {{mov|ins}} v15.s[3], v22.s[2]      // encoding: [0xcf,0x46,0x1c,0x6e]
     87 // CHECK: {{mov|ins}} v0.d[0], v4.d[1]        // encoding: [0x80,0x44,0x08,0x6e]
     88 
     89 //------------------------------------------------------------------------------
     90 // Duplicate to all lanes( vector, from element)
     91 //------------------------------------------------------------------------------
     92          dup v1.8b, v2.b[2]
     93          dup v11.4h, v7.h[7]
     94          dup v17.2s, v20.s[0]
     95          dup v1.16b, v2.b[2]
     96          dup v11.8h, v7.h[7]
     97          dup v17.4s, v20.s[0]
     98          dup v5.2d, v1.d[1]
     99 
    100 // CHECK: {{mov|dup}} v1.8b, v2.b[2]        // encoding: [0x41,0x04,0x05,0x0e]
    101 // CHECK: {{mov|dup}} v11.4h, v7.h[7]       // encoding: [0xeb,0x04,0x1e,0x0e]
    102 // CHECK: {{mov|dup}} v17.2s, v20.s[0]      // encoding: [0x91,0x06,0x04,0x0e]
    103 // CHECK: {{mov|dup}} v1.16b, v2.b[2]       // encoding: [0x41,0x04,0x05,0x4e]
    104 // CHECK: {{mov|dup}} v11.8h, v7.h[7]       // encoding: [0xeb,0x04,0x1e,0x4e]
    105 // CHECK: {{mov|dup}} v17.4s, v20.s[0]      // encoding: [0x91,0x06,0x04,0x4e]
    106 // CHECK: {{mov|dup}} v5.2d, v1.d[1]        // encoding: [0x25,0x04,0x18,0x4e]
    107 
    108 //------------------------------------------------------------------------------
    109 // Duplicate to all lanes( vector, from main)
    110 //------------------------------------------------------------------------------
    111          dup v1.8b, w1
    112          dup v11.4h, w14
    113          dup v17.2s, w30
    114          dup v1.16b, w2
    115          dup v11.8h, w16
    116          dup v17.4s, w28
    117          dup v5.2d, x0
    118 
    119 // CHECK: {{mov|dup}}	v1.8b, w1             // encoding: [0x21,0x0c,0x01,0x0e]
    120 // CHECK: {{mov|dup}}	v11.4h, w14           // encoding: [0xcb,0x0d,0x02,0x0e]
    121 // CHECK: {{mov|dup}}	v17.2s, w30           // encoding: [0xd1,0x0f,0x04,0x0e]
    122 // CHECK: {{mov|dup}}	v1.16b, w2            // encoding: [0x41,0x0c,0x01,0x4e]
    123 // CHECK: {{mov|dup}}	v11.8h, w16           // encoding: [0x0b,0x0e,0x02,0x4e]
    124 // CHECK: {{mov|dup}}	v17.4s, w28           // encoding: [0x91,0x0f,0x04,0x4e]
    125 // CHECK: {{mov|dup}}	v5.2d, x0             // encoding: [0x05,0x0c,0x08,0x4e]
    126 
    127 
    128 
    129 
    130 
    131 
    132 
    133 
    134 
    135 
    136