[InstCombine] Signed saturation patterns
[llvm-core.git] / test / MC / ARM / armv8.2a-dotprod-error.s
blob1ef38df984fc7dd04a366e06e283adb0b05107bb
1 // RUN: not llvm-mc -triple arm -mattr=+dotprod -show-encoding < %s 2> %t
2 // RUN: FileCheck --check-prefix=CHECK-ERROR < %t %s
3 // RUN: not llvm-mc -triple thumb -mattr=+dotprod -show-encoding < %s 2> %t
4 // RUN: FileCheck --check-prefix=CHECK-ERROR < %t %s
6 // Only indices 0 an 1 should be accepted:
8 vudot.u8 d0, d1, d2[2]
9 vsdot.s8 d0, d1, d2[2]
10 vudot.u8 q0, q1, d4[2]
11 vsdot.s8 q0, q1, d4[2]
13 // CHECK-ERROR: error: invalid operand for instruction
14 // CHECK-ERROR: vudot.u8 d0, d1, d2[2]
15 // CHECK-ERROR: ^
16 // CHECK-ERROR: error: invalid operand for instruction
17 // CHECK-ERROR: vsdot.s8 d0, d1, d2[2]
18 // CHECK-ERROR: ^
19 // CHECK-ERROR: error: invalid operand for instruction
20 // CHECK-ERROR: vudot.u8 q0, q1, d4[2]
21 // CHECK-ERROR: ^
22 // CHECK-ERROR: error: invalid operand for instruction
23 // CHECK-ERROR: vsdot.s8 q0, q1, d4[2]
24 // CHECK-ERROR: ^
26 // Only the lower 16 D-registers should be accepted:
28 vudot.u8 q0, q1, d16[0]
29 vsdot.s8 q0, q1, d16[0]
31 // CHECK-ERROR: error: operand must be a register in range [d0, d15]
32 // CHECK-ERROR: vudot.u8 q0, q1, d16[0]
33 // CHECK-ERROR: ^
34 // CHECK-ERROR: error: operand must be a register in range [d0, d15]
35 // CHECK-ERROR: vsdot.s8 q0, q1, d16[0]
36 // CHECK-ERROR: ^