1// RUN: not llvm-mc -arch=amdgcn -mcpu=gfx900 -show-encoding %s | FileCheck -check-prefix=GFX9 -check-prefix=GCN %s
2// RUN: not llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s | FileCheck -check-prefix=VI -check-prefix=GCN %s
3
4// RUN: not llvm-mc -arch=amdgcn -mcpu=gfx900 -show-encoding 2>&1 %s | FileCheck -check-prefix=GFX9-ERR -check-prefix=GCNERR %s
5// RUN: not llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding 2>&1 %s | FileCheck -check-prefix=VI-ERR -check-prefix=GCNERR %s
6
7
8flat_load_dword v1, v[3:4] offset:0
9// GCN: flat_load_dword v1, v[3:4]      ; encoding: [0x00,0x00,0x50,0xdc,0x03,0x00,0x00,0x01]
10
11flat_load_dword v1, v[3:4] offset:-1
12// VI-ERR: :28: error: flat offset modifier is not supported on this GPU
13// GFX9-ERR: :28: error: expected a 12-bit unsigned offset
14
15// FIXME: Error on VI in wrong column
16flat_load_dword v1, v[3:4] offset:4095
17// GFX9: flat_load_dword v1, v[3:4] offset:4095 ; encoding: [0xff,0x0f,0x50,0xdc,0x03,0x00,0x00,0x01]
18// VI-ERR: :28: error: flat offset modifier is not supported on this GPU
19
20flat_load_dword v1, v[3:4] offset:4096
21// VI-ERR: :28: error: flat offset modifier is not supported on this GPU
22// GFX9-ERR: :28: error: expected a 12-bit unsigned offset
23
24flat_load_dword v1, v[3:4] offset:4 glc
25// GFX9: flat_load_dword v1, v[3:4] offset:4 glc ; encoding: [0x04,0x00,0x51,0xdc,0x03,0x00,0x00,0x01]
26// VI-ERR: :28: error: flat offset modifier is not supported on this GPU
27
28flat_load_dword v1, v[3:4] offset:4 glc slc
29// GFX9: flat_load_dword v1, v[3:4] offset:4 glc slc ; encoding: [0x04,0x00,0x53,0xdc,0x03,0x00,0x00,0x01]
30// VI-ERR: :28: error: flat offset modifier is not supported on this GPU
31
32flat_atomic_add v[3:4], v5 offset:8 slc
33// GFX9: flat_atomic_add v[3:4], v5 offset:8 slc ; encoding: [0x08,0x00,0x0a,0xdd,0x03,0x05,0x00,0x00]
34// VI-ERR: :28: error: flat offset modifier is not supported on this GPU
35
36flat_atomic_add v[3:4], v5 inst_offset:8 slc
37// GFX9: flat_atomic_add v[3:4], v5 offset:8 slc ; encoding: [0x08,0x00,0x0a,0xdd,0x03,0x05,0x00,0x00]
38// VI-ERR: :28: error: flat offset modifier is not supported on this GPU
39
40flat_atomic_cmpswap v[1:2], v[3:4] offset:4095
41// GFX9: flat_atomic_cmpswap v[1:2], v[3:4] offset:4095 ; encoding: [0xff,0x0f,0x04,0xdd,0x01,0x03,0x00,0x00]
42// VI-ERR: :36: error: flat offset modifier is not supported on this GPU
43
44flat_atomic_cmpswap v[1:2], v[3:4] offset:4095 slc
45// GFX9: flat_atomic_cmpswap v[1:2], v[3:4] offset:4095 slc ; encoding: [0xff,0x0f,0x06,0xdd,0x01,0x03,0x00,0x00]
46// VI-ERR: :36: error: flat offset modifier is not supported on this GPU
47
48flat_atomic_cmpswap v[1:2], v[3:4]
49// GFX9: flat_atomic_cmpswap v[1:2], v[3:4] ; encoding: [0x00,0x00,0x04,0xdd,0x01,0x03,0x00,0x00]
50// VI:   flat_atomic_cmpswap v[1:2], v[3:4] ; encoding: [0x00,0x00,0x04,0xdd,0x01,0x03,0x00,0x00]
51
52flat_atomic_cmpswap v[1:2], v[3:4] slc
53// GFX9: flat_atomic_cmpswap v[1:2], v[3:4] slc ; encoding: [0x00,0x00,0x06,0xdd,0x01,0x03,0x00,0x00]
54// VI:   flat_atomic_cmpswap v[1:2], v[3:4] slc ; encoding: [0x00,0x00,0x06,0xdd,0x01,0x03,0x00,0x00]
55
56flat_atomic_cmpswap v[1:2], v[3:4] offset:4095 glc
57// GCNERR: error: invalid operand for instruction
58
59flat_atomic_cmpswap v[1:2], v[3:4] glc
60// GCNERR: error: invalid operand for instruction
61
62flat_atomic_cmpswap v0, v[1:2], v[3:4] offset:4095 glc
63// GFX9: flat_atomic_cmpswap v0, v[1:2], v[3:4] offset:4095 glc ; encoding: [0xff,0x0f,0x05,0xdd,0x01,0x03,0x00,0x00]
64// VI-ERR: :40: error: flat offset modifier is not supported on this GPU
65
66flat_atomic_cmpswap v0, v[1:2], v[3:4] offset:4095 glc slc
67// GFX9: flat_atomic_cmpswap v0, v[1:2], v[3:4] offset:4095 glc slc ; encoding: [0xff,0x0f,0x07,0xdd,0x01,0x03,0x00,0x00]
68// VI-ERR: :40: error: flat offset modifier is not supported on this GPU
69
70flat_atomic_cmpswap v0, v[1:2], v[3:4] glc
71// GFX9: flat_atomic_cmpswap v0, v[1:2], v[3:4] glc ; encoding: [0x00,0x00,0x05,0xdd,0x01,0x03,0x00,0x00]
72// VI:   flat_atomic_cmpswap v0, v[1:2], v[3:4] glc ; encoding: [0x00,0x00,0x05,0xdd,0x01,0x03,0x00,0x00]
73
74flat_atomic_cmpswap v0, v[1:2], v[3:4] glc slc
75// GFX9: flat_atomic_cmpswap v0, v[1:2], v[3:4] glc slc ; encoding: [0x00,0x00,0x07,0xdd,0x01,0x03,0x00,0x00]
76// VI:   flat_atomic_cmpswap v0, v[1:2], v[3:4] glc slc ; encoding: [0x00,0x00,0x07,0xdd,0x01,0x03,0x00,0x00]
77
78flat_atomic_cmpswap v0, v[1:2], v[3:4]
79// GFX9: flat_atomic_cmpswap v0, v[1:2], v[3:4] glc ; encoding: [0x00,0x00,0x05,0xdd,0x01,0x03,0x00,0x00]
80// VI:   flat_atomic_cmpswap v0, v[1:2], v[3:4] glc ; encoding: [0x00,0x00,0x05,0xdd,0x01,0x03,0x00,0x00]
81
82flat_atomic_cmpswap v0, v[1:2], v[3:4] offset:4095
83// GCNERR: error: too few operands for instruction
84
85flat_atomic_cmpswap v0, v[1:2], v[3:4] slc
86// GCNERR: error: invalid operand for instruction
87
88flat_atomic_swap v[3:4], v5 offset:16
89// GFX9: flat_atomic_swap v[3:4], v5 offset:16 ; encoding: [0x10,0x00,0x00,0xdd,0x03,0x05,0x00,0x00]
90// VI-ERR: :29: error: flat offset modifier is not supported on this GPU
91
92flat_store_dword v[3:4], v1 offset:16
93// GFX9: flat_store_dword v[3:4], v1 offset:16 ; encoding: [0x10,0x00,0x70,0xdc,0x03,0x01,0x00,0x00]
94// VI-ERR: :29: error: flat offset modifier is not supported on this GPU
95
96flat_store_dword v[3:4], v1, off
97// GCNERR: :30: error: invalid operand for instruction
98
99flat_store_dword v[3:4], v1, s[0:1]
100// GCNERR: :30: error: invalid operand for instruction
101
102flat_store_dword v[3:4], v1, s0
103// GCNERR: :30: error: invalid operand for instruction
104
105flat_load_dword v1, v[3:4], off
106// GCNERR: :29: error: invalid operand for instruction
107
108flat_load_dword v1, v[3:4], s[0:1]
109// GCNERR: :29: error: invalid operand for instruction
110
111flat_load_dword v1, v[3:4], s0
112// GCNERR: :29: error: invalid operand for instruction
113
114flat_load_dword v1, v[3:4], exec_hi
115// GCNERR: :29: error: invalid operand for instruction
116
117flat_store_dword v[3:4], v1, exec_hi
118// GCNERR: :30: error: invalid operand for instruction
119
120flat_load_ubyte_d16 v1, v[3:4]
121// GFX9: flat_load_ubyte_d16 v1, v[3:4]  ; encoding: [0x00,0x00,0x80,0xdc,0x03,0x00,0x00,0x01]
122// VI-ERR: error: instruction not supported on this GPU
123
124flat_load_ubyte_d16_hi v1, v[3:4]
125// GFX9: flat_load_ubyte_d16_hi v1, v[3:4] ; encoding: [0x00,0x00,0x84,0xdc,0x03,0x00,0x00,0x01]
126// VI-ERR: error: instruction not supported on this GPU
127
128flat_load_sbyte_d16 v1, v[3:4]
129// GFX9: flat_load_sbyte_d16 v1, v[3:4]  ; encoding: [0x00,0x00,0x88,0xdc,0x03,0x00,0x00,0x01]
130// VI-ERR: error: instruction not supported on this GPU
131
132flat_load_sbyte_d16_hi v1, v[3:4]
133// GFX9: flat_load_sbyte_d16_hi v1, v[3:4] ; encoding: [0x00,0x00,0x8c,0xdc,0x03,0x00,0x00,0x01]
134// VI-ERR: error: instruction not supported on this GPU
135
136flat_load_short_d16 v1, v[3:4]
137// GFX9: flat_load_short_d16 v1, v[3:4]  ; encoding: [0x00,0x00,0x90,0xdc,0x03,0x00,0x00,0x01]
138// VI-ERR: error: instruction not supported on this GPU
139
140flat_load_short_d16_hi v1, v[3:4]
141// GFX9: flat_load_short_d16_hi v1, v[3:4] ; encoding: [0x00,0x00,0x94,0xdc,0x03,0x00,0x00,0x01]
142// VI-ERR: error: instruction not supported on this GPU
143
144flat_store_byte_d16_hi v[3:4], v1
145// GFX9: flat_store_byte_d16_hi v[3:4], v1 ; encoding: [0x00,0x00,0x64,0xdc,0x03,0x01,0x00,0x00]
146// VI-ERR: error: instruction not supported on this GPU
147
148flat_store_short_d16_hi v[3:4], v1
149// GFX9: flat_store_short_d16_hi v[3:4], v1 ; encoding: [0x00,0x00,0x6c,0xdc,0x03,0x01,0x00,0x00
150// VI-ERR: error: instruction not supported on this GPU
151