Index: llvm/trunk/lib/Target/PowerPC/PPCHazardRecognizers.cpp =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCHazardRecognizers.cpp +++ llvm/trunk/lib/Target/PowerPC/PPCHazardRecognizers.cpp @@ -103,7 +103,7 @@ case PPC::Sched::IIC_LdStLHA: case PPC::Sched::IIC_LdStLHAU: case PPC::Sched::IIC_LdStLWA: - case PPC::Sched::IIC_LdStSTDU: + case PPC::Sched::IIC_LdStSTU: case PPC::Sched::IIC_LdStSTFDU: NSlots = 2; break; @@ -112,7 +112,7 @@ case PPC::Sched::IIC_LdStLHAUX: case PPC::Sched::IIC_LdStLWARX: case PPC::Sched::IIC_LdStLDARX: - case PPC::Sched::IIC_LdStSTDUX: + case PPC::Sched::IIC_LdStSTUX: case PPC::Sched::IIC_LdStSTDCX: case PPC::Sched::IIC_LdStSTWCX: case PPC::Sched::IIC_BrMCRX: // mtcr Index: llvm/trunk/lib/Target/PowerPC/PPCInstr64Bit.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCInstr64Bit.td +++ llvm/trunk/lib/Target/PowerPC/PPCInstr64Bit.td @@ -1222,30 +1222,30 @@ let PPC970_Unit = 2, mayStore = 1, mayLoad = 0 in { let Interpretation64Bit = 1, isCodeGenOnly = 1 in { def STBU8 : DForm_1<39, (outs ptr_rc_nor0:$ea_res), (ins g8rc:$rS, memri:$dst), - "stbu $rS, $dst", IIC_LdStStoreUpd, []>, + "stbu $rS, $dst", IIC_LdStSTU, []>, RegConstraint<"$dst.reg = $ea_res">, NoEncode<"$ea_res">; def STHU8 : DForm_1<45, (outs ptr_rc_nor0:$ea_res), (ins g8rc:$rS, memri:$dst), - "sthu $rS, $dst", IIC_LdStStoreUpd, []>, + "sthu $rS, $dst", IIC_LdStSTU, []>, RegConstraint<"$dst.reg = $ea_res">, NoEncode<"$ea_res">; def STWU8 : DForm_1<37, (outs ptr_rc_nor0:$ea_res), (ins g8rc:$rS, memri:$dst), - "stwu $rS, $dst", IIC_LdStStoreUpd, []>, + "stwu $rS, $dst", IIC_LdStSTU, []>, RegConstraint<"$dst.reg = $ea_res">, NoEncode<"$ea_res">; def STBUX8: XForm_8_memOp<31, 247, (outs ptr_rc_nor0:$ea_res), (ins g8rc:$rS, memrr:$dst), - "stbux $rS, $dst", IIC_LdStStoreUpd, []>, + "stbux $rS, $dst", IIC_LdStSTUX, []>, RegConstraint<"$dst.ptrreg = $ea_res">, NoEncode<"$ea_res">, PPC970_DGroup_Cracked; def STHUX8: XForm_8_memOp<31, 439, (outs ptr_rc_nor0:$ea_res), (ins g8rc:$rS, memrr:$dst), - "sthux $rS, $dst", IIC_LdStStoreUpd, []>, + "sthux $rS, $dst", IIC_LdStSTUX, []>, RegConstraint<"$dst.ptrreg = $ea_res">, NoEncode<"$ea_res">, PPC970_DGroup_Cracked; def STWUX8: XForm_8_memOp<31, 183, (outs ptr_rc_nor0:$ea_res), (ins g8rc:$rS, memrr:$dst), - "stwux $rS, $dst", IIC_LdStStoreUpd, []>, + "stwux $rS, $dst", IIC_LdStSTUX, []>, RegConstraint<"$dst.ptrreg = $ea_res">, NoEncode<"$ea_res">, PPC970_DGroup_Cracked; @@ -1253,13 +1253,13 @@ def STDU : DSForm_1<62, 1, (outs ptr_rc_nor0:$ea_res), (ins g8rc:$rS, memrix:$dst), - "stdu $rS, $dst", IIC_LdStSTDU, []>, + "stdu $rS, $dst", IIC_LdStSTU, []>, RegConstraint<"$dst.reg = $ea_res">, NoEncode<"$ea_res">, isPPC64; def STDUX : XForm_8_memOp<31, 181, (outs ptr_rc_nor0:$ea_res), (ins g8rc:$rS, memrr:$dst), - "stdux $rS, $dst", IIC_LdStSTDUX, []>, + "stdux $rS, $dst", IIC_LdStSTUX, []>, RegConstraint<"$dst.ptrreg = $ea_res">, NoEncode<"$ea_res">, PPC970_DGroup_Cracked, isPPC64; Index: llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td +++ llvm/trunk/lib/Target/PowerPC/PPCInstrInfo.td @@ -2016,13 +2016,13 @@ // Unindexed (r+i) Stores with Update (preinc). let PPC970_Unit = 2, mayStore = 1, mayLoad = 0 in { def STBU : DForm_1<39, (outs ptr_rc_nor0:$ea_res), (ins gprc:$rS, memri:$dst), - "stbu $rS, $dst", IIC_LdStStoreUpd, []>, + "stbu $rS, $dst", IIC_LdStSTU, []>, RegConstraint<"$dst.reg = $ea_res">, NoEncode<"$ea_res">; def STHU : DForm_1<45, (outs ptr_rc_nor0:$ea_res), (ins gprc:$rS, memri:$dst), - "sthu $rS, $dst", IIC_LdStStoreUpd, []>, + "sthu $rS, $dst", IIC_LdStSTU, []>, RegConstraint<"$dst.reg = $ea_res">, NoEncode<"$ea_res">; def STWU : DForm_1<37, (outs ptr_rc_nor0:$ea_res), (ins gprc:$rS, memri:$dst), - "stwu $rS, $dst", IIC_LdStStoreUpd, []>, + "stwu $rS, $dst", IIC_LdStSTU, []>, RegConstraint<"$dst.reg = $ea_res">, NoEncode<"$ea_res">; let Predicates = [HasFPU] in { def STFSU : DForm_1<53, (outs ptr_rc_nor0:$ea_res), (ins f4rc:$rS, memri:$dst), @@ -2090,19 +2090,19 @@ let PPC970_Unit = 2, mayStore = 1, mayLoad = 0 in { def STBUX : XForm_8_memOp<31, 247, (outs ptr_rc_nor0:$ea_res), (ins gprc:$rS, memrr:$dst), - "stbux $rS, $dst", IIC_LdStStoreUpd, []>, + "stbux $rS, $dst", IIC_LdStSTUX, []>, RegConstraint<"$dst.ptrreg = $ea_res">, NoEncode<"$ea_res">, PPC970_DGroup_Cracked; def STHUX : XForm_8_memOp<31, 439, (outs ptr_rc_nor0:$ea_res), (ins gprc:$rS, memrr:$dst), - "sthux $rS, $dst", IIC_LdStStoreUpd, []>, + "sthux $rS, $dst", IIC_LdStSTUX, []>, RegConstraint<"$dst.ptrreg = $ea_res">, NoEncode<"$ea_res">, PPC970_DGroup_Cracked; def STWUX : XForm_8_memOp<31, 183, (outs ptr_rc_nor0:$ea_res), (ins gprc:$rS, memrr:$dst), - "stwux $rS, $dst", IIC_LdStStoreUpd, []>, + "stwux $rS, $dst", IIC_LdStSTUX, []>, RegConstraint<"$dst.ptrreg = $ea_res">, NoEncode<"$ea_res">, PPC970_DGroup_Cracked; Index: llvm/trunk/lib/Target/PowerPC/PPCSchedule.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCSchedule.td +++ llvm/trunk/lib/Target/PowerPC/PPCSchedule.td @@ -42,7 +42,6 @@ def IIC_LdStLoadUpd : InstrItinClass; def IIC_LdStLoadUpdX : InstrItinClass; def IIC_LdStStore : InstrItinClass; -def IIC_LdStStoreUpd : InstrItinClass; def IIC_LdStDSS : InstrItinClass; def IIC_LdStICBI : InstrItinClass; def IIC_LdStLD : InstrItinClass; @@ -63,8 +62,8 @@ def IIC_LdStSLBIE : InstrItinClass; def IIC_LdStSTD : InstrItinClass; def IIC_LdStSTDCX : InstrItinClass; -def IIC_LdStSTDU : InstrItinClass; -def IIC_LdStSTDUX : InstrItinClass; +def IIC_LdStSTU : InstrItinClass; +def IIC_LdStSTUX : InstrItinClass; def IIC_LdStSTFD : InstrItinClass; def IIC_LdStSTFDU : InstrItinClass; def IIC_LdStSTVEBX : InstrItinClass; Index: llvm/trunk/lib/Target/PowerPC/PPCSchedule440.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCSchedule440.td +++ llvm/trunk/lib/Target/PowerPC/PPCSchedule440.td @@ -280,13 +280,6 @@ InstrStage<2, [P440_LWB]>], [1, 1, 1], [NoBypass, P440_GPR_Bypass]>, - InstrItinData, - InstrStage<1, [P440_LRACC]>, - InstrStage<1, [P440_AGEN]>, - InstrStage<1, [P440_CRD]>, - InstrStage<2, [P440_LWB]>], - [2, 1, 1, 1], - [NoBypass, P440_GPR_Bypass]>, InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, @@ -373,14 +366,14 @@ InstrStage<2, [P440_LWB]>], [4, 1, 1], [NoBypass, P440_GPR_Bypass]>, - InstrItinData, + InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, InstrStage<2, [P440_LWB]>], [2, 1, 1, 1], [NoBypass, P440_GPR_Bypass]>, - InstrItinData, + InstrItinData, InstrStage<1, [P440_LRACC]>, InstrStage<1, [P440_AGEN]>, InstrStage<1, [P440_CRD]>, Index: llvm/trunk/lib/Target/PowerPC/PPCScheduleA2.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCScheduleA2.td +++ llvm/trunk/lib/Target/PowerPC/PPCScheduleA2.td @@ -81,8 +81,6 @@ [6, 0, 0]>, InstrItinData], [0, 0, 0]>, - InstrItinData], - [2, 0, 0, 0]>, InstrItinData], [16, 0, 0]>, InstrItinData], @@ -105,9 +103,9 @@ [82, 0, 0]>, // L2 latency InstrItinData], [0, 0, 0]>, - InstrItinData], + InstrItinData], [2, 0, 0, 0]>, - InstrItinData], + InstrItinData], [2, 0, 0, 0]>, InstrItinData], [82, 0, 0]>, // L2 latency Index: llvm/trunk/lib/Target/PowerPC/PPCScheduleE500.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCScheduleE500.td +++ llvm/trunk/lib/Target/PowerPC/PPCScheduleE500.td @@ -144,7 +144,13 @@ InstrStage<1, [E500_LSU_0]>], [6, 1], // Latency = 3 [NoBypass, E500_GPR_Bypass]>, - InstrItinData, + InstrItinData, + InstrStage<1, [E500_SU0, E500_SU1], 0>, + InstrStage<1, [E500_LSU_0]>], + [6, 1], // Latency = 3 + [NoBypass, E500_GPR_Bypass], + 2>, // 2 micro-ops + InstrItinData, InstrStage<1, [E500_SU0, E500_SU1], 0>, InstrStage<1, [E500_LSU_0]>], [6, 1], // Latency = 3 Index: llvm/trunk/lib/Target/PowerPC/PPCScheduleE500mc.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCScheduleE500mc.td +++ llvm/trunk/lib/Target/PowerPC/PPCScheduleE500mc.td @@ -157,7 +157,13 @@ InstrStage<1, [E500mc_LSU_0]>], [6, 1], // Latency = 3 [NoBypass, E500mc_GPR_Bypass]>, - InstrItinData, + InstrItinData, + InstrStage<1, [E500mc_SFX0, E500mc_SFX1], 0>, + InstrStage<1, [E500mc_LSU_0]>], + [6, 1], // Latency = 3 + [NoBypass, E500mc_GPR_Bypass], + 2>, // 2 micro-ops + InstrItinData, InstrStage<1, [E500mc_SFX0, E500mc_SFX1], 0>, InstrStage<1, [E500mc_LSU_0]>], [6, 1], // Latency = 3 Index: llvm/trunk/lib/Target/PowerPC/PPCScheduleE5500.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCScheduleE5500.td +++ llvm/trunk/lib/Target/PowerPC/PPCScheduleE5500.td @@ -206,12 +206,6 @@ InstrStage<1, [E5500_LSU_0]>], [7, 2], // Latency = 3, Repeat rate = 1 [NoBypass, E5500_GPR_Bypass]>, - InstrItinData, - InstrStage<1, [E5500_SFX0, E5500_SFX1], 0>, - InstrStage<1, [E5500_LSU_0]>], - [7, 2], // Latency = 3, Repeat rate = 1 - [NoBypass, E5500_GPR_Bypass], - 2>, // 2 micro-ops InstrItinData, InstrStage<1, [E5500_LSU_0]>], [7, 2], // Latency = 3, Repeat rate = 1 @@ -281,13 +275,13 @@ InstrStage<1, [E5500_LSU_0]>], [7, 2], // Latency = 3, Repeat rate = 1 [NoBypass, E5500_GPR_Bypass]>, - InstrItinData, + InstrItinData, InstrStage<1, [E5500_SFX0, E5500_SFX1], 0>, InstrStage<1, [E5500_LSU_0]>], [7, 2], // Latency = 3, Repeat rate = 1 [NoBypass, E5500_GPR_Bypass], 2>, // 2 micro-ops - InstrItinData, + InstrItinData, InstrStage<1, [E5500_SFX0, E5500_SFX1], 0>, InstrStage<1, [E5500_LSU_0]>], [7, 2], // Latency = 3, Repeat rate = 1 Index: llvm/trunk/lib/Target/PowerPC/PPCScheduleG3.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCScheduleG3.td +++ llvm/trunk/lib/Target/PowerPC/PPCScheduleG3.td @@ -43,7 +43,8 @@ InstrItinData]>, InstrItinData]>, InstrItinData]>, - InstrItinData]>, + InstrItinData]>, + InstrItinData]>, InstrItinData]>, InstrItinData]>, InstrItinData]>, Index: llvm/trunk/lib/Target/PowerPC/PPCScheduleG4.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCScheduleG4.td +++ llvm/trunk/lib/Target/PowerPC/PPCScheduleG4.td @@ -48,7 +48,8 @@ InstrItinData]>, InstrItinData]>, InstrItinData]>, - InstrItinData]>, + InstrItinData]>, + InstrItinData]>, InstrItinData]>, InstrItinData]>, InstrItinData]>, Index: llvm/trunk/lib/Target/PowerPC/PPCScheduleG4Plus.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCScheduleG4Plus.td +++ llvm/trunk/lib/Target/PowerPC/PPCScheduleG4Plus.td @@ -56,7 +56,6 @@ InstrItinData]>, InstrItinData]>, InstrItinData]>, - InstrItinData]>, InstrItinData]>, InstrItinData]>, InstrItinData]>, @@ -73,8 +72,8 @@ InstrItinData]>, InstrItinData]>, InstrItinData]>, - InstrItinData]>, - InstrItinData]>, + InstrItinData]>, + InstrItinData]>, InstrItinData]>, InstrItinData]>, InstrItinData]>, Index: llvm/trunk/lib/Target/PowerPC/PPCScheduleG5.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCScheduleG5.td +++ llvm/trunk/lib/Target/PowerPC/PPCScheduleG5.td @@ -54,7 +54,6 @@ InstrItinData]>, InstrItinData]>, InstrItinData]>, - InstrItinData]>, InstrItinData]>, InstrItinData]>, InstrItinData]>, @@ -76,8 +75,8 @@ InstrItinData]>, // needs work InstrItinData]>, InstrItinData]>, - InstrItinData]>, - InstrItinData]>, + InstrItinData]>, + InstrItinData]>, InstrItinData]>, InstrItinData]>, InstrItinData]>, Index: llvm/trunk/lib/Target/PowerPC/PPCScheduleP7.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCScheduleP7.td +++ llvm/trunk/lib/Target/PowerPC/PPCScheduleP7.td @@ -261,13 +261,13 @@ InstrStage<1, [P7_LS1, P7_LS2], 0>, InstrStage<1, [P7_FX1, P7_FX2]>], [1, 1, 1]>, - InstrItinData, + InstrItinData, InstrStage<1, [P7_DU2], 0>, InstrStage<1, [P7_LS1, P7_LS2], 0>, InstrStage<1, [P7_FX1, P7_FX2]>, InstrStage<1, [P7_FX1, P7_FX2]>], [2, 1, 1, 1]>, - InstrItinData, + InstrItinData, InstrStage<1, [P7_DU2], 0>, InstrStage<1, [P7_DU3], 0>, InstrStage<1, [P7_DU4], 0>, Index: llvm/trunk/lib/Target/PowerPC/PPCScheduleP8.td =================================================================== --- llvm/trunk/lib/Target/PowerPC/PPCScheduleP8.td +++ llvm/trunk/lib/Target/PowerPC/PPCScheduleP8.td @@ -267,14 +267,14 @@ InstrStage<1, [P8_LU1, P8_LU2, P8_LSU1, P8_LSU2]>] [1, 1, 1]>, - InstrItinData, + InstrItinData, InstrStage<1, [P8_DU2], 0>, InstrStage<1, [P8_LU1, P8_LU2, P8_LSU1, P8_LSU2], 0>, InstrStage<1, [P8_FXU1, P8_FXU2]>], [2, 1, 1, 1]>, // First+last - InstrItinData, + InstrItinData, InstrStage<1, [P8_DU2], 0>, InstrStage<1, [P8_DU3], 0>, InstrStage<1, [P8_DU4], 0>, Index: llvm/trunk/test/CodeGen/PowerPC/stwu-sched.ll =================================================================== --- llvm/trunk/test/CodeGen/PowerPC/stwu-sched.ll +++ llvm/trunk/test/CodeGen/PowerPC/stwu-sched.ll @@ -15,8 +15,8 @@ ; CHECK-NEXT: stwu 5, 64(4) ; CHECK-ITIN-LABEL: initCombList: -; CHECK-ITIN: addi 3, 3, -8 -; CHECK-ITIN-NEXT: stwu 5, 64(4) +; CHECK-ITIN: stwu 5, 64(4) +; CHECK-ITIN-NEXT: addi 3, 3, -8 %3 = zext i32 %1 to i64