[ARM] Better OR's for MVE compares
[llvm-core.git] / test / MC / AArch64 / armv8.2a-dotprod.s
blob6a462fa55b35f6e5de9034103162a6341ba8434f
1 // RUN: llvm-mc -triple aarch64 -mattr=+dotprod -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
2 // RUN: llvm-mc -triple aarch64 -mcpu=cortex-a75 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
3 // RUN: llvm-mc -triple aarch64 -mcpu=cortex-a76 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
4 // RUN: llvm-mc -triple aarch64 -mcpu=cortex-a55 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
5 // RUN: llvm-mc -triple aarch64 -mcpu=tsv110 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
6 // RUN: not llvm-mc -triple aarch64 -mattr=+v8.2a -show-encoding < %s 2> %t
7 // RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
9 udot v0.2s, v1.8b, v2.8b
10 sdot v0.2s, v1.8b, v2.8b
11 udot v0.4s, v1.16b, v2.16b
12 sdot v0.4s, v1.16b, v2.16b
13 udot v0.2s, v1.8b, v2.4b[0]
14 sdot v0.2s, v1.8b, v2.4b[1]
15 udot v0.4s, v1.16b, v2.4b[2]
16 sdot v0.4s, v1.16b, v2.4b[3]
18 // Check that the upper case types are aliases
19 udot v0.2S, v1.8B, v2.4B[0]
20 udot v0.4S, v1.16B, v2.4B[2]
22 // CHECK-DOTPROD: udot v0.2s, v1.8b, v2.8b // encoding: [0x20,0x94,0x82,0x2e]
23 // CHECK-DOTPROD: sdot v0.2s, v1.8b, v2.8b // encoding: [0x20,0x94,0x82,0x0e]
24 // CHECK-DOTPROD: udot v0.4s, v1.16b, v2.16b // encoding: [0x20,0x94,0x82,0x6e]
25 // CHECK-DOTPROD: sdot v0.4s, v1.16b, v2.16b // encoding: [0x20,0x94,0x82,0x4e]
26 // CHECK-DOTPROD: udot v0.2s, v1.8b, v2.4b[0] // encoding: [0x20,0xe0,0x82,0x2f]
27 // CHECK-DOTPROD: sdot v0.2s, v1.8b, v2.4b[1] // encoding: [0x20,0xe0,0xa2,0x0f]
28 // CHECK-DOTPROD: udot v0.4s, v1.16b, v2.4b[2] // encoding: [0x20,0xe8,0x82,0x6f]
29 // CHECK-DOTPROD: sdot v0.4s, v1.16b, v2.4b[3] // encoding: [0x20,0xe8,0xa2,0x4f]
31 // CHECK-DOTPROD: udot v0.2s, v1.8b, v2.4b[0] // encoding: [0x20,0xe0,0x82,0x2f]
32 // CHECK-DOTPROD: udot v0.4s, v1.16b, v2.4b[2] // encoding: [0x20,0xe8,0x82,0x6f]
34 // CHECK-NO-DOTPROD: error: instruction requires: dotprod
35 // CHECK-NO-DOTPROD: udot v0.2s, v1.8b, v2.8b
36 // CHECK-NO-DOTPROD: ^
37 // CHECK-NO-DOTPROD: error: instruction requires: dotprod
38 // CHECK-NO-DOTPROD: sdot v0.2s, v1.8b, v2.8b
39 // CHECK-NO-DOTPROD: ^
40 // CHECK-NO-DOTPROD: error: instruction requires: dotprod
41 // CHECK-NO-DOTPROD: udot v0.4s, v1.16b, v2.16b
42 // CHECK-NO-DOTPROD: ^
43 // CHECK-NO-DOTPROD: error: instruction requires: dotprod
44 // CHECK-NO-DOTPROD: sdot v0.4s, v1.16b, v2.16b
45 // CHECK-NO-DOTPROD: ^
46 // CHECK-NO-DOTPROD: error: instruction requires: dotprod
47 // CHECK-NO-DOTPROD: udot v0.2s, v1.8b, v2.4b[0]
48 // CHECK-NO-DOTPROD: ^
49 // CHECK-NO-DOTPROD: error: instruction requires: dotprod
50 // CHECK-NO-DOTPROD: sdot v0.2s, v1.8b, v2.4b[1]
51 // CHECK-NO-DOTPROD: ^
52 // CHECK-NO-DOTPROD: error: instruction requires: dotprod
53 // CHECK-NO-DOTPROD: udot v0.4s, v1.16b, v2.4b[2]
54 // CHECK-NO-DOTPROD: ^
55 // CHECK-NO-DOTPROD: error: instruction requires: dotprod
56 // CHECK-NO-DOTPROD: sdot v0.4s, v1.16b, v2.4b[3]
57 // CHECK-NO-DOTPROD: ^
59 // CHECK-NO-DOTPROD: error: instruction requires: dotprod
60 // CHECK-NO-DOTPROD: udot v0.2S, v1.8B, v2.4B[0]
61 // CHECK-NO-DOTPROD: ^
62 // CHECK-NO-DOTPROD: error: instruction requires: dotprod
63 // CHECK-NO-DOTPROD: udot v0.4S, v1.16B, v2.4B[2]
64 // CHECK-NO-DOTPROD: ^