• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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-a55 -show-encoding < %s | FileCheck %s --check-prefix=CHECK-DOTPROD
4// RUN: not llvm-mc -triple aarch64 -mattr=+v8.2a -show-encoding < %s 2> %t
5// RUN: FileCheck --check-prefix=CHECK-NO-DOTPROD < %t %s
6
7udot v0.2s, v1.8b, v2.8b
8sdot v0.2s, v1.8b, v2.8b
9udot v0.4s, v1.16b, v2.16b
10sdot v0.4s, v1.16b, v2.16b
11udot v0.2s, v1.8b, v2.4b[0]
12sdot v0.2s, v1.8b, v2.4b[1]
13udot v0.4s, v1.16b, v2.4b[2]
14sdot v0.4s, v1.16b, v2.4b[3]
15
16// Check that the upper case types are aliases
17udot v0.2S, v1.8B, v2.4B[0]
18udot v0.4S, v1.16B, v2.4B[2]
19
20// CHECK-DOTPROD:  udot  v0.2s, v1.8b, v2.8b     // encoding: [0x20,0x94,0x82,0x2e]
21// CHECK-DOTPROD:  sdot  v0.2s, v1.8b, v2.8b     // encoding: [0x20,0x94,0x82,0x0e]
22// CHECK-DOTPROD:  udot  v0.4s, v1.16b, v2.16b   // encoding: [0x20,0x94,0x82,0x6e]
23// CHECK-DOTPROD:  sdot  v0.4s, v1.16b, v2.16b   // encoding: [0x20,0x94,0x82,0x4e]
24// CHECK-DOTPROD:  udot  v0.2s, v1.8b, v2.4b[0]  // encoding: [0x20,0xe0,0x82,0x2f]
25// CHECK-DOTPROD:  sdot  v0.2s, v1.8b, v2.4b[1]  // encoding: [0x20,0xe0,0xa2,0x0f]
26// CHECK-DOTPROD:  udot  v0.4s, v1.16b, v2.4b[2] // encoding: [0x20,0xe8,0x82,0x6f]
27// CHECK-DOTPROD:  sdot  v0.4s, v1.16b, v2.4b[3] // encoding: [0x20,0xe8,0xa2,0x4f]
28
29// CHECK-DOTPROD:  udot  v0.2s, v1.8b, v2.4b[0]  // encoding: [0x20,0xe0,0x82,0x2f]
30// CHECK-DOTPROD:  udot  v0.4s, v1.16b, v2.4b[2] // encoding: [0x20,0xe8,0x82,0x6f]
31
32// CHECK-NO-DOTPROD: error: instruction requires: dotprod
33// CHECK-NO-DOTPROD: udot v0.2s, v1.8b, v2.8b
34// CHECK-NO-DOTPROD: ^
35// CHECK-NO-DOTPROD: error: instruction requires: dotprod
36// CHECK-NO-DOTPROD: sdot v0.2s, v1.8b, v2.8b
37// CHECK-NO-DOTPROD: ^
38// CHECK-NO-DOTPROD: error: instruction requires: dotprod
39// CHECK-NO-DOTPROD: udot v0.4s, v1.16b, v2.16b
40// CHECK-NO-DOTPROD: ^
41// CHECK-NO-DOTPROD: error: instruction requires: dotprod
42// CHECK-NO-DOTPROD: sdot v0.4s, v1.16b, v2.16b
43// CHECK-NO-DOTPROD: ^
44// CHECK-NO-DOTPROD: error: instruction requires: dotprod
45// CHECK-NO-DOTPROD: udot v0.2s, v1.8b, v2.4b[0]
46// CHECK-NO-DOTPROD: ^
47// CHECK-NO-DOTPROD: error: instruction requires: dotprod
48// CHECK-NO-DOTPROD: sdot v0.2s, v1.8b, v2.4b[1]
49// CHECK-NO-DOTPROD: ^
50// CHECK-NO-DOTPROD: error: instruction requires: dotprod
51// CHECK-NO-DOTPROD: udot v0.4s, v1.16b, v2.4b[2]
52// CHECK-NO-DOTPROD: ^
53// CHECK-NO-DOTPROD: error: instruction requires: dotprod
54// CHECK-NO-DOTPROD: sdot v0.4s, v1.16b, v2.4b[3]
55// CHECK-NO-DOTPROD: ^
56
57// CHECK-NO-DOTPROD: error: instruction requires: dotprod
58// CHECK-NO-DOTPROD: udot v0.2S, v1.8B, v2.4B[0]
59// CHECK-NO-DOTPROD: ^
60// CHECK-NO-DOTPROD: error: instruction requires: dotprod
61// CHECK-NO-DOTPROD: udot v0.4S, v1.16B, v2.4B[2]
62// CHECK-NO-DOTPROD: ^
63