[llvm] r305943 - [Hexagon] Handle more types of immediate operands in expand-condsets

Krzysztof Parzyszek via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 21 12:21:31 PDT 2017


Author: kparzysz
Date: Wed Jun 21 14:21:30 2017
New Revision: 305943

URL: http://llvm.org/viewvc/llvm-project?rev=305943&view=rev
Log:
[Hexagon] Handle more types of immediate operands in expand-condsets

Added:
    llvm/trunk/test/CodeGen/Hexagon/expand-condsets-imm.mir
Modified:
    llvm/trunk/lib/Target/Hexagon/HexagonExpandCondsets.cpp

Modified: llvm/trunk/lib/Target/Hexagon/HexagonExpandCondsets.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonExpandCondsets.cpp?rev=305943&r1=305942&r2=305943&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/HexagonExpandCondsets.cpp (original)
+++ llvm/trunk/lib/Target/Hexagon/HexagonExpandCondsets.cpp Wed Jun 21 14:21:30 2017
@@ -567,8 +567,19 @@ unsigned HexagonExpandCondsets::getCondT
     }
     llvm_unreachable("Invalid register operand");
   }
-  if (SO.isImm() || SO.isFPImm())
-    return IfTrue ? C2_cmoveit : C2_cmoveif;
+  switch (SO.getType()) {
+    case MachineOperand::MO_Immediate:
+    case MachineOperand::MO_FPImmediate:
+    case MachineOperand::MO_ConstantPoolIndex:
+    case MachineOperand::MO_TargetIndex:
+    case MachineOperand::MO_JumpTableIndex:
+    case MachineOperand::MO_ExternalSymbol:
+    case MachineOperand::MO_GlobalAddress:
+    case MachineOperand::MO_BlockAddress:
+      return IfTrue ? C2_cmoveit : C2_cmoveif;
+    default:
+      break;
+  }
   llvm_unreachable("Unexpected source operand");
 }
 

Added: llvm/trunk/test/CodeGen/Hexagon/expand-condsets-imm.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/Hexagon/expand-condsets-imm.mir?rev=305943&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/Hexagon/expand-condsets-imm.mir (added)
+++ llvm/trunk/test/CodeGen/Hexagon/expand-condsets-imm.mir Wed Jun 21 14:21:30 2017
@@ -0,0 +1,22 @@
+# RUN: llc -march=hexagon -run-pass expand-condsets %s -o - | FileCheck %s
+# Check that we can expand a mux with a global as an immediate operand.
+# CHECK: C2_cmoveif undef %0, @G
+
+--- |
+  @G = global i32 0, align 4
+  define void @fred() { ret void }
+...
+---
+name: fred
+tracksRegLiveness: true
+
+registers:
+  - { id: 0, class: predregs }
+  - { id: 1, class: intregs }
+body: |
+  bb.1:
+    %1 = IMPLICIT_DEF
+    %1 = C2_muxir undef %0, %1, @G
+    %r0 = COPY %1
+...
+




More information about the llvm-commits mailing list