summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen')
-rw-r--r--llvm/test/CodeGen/PowerPC/selectiondag-sextload.ll26
1 files changed, 26 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/PowerPC/selectiondag-sextload.ll b/llvm/test/CodeGen/PowerPC/selectiondag-sextload.ll
new file mode 100644
index 00000000000..de33faf000a
--- /dev/null
+++ b/llvm/test/CodeGen/PowerPC/selectiondag-sextload.ll
@@ -0,0 +1,26 @@
+; RUN: llc --mtriple=powerpc64le-linux-gnu < %s | FileCheck %s
+
+; It tests in function DAGCombiner::visitSIGN_EXTEND_INREG
+; signext will not be combined with extload, and causes extra zext.
+
+declare void @g(i32 signext)
+
+define void @foo(i8* %p) {
+entry:
+ br label %while.body
+
+while.body:
+ %0 = load i8, i8* %p, align 1
+ %conv = zext i8 %0 to i32
+ %cmp = icmp sgt i8 %0, 0
+ br i1 %cmp, label %if.then, label %while.body
+; CHECK: lbz
+; CHECK: extsb.
+; CHECK-NOT: rlwinm
+; CHECK: ble
+
+if.then:
+ tail call void @g(i32 signext %conv)
+ br label %while.body
+}
+
OpenPOWER on IntegriCloud