blob: e6b94ea3c7152fecc22784763380c14c2ae41a54 [file] [log] [blame]
Matt Arsenaultd6adfb42015-09-24 19:52:21 +00001// RUN: not llvm-mc -arch=amdgcn -mcpu=tahiti -show-encoding %s | FileCheck -check-prefix=GCN -check-prefix=SI -check-prefix=SICI %s
2// RUN: not llvm-mc -arch=amdgcn -mcpu=bonaire -show-encoding %s | FileCheck -check-prefix=GCN -check-prefix=CI -check-prefix=SICI %s
Valery Pykhtinc0a77c52016-03-23 04:27:26 +00003// RUN: not llvm-mc -arch=amdgcn -mcpu=tonga -show-encoding %s | FileCheck -check-prefix=GCN -check-prefix=VI %s
Matt Arsenaultd6adfb42015-09-24 19:52:21 +00004
5// RUN: not llvm-mc -arch=amdgcn -mcpu=tahiti %s 2>&1 | FileCheck -check-prefix=NOSI %s
6// RUN: not llvm-mc -arch=amdgcn -mcpu=bonaire %s 2>&1 | FileCheck -check-prefix=NOCI %s
7// RUN: not llvm-mc -arch=amdgcn -mcpu=tonga %s 2>&1 | FileCheck -check-prefix=NOVI %s
Tom Stellardd7e6f132015-04-08 01:09:26 +00008
9//===----------------------------------------------------------------------===//
10// Test for different operand combinations
11//===----------------------------------------------------------------------===//
12
13//===----------------------------------------------------------------------===//
14// load - immediate offset only
15//===----------------------------------------------------------------------===//
16
Nikolay Haustov4f672a32016-04-29 09:02:30 +000017buffer_load_dword v1, off, s[4:7], s1
18// SICI: buffer_load_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x30,0xe0,0x00,0x01,0x01,0x01]
19// VI: buffer_load_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x50,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000020
Artem Tamazov38e496b2016-04-29 17:04:50 +000021buffer_load_dword v1, off, ttmp[4:7], s1
22// SICI: buffer_load_dword v1, off, ttmp[4:7], s1 ; encoding: [0x00,0x00,0x30,0xe0,0x00,0x01,0x1d,0x01]
23// VI: buffer_load_dword v1, off, ttmp[4:7], s1 ; encoding: [0x00,0x00,0x50,0xe0,0x00,0x01,0x1d,0x01]
24
Nikolay Haustov4f672a32016-04-29 09:02:30 +000025buffer_load_dword v1, off, s[4:7], s1 offset:4
26// SICI: buffer_load_dword v1, off, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x30,0xe0,0x00,0x01,0x01,0x01]
27// VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x50,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000028
Nikolay Haustov4f672a32016-04-29 09:02:30 +000029buffer_load_dword v1, off, s[4:7], s1 offset:4 glc
30// SICI: buffer_load_dword v1, off, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x30,0xe0,0x00,0x01,0x01,0x01]
31// VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x50,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000032
Nikolay Haustov4f672a32016-04-29 09:02:30 +000033buffer_load_dword v1, off, s[4:7], s1 offset:4 slc
34// SICI: buffer_load_dword v1, off, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x30,0xe0,0x00,0x01,0x41,0x01]
35// VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x52,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000036
Nikolay Haustov4f672a32016-04-29 09:02:30 +000037buffer_load_dword v1, off, s[4:7], s1 offset:4 tfe
38// SICI: buffer_load_dword v1, off, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x30,0xe0,0x00,0x01,0x81,0x01]
39// VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x50,0xe0,0x00,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000040
Nikolay Haustov4f672a32016-04-29 09:02:30 +000041buffer_load_dword v1, off, s[4:7], s1 glc tfe
42// SICI: buffer_load_dword v1, off, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x30,0xe0,0x00,0x01,0x81,0x01]
43// VI: buffer_load_dword v1, off, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x50,0xe0,0x00,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000044
Nikolay Haustov4f672a32016-04-29 09:02:30 +000045buffer_load_dword v1, off, s[4:7], s1 offset:4 glc slc tfe
46// SICI: buffer_load_dword v1, off, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x30,0xe0,0x00,0x01,0xc1,0x01]
47// VI: buffer_load_dword v1, off, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x52,0xe0,0x00,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000048
Artem Tamazov38e496b2016-04-29 17:04:50 +000049buffer_load_dword v1, off, ttmp[4:7], s1 offset:4 glc slc tfe
50// SICI: buffer_load_dword v1, off, ttmp[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x30,0xe0,0x00,0x01,0xdd,0x01]
51// VI: buffer_load_dword v1, off, ttmp[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x52,0xe0,0x00,0x01,0x9d,0x01]
52
Tom Stellardd7e6f132015-04-08 01:09:26 +000053//===----------------------------------------------------------------------===//
54// load - vgpr offset
55//===----------------------------------------------------------------------===//
56
57buffer_load_dword v1, v2, s[4:7], s1 offen
Matt Arsenaultc1167672015-09-24 19:52:15 +000058// SICI: buffer_load_dword v1, v2, s[4:7], s1 offen ; encoding: [0x00,0x10,0x30,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +000059// VI: buffer_load_dword v1, v2, s[4:7], s1 offen ; encoding: [0x00,0x10,0x50,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000060
61buffer_load_dword v1, v2, s[4:7], s1 offen offset:4
Matt Arsenaultc1167672015-09-24 19:52:15 +000062// SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 ; encoding: [0x04,0x10,0x30,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +000063// VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 ; encoding: [0x04,0x10,0x50,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000064
65buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc
Matt Arsenaultc1167672015-09-24 19:52:15 +000066// SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc ; encoding: [0x04,0x50,0x30,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +000067// VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc ; encoding: [0x04,0x50,0x50,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000068
69buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 slc
Matt Arsenaultc1167672015-09-24 19:52:15 +000070// SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 slc ; encoding: [0x04,0x10,0x30,0xe0,0x02,0x01,0x41,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +000071// VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 slc ; encoding: [0x04,0x10,0x52,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000072
73buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +000074// SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 tfe ; encoding: [0x04,0x10,0x30,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +000075// VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 tfe ; encoding: [0x04,0x10,0x50,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000076
Nikolay Haustovea8febd2016-03-01 08:34:43 +000077buffer_load_dword v1, v2, s[4:7], s1 offen glc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +000078// SICI: buffer_load_dword v1, v2, s[4:7], s1 offen glc tfe ; encoding: [0x00,0x50,0x30,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +000079// VI: buffer_load_dword v1, v2, s[4:7], s1 offen glc tfe ; encoding: [0x00,0x50,0x50,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000080
Nikolay Haustovea8febd2016-03-01 08:34:43 +000081buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +000082// SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x30,0xe0,0x02,0x01,0xc1,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +000083// VI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x52,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000084
Artem Tamazov38e496b2016-04-29 17:04:50 +000085buffer_load_dword v1, v2, ttmp[4:7], s1 offen offset:4 glc slc tfe
86// SICI: buffer_load_dword v1, v2, ttmp[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x30,0xe0,0x02,0x01,0xdd,0x01]
87// VI: buffer_load_dword v1, v2, ttmp[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x52,0xe0,0x02,0x01,0x9d,0x01]
88
Tom Stellardd7e6f132015-04-08 01:09:26 +000089//===----------------------------------------------------------------------===//
90// load - vgpr index
91//===----------------------------------------------------------------------===//
92
93buffer_load_dword v1, v2, s[4:7], s1 idxen
Matt Arsenaultc1167672015-09-24 19:52:15 +000094// SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen ; encoding: [0x00,0x20,0x30,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +000095// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen ; encoding: [0x00,0x20,0x50,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +000096
97buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4
Matt Arsenaultc1167672015-09-24 19:52:15 +000098// SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 ; encoding: [0x04,0x20,0x30,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +000099// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 ; encoding: [0x04,0x20,0x50,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000100
101buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000102// SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc ; encoding: [0x04,0x60,0x30,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000103// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc ; encoding: [0x04,0x60,0x50,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000104
105buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 slc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000106// SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 slc ; encoding: [0x04,0x20,0x30,0xe0,0x02,0x01,0x41,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000107// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 slc ; encoding: [0x04,0x20,0x52,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000108
109buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000110// SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 tfe ; encoding: [0x04,0x20,0x30,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000111// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 tfe ; encoding: [0x04,0x20,0x50,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000112
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000113buffer_load_dword v1, v2, s[4:7], s1 idxen glc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000114// SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen glc tfe ; encoding: [0x00,0x60,0x30,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000115// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen glc tfe ; encoding: [0x00,0x60,0x50,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000116
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000117buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000118// SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x30,0xe0,0x02,0x01,0xc1,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000119// VI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x52,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000120
Artem Tamazov38e496b2016-04-29 17:04:50 +0000121buffer_load_dword v1, v2, ttmp[4:7], s1 idxen offset:4 glc slc tfe
122// SICI: buffer_load_dword v1, v2, ttmp[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x30,0xe0,0x02,0x01,0xdd,0x01]
123// VI: buffer_load_dword v1, v2, ttmp[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x52,0xe0,0x02,0x01,0x9d,0x01]
124
Tom Stellardd7e6f132015-04-08 01:09:26 +0000125//===----------------------------------------------------------------------===//
126// load - vgpr index and offset
127//===----------------------------------------------------------------------===//
128
129buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen
Matt Arsenaultc1167672015-09-24 19:52:15 +0000130// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen ; encoding: [0x00,0x30,0x30,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000131// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen ; encoding: [0x00,0x30,0x50,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000132
133buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4
Matt Arsenaultc1167672015-09-24 19:52:15 +0000134// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 ; encoding: [0x04,0x30,0x30,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000135// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 ; encoding: [0x04,0x30,0x50,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000136
137buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000138// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc ; encoding: [0x04,0x70,0x30,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000139// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc ; encoding: [0x04,0x70,0x50,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000140
141buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000142// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc ; encoding: [0x04,0x30,0x30,0xe0,0x02,0x01,0x41,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000143// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc ; encoding: [0x04,0x30,0x52,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000144
145buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000146// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe ; encoding: [0x04,0x30,0x30,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000147// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe ; encoding: [0x04,0x30,0x50,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000148
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000149buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000150// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe ; encoding: [0x00,0x70,0x30,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000151// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe ; encoding: [0x00,0x70,0x50,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000152
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000153buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000154// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x30,0xe0,0x02,0x01,0xc1,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000155// VI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x52,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000156
Artem Tamazov38e496b2016-04-29 17:04:50 +0000157buffer_load_dword v1, v[2:3], ttmp[4:7], ttmp1 idxen offen offset:4 glc slc tfe
158// SICI: buffer_load_dword v1, v[2:3], ttmp[4:7], ttmp1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x30,0xe0,0x02,0x01,0xdd,0x71]
159// VI: buffer_load_dword v1, v[2:3], ttmp[4:7], ttmp1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x52,0xe0,0x02,0x01,0x9d,0x71]
160
Tom Stellardd7e6f132015-04-08 01:09:26 +0000161//===----------------------------------------------------------------------===//
162// load - addr64
163//===----------------------------------------------------------------------===//
164
165buffer_load_dword v1, v[2:3], s[4:7], s1 addr64
Matt Arsenaultc1167672015-09-24 19:52:15 +0000166// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 ; encoding: [0x00,0x80,0x30,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000167// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000168
169buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4
Matt Arsenaultc1167672015-09-24 19:52:15 +0000170// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 ; encoding: [0x04,0x80,0x30,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000171// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000172
173buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000174// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc ; encoding: [0x04,0xc0,0x30,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000175// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000176
177buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 slc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000178// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 slc ; encoding: [0x04,0x80,0x30,0xe0,0x02,0x01,0x41,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000179// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000180
181buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000182// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 tfe ; encoding: [0x04,0x80,0x30,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000183// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000184
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000185buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000186// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe ; encoding: [0x00,0xc0,0x30,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000187// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000188
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000189buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc slc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000190// SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc slc tfe ; encoding: [0x04,0xc0,0x30,0xe0,0x02,0x01,0xc1,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000191// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000192
Artem Tamazov38e496b2016-04-29 17:04:50 +0000193buffer_load_dword v1, v[2:3], ttmp[4:7], ttmp1 addr64 offset:4 glc slc tfe
194// SICI: buffer_load_dword v1, v[2:3], ttmp[4:7], ttmp1 addr64 offset:4 glc slc tfe ; encoding: [0x04,0xc0,0x30,0xe0,0x02,0x01,0xdd,0x71]
195// NOVI: error: instruction not supported on this GPU
196
Tom Stellardd7e6f132015-04-08 01:09:26 +0000197//===----------------------------------------------------------------------===//
198// store - immediate offset only
199//===----------------------------------------------------------------------===//
200
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000201buffer_store_dword v1, off, s[4:7], s1
202// SICI: buffer_store_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01]
203// VI: buffer_store_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000204
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000205buffer_store_dword v1, off, s[4:7], s1 offset:4
206// SICI: buffer_store_dword v1, off, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x01,0x01]
207// VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000208
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000209buffer_store_dword v1, off, s[4:7], s1 offset:4 glc
210// SICI: buffer_store_dword v1, off, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0x01,0x01]
211// VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000212
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000213buffer_store_dword v1, off, s[4:7], s1 offset:4 slc
214// SICI: buffer_store_dword v1, off, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x41,0x01]
215// VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x72,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000216
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000217buffer_store_dword v1, off, s[4:7], s1 offset:4 tfe
218// SICI: buffer_store_dword v1, off, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x81,0x01]
219// VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000220
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000221buffer_store_dword v1, off, s[4:7], s1 glc tfe
222// SICI: buffer_store_dword v1, off, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x70,0xe0,0x00,0x01,0x81,0x01]
223// VI: buffer_store_dword v1, off, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x70,0xe0,0x00,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000224
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000225buffer_store_dword v1, off, s[4:7], s1 offset:4 glc slc tfe
226// SICI: buffer_store_dword v1, off, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0xc1,0x01]
227// VI: buffer_store_dword v1, off, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x72,0xe0,0x00,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000228
Artem Tamazov38e496b2016-04-29 17:04:50 +0000229buffer_store_dword v1, off, ttmp[4:7], ttmp1 offset:4 glc slc tfe
230// SICI: buffer_store_dword v1, off, ttmp[4:7], ttmp1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0xdd,0x71]
231// VI: buffer_store_dword v1, off, ttmp[4:7], ttmp1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x72,0xe0,0x00,0x01,0x9d,0x71]
232
Tom Stellardd7e6f132015-04-08 01:09:26 +0000233//===----------------------------------------------------------------------===//
234// store - vgpr offset
235//===----------------------------------------------------------------------===//
236
237buffer_store_dword v1, v2, s[4:7], s1 offen
Matt Arsenaultc1167672015-09-24 19:52:15 +0000238// SICI: buffer_store_dword v1, v2, s[4:7], s1 offen ; encoding: [0x00,0x10,0x70,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000239// VI: buffer_store_dword v1, v2, s[4:7], s1 offen ; encoding: [0x00,0x10,0x70,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000240
241buffer_store_dword v1, v2, s[4:7], s1 offen offset:4
Matt Arsenaultc1167672015-09-24 19:52:15 +0000242// SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000243// VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000244
245buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000246// SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc ; encoding: [0x04,0x50,0x70,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000247// VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc ; encoding: [0x04,0x50,0x70,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000248
249buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 slc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000250// SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 slc ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x41,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000251// VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 slc ; encoding: [0x04,0x10,0x72,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000252
253buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000254// SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 tfe ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000255// VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 tfe ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000256
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000257buffer_store_dword v1, v2, s[4:7], s1 offen glc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000258// SICI: buffer_store_dword v1, v2, s[4:7], s1 offen glc tfe ; encoding: [0x00,0x50,0x70,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000259// VI: buffer_store_dword v1, v2, s[4:7], s1 offen glc tfe ; encoding: [0x00,0x50,0x70,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000260
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000261buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000262// SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x70,0xe0,0x02,0x01,0xc1,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000263// VI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x72,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000264
Artem Tamazov38e496b2016-04-29 17:04:50 +0000265buffer_store_dword v1, v2, ttmp[4:7], ttmp1 offen offset:4 glc slc tfe
266// SICI: buffer_store_dword v1, v2, ttmp[4:7], ttmp1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x70,0xe0,0x02,0x01,0xdd,0x71]
267// VI: buffer_store_dword v1, v2, ttmp[4:7], ttmp1 offen offset:4 glc slc tfe ; encoding: [0x04,0x50,0x72,0xe0,0x02,0x01,0x9d,0x71]
268
Tom Stellardd7e6f132015-04-08 01:09:26 +0000269//===----------------------------------------------------------------------===//
270// store - vgpr index
271//===----------------------------------------------------------------------===//
272
273buffer_store_dword v1, v2, s[4:7], s1 idxen
Matt Arsenaultc1167672015-09-24 19:52:15 +0000274// SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen ; encoding: [0x00,0x20,0x70,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000275// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen ; encoding: [0x00,0x20,0x70,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000276
277buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4
Matt Arsenaultc1167672015-09-24 19:52:15 +0000278// SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000279// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000280
281buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000282// SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc ; encoding: [0x04,0x60,0x70,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000283// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc ; encoding: [0x04,0x60,0x70,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000284
285buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 slc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000286// SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 slc ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x41,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000287// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 slc ; encoding: [0x04,0x20,0x72,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000288
289buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000290// SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 tfe ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000291// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 tfe ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000292
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000293buffer_store_dword v1, v2, s[4:7], s1 idxen glc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000294// SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen glc tfe ; encoding: [0x00,0x60,0x70,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000295// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen glc tfe ; encoding: [0x00,0x60,0x70,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000296
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000297buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000298// SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x70,0xe0,0x02,0x01,0xc1,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000299// VI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x72,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000300
Artem Tamazov38e496b2016-04-29 17:04:50 +0000301buffer_store_dword v1, v2, ttmp[4:7], ttmp1 idxen offset:4 glc slc tfe
302// SICI: buffer_store_dword v1, v2, ttmp[4:7], ttmp1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x70,0xe0,0x02,0x01,0xdd,0x71]
303// VI: buffer_store_dword v1, v2, ttmp[4:7], ttmp1 idxen offset:4 glc slc tfe ; encoding: [0x04,0x60,0x72,0xe0,0x02,0x01,0x9d,0x71]
304
Tom Stellardd7e6f132015-04-08 01:09:26 +0000305//===----------------------------------------------------------------------===//
306// store - vgpr index and offset
307//===----------------------------------------------------------------------===//
308
309buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen
Matt Arsenaultc1167672015-09-24 19:52:15 +0000310// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen ; encoding: [0x00,0x30,0x70,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000311// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen ; encoding: [0x00,0x30,0x70,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000312
313buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4
Matt Arsenaultc1167672015-09-24 19:52:15 +0000314// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 ; encoding: [0x04,0x30,0x70,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000315// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 ; encoding: [0x04,0x30,0x70,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000316
317buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000318// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc ; encoding: [0x04,0x70,0x70,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000319// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc ; encoding: [0x04,0x70,0x70,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000320
321buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000322// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc ; encoding: [0x04,0x30,0x70,0xe0,0x02,0x01,0x41,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000323// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc ; encoding: [0x04,0x30,0x72,0xe0,0x02,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000324
325buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000326// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe ; encoding: [0x04,0x30,0x70,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000327// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe ; encoding: [0x04,0x30,0x70,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000328
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000329buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000330// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe ; encoding: [0x00,0x70,0x70,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000331// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe ; encoding: [0x00,0x70,0x70,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000332
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000333buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000334// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x70,0xe0,0x02,0x01,0xc1,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000335// VI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x72,0xe0,0x02,0x01,0x81,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000336
Artem Tamazov38e496b2016-04-29 17:04:50 +0000337buffer_store_dword v1, v[2:3], ttmp[4:7], ttmp1 idxen offen offset:4 glc slc tfe
338// SICI: buffer_store_dword v1, v[2:3], ttmp[4:7], ttmp1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x70,0xe0,0x02,0x01,0xdd,0x71]
339// VI: buffer_store_dword v1, v[2:3], ttmp[4:7], ttmp1 idxen offen offset:4 glc slc tfe ; encoding: [0x04,0x70,0x72,0xe0,0x02,0x01,0x9d,0x71]
340
Tom Stellardd7e6f132015-04-08 01:09:26 +0000341//===----------------------------------------------------------------------===//
342// store - addr64
343//===----------------------------------------------------------------------===//
344
345buffer_store_dword v1, v[2:3], s[4:7], s1 addr64
Matt Arsenaultc1167672015-09-24 19:52:15 +0000346// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 ; encoding: [0x00,0x80,0x70,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000347// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000348
349buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4
Matt Arsenaultc1167672015-09-24 19:52:15 +0000350// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 ; encoding: [0x04,0x80,0x70,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000351// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000352
353buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000354// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc ; encoding: [0x04,0xc0,0x70,0xe0,0x02,0x01,0x01,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000355// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000356
357buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 slc
Matt Arsenaultc1167672015-09-24 19:52:15 +0000358// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 slc ; encoding: [0x04,0x80,0x70,0xe0,0x02,0x01,0x41,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000359// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000360
361buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000362// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 tfe ; encoding: [0x04,0x80,0x70,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000363// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000364
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000365buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000366// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe ; encoding: [0x00,0xc0,0x70,0xe0,0x02,0x01,0x81,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000367// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000368
Nikolay Haustovea8febd2016-03-01 08:34:43 +0000369buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc slc tfe
Matt Arsenaultc1167672015-09-24 19:52:15 +0000370// SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc slc tfe ; encoding: [0x04,0xc0,0x70,0xe0,0x02,0x01,0xc1,0x01]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000371// NOVI: error: instruction not supported on this GPU
Tom Stellardd7e6f132015-04-08 01:09:26 +0000372
Artem Tamazov38e496b2016-04-29 17:04:50 +0000373buffer_store_dword v1, v[2:3], ttmp[4:7], ttmp1 addr64 offset:4 glc slc tfe
374// SICI: buffer_store_dword v1, v[2:3], ttmp[4:7], ttmp1 addr64 offset:4 glc slc tfe ; encoding: [0x04,0xc0,0x70,0xe0,0x02,0x01,0xdd,0x71]
375// NOVI: error: instruction not supported on this GPU
376
Tom Stellardd7e6f132015-04-08 01:09:26 +0000377//===----------------------------------------------------------------------===//
378// Instructions
379//===----------------------------------------------------------------------===//
380
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000381buffer_load_format_x v1, off, s[4:7], s1
382// SICI: buffer_load_format_x v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x00,0xe0,0x00,0x01,0x01,0x01]
383// VI: buffer_load_format_x v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x00,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000384
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000385buffer_load_format_xy v[1:2], off, s[4:7], s1
386// SICI: buffer_load_format_xy v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x04,0xe0,0x00,0x01,0x01,0x01]
387// VI: buffer_load_format_xy v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x04,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000388
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000389buffer_load_format_xyz v[1:3], off, s[4:7], s1
390// SICI: buffer_load_format_xyz v[1:3], off, s[4:7], s1 ; encoding: [0x00,0x00,0x08,0xe0,0x00,0x01,0x01,0x01]
391// VI: buffer_load_format_xyz v[1:3], off, s[4:7], s1 ; encoding: [0x00,0x00,0x08,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000392
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000393buffer_load_format_xyzw v[1:4], off, s[4:7], s1
394// SICI: buffer_load_format_xyzw v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x0c,0xe0,0x00,0x01,0x01,0x01]
395// VI: buffer_load_format_xyzw v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x0c,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000396
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000397buffer_store_format_x v1, off, s[4:7], s1
398// SICI: buffer_store_format_x v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x10,0xe0,0x00,0x01,0x01,0x01]
399// VI: buffer_store_format_x v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x10,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000400
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000401buffer_store_format_xy v[1:2], off, s[4:7], s1
402// SICI: buffer_store_format_xy v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x14,0xe0,0x00,0x01,0x01,0x01]
403// VI: buffer_store_format_xy v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x14,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000404
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000405buffer_store_format_xyz v[1:3], off, s[4:7], s1
406// SICI: buffer_store_format_xyz v[1:3], off, s[4:7], s1 ; encoding: [0x00,0x00,0x18,0xe0,0x00,0x01,0x01,0x01]
407// VI: buffer_store_format_xyz v[1:3], off, s[4:7], s1 ; encoding: [0x00,0x00,0x18,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000408
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000409buffer_store_format_xyzw v[1:4], off, s[4:7], s1
410// SICI: buffer_store_format_xyzw v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x1c,0xe0,0x00,0x01,0x01,0x01]
411// VI: buffer_store_format_xyzw v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x1c,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000412
Artem Tamazov38e496b2016-04-29 17:04:50 +0000413buffer_store_format_xyzw v[1:4], off, ttmp[4:7], ttmp1
414// SICI: buffer_store_format_xyzw v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x1c,0xe0,0x00,0x01,0x1d,0x71]
415// VI: buffer_store_format_xyzw v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x1c,0xe0,0x00,0x01,0x1d,0x71]
416
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000417buffer_load_ubyte v1, off, s[4:7], s1
418// SICI: buffer_load_ubyte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x20,0xe0,0x00,0x01,0x01,0x01]
419// VI: buffer_load_ubyte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x40,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000420
Artem Tamazov38e496b2016-04-29 17:04:50 +0000421buffer_load_ubyte v1, off, ttmp[4:7], ttmp1
422// SICI: buffer_load_ubyte v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x20,0xe0,0x00,0x01,0x1d,0x71]
423// VI: buffer_load_ubyte v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x40,0xe0,0x00,0x01,0x1d,0x71]
424
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000425buffer_load_sbyte v1, off, s[4:7], s1
426// SICI: buffer_load_sbyte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x24,0xe0,0x00,0x01,0x01,0x01]
427// VI: buffer_load_sbyte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x44,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000428
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000429buffer_load_ushort v1, off, s[4:7], s1
430// SICI: buffer_load_ushort v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x28,0xe0,0x00,0x01,0x01,0x01]
431// VI: buffer_load_ushort v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x48,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000432
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000433buffer_load_sshort v1, off, s[4:7], s1
434// SICI: buffer_load_sshort v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x2c,0xe0,0x00,0x01,0x01,0x01]
435// VI: buffer_load_sshort v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x4c,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000436
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000437buffer_load_dword v1, off, s[4:7], s1
438// SICI: buffer_load_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x30,0xe0,0x00,0x01,0x01,0x01]
439// VI: buffer_load_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x50,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000440
Artem Tamazov38e496b2016-04-29 17:04:50 +0000441buffer_load_dword v1, off, ttmp[4:7], ttmp1
442// SICI: buffer_load_dword v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x30,0xe0,0x00,0x01,0x1d,0x71]
443// VI: buffer_load_dword v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x50,0xe0,0x00,0x01,0x1d,0x71]
444
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000445buffer_load_dwordx2 v[1:2], off, s[4:7], s1
446// SICI: buffer_load_dwordx2 v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x34,0xe0,0x00,0x01,0x01,0x01]
447// VI: buffer_load_dwordx2 v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x54,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000448
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000449buffer_load_dwordx4 v[1:4], off, s[4:7], s1
450// SICI: buffer_load_dwordx4 v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x38,0xe0,0x00,0x01,0x01,0x01]
451// VI: buffer_load_dwordx4 v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x5c,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000452
Artem Tamazov38e496b2016-04-29 17:04:50 +0000453buffer_load_dwordx4 v[1:4], off, ttmp[4:7], ttmp1
454// SICI: buffer_load_dwordx4 v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x38,0xe0,0x00,0x01,0x1d,0x71]
455// VI: buffer_load_dwordx4 v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x5c,0xe0,0x00,0x01,0x1d,0x71]
456
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000457buffer_store_byte v1, off, s[4:7], s1
458// SICI: buffer_store_byte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x60,0xe0,0x00,0x01,0x01,0x01]
459// VI: buffer_store_byte v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x60,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000460
Artem Tamazov38e496b2016-04-29 17:04:50 +0000461buffer_store_byte v1, off, ttmp[4:7], ttmp1
462// SICI: buffer_store_byte v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x60,0xe0,0x00,0x01,0x1d,0x71]
463// VI: buffer_store_byte v1, off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x60,0xe0,0x00,0x01,0x1d,0x71]
464
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000465buffer_store_short v1, off, s[4:7], s1
466// SICI: buffer_store_short v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x01,0x01,0x01]
467// VI: buffer_store_short v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000468
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000469buffer_store_dword v1, off, s[4:7], s1
470// SICI: buffer_store_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01]
471// VI: buffer_store_dword v1, off, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000472
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000473buffer_store_dwordx2 v[1:2], off, s[4:7], s1
474// SICI: buffer_store_dwordx2 v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x74,0xe0,0x00,0x01,0x01,0x01]
475// VI: buffer_store_dwordx2 v[1:2], off, s[4:7], s1 ; encoding: [0x00,0x00,0x74,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000476
Nikolay Haustov4f672a32016-04-29 09:02:30 +0000477buffer_store_dwordx4 v[1:4], off, s[4:7], s1
478// SICI: buffer_store_dwordx4 v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x78,0xe0,0x00,0x01,0x01,0x01]
479// VI: buffer_store_dwordx4 v[1:4], off, s[4:7], s1 ; encoding: [0x00,0x00,0x7c,0xe0,0x00,0x01,0x01,0x01]
Tom Stellardd7e6f132015-04-08 01:09:26 +0000480
Artem Tamazov38e496b2016-04-29 17:04:50 +0000481buffer_store_dwordx4 v[1:4], off, ttmp[4:7], ttmp1
482// SICI: buffer_store_dwordx4 v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x78,0xe0,0x00,0x01,0x1d,0x71]
483// VI: buffer_store_dwordx4 v[1:4], off, ttmp[4:7], ttmp1 ; encoding: [0x00,0x00,0x7c,0xe0,0x00,0x01,0x1d,0x71]
484
Matt Arsenaultd6adfb42015-09-24 19:52:21 +0000485//===----------------------------------------------------------------------===//
486// Cache invalidation
487//===----------------------------------------------------------------------===//
488
489buffer_wbinvl1
490// SICI: buffer_wbinvl1 ; encoding: [0x00,0x00,0xc4,0xe1,0x00,0x00,0x00,0x00]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000491// VI: buffer_wbinvl1 ; encoding: [0x00,0x00,0xf8,0xe0,0x00,0x00,0x00,0x00]
Matt Arsenaultd6adfb42015-09-24 19:52:21 +0000492
493buffer_wbinvl1_sc
494// SI: buffer_wbinvl1_sc ; encoding: [0x00,0x00,0xc0,0xe1,0x00,0x00,0x00,0x00]
495// NOCI: error: instruction not supported on this GPU
496// NOVI: error: instruction not supported on this GPU
497
498buffer_wbinvl1_vol
499// CI: buffer_wbinvl1_vol ; encoding: [0x00,0x00,0xc0,0xe1,0x00,0x00,0x00,0x00]
Valery Pykhtinc0a77c52016-03-23 04:27:26 +0000500// VI: buffer_wbinvl1_vol ; encoding: [0x00,0x00,0xfc,0xe0,0x00,0x00,0x00,0x00]
Matt Arsenaultd6adfb42015-09-24 19:52:21 +0000501// NOSI: error: instruction not supported on this GPU
502
Tom Stellardd7e6f132015-04-08 01:09:26 +0000503// TODO: Atomics