summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2012-03-14 13:08:09 -0400
committerTom Stellard <thomas.stellard@amd.com>2012-03-14 13:21:36 -0400
commit42075a518344c449f279efa9e2f98d21613790b5 (patch)
tree9dfae7d1c10dbe016d076765899afb9aca043eec
parent8ce2379bad649affe7db0dc5d0d2a63640c95676 (diff)
r600/llvm: Lower BREAK_LOGICALNZ_i32
-rw-r--r--src/gallium/drivers/radeon/AMDGPUUtil.cpp1
-rw-r--r--src/gallium/drivers/radeon/R600CodeEmitter.cpp4
2 files changed, 5 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeon/AMDGPUUtil.cpp b/src/gallium/drivers/radeon/AMDGPUUtil.cpp
index 1975501d1c9..2a774391764 100644
--- a/src/gallium/drivers/radeon/AMDGPUUtil.cpp
+++ b/src/gallium/drivers/radeon/AMDGPUUtil.cpp
@@ -109,6 +109,7 @@ bool llvm::isFCOp(unsigned opcode)
switch(opcode) {
default: return false;
case AMDIL::BREAK_LOGICALZ_f32:
+ case AMDIL::BREAK_LOGICALNZ_i32:
case AMDIL::CONTINUE_LOGICALNZ_f32:
case AMDIL::IF_LOGICALZ_f32:
case AMDIL::ELSE:
diff --git a/src/gallium/drivers/radeon/R600CodeEmitter.cpp b/src/gallium/drivers/radeon/R600CodeEmitter.cpp
index e83b03f9ed9..962039be539 100644
--- a/src/gallium/drivers/radeon/R600CodeEmitter.cpp
+++ b/src/gallium/drivers/radeon/R600CodeEmitter.cpp
@@ -142,6 +142,7 @@ enum FCInstr {
FC_BGNLOOP,
FC_ENDLOOP,
FC_BREAK,
+ FC_BREAK_NZ_INT,
FC_CONTINUE
};
@@ -614,6 +615,9 @@ void R600CodeEmitter::emitFCInstr(MachineInstr &MI)
case AMDIL::BREAK_LOGICALZ_f32:
instr = FC_BREAK;
break;
+ case AMDIL::BREAK_LOGICALNZ_i32:
+ instr = FC_BREAK_NZ_INT;
+ break;
case AMDIL::CONTINUE_LOGICALNZ_f32:
instr = FC_CONTINUE;
break;