[PATCH] R600/SI: Use SGPR_64 as reister class for S_LOAD_DWORDX2

Matt Arsenault Matthew.Arsenault at amd.com
Fri Aug 1 16:05:53 PDT 2014


There's no reason to ever load into the special registers
 in the superclass SReg_64. This helps avoid the verifier
error "Expected a SGPR_64 register, but got a SReg_64 register"
because SGPR_64 is not a superclass of SReg_64 when trying
to use a loaded kernel argument register in some cases.

http://reviews.llvm.org/D4762

Files:
  lib/Target/R600/SIInstructions.td

Index: lib/Target/R600/SIInstructions.td
===================================================================
--- lib/Target/R600/SIInstructions.td
+++ lib/Target/R600/SIInstructions.td
@@ -49,7 +49,7 @@
 // SMRD instructions, because the SGPR_32 register class does not include M0
 // and writing to M0 from an SMRD instruction will hang the GPU.
 defm S_LOAD_DWORD : SMRD_Helper <0x00, "S_LOAD_DWORD", SReg_64, SGPR_32>;
-defm S_LOAD_DWORDX2 : SMRD_Helper <0x01, "S_LOAD_DWORDX2", SReg_64, SReg_64>;
+defm S_LOAD_DWORDX2 : SMRD_Helper <0x01, "S_LOAD_DWORDX2", SReg_64, SGPR_64>;
 defm S_LOAD_DWORDX4 : SMRD_Helper <0x02, "S_LOAD_DWORDX4", SReg_64, SReg_128>;
 defm S_LOAD_DWORDX8 : SMRD_Helper <0x03, "S_LOAD_DWORDX8", SReg_64, SReg_256>;
 defm S_LOAD_DWORDX16 : SMRD_Helper <0x04, "S_LOAD_DWORDX16", SReg_64, SReg_512>;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D4762.12124.patch
Type: text/x-patch
Size: 822 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140801/c6606f9b/attachment.bin>


More information about the llvm-commits mailing list