[llvm] r280374 - [mips] interAptiv based generic schedule model
Simon Dardis via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 1 07:53:53 PDT 2016
Author: sdardis
Date: Thu Sep 1 09:53:53 2016
New Revision: 280374
URL: http://llvm.org/viewvc/llvm-project?rev=280374&view=rev
Log:
[mips] interAptiv based generic schedule model
This scheduler describes a processor which covers all MIPS ISAs based
around the interAptiv and P5600 timings.
Reviewers: vkalintiris, dsanders
Differential Revision: https://reviews.llvm.org/D23551
Modified:
llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td
llvm/trunk/lib/Target/Mips/Mips.td
llvm/trunk/lib/Target/Mips/MipsSchedule.td
llvm/trunk/test/CodeGen/Mips/biggot.ll
llvm/trunk/test/CodeGen/Mips/divrem.ll
llvm/trunk/test/CodeGen/Mips/fcopysign-f32-f64.ll
llvm/trunk/test/CodeGen/Mips/llvm-ir/add.ll
llvm/trunk/test/CodeGen/Mips/llvm-ir/and.ll
llvm/trunk/test/CodeGen/Mips/llvm-ir/mul.ll
llvm/trunk/test/CodeGen/Mips/llvm-ir/not.ll
llvm/trunk/test/CodeGen/Mips/llvm-ir/or.ll
llvm/trunk/test/CodeGen/Mips/llvm-ir/select-flt.ll
llvm/trunk/test/CodeGen/Mips/llvm-ir/select-int.ll
llvm/trunk/test/CodeGen/Mips/llvm-ir/sub.ll
llvm/trunk/test/CodeGen/Mips/llvm-ir/xor.ll
llvm/trunk/test/CodeGen/Mips/longbranch.ll
llvm/trunk/test/CodeGen/Mips/no-odd-spreg.ll
llvm/trunk/test/CodeGen/Mips/prevent-hoisting.ll
llvm/trunk/test/DebugInfo/Mips/dsr-fixed-objects.ll
Modified: llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td (original)
+++ llvm/trunk/lib/Target/Mips/MicroMips32r6InstrInfo.td Thu Sep 1 09:53:53 2016
@@ -789,7 +789,7 @@ class MTC1_MMR6_DESC : MTC1_MMR6_DESC_BA
class MTC2_MMR6_DESC : MTC2_MMR6_DESC_BASE<"mtc2", COP2Opnd, GPR32Opnd,
II_MTC2>;
class MTHC0_MMR6_DESC : MTC0_MMR6_DESC_BASE<"mthc0", COP0Opnd, GPR32Opnd,
- II_MTC0>;
+ II_MTHC0>;
class MTHC1_D32_MMR6_DESC : MTC1_64_MMR6_DESC_BASE<"mthc1", AFGR64Opnd,
GPR32Opnd, II_MTC1>,
HARDFLOAT, FGR_32;
@@ -838,7 +838,7 @@ class MFC1_MMR6_DESC : MFC1_MMR6_DESC_BA
class MFC2_MMR6_DESC : MFC2_MMR6_DESC_BASE<"mfc2", GPR32Opnd, COP2Opnd,
II_MFC2>;
class MFHC0_MMR6_DESC : MFC0_MMR6_DESC_BASE<"mfhc0", GPR32Opnd, COP0Opnd,
- II_MFC0>;
+ II_MFHC0>;
class MFHC1_D32_MMR6_DESC : MFC1_MMR6_DESC_BASE<"mfhc1", GPR32Opnd, AFGR64Opnd,
II_MFHC1>, HARDFLOAT, FGR_32;
class MFHC1_D64_MMR6_DESC : MFC1_MMR6_DESC_BASE<"mfhc1", GPR32Opnd, FGR64Opnd,
Modified: llvm/trunk/lib/Target/Mips/Mips.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/Mips.td?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/Mips.td (original)
+++ llvm/trunk/lib/Target/Mips/Mips.td Thu Sep 1 09:53:53 2016
@@ -59,6 +59,7 @@ include "MipsCallingConv.td"
// Avoid forward declaration issues.
include "MipsScheduleP5600.td"
+include "MipsScheduleGeneric.td"
def MipsInstrInfo : InstrInfo;
@@ -191,7 +192,7 @@ def ImplP5600 : SubtargetFeature<"p5600"
"The P5600 Processor", [FeatureMips32r5]>;
class Proc<string Name, list<SubtargetFeature> Features>
- : Processor<Name, MipsGenericItineraries, Features>;
+ : ProcessorModel<Name, MipsGenericModel, Features>;
def : Proc<"mips1", [FeatureMips1]>;
def : Proc<"mips2", [FeatureMips2]>;
Modified: llvm/trunk/lib/Target/Mips/MipsSchedule.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsSchedule.td?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsSchedule.td (original)
+++ llvm/trunk/lib/Target/Mips/MipsSchedule.td Thu Sep 1 09:53:53 2016
@@ -216,6 +216,7 @@ def II_MIN_S : InstrItinClass
def II_MINA_D : InstrItinClass;
def II_MINA_S : InstrItinClass;
def II_MFC0 : InstrItinClass;
+def II_MFHC0 : InstrItinClass;
def II_MFC1 : InstrItinClass;
def II_MFHC1 : InstrItinClass;
def II_MFC2 : InstrItinClass;
@@ -244,6 +245,7 @@ def II_MSUB_S : InstrItinClass
def II_MSUBF_D : InstrItinClass;
def II_MSUBF_S : InstrItinClass;
def II_MTC0 : InstrItinClass;
+def II_MTHC0 : InstrItinClass;
def II_MTC1 : InstrItinClass;
def II_MTHC1 : InstrItinClass;
def II_MTC2 : InstrItinClass;
@@ -640,9 +642,11 @@ def MipsGenericItineraries : ProcessorIt
InstrItinData<II_DMTC1 , [InstrStage<2, [ALU]>]>,
InstrItinData<II_DMTC2 , [InstrStage<2, [ALU]>]>,
InstrItinData<II_MFC0 , [InstrStage<2, [ALU]>]>,
+ InstrItinData<II_MFHC0 , [InstrStage<2, [ALU]>]>,
InstrItinData<II_MFC1 , [InstrStage<2, [ALU]>]>,
InstrItinData<II_MFC2 , [InstrStage<2, [ALU]>]>,
InstrItinData<II_MTC0 , [InstrStage<2, [ALU]>]>,
+ InstrItinData<II_MTHC0 , [InstrStage<2, [ALU]>]>,
InstrItinData<II_MTC1 , [InstrStage<2, [ALU]>]>,
InstrItinData<II_MTC2 , [InstrStage<2, [ALU]>]>,
InstrItinData<II_MFHC1 , [InstrStage<2, [ALU]>]>,
Modified: llvm/trunk/test/CodeGen/Mips/biggot.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/biggot.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/biggot.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/biggot.ll Thu Sep 1 09:53:53 2016
@@ -15,12 +15,12 @@ entry:
; O32: lw ${{[0-9]+}}, %call_lo(foo0)($[[R3]])
; N64-LABEL: foo1:
-; N64: lui $[[R0:[0-9]+]], %got_hi(v0)
-; N64: daddu $[[R1:[0-9]+]], $[[R0]], ${{[a-z0-9]+}}
-; N64: lui $[[R2:[0-9]+]], %call_hi(foo0)
-; N64: daddu $[[R3:[0-9]+]], $[[R2]], ${{[a-z0-9]+}}
-; N64: ld ${{[0-9]+}}, %got_lo(v0)($[[R1]])
-; N64: ld ${{[0-9]+}}, %call_lo(foo0)($[[R3]])
+; N64-DAG: lui $[[R0:[0-9]+]], %got_hi(v0)
+; N64-DAG: daddu $[[R1:[0-9]+]], $[[R0]], ${{[a-z0-9]+}}
+; N64-DAG: lui $[[R2:[0-9]+]], %call_hi(foo0)
+; N64-DAG: daddu $[[R3:[0-9]+]], $[[R2]], ${{[a-z0-9]+}}
+; N64-DAG: ld ${{[0-9]+}}, %got_lo(v0)($[[R1]])
+; N64-DAG: ld ${{[0-9]+}}, %call_lo(foo0)($[[R3]])
%0 = load i32, i32* @v0, align 4
tail call void @foo0(i32 %0) nounwind
Modified: llvm/trunk/test/CodeGen/Mips/divrem.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/divrem.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/divrem.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/divrem.ll Thu Sep 1 09:53:53 2016
@@ -152,20 +152,20 @@ entry:
; ACC64: mfhi $[[R0:[0-9]+]]
; ACC64: sw $[[R0]], 0(${{[0-9]+}})
-; GPR32-DAG: div $2, $4, $5
-; GPR32-TRAP: teq $5, $zero, 7
-; NOCHECK-NOT: teq
; GPR32-DAG: mod $[[R0:[0-9]+]], $4, $5
; GPR32-TRAP: teq $5, $zero, 7
+; NOCHECK-NOT: teq
; GPR32: sw $[[R0]], 0(${{[0-9]+}})
+; GPR32-DAG: div $2, $4, $5
+; GPR32-TRAP: teq $5, $zero, 7
-; GPR64-DAG: div $2, $4, $5
-; GPR64-TRAP: teq $5, $zero, 7
-; NOCHECK-NOT: teq
; GPR64-DAG: mod $[[R0:[0-9]+]], $4, $5
; GPR64-TRAP: teq $5, $zero, 7
; NOCHECK-NOT: teq
; GPR64: sw $[[R0]], 0(${{[0-9]+}})
+; GPR64-DAG: div $2, $4, $5
+; GPR64-TRAP: teq $5, $zero, 7
+; NOCHECK-NOT: teq
; ALL: .end sdivrem1
@@ -193,21 +193,21 @@ entry:
; ACC64: mfhi $[[R0:[0-9]+]]
; ACC64: sw $[[R0]], 0(${{[0-9]+}})
-; GPR32-DAG: divu $2, $4, $5
+; GPR32-DAG: modu $[[R0:[0-9]+]], $4, $5
; GPR32-TRAP: teq $5, $zero, 7
+; GPR32: sw $[[R0]], 0(${{[0-9]+}})
; NOCHECK-NOT: teq
-; GPR32-DAG: modu $[[R0:[0-9]+]], $4, $5
+; GPR32-DAG: divu $2, $4, $5
; GPR32-TRAP: teq $5, $zero, 7
; NOCHECK-NOT: teq
-; GPR32: sw $[[R0]], 0(${{[0-9]+}})
-; GPR64-DAG: divu $2, $4, $5
-; GPR64-TRAP: teq $5, $zero, 7
-; NOCHECK-NOT: teq
; GPR64-DAG: modu $[[R0:[0-9]+]], $4, $5
; GPR64-TRAP: teq $5, $zero, 7
; NOCHECK-NOT: teq
; GPR64: sw $[[R0]], 0(${{[0-9]+}})
+; GPR64-DAG: divu $2, $4, $5
+; GPR64-TRAP: teq $5, $zero, 7
+; NOCHECK-NOT: teq
; ALL: .end udivrem1
@@ -335,14 +335,14 @@ entry:
; ACC64: mfhi $[[R0:[0-9]+]]
; ACC64: sd $[[R0]], 0(${{[0-9]+}})
-; GPR64-DAG: ddiv $2, $4, $5
+; GPR64-DAG: dmod $[[R0:[0-9]+]], $4, $5
; GPR64-TRAP: teq $5, $zero, 7
; NOCHECK-NOT: teq
+; GPR64: sd $[[R0]], 0(${{[0-9]+}})
-; GPR64-DAG: dmod $[[R0:[0-9]+]], $4, $5
+; GPR64-DAG: ddiv $2, $4, $5
; GPR64-TRAP: teq $5, $zero, 7
; NOCHECK-NOT: teq
-; GPR64: sd $[[R0]], 0(${{[0-9]+}})
; ALL: .end sdivrem2
@@ -370,14 +370,14 @@ entry:
; ACC64: mfhi $[[R0:[0-9]+]]
; ACC64: sd $[[R0]], 0(${{[0-9]+}})
-; GPR64-DAG: ddivu $2, $4, $5
+; GPR64: dmodu $[[R0:[0-9]+]], $4, $5
; GPR64-TRAP: teq $5, $zero, 7
; NOCHECK-NOT: teq
+; GPR64: sd $[[R0]], 0(${{[0-9]+}})
-; GPR64: dmodu $[[R0:[0-9]+]], $4, $5
+; GPR64-DAG: ddivu $2, $4, $5
; GPR64-TRAP: teq $5, $zero, 7
; NOCHECK-NOT: teq
-; GPR64: sd $[[R0]], 0(${{[0-9]+}})
; ALL: .end udivrem2
Modified: llvm/trunk/test/CodeGen/Mips/fcopysign-f32-f64.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/fcopysign-f32-f64.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/fcopysign-f32-f64.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/fcopysign-f32-f64.ll Thu Sep 1 09:53:53 2016
@@ -36,14 +36,14 @@ define double @func3(double %d, float %f
entry:
; ALL-LABEL: func3:
-; 64-DAG: mfc1 $[[MFC:[0-9]+]], $f13
-; 64-DAG: srl $[[SRL:[0-9]+]], $[[MFC:[0-9]+]], 31
-; 64: dsll $[[DSLL:[0-9]+]], $[[SRL]], 63
-; 64-DAG: daddiu $[[R1:[0-9]+]], $zero, 1
-; 64-DAG: dsll $[[R2:[0-9]+]], $[[R1]], 63
-; 64-DAG: daddiu $[[R3:[0-9]+]], $[[R2]], -1
-; 64-DAG: dmfc1 $[[R0:[0-9]+]], ${{.*}}
+; 64: dmfc1 $[[R0:[0-9]+]], ${{.*}}
+; 64: daddiu $[[R1:[0-9]+]], $zero, 1
+; 64: dsll $[[R2:[0-9]+]], $[[R1]], 63
+; 64: daddiu $[[R3:[0-9]+]], $[[R2]], -1
; 64: and $[[AND0:[0-9]+]], $[[R0]], $[[R3]]
+; 64: mfc1 $[[MFC:[0-9]+]], $f13
+; 64: srl $[[SRL:[0-9]+]], $[[MFC:[0-9]+]], 31
+; 64: dsll $[[DSLL:[0-9]+]], $[[SRL]], 63
; 64: or $[[OR:[0-9]+]], $[[AND0]], $[[DSLL]]
; 64: dmtc1 $[[OR]], $f0
Modified: llvm/trunk/test/CodeGen/Mips/llvm-ir/add.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/llvm-ir/add.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/llvm-ir/add.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/llvm-ir/add.ll Thu Sep 1 09:53:53 2016
@@ -132,13 +132,13 @@ entry:
; GP32: lw $[[T3:[0-9]+]], 24($sp)
; GP32: addu $[[T4:[0-9]+]], $[[T2]], $[[T3]]
; GP32: addu $[[T5:[0-9]+]], $6, $[[T4]]
- ; GP32: lw $[[T6:[0-9]+]], 16($sp)
+ ; GP32: sltu $[[T6:[0-9]+]], $[[T5]], $[[T3]]
; GP32: lw $[[T7:[0-9]+]], 20($sp)
- ; GP32: sltu $[[T8:[0-9]+]], $[[T5]], $[[T3]]
- ; GP32: addu $[[T9:[0-9]+]], $[[T8]], $[[T7]]
+ ; GP32: addu $[[T8:[0-9]+]], $[[T6]], $[[T7]]
+ ; GP32: lw $[[T9:[0-9]+]], 16($sp)
; GP32: addu $3, $5, $[[T8]]
; GP32: sltu $[[T10:[0-9]+]], $3, $[[T7]]
- ; GP32: addu $[[T11:[0-9]+]], $[[T10]], $[[T6]]
+ ; GP32: addu $[[T11:[0-9]+]], $[[T10]], $[[T9]]
; GP32: addu $2, $4, $[[T11]]
; GP32: move $4, $[[T5]]
; GP32: move $5, $[[T1]]
@@ -154,13 +154,13 @@ entry:
; MM32: lw $[[T3:[0-9]+]], 24($sp)
; MM32: addu $[[T4:[0-9]+]], $[[T2]], $[[T3]]
; MM32: addu $[[T5:[0-9]+]], $6, $[[T4]]
- ; MM32: lw $[[T6:[0-9]+]], 16($sp)
+ ; MM32: sltu $[[T6:[0-9]+]], $[[T5]], $[[T3]]
; MM32: lw $[[T7:[0-9]+]], 20($sp)
- ; MM32: sltu $[[T8:[0-9]+]], $[[T5]], $[[T3]]
- ; MM32: addu $[[T9:[0-9]+]], $[[T8]], $[[T7]]
- ; MM32: addu $[[T10:[0-9]+]], $5, $[[T9]]
- ; MM32: sltu $[[T11:[0-6]+]], $[[T9]], $[[T7]]
- ; MM32: addu $[[T12:[0-6]+]], $[[T11]], $[[T6]]
+ ; MM32: addu $[[T8:[0-9]+]], $[[T6]], $[[T7]]
+ ; MM32: lw $[[T9:[0-9]+]], 16($sp)
+ ; MM32: addu $[[T10:[0-9]+]], $5, $[[T8]]
+ ; MM32: sltu $[[T11:[0-9]+]], $[[T10]], $[[T7]]
+ ; MM32: addu $[[T12:[0-9]+]], $[[T11]], $[[T9]]
; MM32: addu $[[T13:[0-9]+]], $4, $[[T12]]
; MM32: move $4, $[[T5]]
; MM32: move $5, $[[T1]]
Modified: llvm/trunk/test/CodeGen/Mips/llvm-ir/and.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/llvm-ir/and.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/llvm-ir/and.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/llvm-ir/and.ll Thu Sep 1 09:53:53 2016
@@ -119,25 +119,25 @@ define signext i128 @and_i128(i128 signe
entry:
; ALL-LABEL: and_i128:
- ; GP32: lw $[[T0:[0-9]+]], 24($sp)
- ; GP32: lw $[[T1:[0-9]+]], 20($sp)
- ; GP32: lw $[[T2:[0-9]+]], 16($sp)
- ; GP32: and $2, $4, $[[T2]]
- ; GP32: and $3, $5, $[[T1]]
- ; GP32: and $4, $6, $[[T0]]
+ ; GP32: lw $[[T0:[0-9]+]], 20($sp)
+ ; GP32: lw $[[T1:[0-9]+]], 16($sp)
+ ; GP32: and $2, $4, $[[T1]]
+ ; GP32: and $3, $5, $[[T0]]
+ ; GP32: lw $[[T2:[0-9]+]], 24($sp)
+ ; GP32: and $4, $6, $[[T2]]
; GP32: lw $[[T3:[0-9]+]], 28($sp)
; GP32: and $5, $7, $[[T3]]
; GP64: and $2, $4, $6
; GP64: and $3, $5, $7
- ; MM32: lw $[[T0:[0-9]+]], 32($sp)
- ; MM32: lw $[[T1:[0-9]+]], 28($sp)
+ ; MM32: lw $[[T0:[0-9]+]], 20($sp)
+ ; MM32: lw $[[T1:[0-9]+]], 16($sp)
+ ; MM32: and16 $[[T1]], $4
+ ; MM32: and16 $[[T0]], $5
; MM32: lw $[[T2:[0-9]+]], 24($sp)
- ; MM32: and16 $[[T2]], $4
- ; MM32: and16 $[[T1]], $5
- ; MM32: and16 $[[T0]], $6
- ; MM32: lw $[[T3:[0-9]+]], 36($sp)
+ ; MM32: and16 $[[T2]], $6
+ ; MM32: lw $[[T3:[0-9]+]], 28($sp)
; MM32: and16 $[[T3]], $7
; MM64: and $2, $4, $6
Modified: llvm/trunk/test/CodeGen/Mips/llvm-ir/mul.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/llvm-ir/mul.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/llvm-ir/mul.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/llvm-ir/mul.ll Thu Sep 1 09:53:53 2016
@@ -185,17 +185,17 @@ entry:
; 32R1-R5: multu $5, $7
; 32R1-R5: mflo $3
; 32R1-R5: mfhi $[[T0:[0-9]+]]
- ; 32R1-R5: mul $[[T1:[0-9]+]], $4, $7
- ; 32R1-R5: mul $[[T2:[0-9]+]], $5, $6
- ; 32R1-R5: addu $[[T0]], $[[T0]], $[[T2:[0-9]+]]
- ; 32R1-R5: addu $2, $[[T0]], $[[T1]]
-
+ ; 32R1-R5: mul $[[T1:[0-9]+]], $5, $6
+ ; 32R1-R5: addu $[[T0]], $[[T0]], $[[T1:[0-9]+]]
+ ; 32R1-R5: mul $[[T2:[0-9]+]], $4, $7
+ ; 32R1-R5: addu $2, $[[T0]], $[[T2]]
+
+ ; 32R6-DAG: mul $[[T0:[0-9]+]], $5, $6
+ ; 32R6: muhu $[[T1:[0-9]+]], $5, $7
+ ; 32R6: addu $[[T0]], $[[T1]], $[[T0]]
+ ; 32R6-DAG: mul $[[T2:[0-9]+]], $4, $7
+ ; 32R6: addu $2, $[[T0]], $[[T2]]
; 32R6-DAG: mul $3, $5, $7
- ; 32R6-DAG: mul $[[T0:[0-9]+]], $4, $7
- ; 32R6-DAG: mul $[[T1:[0-9]+]], $5, $6
- ; 32R6: muhu $[[T2:[0-9]+]], $5, $7
- ; 32R6: addu $[[T1]], $[[T2]], $[[T1]]
- ; 32R6: addu $2, $[[T1]], $[[T0]]
; M4: dmult $4, $5
; M4: mflo $2
@@ -208,17 +208,17 @@ entry:
; MM32R3: multu $[[T0:[0-9]+]], $7
; MM32R3: mflo $[[T1:[0-9]+]]
; MM32R3: mfhi $[[T2:[0-9]+]]
- ; MM32R3: mul $[[T3:[0-9]+]], $4, $7
; MM32R3: mul $[[T0]], $[[T0]], $6
- ; MM32R3: addu16 $[[T2]], $[[T2]], $[[T0]]
- ; MM32R3: addu16 $2, $[[T2]], $[[T3]]
+ ; MM32R3: addu16 $2, $[[T2]], $[[T0]]
+ ; MM32R3: mul $[[T3:[0-9]+]], $4, $7
+ ; MM32R3: addu16 $[[T2]], $[[T2]], $[[T3]]
- ; MM32R6: mul $[[T0:[0-9]+]], $5, $7
- ; MM32R6: mul $[[T1:[0-9]+]], $4, $7
- ; MM32R6: mul $[[T2:[0-9]+]], $5, $6
- ; MM32R6: muhu $[[T3:[0-9]+]], $5, $7
- ; MM32R6: addu16 $[[T2]], $[[T3]], $[[T2]]
- ; MM32R6: addu16 $2, $[[T2]], $[[T1]]
+ ; MM32R6: mul $[[T0:[0-9]+]], $5, $6
+ ; MM32R6: muhu $[[T1:[0-9]+]], $5, $7
+ ; MM32R6: addu16 $[[T2:[0-9]+]], $[[T1]], $[[T0]]
+ ; MM32R6: mul $[[T3:[0-9]+]], $4, $7
+ ; MM32R6: addu16 $2, $[[T2]], $[[T3]]
+ ; MM32R6: mul $[[T1]], $5, $7
%r = mul i64 %a, %b
ret i64 %r
@@ -240,12 +240,12 @@ entry:
; GP64-NOT-R6: daddu $[[T3:[0-9]+]], $[[T2]], $[[T1]]
; GP64-NOT-R6: daddu $2, $[[T3:[0-9]+]], $[[T0]]
- ; 64R6-DAG: dmul $3, $5, $7
- ; 64R6-DAG: dmul $[[T0:[0-9]+]], $4, $7
; 64R6-DAG: dmul $[[T1:[0-9]+]], $5, $6
; 64R6: dmuhu $[[T2:[0-9]+]], $5, $7
; 64R6: daddu $[[T3:[0-9]+]], $[[T2]], $[[T1]]
+ ; 64R6-DAG: dmul $[[T0:[0-9]+]], $4, $7
; 64R6: daddu $2, $[[T1]], $[[T0]]
+ ; 64R6-DAG: dmul $3, $5, $7
; MM32: lw $25, %call16(__multi3)($16)
Modified: llvm/trunk/test/CodeGen/Mips/llvm-ir/not.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/llvm-ir/not.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/llvm-ir/not.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/llvm-ir/not.ll Thu Sep 1 09:53:53 2016
@@ -209,11 +209,11 @@ define signext i128 @nor_i128(i128 signe
entry:
; ALL-LABEL: nor_i128:
- ; GP32: lw $[[T0:[0-9]+]], 24($sp)
; GP32: lw $[[T1:[0-9]+]], 20($sp)
; GP32: lw $[[T2:[0-9]+]], 16($sp)
; GP32: nor $2, $[[T2]], $4
; GP32: nor $3, $[[T1]], $5
+ ; GP32: lw $[[T0:[0-9]+]], 24($sp)
; GP32: nor $4, $[[T0]], $6
; GP32: lw $[[T3:[0-9]+]], 28($sp)
; GP32: nor $5, $[[T3]], $7
@@ -221,11 +221,11 @@ entry:
; GP64: nor $2, $6, $4
; GP64: nor $3, $7, $5
- ; MM32: lw $[[T0:[0-9]+]], 24($sp)
; MM32: lw $[[T1:[0-9]+]], 20($sp)
; MM32: lw $[[T2:[0-9]+]], 16($sp)
; MM32: nor $2, $[[T2]], $4
; MM32: nor $3, $[[T1]], $5
+ ; MM32: lw $[[T0:[0-9]+]], 24($sp)
; MM32: nor $4, $[[T0]], $6
; MM32: lw $[[T3:[0-9]+]], 28($sp)
; MM32: nor $5, $[[T3]], $7
Modified: llvm/trunk/test/CodeGen/Mips/llvm-ir/or.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/llvm-ir/or.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/llvm-ir/or.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/llvm-ir/or.ll Thu Sep 1 09:53:53 2016
@@ -107,11 +107,11 @@ define signext i128 @or_i128(i128 signex
entry:
; ALL-LABEL: or_i128:
- ; GP32: lw $[[T0:[0-9]+]], 24($sp)
; GP32: lw $[[T1:[0-9]+]], 20($sp)
; GP32: lw $[[T2:[0-9]+]], 16($sp)
; GP32: or $2, $4, $[[T2]]
; GP32: or $3, $5, $[[T1]]
+ ; GP32: lw $[[T0:[0-9]+]], 24($sp)
; GP32: or $4, $6, $[[T0]]
; GP32: lw $[[T3:[0-9]+]], 28($sp)
; GP32: or $5, $7, $[[T3]]
@@ -119,13 +119,13 @@ entry:
; GP64: or $2, $4, $6
; GP64: or $3, $5, $7
- ; MM32: lw $[[T0:[0-9]+]], 32($sp)
- ; MM32: lw $[[T1:[0-9]+]], 28($sp)
- ; MM32: lw $[[T2:[0-9]+]], 24($sp)
+ ; MM32: lw $[[T1:[0-9]+]], 20($sp)
+ ; MM32: lw $[[T2:[0-9]+]], 16($sp)
; MM32: or16 $[[T2]], $4
; MM32: or16 $[[T1]], $5
+ ; MM32: lw $[[T0:[0-9]+]], 24($sp)
; MM32: or16 $[[T0]], $6
- ; MM32: lw $[[T3:[0-9]+]], 36($sp)
+ ; MM32: lw $[[T3:[0-9]+]], 28($sp)
; MM32: or16 $[[T3]], $7
; MM64: or $2, $4, $6
Modified: llvm/trunk/test/CodeGen/Mips/llvm-ir/select-flt.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/llvm-ir/select-flt.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/llvm-ir/select-flt.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/llvm-ir/select-flt.ll Thu Sep 1 09:53:53 2016
@@ -46,8 +46,8 @@ entry:
; M3: mov.s $f0, $f13
; CMOV-32: mtc1 $6, $f0
- ; CMOV-32: mtc1 $5, $f1
; CMOV-32: andi $[[T0:[0-9]+]], $4, 1
+ ; CMOV-32: mtc1 $5, $f1
; CMOV-32: movn.s $f0, $f1, $[[T0]]
; SEL-32: mtc1 $5, $[[F0:f[0-9]+]]
@@ -63,8 +63,8 @@ entry:
; SEL-64: sel.s $f0, $f14, $f13
; MM32R3: mtc1 $6, $[[F0:f[0-9]+]]
- ; MM32R3: mtc1 $5, $[[F1:f[0-9]+]]
; MM32R3: andi16 $[[T0:[0-9]+]], $4, 1
+ ; MM32R3: mtc1 $5, $[[F1:f[0-9]+]]
; MM32R3: movn.s $f0, $[[F1]], $[[T0]]
%r = select i1 %s, float %x, float %y
Modified: llvm/trunk/test/CodeGen/Mips/llvm-ir/select-int.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/llvm-ir/select-int.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/llvm-ir/select-int.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/llvm-ir/select-int.ll Thu Sep 1 09:53:53 2016
@@ -163,14 +163,14 @@ entry:
; CMOV-32: movn $3, $7, $[[T0]]
; SEL-32: andi $[[T0:[0-9]+]], $4, 1
- ; SEL-32: selnez $[[T1:[0-9]+]], $6, $[[T0]]
- ; SEL-32: lw $[[T2:[0-9]+]], 16($sp)
- ; SEL-32: seleqz $[[T3:[0-9]+]], $[[T2]], $[[T0]]
- ; SEL-32: or $2, $[[T1]], $[[T3]]
- ; SEL-32: selnez $[[T4:[0-9]+]], $7, $[[T0]]
- ; SEL-32: lw $[[T5:[0-9]+]], 20($sp)
- ; SEL-32: seleqz $[[T6:[0-9]+]], $[[T5]], $[[T0]]
- ; SEL-32: or $3, $[[T4]], $[[T6]]
+ ; SEL-32: lw $[[T1:[0-9]+]], 16($sp)
+ ; SEL-32: seleqz $[[T2:[0-9]+]], $[[T1]], $[[T0]]
+ ; SEL-32: selnez $[[T3:[0-9]+]], $6, $[[T0]]
+ ; SEL-32: or $2, $[[T3]], $[[T2]]
+ ; SEL-32: lw $[[T4:[0-9]+]], 20($sp)
+ ; SEL-32: seleqz $[[T5:[0-9]+]], $[[T4]], $[[T0]]
+ ; SEL-32: selnez $[[T6:[0-9]+]], $7, $[[T0]]
+ ; SEL-32: or $3, $[[T6]], $[[T5]]
; M3: andi $[[T0:[0-9]+]], $4, 1
; M3: bnez $[[T0]], [[BB0:\.LBB[0-9_]+]]
@@ -198,13 +198,13 @@ entry:
; MM32R3: movn $3, $7, $[[T0]]
; MM32R6: andi16 $[[T0:[0-9]+]], $4, 1
- ; MM32R6: selnez $[[T1:[0-9]+]], $6, $[[T0]]
; MM32R6: lw $[[T2:[0-9]+]], 16($sp)
; MM32R6: seleqz $[[T3:[0-9]+]], $[[T2]], $[[T0]]
+ ; MM32R6: selnez $[[T1:[0-9]+]], $6, $[[T0]]
; MM32R6: or $2, $[[T1]], $[[T3]]
- ; MM32R6: selnez $[[T6:[0-9]+]], $7, $[[T0]]
; MM32R6: lw $[[T4:[0-9]+]], 20($sp)
; MM32R6: seleqz $[[T5:[0-9]+]], $[[T4]], $[[T0]]
+ ; MM32R6: selnez $[[T6:[0-9]+]], $7, $[[T0]]
; MM32R6: or $3, $[[T6]], $[[T5]]
%r = select i1 %s, i64 %x, i64 %y
Modified: llvm/trunk/test/CodeGen/Mips/llvm-ir/sub.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/llvm-ir/sub.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/llvm-ir/sub.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/llvm-ir/sub.ll Thu Sep 1 09:53:53 2016
@@ -134,16 +134,16 @@ entry:
; GP32-MM: sltu $[[T1:[0-9]+]], $[[T2:[0-9]+]], $[[T0]]
; GP32-MM: lw $[[T3:[0-9]+]], 16($sp)
; GP32-MM: addu $[[T3]], $[[T1]], $[[T3]]
- ; GP32-MM: lw $[[T5:[0-9]+]], 24($sp)
- ; GP32-MM: lw $[[T4:[0-9]+]], 28($sp)
- ; GP32-MM: subu $[[T1]], $7, $[[T4]]
- ; GP32-MM: subu $[[T3]], $4, $[[T3]]
- ; GP32-MM: sltu $[[T6:[0-9]+]], $6, $[[T5]]
+ ; GP32-MM: lw $[[T4:[0-9]+]], 24($sp)
+ ; GP32-MM: lw $[[T5:[0-9]+]], 28($sp)
+ ; GP32-MM: subu $[[T1]], $7, $[[T5]]
+ ; GP32-MM: subu $[[T3]], $[[T6:[0-9]+]], $[[T3]]
+ ; GP32-MM: sltu $[[T6]], $6, $[[T4]]
; GP32-MM: addu $[[T0]], $[[T6]], $[[T0]]
; GP32-MM: subu $[[T0]], $5, $[[T0]]
- ; GP32-MM: sltu $[[T7:[0-9]+]], $7, $[[T4]]
- ; GP32-MM: addu $[[T8:[0-8]+]], $[[T7]], $[[T5]]
- ; GP32-MM: subu $[[T9:[0-9]+]], $6, $[[T8]]
+ ; GP32-MM: sltu $[[T6]], $7, $[[T5]]
+ ; GP32-MM: addu $[[T6]], $[[T6]], $[[T4]]
+ ; GP32-MM: subu $[[T6]], $6, $[[T6]]
; GP32-MM: move $[[T2]], $[[T1]]
; GP64: dsubu $3, $5, $7
Modified: llvm/trunk/test/CodeGen/Mips/llvm-ir/xor.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/llvm-ir/xor.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/llvm-ir/xor.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/llvm-ir/xor.ll Thu Sep 1 09:53:53 2016
@@ -117,11 +117,11 @@ define signext i128 @xor_i128(i128 signe
entry:
; ALL-LABEL: xor_i128:
- ; GP32: lw $[[T0:[0-9]+]], 24($sp)
; GP32: lw $[[T1:[0-9]+]], 20($sp)
; GP32: lw $[[T2:[0-9]+]], 16($sp)
; GP32: xor $2, $4, $[[T2]]
; GP32: xor $3, $5, $[[T1]]
+ ; GP32: lw $[[T0:[0-9]+]], 24($sp)
; GP32: xor $4, $6, $[[T0]]
; GP32: lw $[[T3:[0-9]+]], 28($sp)
; GP32: xor $5, $7, $[[T3]]
@@ -129,13 +129,13 @@ entry:
; GP64: xor $2, $4, $6
; GP64: xor $3, $5, $7
- ; MM32: lw $[[T0:[0-9]+]], 32($sp)
- ; MM32: lw $[[T1:[0-9]+]], 28($sp)
- ; MM32: lw $[[T2:[0-9]+]], 24($sp)
+ ; MM32: lw $[[T1:[0-9]+]], 20($sp)
+ ; MM32: lw $[[T2:[0-9]+]], 16($sp)
; MM32: xor16 $[[T2]], $4
; MM32: xor16 $[[T1]], $5
+ ; MM32: lw $[[T0:[0-9]+]], 24($sp)
; MM32: xor16 $[[T0]], $6
- ; MM32: lw $[[T3:[0-9]+]], 36($sp)
+ ; MM32: lw $[[T3:[0-9]+]], 28($sp)
; MM32: xor16 $[[T3]], $7
; MM64: xor $2, $4, $6
Modified: llvm/trunk/test/CodeGen/Mips/longbranch.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/longbranch.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/longbranch.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/longbranch.ll Thu Sep 1 09:53:53 2016
@@ -102,8 +102,8 @@ end:
; N64: [[BB0]]:
; N64: daddiu $[[GP:[0-9]+]], $[[R1]], %lo(%neg(%gp_rel(test1)))
-; N64: ld $[[R2:[0-9]+]], %got_disp(x)($[[GP]])
; N64: addiu $[[R3:[0-9]+]], $zero, 1
+; N64: ld $[[R2:[0-9]+]], %got_disp(x)($[[GP]])
; N64: sw $[[R3]], 0($[[R2]])
; N64: [[BB2]]:
; N64: jr $ra
Modified: llvm/trunk/test/CodeGen/Mips/no-odd-spreg.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/no-odd-spreg.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/no-odd-spreg.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/no-odd-spreg.ll Thu Sep 1 09:53:53 2016
@@ -19,6 +19,9 @@ entry:
;
; On the other hand, if odd single precision registers are not permitted, it
; will be forced to spill/reload either %a or %0.
+ ;
+ ; This is affected by scheduling as the new machine scheduler schedules the
+ ; two adds together, avoiding the spill+reload.
%0 = fadd float %a, 1.0
call void asm "# Clobber", "~{$f0},~{$f1},~{$f2},~{$f3},~{$f4},~{$f5},~{$f6},~{$f7},~{$f8},~{$f9},~{$f10},~{$f11},~{$f14},~{$f15},~{$f16},~{$f17},~{$f18},~{$f19},~{$f20},~{$f21},~{$f22},~{$f23},~{$f24},~{$f25},~{$f26},~{$f27},~{$f28},~{$f29},~{$f30},~{$f31}"()
@@ -27,15 +30,15 @@ entry:
}
; ALL-LABEL: two_floats:
-; ODDSPREG: add.s $f13, $f12, ${{f[0-9]+}}
+; ODDSPREG: add.s $f[[RES:[0-9]]], $f12, ${{f[0-9]+}}
+; ODDSPREG: add.s ${{f[0-9]+}}, $f12, $f[[RES]]
; ODDSPREG-NOT: swc1
; ODDSPREG-NOT: lwc1
-; ODDSPREG: add.s $f0, $f12, $f13
; NOODDSPREG: add.s $[[T0:f[0-9]*[02468]]], $f12, ${{f[0-9]+}}
-; NOODDSPREG: swc1 $[[T0]],
-; NOODDSPREG: lwc1 $[[T1:f[0-9]*[02468]]],
-; NOODDSPREG: add.s $f0, $f12, $[[T1]]
+; NOODDSPREG-NOT: swc1 $[[T0]],
+; NOODDSPREG-NOT: lwc1 $[[T1:f[0-9]*[02468]]],
+; NOODDSPREG: add.s ${{f[0-9]+}}, $f12, $[[T0]]
define double @two_doubles(double %a) {
entry:
@@ -51,8 +54,8 @@ entry:
}
; ALL-LABEL: two_doubles:
-; ALL: add.d $[[T0:f[0-9]+]], $f12, ${{f[0-9]+}}
-; ALL: add.d $f0, $f12, $[[T0]]
+; ALL-DAG: add.d $[[T0:f[0-9]+]], $f12, ${{f[0-9]+}}
+; ALL-DAG: add.d $f0, $f12, $[[T0]]
; INVALID: -mattr=+nooddspreg is not currently permitted for a 32-bit FPU register file (FR=0 mode).
Modified: llvm/trunk/test/CodeGen/Mips/prevent-hoisting.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Mips/prevent-hoisting.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/Mips/prevent-hoisting.ll (original)
+++ llvm/trunk/test/CodeGen/Mips/prevent-hoisting.ll Thu Sep 1 09:53:53 2016
@@ -13,17 +13,17 @@
; The check for first "addiu" instruction is added so that we can match the correct "b" instruction.
; CHECK: andi
; CHECK: b $[[BB0:BB[0-9_]+]]
-; CHECK-NEXT: sll
+; CHECK: sll
; Check that at the start of a fallthrough block there is a instruction that writes to $1.
-; CHECK-NEXT: {{BB[0-9_#]+}}:
-; CHECK-NEXT: lw $[[R1:[0-9]+]], %got(assignSE2partition)($[[R2:[0-9]+]])
-; CHECK-NEXT: sll $1, $[[R0:[0-9]+]], 4
+; CHECK: {{BB[0-9_#]+}}:
+; CHECK: sll $1, $[[R0:[0-9]+]], 4
+; CHECK: lw $[[R1:[0-9]+]], %got(assignSE2partition)($[[R2:[0-9]+]])
; Check that identical instructions are at the start of a target block.
; CHECK: [[BB0]]:
-; CHECK-NEXT: lw $[[R1]], %got(assignSE2partition)($[[R2]])
-; CHECK-NEXT: sll $1, $[[R0]], 4
+; CHECK: sll $1, $[[R0]], 4
+; CHECK: lw $[[R1]], %got(assignSE2partition)($[[R2]])
%struct.img_par = type { i32, i32, i32, i32, i32*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [16 x [16 x i16]], [6 x [32 x i32]], [16 x [16 x i32]], [4 x [12 x [4 x [4 x i32]]]], [16 x i32], i8**, i32*, i32***, i32**, i32, i32, i32, i32, %struct.Slice*, %struct.macroblock*, i32, i32, i32, i32, i32, i32, %struct.DecRefPicMarking_s*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32***, i32***, i32****, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [3 x [2 x i32]], [3 x [2 x i32]], i32, i32, i32, i32, %struct.timeb, %struct.timeb, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
Modified: llvm/trunk/test/DebugInfo/Mips/dsr-fixed-objects.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/Mips/dsr-fixed-objects.ll?rev=280374&r1=280373&r2=280374&view=diff
==============================================================================
--- llvm/trunk/test/DebugInfo/Mips/dsr-fixed-objects.ll (original)
+++ llvm/trunk/test/DebugInfo/Mips/dsr-fixed-objects.ll Thu Sep 1 09:53:53 2016
@@ -29,7 +29,7 @@ declare void @foo(i32*)
;
; x -> DW_OP_reg1(51)
; F0: [[LOC]]: Beginning address offset: 0x0000000000000028
-; F0: Ending address offset: 0x0000000000000030
+; F0: Ending address offset: 0x000000000000002c
; F0: Location description: 51
define i32 @f0(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d, i32 signext %e) !dbg !4 {
@@ -65,7 +65,7 @@ entry:
; x -> DW_OP_reg1(51)
; F1: [[LOC]]: Beginning address offset: 0x0000000000000080
-; F1: Ending address offset: 0x0000000000000088
+; F1: Ending address offset: 0x0000000000000084
; F1: Location description: 51
define i32 @f1(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d, i32 signext %e) !dbg !15 {
More information about the llvm-commits
mailing list