xref: /llvm-project/llvm/test/CodeGen/PowerPC/fast-isel-ext.ll (revision d0f9553ef564de1ea0749ee3519d5505920dc29f)
1; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s --check-prefix=PPC64
2; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -mtriple=powerpc64-ibm-aix-xcoff -mcpu=pwr7 | FileCheck %s --check-prefix=PPC64
3
4; zext
5
6define i32 @zext_8_32(i8 %a) nounwind {
7; PPC64: zext_8_32
8  %r = zext i8 %a to i32
9; PPC64: clrlwi {{[0-9]+}}, {{[0-9]+}}, 24
10  ret i32 %r
11}
12
13define i32 @zext_16_32(i16 %a) nounwind {
14; PPC64: zext_16_32
15  %r = zext i16 %a to i32
16; PPC64: clrlwi {{[0-9]+}}, {{[0-9]+}}, 16
17  ret i32 %r
18}
19
20define i64 @zext_8_64(i8 %a) nounwind {
21; PPC64: zext_8_64
22  %r = zext i8 %a to i64
23; PPC64: clrldi {{[0-9]+}}, {{[0-9]+}}, 56
24  ret i64 %r
25}
26
27define i64 @zext_16_64(i16 %a) nounwind {
28; PPC64: zext_16_64
29  %r = zext i16 %a to i64
30; PPC64: clrldi {{[0-9]+}}, {{[0-9]+}}, 48
31  ret i64 %r
32}
33
34define i64 @zext_32_64(i32 %a) nounwind {
35; PPC64: zext_32_64
36  %r = zext i32 %a to i64
37; PPC64: clrldi {{[0-9]+}}, {{[0-9]+}}, 32
38  ret i64 %r
39}
40
41; sext
42
43define i32 @sext_8_32(i8 %a) nounwind {
44; PPC64: sext_8_32
45  %r = sext i8 %a to i32
46; PPC64: extsb
47  ret i32 %r
48}
49
50define i32 @sext_16_32(i16 %a) nounwind {
51; PPC64: sext_16_32
52  %r = sext i16 %a to i32
53; PPC64: extsh
54  ret i32 %r
55}
56
57define i64 @sext_8_64(i8 %a) nounwind {
58; PPC64: sext_8_64
59  %r = sext i8 %a to i64
60; PPC64: extsb
61  ret i64 %r
62}
63
64define i64 @sext_16_64(i16 %a) nounwind {
65; PPC64: sext_16_64
66  %r = sext i16 %a to i64
67; PPC64: extsh
68  ret i64 %r
69}
70
71define i64 @sext_32_64(i32 %a) nounwind {
72; PPC64: sext_32_64
73  %r = sext i32 %a to i64
74; PPC64: extsw
75  ret i64 %r
76}
77