summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Stellard <[email protected]>2012-07-31 16:42:15 +0000
committerTom Stellard <[email protected]>2012-07-31 20:19:20 +0000
commit056b77ca22a3e7a2e24a32941daf65313f604042 (patch)
treeff5a183107305ecd6bdf01738630ec86e20439d4
parent877a897adc40d98c8ee5abaaf0ae16028866c766 (diff)
radeon/llvm: Move SMRD IMM pattern before SMRD SGPR pattern
In tablegen, if two patterns match, the one that comes first in the file is given preference. We want the SMRD IMM pattern to be given preference, because it encodes the pointer offset in its immediate field, which saves us an add instruction.
-rw-r--r--src/gallium/drivers/radeon/SIInstrInfo.td13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/gallium/drivers/radeon/SIInstrInfo.td b/src/gallium/drivers/radeon/SIInstrInfo.td
index 78b1a37f081..36496f0cc73 100644
--- a/src/gallium/drivers/radeon/SIInstrInfo.td
+++ b/src/gallium/drivers/radeon/SIInstrInfo.td
@@ -475,21 +475,20 @@ class MTBUF_Store_Helper <bits<3> op, string asm, RegisterClass regClass> : MTBU
multiclass SMRD_Helper <bits<5> op, string asm, RegisterClass dstClass,
ValueType vt> {
-
- def _SGPR : SMRD <
+ def _IMM : SMRD <
op,
(outs dstClass:$dst),
- (ins SMRDmemrr:$src0),
+ (ins SMRDmemri:$src0),
asm,
- [(set (vt dstClass:$dst), (constant_load ADDR_Reg:$src0))]
+ [(set (vt dstClass:$dst), (constant_load ADDR_Offset8:$src0))]
>;
- def _IMM : SMRD <
+ def _SGPR : SMRD <
op,
(outs dstClass:$dst),
- (ins SMRDmemri:$src0),
+ (ins SMRDmemrr:$src0),
asm,
- [(set (vt dstClass:$dst), (constant_load ADDR_Offset8:$src0))]
+ [(set (vt dstClass:$dst), (constant_load ADDR_Reg:$src0))]
>;
}