Home | History | Annotate | Download | only in AMDGPU
      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