113c83a2a09a0842ff57ec020fe3f534de766ccd1Chad Rosier// RUN: llvm-mc -triple=aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s 2e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 3e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// Check that the assembler can handle the documented syntax for AArch64 4e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 5e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 6e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------ 7e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// Insert element (vector, from main) 8e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------ 9e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin ins v2.b[2], w1 10e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin ins v7.h[7], w14 11e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin ins v20.s[0], w30 12e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin ins v1.d[1], x7 13e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 1469b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin mov v2.b[2], w1 1569b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin mov v7.h[7], w14 1669b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin mov v20.s[0], w30 1769b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin mov v1.d[1], x7 1869b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin 19dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v2.b[2], w1 // encoding: [0x22,0x1c,0x05,0x4e] 20dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v7.h[7], w14 // encoding: [0xc7,0x1d,0x1e,0x4e] 21dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v20.s[0], w30 // encoding: [0xd4,0x1f,0x04,0x4e] 22dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v1.d[1], x7 // encoding: [0xe1,0x1c,0x18,0x4e] 23e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 24dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v2.b[2], w1 // encoding: [0x22,0x1c,0x05,0x4e] 25dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v7.h[7], w14 // encoding: [0xc7,0x1d,0x1e,0x4e] 26dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v20.s[0], w30 // encoding: [0xd4,0x1f,0x04,0x4e] 27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v1.d[1], x7 // encoding: [0xe1,0x1c,0x18,0x4e] 2869b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin 29e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 30e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------ 31e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// Signed integer move (main, from element) 32e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------ 33e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin smov w1, v0.b[15] 34e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin smov w14, v6.h[4] 35e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin smov x1, v0.b[15] 36e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin smov x14, v6.h[4] 37e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin smov x20, v9.s[2] 38e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 39e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// CHECK: smov w1, v0.b[15] // encoding: [0x01,0x2c,0x1f,0x0e] 40e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// CHECK: smov w14, v6.h[4] // encoding: [0xce,0x2c,0x12,0x0e] 41e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// CHECK: smov x1, v0.b[15] // encoding: [0x01,0x2c,0x1f,0x4e] 42e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// CHECK: smov x14, v6.h[4] // encoding: [0xce,0x2c,0x12,0x4e] 4369b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin// CHECK: smov x20, v9.s[2] // encoding: [0x34,0x2d,0x14,0x4e] 44e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 45e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 46e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------ 47e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// Unsigned integer move (main, from element) 48e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------ 49e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin umov w1, v0.b[15] 50e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin umov w14, v6.h[4] 51e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin umov w20, v9.s[2] 52e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin umov x7, v18.d[1] 53e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 5469b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin mov w20, v9.s[2] 5569b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin mov x7, v18.d[1] 5669b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin 57dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|umov}} w1, v0.b[15] // encoding: [0x01,0x3c,0x1f,0x0e] 58dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|umov}} w14, v6.h[4] // encoding: [0xce,0x3c,0x12,0x0e] 59dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|umov}} w20, v9.s[2] // encoding: [0x34,0x3d,0x14,0x0e] 60dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|umov}} x7, v18.d[1] // encoding: [0x47,0x3e,0x18,0x4e] 61e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 62dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|umov}} w20, v9.s[2] // encoding: [0x34,0x3d,0x14,0x0e] 63dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|umov}} x7, v18.d[1] // encoding: [0x47,0x3e,0x18,0x4e] 6469b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin 65e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------ 66e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin// Insert element (vector, from element) 67e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin//------------------------------------------------------------------------------ 68e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 6969b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin ins v1.b[14], v3.b[6] 7069b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin ins v6.h[7], v7.h[5] 7169b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin ins v15.s[3], v22.s[2] 7269b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin ins v0.d[0], v4.d[1] 7369b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin 7469b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin mov v1.b[14], v3.b[6] 7569b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin mov v6.h[7], v7.h[5] 7669b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin mov v15.s[3], v22.s[2] 7769b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin mov v0.d[0], v4.d[1] 78e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 79dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v1.b[14], v3.b[6] // encoding: [0x61,0x34,0x1d,0x6e] 80dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v6.h[7], v7.h[5] // encoding: [0xe6,0x54,0x1e,0x6e] 81dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v15.s[3], v22.s[2] // encoding: [0xcf,0x46,0x1c,0x6e] 82dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v0.d[0], v4.d[1] // encoding: [0x80,0x44,0x08,0x6e] 83e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 84dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v1.b[14], v3.b[6] // encoding: [0x61,0x34,0x1d,0x6e] 85dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v6.h[7], v7.h[5] // encoding: [0xe6,0x54,0x1e,0x6e] 86dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v15.s[3], v22.s[2] // encoding: [0xcf,0x46,0x1c,0x6e] 87dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|ins}} v0.d[0], v4.d[1] // encoding: [0x80,0x44,0x08,0x6e] 8869b2447b6a3fcc303e03cba8c7c50d745b0284d2Kevin Qin 89767f816b926376bd850a62a28d35343ad0559c91Kevin Qin//------------------------------------------------------------------------------ 90767f816b926376bd850a62a28d35343ad0559c91Kevin Qin// Duplicate to all lanes( vector, from element) 91767f816b926376bd850a62a28d35343ad0559c91Kevin Qin//------------------------------------------------------------------------------ 92767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v1.8b, v2.b[2] 93767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v11.4h, v7.h[7] 94767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v17.2s, v20.s[0] 95767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v1.16b, v2.b[2] 96767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v11.8h, v7.h[7] 97767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v17.4s, v20.s[0] 98767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v5.2d, v1.d[1] 99767f816b926376bd850a62a28d35343ad0559c91Kevin Qin 100dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v1.8b, v2.b[2] // encoding: [0x41,0x04,0x05,0x0e] 101dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v11.4h, v7.h[7] // encoding: [0xeb,0x04,0x1e,0x0e] 102dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v17.2s, v20.s[0] // encoding: [0x91,0x06,0x04,0x0e] 103dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v1.16b, v2.b[2] // encoding: [0x41,0x04,0x05,0x4e] 104dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v11.8h, v7.h[7] // encoding: [0xeb,0x04,0x1e,0x4e] 105dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v17.4s, v20.s[0] // encoding: [0x91,0x06,0x04,0x4e] 106dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v5.2d, v1.d[1] // encoding: [0x25,0x04,0x18,0x4e] 107767f816b926376bd850a62a28d35343ad0559c91Kevin Qin 108767f816b926376bd850a62a28d35343ad0559c91Kevin Qin//------------------------------------------------------------------------------ 109767f816b926376bd850a62a28d35343ad0559c91Kevin Qin// Duplicate to all lanes( vector, from main) 110767f816b926376bd850a62a28d35343ad0559c91Kevin Qin//------------------------------------------------------------------------------ 111767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v1.8b, w1 112767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v11.4h, w14 113767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v17.2s, w30 114767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v1.16b, w2 115767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v11.8h, w16 116767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v17.4s, w28 117767f816b926376bd850a62a28d35343ad0559c91Kevin Qin dup v5.2d, x0 118767f816b926376bd850a62a28d35343ad0559c91Kevin Qin 119dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v1.8b, w1 // encoding: [0x21,0x0c,0x01,0x0e] 120dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v11.4h, w14 // encoding: [0xcb,0x0d,0x02,0x0e] 121dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v17.2s, w30 // encoding: [0xd1,0x0f,0x04,0x0e] 122dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v1.16b, w2 // encoding: [0x41,0x0c,0x01,0x4e] 123dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v11.8h, w16 // encoding: [0x0b,0x0e,0x02,0x4e] 124dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v17.4s, w28 // encoding: [0x91,0x0f,0x04,0x4e] 125dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines// CHECK: {{mov|dup}} v5.2d, x0 // encoding: [0x05,0x0c,0x08,0x4e] 126767f816b926376bd850a62a28d35343ad0559c91Kevin Qin 127e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 128e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 129e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 130e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 131e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 132e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 133e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 134e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 135e54360be01d1eaccd5ef27f510634927aaa887a4Kevin Qin 136