summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2012-03-07 12:12:57 -0500
committerTom Stellard <thomas.stellard@amd.com>2012-03-07 12:12:57 -0500
commit4737f9202a2fe52611c66bb272ccbee2da660076 (patch)
tree7cab74b88facc4e547965324f4c712b487f476f6
parentee087912c586d61aa699574bc7daafda6d7026b3 (diff)
r600/llvm: Don't use negate flags for integers
This fixes modulus calculations
-rw-r--r--src/gallium/drivers/radeon/R600LowerInstructions.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/gallium/drivers/radeon/R600LowerInstructions.cpp b/src/gallium/drivers/radeon/R600LowerInstructions.cpp
index 51611da1f1f..22792aa646e 100644
--- a/src/gallium/drivers/radeon/R600LowerInstructions.cpp
+++ b/src/gallium/drivers/radeon/R600LowerInstructions.cpp
@@ -329,8 +329,14 @@ bool R600LowerInstructionsPass::runOnMachineFunction(MachineFunction &MF)
MI.getOperand(2).setImm(MI.getOperand(2).getImm() - 1);
continue;
- case AMDIL::NEG_f32:
case AMDIL::NEGATE_i32:
+ BuildMI(MBB, I, MBB.findDebugLoc(I), TII->get(AMDIL::SUB_INT))
+ .addOperand(MI.getOperand(0))
+ .addReg(AMDIL::ZERO)
+ .addOperand(MI.getOperand(1));
+ break;
+
+ case AMDIL::NEG_f32:
{
MI.getOperand(1).addTargetFlag(MO_FLAG_NEG);
BuildMI(MBB, I, MBB.findDebugLoc(I),