diff options
Diffstat (limited to 'test/CodeGen/SystemZ/int-cmp-46.ll')
-rw-r--r-- | test/CodeGen/SystemZ/int-cmp-46.ll | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/test/CodeGen/SystemZ/int-cmp-46.ll b/test/CodeGen/SystemZ/int-cmp-46.ll index 339ba11694..f311942b9f 100644 --- a/test/CodeGen/SystemZ/int-cmp-46.ll +++ b/test/CodeGen/SystemZ/int-cmp-46.ll @@ -449,3 +449,43 @@ store: exit: ret void } + +; Check that we can fold an SHL into a TMxx mask. +define void @f24(i32 %a) { +; CHECK-LABEL: f24: +; CHECK: tmll %r2, 255 +; CHECK: jne {{\.L.*}} +; CHECK: br %r14 +entry: + %shl = shl i32 %a, 12 + %and = and i32 %shl, 1044480 + %cmp = icmp ne i32 %and, 0 + br i1 %cmp, label %exit, label %store + +store: + store i32 1, i32 *@g + br label %exit + +exit: + ret void +} + +; Check that we can fold an SHR into a TMxx mask. +define void @f25(i32 %a) { +; CHECK-LABEL: f25: +; CHECK: tmlh %r2, 512 +; CHECK: jne {{\.L.*}} +; CHECK: br %r14 +entry: + %shr = lshr i32 %a, 25 + %and = and i32 %shr, 1 + %cmp = icmp ne i32 %and, 0 + br i1 %cmp, label %exit, label %store + +store: + store i32 1, i32 *@g + br label %exit + +exit: + ret void +} |