brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · 4837a4c Raw
136 lines · plain
1// RUN: llvm-mc -triple=aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s2 3// Check that the assembler can handle the documented syntax for AArch644 5 6//------------------------------------------------------------------------------7// Insert element (vector, from main)8//------------------------------------------------------------------------------9         ins v2.b[2], w110         ins v7.h[7], w1411         ins v20.s[0], w3012         ins v1.d[1], x713         14         mov v2.b[2], w115         mov v7.h[7], w1416         mov v20.s[0], w3017         mov v1.d[1], x718 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, w1112         dup v11.4h, w14113         dup v17.2s, w30114         dup v1.16b, w2115         dup v11.8h, w16116         dup v17.4s, w28117         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