| ; 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(ptr %p) { | |
| entry: | |
| br label %while.body | |
| while.body: | |
| %0 = load i8, ptr %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 | |
| } | |