radeon/llvm: Remove some duplicate code in the R600 CodeEmitter
authorTom Stellard <thomas.stellard@amd.com>
Wed, 6 Jun 2012 15:40:34 +0000 (11:40 -0400)
committerTom Stellard <thomas.stellard@amd.com>
Thu, 7 Jun 2012 00:51:00 +0000 (20:51 -0400)
src/gallium/drivers/radeon/R600CodeEmitter.cpp

index 42d7918..3b7ca2c 100644 (file)
@@ -162,6 +162,7 @@ bool R600CodeEmitter::runOnMachineFunction(MachineFunction &MF) {
           MachineInstr &MI = *I;
          isReduction = AMDGPU::isReductionOp(MI.getOpcode());
          isVector = TII->isVector(MI);
+         isCube = AMDGPU::isCubeOp(MI.getOpcode());
           if (MI.getNumOperands() > 1 && MI.getOperand(0).isReg() && MI.getOperand(0).isDead()) {
             continue;
           }
@@ -169,7 +170,7 @@ bool R600CodeEmitter::runOnMachineFunction(MachineFunction &MF) {
             emitTexInstr(MI);
           } else if (AMDGPU::isFCOp(MI.getOpcode())){
             emitFCInstr(MI);
-          } else if (isReduction || isVector) {
+          } else if (isReduction || isVector || isCube) {
             isLast = false;
             for (currentElement = 0; currentElement < 4; currentElement++) {
               isLast = (currentElement == 3);
@@ -177,14 +178,7 @@ bool R600CodeEmitter::runOnMachineFunction(MachineFunction &MF) {
             }
             isReduction = false;
            isVector = false;
-          } else if (AMDGPU::isCubeOp(MI.getOpcode())) {
-              isCube = true;
-              isLast = false;
-              for (currentElement = 0; currentElement < 4; currentElement++) {
-                isLast = (currentElement == 3);
-                emitALUInstr(MI);
-              }
-              isCube = false;
+           isCube = false;
           } else if (MI.getOpcode() == AMDIL::RETURN ||
                      MI.getOpcode() == AMDIL::BUNDLE ||
                      MI.getOpcode() == AMDIL::KILL) {