blob: 35868ee384fb400873298d283232e0b2cc5a0fa8 [file] [log] [blame]
Juergen Ributzkaa75cb112014-07-30 22:04:22 +00001; RUN: llc -fast-isel -fast-isel-abort -mtriple=arm64-apple-darwin < %s | FileCheck %s
2
3; CHECK-LABEL: lsl_i8
4; CHECK: lsl {{w[0-9]*}}, {{w[0-9]*}}, #4
5define zeroext i8 @lsl_i8(i8 %a) {
6 %1 = shl i8 %a, 4
7 ret i8 %1
8}
9
10; CHECK-LABEL: lsl_i16
11; CHECK: lsl {{w[0-9]*}}, {{w[0-9]*}}, #8
12define zeroext i16 @lsl_i16(i16 %a) {
13 %1 = shl i16 %a, 8
14 ret i16 %1
15}
16
17; CHECK-LABEL: lsl_i32
18; CHECK: lsl {{w[0-9]*}}, {{w[0-9]*}}, #16
19define zeroext i32 @lsl_i32(i32 %a) {
20 %1 = shl i32 %a, 16
21 ret i32 %1
22}
23
24; FIXME: This shouldn't use the variable shift version.
25; CHECK-LABEL: lsl_i64
26; CHECK: lsl {{x[0-9]*}}, {{x[0-9]*}}, {{x[0-9]*}}
27define i64 @lsl_i64(i64 %a) {
28 %1 = shl i64 %a, 32
29 ret i64 %1
30}
31
32; CHECK-LABEL: lsr_i8
33; CHECK: lsr {{w[0-9]*}}, {{w[0-9]*}}, #4
34define zeroext i8 @lsr_i8(i8 %a) {
35 %1 = lshr i8 %a, 4
36 ret i8 %1
37}
38
39; CHECK-LABEL: lsr_i16
40; CHECK: lsr {{w[0-9]*}}, {{w[0-9]*}}, #8
41define zeroext i16 @lsr_i16(i16 %a) {
42 %1 = lshr i16 %a, 8
43 ret i16 %1
44}
45
46; CHECK-LABEL: lsr_i32
47; CHECK: lsr {{w[0-9]*}}, {{w[0-9]*}}, #16
48define zeroext i32 @lsr_i32(i32 %a) {
49 %1 = lshr i32 %a, 16
50 ret i32 %1
51}
52
53; FIXME: This shouldn't use the variable shift version.
54; CHECK-LABEL: lsr_i64
55; CHECK: lsr {{x[0-9]*}}, {{x[0-9]*}}, {{x[0-9]*}}
56define i64 @lsr_i64(i64 %a) {
57 %1 = lshr i64 %a, 32
58 ret i64 %1
59}
60
61; CHECK-LABEL: asr_i8
62; CHECK: asr {{w[0-9]*}}, {{w[0-9]*}}, #4
63define zeroext i8 @asr_i8(i8 %a) {
64 %1 = ashr i8 %a, 4
65 ret i8 %1
66}
67
68; CHECK-LABEL: asr_i16
69; CHECK: asr {{w[0-9]*}}, {{w[0-9]*}}, #8
70define zeroext i16 @asr_i16(i16 %a) {
71 %1 = ashr i16 %a, 8
72 ret i16 %1
73}
74
75; CHECK-LABEL: asr_i32
76; CHECK: asr {{w[0-9]*}}, {{w[0-9]*}}, #16
77define zeroext i32 @asr_i32(i32 %a) {
78 %1 = ashr i32 %a, 16
79 ret i32 %1
80}
81
82; FIXME: This shouldn't use the variable shift version.
83; CHECK-LABEL: asr_i64
84; CHECK: asr {{x[0-9]*}}, {{x[0-9]*}}, {{x[0-9]*}}
85define i64 @asr_i64(i64 %a) {
86 %1 = ashr i64 %a, 32
87 ret i64 %1
88}
89