AArch64/ARM64: run AArch64 NEON MC tests through ARM64 too.
[oota-llvm.git] / test / MC / AArch64 / neon-mul-div-instructions.s
1 // RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s
2 // RUN: llvm-mc -triple arm64-none-linux-gnu -mattr=+neon -show-encoding < %s | FileCheck %s
3
4 // Check that the assembler can handle the documented syntax for AArch64
5
6 //----------------------------------------------------------------------
7 // Vector Integer Mul
8 //----------------------------------------------------------------------
9          mul v0.8b, v1.8b, v2.8b
10          mul v0.16b, v1.16b, v2.16b
11          mul v0.4h, v1.4h, v2.4h
12          mul v0.8h, v1.8h, v2.8h
13          mul v0.2s, v1.2s, v2.2s
14          mul v0.4s, v1.4s, v2.4s
15
16 // CHECK: mul v0.8b, v1.8b, v2.8b        // encoding: [0x20,0x9c,0x22,0x0e]
17 // CHECK: mul v0.16b, v1.16b, v2.16b     // encoding: [0x20,0x9c,0x22,0x4e]
18 // CHECK: mul v0.4h, v1.4h, v2.4h        // encoding: [0x20,0x9c,0x62,0x0e]
19 // CHECK: mul v0.8h, v1.8h, v2.8h        // encoding: [0x20,0x9c,0x62,0x4e]
20 // CHECK: mul v0.2s, v1.2s, v2.2s        // encoding: [0x20,0x9c,0xa2,0x0e]
21 // CHECK: mul v0.4s, v1.4s, v2.4s        // encoding: [0x20,0x9c,0xa2,0x4e]
22
23
24 //----------------------------------------------------------------------
25 // Vector Floating-Point Mul
26 //----------------------------------------------------------------------
27          fmul v0.2s, v1.2s, v2.2s
28          fmul v0.4s, v1.4s, v2.4s
29          fmul v0.2d, v1.2d, v2.2d
30
31 // CHECK: fmul v0.2s, v1.2s, v2.2s       // encoding: [0x20,0xdc,0x22,0x2e]
32 // CHECK: fmul v0.4s, v1.4s, v2.4s       // encoding: [0x20,0xdc,0x22,0x6e]
33 // CHECK: fmul v0.2d, v1.2d, v2.2d       // encoding: [0x20,0xdc,0x62,0x6e]
34
35 //----------------------------------------------------------------------
36 // Vector Floating-Point Div
37 //----------------------------------------------------------------------
38          fdiv v0.2s, v1.2s, v2.2s
39          fdiv v0.4s, v1.4s, v2.4s
40          fdiv v0.2d, v1.2d, v2.2d
41
42 // CHECK: fdiv v0.2s, v1.2s, v2.2s       // encoding: [0x20,0xfc,0x22,0x2e]
43 // CHECK: fdiv v0.4s, v1.4s, v2.4s       // encoding: [0x20,0xfc,0x22,0x6e]
44 // CHECK: fdiv v0.2d, v1.2d, v2.2d       // encoding: [0x20,0xfc,0x62,0x6e]
45
46 //----------------------------------------------------------------------
47 // Vector Multiply (Polynomial)
48 //----------------------------------------------------------------------
49          pmul v17.8b, v31.8b, v16.8b
50          pmul v0.16b, v1.16b, v2.16b
51
52 // CHECK: pmul v17.8b, v31.8b, v16.8b     // encoding: [0xf1,0x9f,0x30,0x2e]
53 // CHECK: pmul v0.16b, v1.16b, v2.16b     // encoding: [0x20,0x9c,0x22,0x6e]
54
55 //----------------------------------------------------------------------
56 // Vector Saturating Doubling Multiply High
57 //----------------------------------------------------------------------
58          sqdmulh v2.4h, v25.4h, v3.4h
59          sqdmulh v12.8h, v5.8h, v13.8h
60          sqdmulh v3.2s, v1.2s, v30.2s
61
62 // CHECK: sqdmulh v2.4h, v25.4h, v3.4h    // encoding: [0x22,0xb7,0x63,0x0e]
63 // CHECK: sqdmulh v12.8h, v5.8h, v13.8h   // encoding: [0xac,0xb4,0x6d,0x4e]
64 // CHECK: sqdmulh v3.2s, v1.2s, v30.2s    // encoding: [0x23,0xb4,0xbe,0x0e]
65
66 //----------------------------------------------------------------------
67 // Vector Saturating Rouding Doubling Multiply High
68 //----------------------------------------------------------------------
69          sqrdmulh v2.4h, v25.4h, v3.4h
70          sqrdmulh v12.8h, v5.8h, v13.8h
71          sqrdmulh v3.2s, v1.2s, v30.2s
72
73 // CHECK: sqrdmulh v2.4h, v25.4h, v3.4h    // encoding: [0x22,0xb7,0x63,0x2e]
74 // CHECK: sqrdmulh v12.8h, v5.8h, v13.8h   // encoding: [0xac,0xb4,0x6d,0x6e]
75 // CHECK: sqrdmulh v3.2s, v1.2s, v30.2s    // encoding: [0x23,0xb4,0xbe,0x2e]
76
77 //----------------------------------------------------------------------
78 // Vector Multiply Extended
79 //----------------------------------------------------------------------
80       fmulx v21.2s, v5.2s, v13.2s
81       fmulx v1.4s, v25.4s, v3.4s
82       fmulx v31.2d, v22.2d, v2.2d
83
84 // CHECK: fmulx v21.2s, v5.2s, v13.2s // encoding: [0xb5,0xdc,0x2d,0x0e]
85 // CHECK: fmulx v1.4s, v25.4s, v3.4s // encoding: [0x21,0xdf,0x23,0x4e]
86 // CHECK: fmulx v31.2d, v22.2d, v2.2d // encoding: [0xdf,0xde,0x62,0x4e]
87