1 // 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 3 4 // RUN: not llvm-mc -arch=amdgcn -mcpu=tahiti %s 2>&1 | FileCheck -check-prefix=NOSI %s 5 // RUN: not llvm-mc -arch=amdgcn -mcpu=bonaire %s 2>&1 | FileCheck -check-prefix=NOCI %s 6 // RUN: not llvm-mc -arch=amdgcn -mcpu=tonga %s 2>&1 | FileCheck -check-prefix=NOVI %s 7 8 //===----------------------------------------------------------------------===// 9 // Test for different operand combinations 10 //===----------------------------------------------------------------------===// 11 12 //===----------------------------------------------------------------------===// 13 // load - immediate offset only 14 //===----------------------------------------------------------------------===// 15 16 buffer_load_dword v1, s[4:7], s1 17 // SICI: buffer_load_dword v1, s[4:7], s1 ; encoding: [0x00,0x00,0x30,0xe0,0x00,0x01,0x01,0x01] 18 19 buffer_load_dword v1, s[4:7], s1 offset:4 20 // SICI: buffer_load_dword v1, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x30,0xe0,0x00,0x01,0x01,0x01] 21 22 buffer_load_dword v1, s[4:7], s1 offset:4 glc 23 // SICI: buffer_load_dword v1, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x30,0xe0,0x00,0x01,0x01,0x01] 24 25 buffer_load_dword v1, s[4:7], s1 offset:4 slc 26 // SICI: buffer_load_dword v1, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x30,0xe0,0x00,0x01,0x41,0x01] 27 28 buffer_load_dword v1, s[4:7], s1 offset:4 tfe 29 // SICI: buffer_load_dword v1, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x30,0xe0,0x00,0x01,0x81,0x01] 30 31 buffer_load_dword v1, s[4:7], s1 tfe glc 32 // SICI: buffer_load_dword v1, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x30,0xe0,0x00,0x01,0x81,0x01] 33 34 buffer_load_dword v1, s[4:7], s1 offset:4 glc tfe slc 35 // SICI: buffer_load_dword v1, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x30,0xe0,0x00,0x01,0xc1,0x01] 36 37 buffer_load_dword v1, s[4:7], s1 glc tfe slc offset:4 38 // SICI: buffer_load_dword v1, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x30,0xe0,0x00,0x01,0xc1,0x01] 39 40 //===----------------------------------------------------------------------===// 41 // load - vgpr offset 42 //===----------------------------------------------------------------------===// 43 44 buffer_load_dword v1, v2, s[4:7], s1 offen 45 // SICI: buffer_load_dword v1, v2, s[4:7], s1 offen ; encoding: [0x00,0x10,0x30,0xe0,0x02,0x01,0x01,0x01] 46 47 buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 48 // SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 ; encoding: [0x04,0x10,0x30,0xe0,0x02,0x01,0x01,0x01] 49 50 buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc 51 // SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc ; encoding: [0x04,0x50,0x30,0xe0,0x02,0x01,0x01,0x01] 52 53 buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 slc 54 // SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 slc ; encoding: [0x04,0x10,0x30,0xe0,0x02,0x01,0x41,0x01] 55 56 buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 tfe 57 // SICI: buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 tfe ; encoding: [0x04,0x10,0x30,0xe0,0x02,0x01,0x81,0x01] 58 59 buffer_load_dword v1, v2, s[4:7], s1 offen tfe glc 60 // SICI: buffer_load_dword v1, v2, s[4:7], s1 offen glc tfe ; encoding: [0x00,0x50,0x30,0xe0,0x02,0x01,0x81,0x01] 61 62 buffer_load_dword v1, v2, s[4:7], s1 offen offset:4 glc tfe slc 63 // 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] 64 65 buffer_load_dword v1, v2, s[4:7], s1 offen glc tfe slc offset:4 66 // 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] 67 68 //===----------------------------------------------------------------------===// 69 // load - vgpr index 70 //===----------------------------------------------------------------------===// 71 72 buffer_load_dword v1, v2, s[4:7], s1 idxen 73 // SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen ; encoding: [0x00,0x20,0x30,0xe0,0x02,0x01,0x01,0x01] 74 75 buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 76 // SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 ; encoding: [0x04,0x20,0x30,0xe0,0x02,0x01,0x01,0x01] 77 78 buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc 79 // SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc ; encoding: [0x04,0x60,0x30,0xe0,0x02,0x01,0x01,0x01] 80 81 buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 slc 82 // SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 slc ; encoding: [0x04,0x20,0x30,0xe0,0x02,0x01,0x41,0x01] 83 84 buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 tfe 85 // SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 tfe ; encoding: [0x04,0x20,0x30,0xe0,0x02,0x01,0x81,0x01] 86 87 buffer_load_dword v1, v2, s[4:7], s1 idxen tfe glc 88 // SICI: buffer_load_dword v1, v2, s[4:7], s1 idxen glc tfe ; encoding: [0x00,0x60,0x30,0xe0,0x02,0x01,0x81,0x01] 89 90 buffer_load_dword v1, v2, s[4:7], s1 idxen offset:4 glc tfe slc 91 // 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] 92 93 buffer_load_dword v1, v2, s[4:7], s1 idxen glc tfe slc offset:4 94 // 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] 95 96 //===----------------------------------------------------------------------===// 97 // load - vgpr index and offset 98 //===----------------------------------------------------------------------===// 99 100 buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen 101 // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen ; encoding: [0x00,0x30,0x30,0xe0,0x02,0x01,0x01,0x01] 102 103 buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 104 // 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] 105 106 buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc 107 // 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] 108 109 buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc 110 // 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] 111 112 buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe 113 // 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] 114 115 buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen tfe glc 116 // 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] 117 118 buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc tfe slc 119 // 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] 120 121 buffer_load_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe slc offset:4 122 // 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] 123 124 //===----------------------------------------------------------------------===// 125 // load - addr64 126 //===----------------------------------------------------------------------===// 127 128 buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 129 // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 ; encoding: [0x00,0x80,0x30,0xe0,0x02,0x01,0x01,0x01] 130 131 buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 132 // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 ; encoding: [0x04,0x80,0x30,0xe0,0x02,0x01,0x01,0x01] 133 134 buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc 135 // 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] 136 137 buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 slc 138 // 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] 139 140 buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 tfe 141 // 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] 142 143 buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 tfe glc 144 // SICI: buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe ; encoding: [0x00,0xc0,0x30,0xe0,0x02,0x01,0x81,0x01] 145 146 buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc tfe slc 147 // 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] 148 149 buffer_load_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe slc offset:4 150 // 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] 151 152 //===----------------------------------------------------------------------===// 153 // store - immediate offset only 154 //===----------------------------------------------------------------------===// 155 156 buffer_store_dword v1, s[4:7], s1 157 // SICI: buffer_store_dword v1, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] 158 159 buffer_store_dword v1, s[4:7], s1 offset:4 160 // SICI: buffer_store_dword v1, s[4:7], s1 offset:4 ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] 161 162 buffer_store_dword v1, s[4:7], s1 offset:4 glc 163 // SICI: buffer_store_dword v1, s[4:7], s1 offset:4 glc ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0x01,0x01] 164 165 buffer_store_dword v1, s[4:7], s1 offset:4 slc 166 // SICI: buffer_store_dword v1, s[4:7], s1 offset:4 slc ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x41,0x01] 167 168 buffer_store_dword v1, s[4:7], s1 offset:4 tfe 169 // SICI: buffer_store_dword v1, s[4:7], s1 offset:4 tfe ; encoding: [0x04,0x00,0x70,0xe0,0x00,0x01,0x81,0x01] 170 171 buffer_store_dword v1, s[4:7], s1 tfe glc 172 // SICI: buffer_store_dword v1, s[4:7], s1 glc tfe ; encoding: [0x00,0x40,0x70,0xe0,0x00,0x01,0x81,0x01] 173 174 buffer_store_dword v1, s[4:7], s1 offset:4 glc tfe slc 175 // SICI: buffer_store_dword v1, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0xc1,0x01] 176 177 buffer_store_dword v1, s[4:7], s1 glc tfe slc offset:4 178 // SICI: buffer_store_dword v1, s[4:7], s1 offset:4 glc slc tfe ; encoding: [0x04,0x40,0x70,0xe0,0x00,0x01,0xc1,0x01] 179 180 //===----------------------------------------------------------------------===// 181 // store - vgpr offset 182 //===----------------------------------------------------------------------===// 183 184 buffer_store_dword v1, v2, s[4:7], s1 offen 185 // SICI: buffer_store_dword v1, v2, s[4:7], s1 offen ; encoding: [0x00,0x10,0x70,0xe0,0x02,0x01,0x01,0x01] 186 187 buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 188 // SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x01,0x01] 189 190 buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc 191 // SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc ; encoding: [0x04,0x50,0x70,0xe0,0x02,0x01,0x01,0x01] 192 193 buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 slc 194 // SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 slc ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x41,0x01] 195 196 buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 tfe 197 // SICI: buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 tfe ; encoding: [0x04,0x10,0x70,0xe0,0x02,0x01,0x81,0x01] 198 199 buffer_store_dword v1, v2, s[4:7], s1 offen tfe glc 200 // SICI: buffer_store_dword v1, v2, s[4:7], s1 offen glc tfe ; encoding: [0x00,0x50,0x70,0xe0,0x02,0x01,0x81,0x01] 201 202 buffer_store_dword v1, v2, s[4:7], s1 offen offset:4 glc tfe slc 203 // 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] 204 205 buffer_store_dword v1, v2, s[4:7], s1 offen glc tfe slc offset:4 206 // 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] 207 208 //===----------------------------------------------------------------------===// 209 // store - vgpr index 210 //===----------------------------------------------------------------------===// 211 212 buffer_store_dword v1, v2, s[4:7], s1 idxen 213 // SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen ; encoding: [0x00,0x20,0x70,0xe0,0x02,0x01,0x01,0x01] 214 215 buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 216 // SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x01,0x01] 217 218 buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc 219 // SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc ; encoding: [0x04,0x60,0x70,0xe0,0x02,0x01,0x01,0x01] 220 221 buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 slc 222 // SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 slc ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x41,0x01] 223 224 buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 tfe 225 // SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 tfe ; encoding: [0x04,0x20,0x70,0xe0,0x02,0x01,0x81,0x01] 226 227 buffer_store_dword v1, v2, s[4:7], s1 idxen tfe glc 228 // SICI: buffer_store_dword v1, v2, s[4:7], s1 idxen glc tfe ; encoding: [0x00,0x60,0x70,0xe0,0x02,0x01,0x81,0x01] 229 230 buffer_store_dword v1, v2, s[4:7], s1 idxen offset:4 glc tfe slc 231 // 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] 232 233 buffer_store_dword v1, v2, s[4:7], s1 idxen glc tfe slc offset:4 234 // 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] 235 236 //===----------------------------------------------------------------------===// 237 // store - vgpr index and offset 238 //===----------------------------------------------------------------------===// 239 240 buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen 241 // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen ; encoding: [0x00,0x30,0x70,0xe0,0x02,0x01,0x01,0x01] 242 243 buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 244 // 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] 245 246 buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc 247 // 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] 248 249 buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 slc 250 // 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] 251 252 buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 tfe 253 // 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] 254 255 buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen tfe glc 256 // 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] 257 258 buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen offset:4 glc tfe slc 259 // 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] 260 261 buffer_store_dword v1, v[2:3], s[4:7], s1 idxen offen glc tfe slc offset:4 262 // 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] 263 264 //===----------------------------------------------------------------------===// 265 // store - addr64 266 //===----------------------------------------------------------------------===// 267 268 buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 269 // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 ; encoding: [0x00,0x80,0x70,0xe0,0x02,0x01,0x01,0x01] 270 271 buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 272 // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 ; encoding: [0x04,0x80,0x70,0xe0,0x02,0x01,0x01,0x01] 273 274 buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc 275 // 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] 276 277 buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 slc 278 // 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] 279 280 buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 tfe 281 // 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] 282 283 buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 tfe glc 284 // SICI: buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe ; encoding: [0x00,0xc0,0x70,0xe0,0x02,0x01,0x81,0x01] 285 286 buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 offset:4 glc tfe slc 287 // 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] 288 289 buffer_store_dword v1, v[2:3], s[4:7], s1 addr64 glc tfe slc offset:4 290 // 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] 291 292 //===----------------------------------------------------------------------===// 293 // Instructions 294 //===----------------------------------------------------------------------===// 295 296 buffer_load_format_x v1, s[4:7], s1 297 // SICI: buffer_load_format_x v1, s[4:7], s1 ; encoding: [0x00,0x00,0x00,0xe0,0x00,0x01,0x01,0x01] 298 299 buffer_load_format_xy v[1:2], s[4:7], s1 300 // SICI: buffer_load_format_xy v[1:2], s[4:7], s1 ; encoding: [0x00,0x00,0x04,0xe0,0x00,0x01,0x01,0x01] 301 302 buffer_load_format_xyz v[1:3], s[4:7], s1 303 // SICI: buffer_load_format_xyz v[1:3], s[4:7], s1 ; encoding: [0x00,0x00,0x08,0xe0,0x00,0x01,0x01,0x01] 304 305 buffer_load_format_xyzw v[1:4], s[4:7], s1 306 // SICI: buffer_load_format_xyzw v[1:4], s[4:7], s1 ; encoding: [0x00,0x00,0x0c,0xe0,0x00,0x01,0x01,0x01] 307 308 buffer_store_format_x v1, s[4:7], s1 309 // SICI: buffer_store_format_x v1, s[4:7], s1 ; encoding: [0x00,0x00,0x10,0xe0,0x00,0x01,0x01,0x01] 310 311 buffer_store_format_xy v[1:2], s[4:7], s1 312 // SICI: buffer_store_format_xy v[1:2], s[4:7], s1 ; encoding: [0x00,0x00,0x14,0xe0,0x00,0x01,0x01,0x01] 313 314 buffer_store_format_xyz v[1:3], s[4:7], s1 315 // SICI: buffer_store_format_xyz v[1:3], s[4:7], s1 ; encoding: [0x00,0x00,0x18,0xe0,0x00,0x01,0x01,0x01] 316 317 buffer_store_format_xyzw v[1:4], s[4:7], s1 318 // SICI: buffer_store_format_xyzw v[1:4], s[4:7], s1 ; encoding: [0x00,0x00,0x1c,0xe0,0x00,0x01,0x01,0x01] 319 320 buffer_load_ubyte v1, s[4:7], s1 321 // SICI: buffer_load_ubyte v1, s[4:7], s1 ; encoding: [0x00,0x00,0x20,0xe0,0x00,0x01,0x01,0x01] 322 323 buffer_load_sbyte v1, s[4:7], s1 324 // SICI: buffer_load_sbyte v1, s[4:7], s1 ; encoding: [0x00,0x00,0x24,0xe0,0x00,0x01,0x01,0x01] 325 326 buffer_load_ushort v1, s[4:7], s1 327 // SICI: buffer_load_ushort v1, s[4:7], s1 ; encoding: [0x00,0x00,0x28,0xe0,0x00,0x01,0x01,0x01] 328 329 buffer_load_sshort v1, s[4:7], s1 330 // SICI: buffer_load_sshort v1, s[4:7], s1 ; encoding: [0x00,0x00,0x2c,0xe0,0x00,0x01,0x01,0x01] 331 332 buffer_load_dword v1, s[4:7], s1 333 // SICI: buffer_load_dword v1, s[4:7], s1 ; encoding: [0x00,0x00,0x30,0xe0,0x00,0x01,0x01,0x01] 334 335 buffer_load_dwordx2 v[1:2], s[4:7], s1 336 // SICI: buffer_load_dwordx2 v[1:2], s[4:7], s1 ; encoding: [0x00,0x00,0x34,0xe0,0x00,0x01,0x01,0x01] 337 338 buffer_load_dwordx4 v[1:4], s[4:7], s1 339 // SICI: buffer_load_dwordx4 v[1:4], s[4:7], s1 ; encoding: [0x00,0x00,0x38,0xe0,0x00,0x01,0x01,0x01] 340 341 buffer_store_byte v1, s[4:7], s1 342 // SICI: buffer_store_byte v1, s[4:7], s1 ; encoding: [0x00,0x00,0x60,0xe0,0x00,0x01,0x01,0x01] 343 344 buffer_store_short v1, s[4:7], s1 345 // SICI: buffer_store_short v1, s[4:7], s1 ; encoding: [0x00,0x00,0x68,0xe0,0x00,0x01,0x01,0x01] 346 347 buffer_store_dword v1 s[4:7], s1 348 // SICI: buffer_store_dword v1, s[4:7], s1 ; encoding: [0x00,0x00,0x70,0xe0,0x00,0x01,0x01,0x01] 349 350 buffer_store_dwordx2 v[1:2], s[4:7], s1 351 // SICI: buffer_store_dwordx2 v[1:2], s[4:7], s1 ; encoding: [0x00,0x00,0x74,0xe0,0x00,0x01,0x01,0x01] 352 353 buffer_store_dwordx4 v[1:4], s[4:7], s1 354 // SICI: buffer_store_dwordx4 v[1:4], s[4:7], s1 ; encoding: [0x00,0x00,0x78,0xe0,0x00,0x01,0x01,0x01] 355 356 //===----------------------------------------------------------------------===// 357 // Cache invalidation 358 //===----------------------------------------------------------------------===// 359 360 buffer_wbinvl1 361 // SICI: buffer_wbinvl1 ; encoding: [0x00,0x00,0xc4,0xe1,0x00,0x00,0x00,0x00] 362 363 buffer_wbinvl1_sc 364 // SI: buffer_wbinvl1_sc ; encoding: [0x00,0x00,0xc0,0xe1,0x00,0x00,0x00,0x00] 365 // NOCI: error: instruction not supported on this GPU 366 // NOVI: error: instruction not supported on this GPU 367 368 buffer_wbinvl1_vol 369 // CI: buffer_wbinvl1_vol ; encoding: [0x00,0x00,0xc0,0xe1,0x00,0x00,0x00,0x00] 370 // NOSI: error: instruction not supported on this GPU 371 372 // TODO: Atomics 373