diff options
author | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-09-13 09:09:50 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@linux.vnet.ibm.com> | 2013-09-13 09:09:50 +0000 |
commit | 856bf594338567a592086fe782f2f51650e4e294 (patch) | |
tree | a30bd20000383fc1d913805d6100586c8436f5c9 /test/CodeGen/SystemZ | |
parent | 9a8392b8acf2803f344060f21b0ce4a07df3de7e (diff) | |
download | llvm-856bf594338567a592086fe782f2f51650e4e294.tar.gz llvm-856bf594338567a592086fe782f2f51650e4e294.tar.bz2 llvm-856bf594338567a592086fe782f2f51650e4e294.tar.xz |
[SystemZ] Try to fold shifts into TMxx
E.g. "SRL %r2, 2; TMLL %r2, 1" => "TMLL %r2, 4".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190672 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/SystemZ')
-rw-r--r-- | test/CodeGen/SystemZ/int-cmp-46.ll | 40 | ||||
-rw-r--r-- | test/CodeGen/SystemZ/int-cmp-47.ll | 40 |
2 files changed, 80 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 +} diff --git a/test/CodeGen/SystemZ/int-cmp-47.ll b/test/CodeGen/SystemZ/int-cmp-47.ll index bf206ed9db..c770ccdbb9 100644 --- a/test/CodeGen/SystemZ/int-cmp-47.ll +++ b/test/CodeGen/SystemZ/int-cmp-47.ll @@ -191,3 +191,43 @@ store: exit: ret void } + +; Check that we can fold an SHL into a TMxx mask. +define void @f11(i64 %a) { +; CHECK-LABEL: f11: +; CHECK: tmhl %r2, 32768 +; CHECK: jne {{\.L.*}} +; CHECK: br %r14 +entry: + %shl = shl i64 %a, 1 + %and = and i64 %shl, 281474976710656 + %cmp = icmp ne i64 %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 @f12(i64 %a) { +; CHECK-LABEL: f12: +; CHECK: tmhh %r2, 256 +; CHECK: jne {{\.L.*}} +; CHECK: br %r14 +entry: + %shr = lshr i64 %a, 56 + %and = and i64 %shr, 1 + %cmp = icmp ne i64 %and, 0 + br i1 %cmp, label %exit, label %store + +store: + store i32 1, i32 *@g + br label %exit + +exit: + ret void +} |