diff --git a/llvm/lib/Target/PowerPC/PPCInstrInfo.td b/llvm/lib/Target/PowerPC/PPCInstrInfo.td --- a/llvm/lib/Target/PowerPC/PPCInstrInfo.td +++ b/llvm/lib/Target/PowerPC/PPCInstrInfo.td @@ -2933,6 +2933,7 @@ PPC970_DGroup_Single, PPC970_Unit_FPU; } let Uses = [RM] in { + let hasSideEffects = 1 in def MFFS : XForm_42<63, 583, (outs f8rc:$rT), (ins), "mffs $rT", IIC_IntMFFS, [(set f64:$rT, (PPCmffs))]>, @@ -4333,6 +4334,7 @@ def : InstAlias<"mtfsfi. $BF, $U", (MTFSFI_rec crrc:$BF, i32imm:$U, 0)>; let Predicates = [HasFPU] in { +let hasSideEffects = 1 in def MTFSF : XFLForm_1<63, 711, (outs), (ins i32imm:$FLM, f8rc:$FRB, i32imm:$L, i32imm:$W), "mtfsf $FLM, $FRB, $L, $W", IIC_IntMFFS, []>; diff --git a/llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll b/llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll --- a/llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll +++ b/llvm/test/CodeGen/PowerPC/2008-10-28-f128-i32.ll @@ -92,18 +92,18 @@ ; CHECK-NEXT: fadd 1, 2, 1 ; CHECK-NEXT: mtfsf 1, 0 ; CHECK-NEXT: fctiwz 0, 1 -; CHECK-NEXT: mffs 1 ; CHECK-NEXT: stfd 0, 160(1) +; CHECK-NEXT: mffs 0 ; CHECK-NEXT: mtfsb1 31 ; CHECK-NEXT: mtfsb0 30 -; CHECK-NEXT: fadd 0, 28, 29 -; CHECK-NEXT: mtfsf 1, 1 -; CHECK-NEXT: lfs 1, .LCPI0_1@l(3) -; CHECK-NEXT: fctiwz 0, 0 -; CHECK-NEXT: stfd 0, 152(1) +; CHECK-NEXT: fadd 1, 28, 29 +; CHECK-NEXT: mtfsf 1, 0 +; CHECK-NEXT: lfs 0, .LCPI0_1@l(3) +; CHECK-NEXT: fctiwz 1, 1 +; CHECK-NEXT: stfd 1, 152(1) ; CHECK-NEXT: fcmpu 0, 28, 27 ; CHECK-NEXT: lwz 3, 164(1) -; CHECK-NEXT: fcmpu 1, 29, 1 +; CHECK-NEXT: fcmpu 1, 29, 0 ; CHECK-NEXT: lwz 4, 156(1) ; CHECK-NEXT: crandc 20, 6, 0 ; CHECK-NEXT: cror 20, 5, 20 @@ -214,20 +214,20 @@ ; CHECK-NEXT: fadd 1, 2, 1 ; CHECK-NEXT: mtfsf 1, 0 ; CHECK-NEXT: fctiwz 0, 1 -; CHECK-NEXT: mffs 1 ; CHECK-NEXT: stfd 0, 32(1) +; CHECK-NEXT: mffs 0 ; CHECK-NEXT: mtfsb1 31 -; CHECK-NEXT: lfs 0, .LCPI0_2@l(3) +; CHECK-NEXT: lfs 1, .LCPI0_2@l(3) ; CHECK-NEXT: lis 3, .LCPI0_3@ha ; CHECK-NEXT: mtfsb0 30 ; CHECK-NEXT: fadd 2, 28, 29 -; CHECK-NEXT: mtfsf 1, 1 -; CHECK-NEXT: lfs 1, .LCPI0_3@l(3) +; CHECK-NEXT: mtfsf 1, 0 +; CHECK-NEXT: lfs 0, .LCPI0_3@l(3) ; CHECK-NEXT: fctiwz 2, 2 ; CHECK-NEXT: stfd 2, 24(1) -; CHECK-NEXT: fcmpu 0, 30, 0 +; CHECK-NEXT: fcmpu 0, 30, 1 ; CHECK-NEXT: lwz 3, 36(1) -; CHECK-NEXT: fcmpu 1, 31, 1 +; CHECK-NEXT: fcmpu 1, 31, 0 ; CHECK-NEXT: lwz 4, 28(1) ; CHECK-NEXT: crandc 20, 6, 1 ; CHECK-NEXT: cror 20, 4, 20 @@ -269,20 +269,20 @@ ; CHECK-NEXT: fadd 1, 2, 1 ; CHECK-NEXT: mtfsf 1, 0 ; CHECK-NEXT: fctiwz 0, 1 -; CHECK-NEXT: mffs 1 ; CHECK-NEXT: stfd 0, 96(1) +; CHECK-NEXT: mffs 0 ; CHECK-NEXT: mtfsb1 31 -; CHECK-NEXT: lfs 0, .LCPI0_0@l(3) +; CHECK-NEXT: lfs 1, .LCPI0_0@l(3) ; CHECK-NEXT: lis 3, .LCPI0_1@ha ; CHECK-NEXT: mtfsb0 30 ; CHECK-NEXT: fadd 2, 30, 31 -; CHECK-NEXT: mtfsf 1, 1 -; CHECK-NEXT: lfs 1, .LCPI0_1@l(3) +; CHECK-NEXT: mtfsf 1, 0 +; CHECK-NEXT: lfs 0, .LCPI0_1@l(3) ; CHECK-NEXT: fctiwz 2, 2 ; CHECK-NEXT: stfd 2, 88(1) -; CHECK-NEXT: fcmpu 0, 30, 0 +; CHECK-NEXT: fcmpu 0, 30, 1 ; CHECK-NEXT: lwz 3, 100(1) -; CHECK-NEXT: fcmpu 1, 31, 1 +; CHECK-NEXT: fcmpu 1, 31, 0 ; CHECK-NEXT: lwz 4, 92(1) ; CHECK-NEXT: crandc 20, 6, 0 ; CHECK-NEXT: cror 20, 5, 20