[PATCH] D16937: Add icmp and conditional branches in the C API echo test.
Amaury SECHET via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 9 15:19:33 PST 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL260321: Add icmp and conditional branches in the C API echo test. (authored by deadalnix).
Changed prior to commit:
http://reviews.llvm.org/D16937?vs=47070&id=47382#toc
Repository:
rL LLVM
http://reviews.llvm.org/D16937
Files:
llvm/trunk/test/Bindings/llvm-c/echo.ll
llvm/trunk/tools/llvm-c-test/echo.cpp
Index: llvm/trunk/test/Bindings/llvm-c/echo.ll
===================================================================
--- llvm/trunk/test/Bindings/llvm-c/echo.ll
+++ llvm/trunk/test/Bindings/llvm-c/echo.ll
@@ -43,10 +43,40 @@
ret i32 %1
}
-define i32 @bborder(i32 %a, i32 %b) {
+define i32 @cond(i32 %a, i32 %b) {
br label %br
unreachable:
unreachable
br:
- br label %unreachable
+ %1 = icmp eq i32 %a, %b
+ br i1 %1, label %next0, label %unreachable
+next0:
+ %2 = icmp ne i32 %a, %b
+ br i1 %2, label %next1, label %unreachable
+next1:
+ %3 = icmp ugt i32 %a, %b
+ br i1 %3, label %next2, label %unreachable
+next2:
+ %4 = icmp uge i32 %a, %b
+ br i1 %4, label %next3, label %unreachable
+next3:
+ %5 = icmp ult i32 %a, %b
+ br i1 %5, label %next4, label %unreachable
+next4:
+ %6 = icmp ule i32 %a, %b
+ br i1 %6, label %next5, label %unreachable
+next5:
+ %7 = icmp sgt i32 %a, %b
+ br i1 %7, label %next6, label %unreachable
+next6:
+ %8 = icmp sge i32 %a, %b
+ br i1 %8, label %next7, label %unreachable
+next7:
+ %9 = icmp slt i32 %a, %b
+ br i1 %9, label %next8, label %unreachable
+next8:
+ %10 = icmp sle i32 %a, %b
+ br i1 %10, label %next9, label %unreachable
+next9:
+ ret i32 0
}
Index: llvm/trunk/tools/llvm-c-test/echo.cpp
===================================================================
--- llvm/trunk/tools/llvm-c-test/echo.cpp
+++ llvm/trunk/tools/llvm-c-test/echo.cpp
@@ -216,8 +216,19 @@
break;
}
case LLVMBr: {
- LLVMBasicBlockRef SrcBB = LLVMValueAsBasicBlock(LLVMGetOperand(Src, 0));
- Dst = LLVMBuildBr(Builder, DeclareBB(SrcBB));
+ if (!LLVMIsConditional(Src)) {
+ LLVMValueRef SrcOp = LLVMGetOperand(Src, 0);
+ LLVMBasicBlockRef SrcBB = LLVMValueAsBasicBlock(SrcOp);
+ Dst = LLVMBuildBr(Builder, DeclareBB(SrcBB));
+ break;
+ }
+
+ LLVMValueRef Cond = LLVMGetCondition(Src);
+ LLVMValueRef Else = LLVMGetOperand(Src, 1);
+ LLVMBasicBlockRef ElseBB = DeclareBB(LLVMValueAsBasicBlock(Else));
+ LLVMValueRef Then = LLVMGetOperand(Src, 2);
+ LLVMBasicBlockRef ThenBB = DeclareBB(LLVMValueAsBasicBlock(Then));
+ Dst = LLVMBuildCondBr(Builder, Cond, ThenBB, ElseBB);
break;
}
case LLVMSwitch:
@@ -311,6 +322,13 @@
Dst = LLVMBuildAlloca(Builder, Ty, Name);
break;
}
+ case LLVMICmp: {
+ LLVMIntPredicate Pred = LLVMGetICmpPredicate(Src);
+ LLVMValueRef LHS = CloneValue(LLVMGetOperand(Src, 0), Builder);
+ LLVMValueRef RHS = CloneValue(LLVMGetOperand(Src, 1), Builder);
+ Dst = LLVMBuildICmp(Builder, Pred, LHS, RHS, Name);
+ break;
+ }
case LLVMCall: {
int ArgCount = LLVMGetNumOperands(Src) - 1;
SmallVector<LLVMValueRef, 8> Args;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D16937.47382.patch
Type: text/x-patch
Size: 2837 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160209/71b48a48/attachment.bin>
More information about the llvm-commits
mailing list