Some dummy cost model for s390x:
authorAnton Korobeynikov <asl@math.spbu.ru>
Sat, 22 Aug 2009 11:46:16 +0000 (11:46 +0000)
committerAnton Korobeynikov <asl@math.spbu.ru>
Sat, 22 Aug 2009 11:46:16 +0000 (11:46 +0000)
 - Prefer short-imm instructions over ext-imm, when possible
 - Prefer Z10 instructions over Z9, when possible

This hopefully should fix some dejagnu test fails on solaris

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79741 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/SystemZ/SystemZInstrFormats.td
lib/Target/SystemZ/SystemZInstrInfo.td

index 81f704f977857fc30513c93d661b3bd36d01d0d1..b4a8993c197172796081252624c76b93b27fc388 100644 (file)
@@ -94,19 +94,25 @@ class RREI<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
   : I16<op, RREForm, outs, ins, asmstr, pattern>;
 
 class RXI<bits<8> op, dag outs, dag ins, string asmstr, list<dag> pattern>
-  : I8<op, RXForm, outs, ins, asmstr, pattern>;
+  : I8<op, RXForm, outs, ins, asmstr, pattern> {
+  let AddedComplexity = 1;
+}
 
 class RXYI<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
   : I16<op, RXYForm, outs, ins, asmstr, pattern>;
 
 class RSI<bits<8> op, dag outs, dag ins, string asmstr, list<dag> pattern>
-  : I8<op, RSForm, outs, ins, asmstr, pattern>;
+  : I8<op, RSForm, outs, ins, asmstr, pattern> {
+  let AddedComplexity = 1;
+}
 
 class RSYI<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
   : I16<op, RSYForm, outs, ins, asmstr, pattern>;
 
 class SII<bits<8> op, dag outs, dag ins, string asmstr, list<dag> pattern>
-  : I8<op, SIForm, outs, ins, asmstr, pattern>;
+  : I8<op, SIForm, outs, ins, asmstr, pattern> {
+  let AddedComplexity = 1;
+}
 
 class SIYI<bits<16> op, dag outs, dag ins, string asmstr, list<dag> pattern>
   : I16<op, SIYForm, outs, ins, asmstr, pattern>;
index 0cf706ed174700de31eaf926821411976096947b..56d75ddfc0c70ec03a5820435bf2bd2509fef171 100644 (file)
@@ -324,6 +324,7 @@ def MOV8miy   : SIYI<0x52EB,
                      "mviy\t{$dst, $src}",
                      [(truncstorei8 (i32 i32immSExt8:$src), riaddr:$dst)]>;
 
+let AddedComplexity = 2 in {
 def MOV16mi   : SILI<0xE544,
                      (outs), (ins riaddr12:$dst, s16imm:$src),
                      "mvhhi\t{$dst, $src}",
@@ -339,6 +340,7 @@ def MOV64mi16 : SILI<0xE548,
                      "mvghi\t{$dst, $src}",
                      [(store (i64 immSExt16:$src), riaddr12:$dst)]>,
                      Requires<[IsZ10]>;
+}
 
 // sexts
 def MOVSX32rr8  : RREI<0xB926,
@@ -856,6 +858,7 @@ def MUL64ri16   : RII<0xA7D,
                       "mghi\t{$dst, $src2}",
                       [(set GR64:$dst, (mul GR64:$src1, immSExt16:$src2))]>;
 
+let AddedComplexity = 2 in {
 def MUL32ri     : RILI<0xC21,
                        (outs GR32:$dst), (ins GR32:$src1, s32imm:$src2),
                        "msfi\t{$dst, $src2}",
@@ -866,6 +869,7 @@ def MUL64ri32   : RILI<0xC20,
                        "msgfi\t{$dst, $src2}",
                        [(set GR64:$dst, (mul GR64:$src1, i64immSExt32:$src2))]>,
                        Requires<[IsZ10]>;
+}
 
 def MUL32rm : RXI<0x71,
                   (outs GR32:$dst), (ins GR32:$src1, rriaddr12:$src2),