xref: /aosp_15_r20/external/llvm/test/MC/AArch64/neon-tbl.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple=arm64 -mattr=+neon -show-encoding < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker// Check that the assembler can handle the documented syntax for AArch64
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker//------------------------------------------------------------------------------
6*9880d681SAndroid Build Coastguard Worker// Instructions across vector registers
7*9880d681SAndroid Build Coastguard Worker//------------------------------------------------------------------------------
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker        tbl v0.8b, { v1.16b }, v2.8b
10*9880d681SAndroid Build Coastguard Worker        tbl v0.8b, { v1.16b, v2.16b }, v2.8b
11*9880d681SAndroid Build Coastguard Worker        tbl v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b
12*9880d681SAndroid Build Coastguard Worker        tbl v0.8b, { v1.16b, v2.16b, v3.16b, v4.16b }, v2.8b
13*9880d681SAndroid Build Coastguard Worker        tbl v0.8b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.8b
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker// CHECK: tbl	v0.8b, { v1.16b }, v2.8b  // encoding: [0x20,0x00,0x02,0x0e]
16*9880d681SAndroid Build Coastguard Worker// CHECK: tbl	v0.8b, { v1.16b, v2.16b }, v2.8b // encoding: [0x20,0x20,0x02,0x0e]
17*9880d681SAndroid Build Coastguard Worker// CHECK: tbl	v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b // encoding: [0x20,0x40,0x02,0x0e]
18*9880d681SAndroid Build Coastguard Worker// CHECK: tbl	v0.8b, { v1.16b, v2.16b, v3.16b, v4.16b }, v2.8b // encoding: [0x20,0x60,0x02,0x0e]
19*9880d681SAndroid Build Coastguard Worker// CHECK: tbl	v0.8b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.8b // encoding: [0xe0,0x63,0x02,0x0e]
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Worker        tbl v0.16b, { v1.16b }, v2.16b
22*9880d681SAndroid Build Coastguard Worker        tbl v0.16b, { v1.16b, v2.16b }, v2.16b
23*9880d681SAndroid Build Coastguard Worker        tbl v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b
24*9880d681SAndroid Build Coastguard Worker        tbl v0.16b, { v1.16b, v2.16b, v3.16b, v4.16b }, v2.16b
25*9880d681SAndroid Build Coastguard Worker        tbl v0.16b, { v30.16b, v31.16b, v0.16b, v1.16b }, v2.16b
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Worker// CHECK: tbl	v0.16b, { v1.16b }, v2.16b // encoding: [0x20,0x00,0x02,0x4e]
28*9880d681SAndroid Build Coastguard Worker// CHECK: tbl	v0.16b, { v1.16b, v2.16b }, v2.16b // encoding: [0x20,0x20,0x02,0x4e]
29*9880d681SAndroid Build Coastguard Worker// CHECK: tbl	v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b // encoding: [0x20,0x40,0x02,0x4e]
30*9880d681SAndroid Build Coastguard Worker// CHECK: tbl	v0.16b, { v1.16b, v2.16b, v3.16b, v4.16b }, v2.16b // encoding: [0x20,0x60,0x02,0x4e]
31*9880d681SAndroid Build Coastguard Worker// CHECK: tbl	v0.16b, { v30.16b, v31.16b, v0.16b, v1.16b }, v2.16b // encoding: [0xc0,0x63,0x02,0x4e]
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker        tbx v0.8b, { v1.16b }, v2.8b
34*9880d681SAndroid Build Coastguard Worker        tbx v0.8b, { v1.16b, v2.16b }, v2.8b
35*9880d681SAndroid Build Coastguard Worker        tbx v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b
36*9880d681SAndroid Build Coastguard Worker        tbx v0.8b, { v1.16b, v2.16b, v3.16b, v4.16b }, v2.8b
37*9880d681SAndroid Build Coastguard Worker        tbx v0.8b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.8b
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker// CHECK: tbx	v0.8b, { v1.16b }, v2.8b  // encoding: [0x20,0x10,0x02,0x0e]
40*9880d681SAndroid Build Coastguard Worker// CHECK: tbx	v0.8b, { v1.16b, v2.16b }, v2.8b // encoding: [0x20,0x30,0x02,0x0e]
41*9880d681SAndroid Build Coastguard Worker// CHECK: tbx	v0.8b, { v1.16b, v2.16b, v3.16b }, v2.8b // encoding: [0x20,0x50,0x02,0x0e]
42*9880d681SAndroid Build Coastguard Worker// CHECK: tbx	v0.8b, { v1.16b, v2.16b, v3.16b, v4.16b }, v2.8b // encoding: [0x20,0x70,0x02,0x0e]
43*9880d681SAndroid Build Coastguard Worker// CHECK: tbx	v0.8b, { v31.16b, v0.16b, v1.16b, v2.16b }, v2.8b // encoding: [0xe0,0x73,0x02,0x0e]
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker        tbx v0.16b, { v1.16b }, v2.16b
46*9880d681SAndroid Build Coastguard Worker        tbx v0.16b, { v1.16b, v2.16b }, v2.16b
47*9880d681SAndroid Build Coastguard Worker        tbx v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b
48*9880d681SAndroid Build Coastguard Worker        tbx v0.16b, { v1.16b, v2.16b, v3.16b, v4.16b }, v2.16b
49*9880d681SAndroid Build Coastguard Worker        tbx v0.16b, { v30.16b, v31.16b, v0.16b, v1.16b }, v2.16b
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Worker// CHECK: tbx	v0.16b, { v1.16b }, v2.16b // encoding: [0x20,0x10,0x02,0x4e]
52*9880d681SAndroid Build Coastguard Worker// CHECK: tbx	v0.16b, { v1.16b, v2.16b }, v2.16b // encoding: [0x20,0x30,0x02,0x4e]
53*9880d681SAndroid Build Coastguard Worker// CHECK: tbx	v0.16b, { v1.16b, v2.16b, v3.16b }, v2.16b // encoding: [0x20,0x50,0x02,0x4e]
54*9880d681SAndroid Build Coastguard Worker// CHECK: tbx	v0.16b, { v1.16b, v2.16b, v3.16b, v4.16b }, v2.16b // encoding: [0x20,0x70,0x02,0x4e]
55*9880d681SAndroid Build Coastguard Worker// CHECK: tbx	v0.16b, { v30.16b, v31.16b, v0.16b, v1.16b }, v2.16b // encoding: [0xc0,0x73,0x02,0x4e]
56