diff options
Diffstat (limited to 'llvm/test/CodeGen/PowerPC/selectiondag-sextload.ll')
| -rw-r--r-- | llvm/test/CodeGen/PowerPC/selectiondag-sextload.ll | 26 |
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 +} + |

