diff options
author | Tom Stellard <thomas.stellard@amd.com> | 2012-03-07 12:12:57 -0500 |
---|---|---|
committer | Tom Stellard <thomas.stellard@amd.com> | 2012-03-07 12:12:57 -0500 |
commit | 4737f9202a2fe52611c66bb272ccbee2da660076 (patch) | |
tree | 7cab74b88facc4e547965324f4c712b487f476f6 | |
parent | ee087912c586d61aa699574bc7daafda6d7026b3 (diff) |
r600/llvm: Don't use negate flags for integers
This fixes modulus calculations
-rw-r--r-- | src/gallium/drivers/radeon/R600LowerInstructions.cpp | 8 |
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), |