1 ; RUN: llc < %s -march=bpfel -show-mc-encoding | FileCheck %s
3 define zeroext i8 @lshr8(i8 zeroext %a, i8 zeroext %cnt) nounwind readnone {
6 ; CHECK: r0 >>= r2 # encoding: [0x7f,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
7 %shr = lshr i8 %a, %cnt
11 define signext i8 @ashr8(i8 signext %a, i8 zeroext %cnt) nounwind readnone {
14 ; CHECK: r0 s>>= r2 # encoding: [0xcf,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
15 %shr = ashr i8 %a, %cnt
19 define zeroext i8 @shl8(i8 zeroext %a, i8 zeroext %cnt) nounwind readnone {
22 ; CHECK: r0 <<= r2 # encoding: [0x6f,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
23 %shl = shl i8 %a, %cnt
27 define zeroext i16 @lshr16(i16 zeroext %a, i16 zeroext %cnt) nounwind readnone {
29 ; CHECK-LABEL: lshr16:
30 ; CHECK: r0 >>= r2 # encoding: [0x7f,0x20,0x00,0x00,0x00,0x00,0x00,0x00
31 %shr = lshr i16 %a, %cnt
35 define signext i16 @ashr16(i16 signext %a, i16 zeroext %cnt) nounwind readnone {
37 ; CHECK-LABEL: ashr16:
38 ; CHECK: r0 s>>= r2 # encoding: [0xcf,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
39 %shr = ashr i16 %a, %cnt
43 define zeroext i16 @shl16(i16 zeroext %a, i16 zeroext %cnt) nounwind readnone {
46 ; CHECK: r0 <<= r2 # encoding: [0x6f,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
47 %shl = shl i16 %a, %cnt
51 define zeroext i32 @lshr32(i32 zeroext %a, i32 zeroext %cnt) nounwind readnone {
53 ; CHECK-LABEL: lshr32:
54 ; CHECK: r0 >>= r2 # encoding: [0x7f,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
55 ; CHECK: r0 <<= 32 # encoding: [0x67,0x00,0x00,0x00,0x20,0x00,0x00,0x00]
56 %shr = lshr i32 %a, %cnt
60 define signext i32 @ashr32(i32 signext %a, i32 zeroext %cnt) nounwind readnone {
62 ; CHECK-LABEL: ashr32:
63 ; CHECK: r0 s>>= r2 # encoding: [0xcf,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
64 %shr = ashr i32 %a, %cnt
68 define zeroext i32 @shl32(i32 zeroext %a, i32 zeroext %cnt) nounwind readnone {
71 ; CHECK: r0 <<= r2 # encoding: [0x6f,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
72 %shl = shl i32 %a, %cnt
76 define zeroext i64 @lshr64(i64 zeroext %a, i64 zeroext %cnt) nounwind readnone {
78 ; CHECK-LABEL: lshr64:
79 ; CHECK: r0 >>= r2 # encoding: [0x7f,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
80 %shr = lshr i64 %a, %cnt
84 define signext i64 @ashr64(i64 signext %a, i64 zeroext %cnt) nounwind readnone {
86 ; CHECK-LABEL: ashr64:
87 ; CHECK: r0 s>>= r2 # encoding: [0xcf,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
88 %shr = ashr i64 %a, %cnt
92 define zeroext i64 @shl64(i64 zeroext %a, i64 zeroext %cnt) nounwind readnone {
95 ; CHECK: r0 = r1 # encoding: [0xbf,0x10,0x00,0x00,0x00,0x00,0x00,0x00]
96 ; CHECK: r0 <<= r2 # encoding: [0x6f,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
97 ; CHECK: exit # encoding: [0x95,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
98 %shl = shl i64 %a, %cnt