Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / BPF / shifts.ll
blob2ffcb8891c30fd4e692c3f9577c87afc511f62ed
1 ; RUN: llc < %s -march=bpfel -show-mc-encoding | FileCheck %s
3 define zeroext i8 @lshr8(i8 zeroext %a, i8 zeroext %cnt) nounwind readnone {
4 entry:
5 ; CHECK-LABEL: lshr8:
6 ; CHECK: r0 >>= r2 # encoding: [0x7f,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
7   %shr = lshr i8 %a, %cnt
8   ret i8 %shr
11 define signext i8 @ashr8(i8 signext %a, i8 zeroext %cnt) nounwind readnone {
12 entry:
13 ; CHECK-LABEL: ashr8:
14 ; CHECK: r0 s>>= r2 # encoding: [0xcf,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
15   %shr = ashr i8 %a, %cnt
16   ret i8 %shr
19 define zeroext i8 @shl8(i8 zeroext %a, i8 zeroext %cnt) nounwind readnone {
20 entry:
21 ; CHECK: shl8
22 ; CHECK: r0 <<= r2 # encoding: [0x6f,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
23   %shl = shl i8 %a, %cnt
24   ret i8 %shl
27 define zeroext i16 @lshr16(i16 zeroext %a, i16 zeroext %cnt) nounwind readnone {
28 entry:
29 ; CHECK-LABEL: lshr16:
30 ; CHECK: r0 >>= r2 # encoding: [0x7f,0x20,0x00,0x00,0x00,0x00,0x00,0x00
31   %shr = lshr i16 %a, %cnt
32   ret i16 %shr
35 define signext i16 @ashr16(i16 signext %a, i16 zeroext %cnt) nounwind readnone {
36 entry:
37 ; CHECK-LABEL: ashr16:
38 ; CHECK: r0 s>>= r2 # encoding: [0xcf,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
39   %shr = ashr i16 %a, %cnt
40   ret i16 %shr
43 define zeroext i16 @shl16(i16 zeroext %a, i16 zeroext %cnt) nounwind readnone {
44 entry:
45 ; CHECK-LABEL: shl16:
46 ; CHECK: r0 <<= r2 # encoding: [0x6f,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
47   %shl = shl i16 %a, %cnt
48   ret i16 %shl
51 define zeroext i32 @lshr32(i32 zeroext %a, i32 zeroext %cnt) nounwind readnone {
52 entry:
53 ; CHECK-LABEL: lshr32:
54 ; CHECK: r0 >>= r2 # encoding: [0x7f,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
55 ; CHECK: exit # encoding: [0x95,0x00,0x00,0x00,0x00,0x00,0x00,0x00]
56   %shr = lshr i32 %a, %cnt
57   ret i32 %shr
60 define signext i32 @ashr32(i32 signext %a, i32 zeroext %cnt) nounwind readnone {
61 entry:
62 ; CHECK-LABEL: ashr32:
63 ; CHECK: r0 s>>= r2 # encoding: [0xcf,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
64   %shr = ashr i32 %a, %cnt
65   ret i32 %shr
68 define zeroext i32 @shl32(i32 zeroext %a, i32 zeroext %cnt) nounwind readnone {
69 entry:
70 ; CHECK-LABEL: shl32:
71 ; CHECK: r0 <<= r2 # encoding: [0x6f,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
72   %shl = shl i32 %a, %cnt
73   ret i32 %shl
76 define zeroext i64 @lshr64(i64 zeroext %a, i64 zeroext %cnt) nounwind readnone {
77 entry:
78 ; CHECK-LABEL: lshr64:
79 ; CHECK: r0 >>= r2 # encoding: [0x7f,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
80   %shr = lshr i64 %a, %cnt
81   ret i64 %shr
84 define signext i64 @ashr64(i64 signext %a, i64 zeroext %cnt) nounwind readnone {
85 entry:
86 ; CHECK-LABEL: ashr64:
87 ; CHECK: r0 s>>= r2 # encoding: [0xcf,0x20,0x00,0x00,0x00,0x00,0x00,0x00]
88   %shr = ashr i64 %a, %cnt
89   ret i64 %shr
92 define zeroext i64 @shl64(i64 zeroext %a, i64 zeroext %cnt) nounwind readnone {
93 entry:
94 ; CHECK-LABEL: shl64:
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
99   ret i64 %shl