aco: Support GFX10 DS in aco_assembler.
authorTimur Kristóf <timur.kristof@gmail.com>
Thu, 26 Sep 2019 15:47:30 +0000 (17:47 +0200)
committerTimur Kristóf <timur.kristof@gmail.com>
Thu, 10 Oct 2019 07:57:52 +0000 (09:57 +0200)
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
src/amd/compiler/aco_assembler.cpp

index f6a3999afe44a03a85865b8f13ddf77ce17bf494..8e44050b653c317e411f83dcb1b030a2afa2d884 100644 (file)
@@ -239,8 +239,13 @@ void emit_instruction(asm_context& ctx, std::vector<uint32_t>& out, Instruction*
    case Format::DS: {
       DS_instruction* ds = static_cast<DS_instruction*>(instr);
       uint32_t encoding = (0b110110 << 26);
-      encoding |= opcode << 17;
-      encoding |= (ds->gds ? 1 : 0) << 16;
+      if (ctx.chip_class == GFX8 || ctx.chip_class == GFX9) {
+         encoding |= opcode << 17;
+         encoding |= (ds->gds ? 1 : 0) << 16;
+      } else {
+         encoding |= opcode << 18;
+         encoding |= (ds->gds ? 1 : 0) << 17;
+      }
       encoding |= ((0xFF & ds->offset1) << 8);
       encoding |= (0xFFFF & ds->offset0);
       out.push_back(encoding);