1 ; RUN: llc -fast-isel -fast-isel-abort -mtriple=arm64-apple-darwin < %s | FileCheck %s
4 ; CHECK: ubfiz {{w[0-9]*}}, {{w[0-9]*}}, #4, #4
5 define zeroext i8 @lsl_i8(i8 %a) {
10 ; CHECK-LABEL: lsl_i16
11 ; CHECK: ubfiz {{w[0-9]*}}, {{w[0-9]*}}, #8, #8
12 define zeroext i16 @lsl_i16(i16 %a) {
17 ; CHECK-LABEL: lsl_i32
18 ; CHECK: lsl {{w[0-9]*}}, {{w[0-9]*}}, #16
19 define zeroext i32 @lsl_i32(i32 %a) {
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]*}}
27 define i64 @lsl_i64(i64 %a) {
33 ; CHECK: ubfx {{w[0-9]*}}, {{w[0-9]*}}, #4, #4
34 define zeroext i8 @lsr_i8(i8 %a) {
39 ; CHECK-LABEL: lsr_i16
40 ; CHECK: ubfx {{w[0-9]*}}, {{w[0-9]*}}, #8, #8
41 define zeroext i16 @lsr_i16(i16 %a) {
46 ; CHECK-LABEL: lsr_i32
47 ; CHECK: lsr {{w[0-9]*}}, {{w[0-9]*}}, #16
48 define zeroext i32 @lsr_i32(i32 %a) {
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]*}}
56 define i64 @lsr_i64(i64 %a) {
62 ; CHECK: sbfx {{w[0-9]*}}, {{w[0-9]*}}, #4, #4
63 define zeroext i8 @asr_i8(i8 %a) {
68 ; CHECK-LABEL: asr_i16
69 ; CHECK: sbfx {{w[0-9]*}}, {{w[0-9]*}}, #8, #8
70 define zeroext i16 @asr_i16(i16 %a) {
75 ; CHECK-LABEL: asr_i32
76 ; CHECK: asr {{w[0-9]*}}, {{w[0-9]*}}, #16
77 define zeroext i32 @asr_i32(i32 %a) {
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]*}}
85 define i64 @asr_i64(i64 %a) {
90 ; CHECK-LABEL: shift_test1
91 ; CHECK: ubfiz {{w[0-9]*}}, {{w[0-9]*}}, #4, #4
92 ; CHECK-NEXT: sbfx {{w[0-9]*}}, {{w[0-9]*}}, #4, #4
93 define i32 @shift_test1(i8 %a) {
96 %3 = sext i8 %2 to i32