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