[NFC][Py Reformat] Reformat python files in llvm
[llvm-project.git] / llvm / test / CodeGen / M68k / ShiftRotate / rol.ll
blobbb2c071e11b98fd90f31da801f9d8808c631a3cb
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=m68k-linux -verify-machineinstrs | FileCheck %s
4 declare i8 @llvm.fshl.i8(i8, i8, i8)
5 declare i16 @llvm.fshl.i16(i16, i16, i16)
6 declare i32 @llvm.fshl.i32(i32, i32, i32)
8 ; op reg, reg
10 define zeroext i8 @rolb(i8 zeroext %a, i8 zeroext %b) nounwind {
11 ; CHECK-LABEL: rolb:
12 ; CHECK:       ; %bb.0:
13 ; CHECK-NEXT:    move.b (11,%sp), %d0
14 ; CHECK-NEXT:    move.b (7,%sp), %d1
15 ; CHECK-NEXT:    rol.b %d0, %d1
16 ; CHECK-NEXT:    move.l %d1, %d0
17 ; CHECK-NEXT:    and.l #255, %d0
18 ; CHECK-NEXT:    rts
19   %1 = tail call i8 @llvm.fshl.i8(i8 %a, i8 %a, i8 %b)
20   ret i8 %1
23 define zeroext i16 @rolw(i16 zeroext %a, i16 zeroext %b) nounwind {
24 ; CHECK-LABEL: rolw:
25 ; CHECK:       ; %bb.0:
26 ; CHECK-NEXT:    move.w (10,%sp), %d0
27 ; CHECK-NEXT:    move.w (6,%sp), %d1
28 ; CHECK-NEXT:    rol.w %d0, %d1
29 ; CHECK-NEXT:    move.l %d1, %d0
30 ; CHECK-NEXT:    and.l #65535, %d0
31 ; CHECK-NEXT:    rts
32   %1 = tail call i16 @llvm.fshl.i16(i16 %a, i16 %a, i16 %b)
33   ret i16 %1
36 define i32 @roll(i32 %a, i32 %b) nounwind {
37 ; CHECK-LABEL: roll:
38 ; CHECK:       ; %bb.0:
39 ; CHECK-NEXT:    move.l (8,%sp), %d1
40 ; CHECK-NEXT:    move.l (4,%sp), %d0
41 ; CHECK-NEXT:    rol.l %d1, %d0
42 ; CHECK-NEXT:    rts
43   %1 = tail call i32 @llvm.fshl.i32(i32 %a, i32 %a, i32 %b)
44   ret i32 %1
47 ; op reg, imm
49 define zeroext i8 @rolib(i8 zeroext %a) nounwind {
50 ; CHECK-LABEL: rolib:
51 ; CHECK:       ; %bb.0:
52 ; CHECK-NEXT:    move.b (7,%sp), %d0
53 ; CHECK-NEXT:    rol.b #3, %d0
54 ; CHECK-NEXT:    and.l #255, %d0
55 ; CHECK-NEXT:    rts
56   %1 = tail call i8 @llvm.fshl.i8(i8 %a, i8 %a, i8 3)
57   ret i8 %1
60 define zeroext i16 @roliw(i16 zeroext %a) nounwind {
61 ; CHECK-LABEL: roliw:
62 ; CHECK:       ; %bb.0:
63 ; CHECK-NEXT:    move.w (6,%sp), %d0
64 ; CHECK-NEXT:    rol.w #5, %d0
65 ; CHECK-NEXT:    and.l #65535, %d0
66 ; CHECK-NEXT:    rts
67   %1 = tail call i16 @llvm.fshl.i16(i16 %a, i16 %a, i16 5)
68   ret i16 %1
71 define i32 @rolil(i32 %a) nounwind {
72 ; CHECK-LABEL: rolil:
73 ; CHECK:       ; %bb.0:
74 ; CHECK-NEXT:    move.l (4,%sp), %d0
75 ; CHECK-NEXT:    rol.l #7, %d0
76 ; CHECK-NEXT:    rts
77   %1 = tail call i32 @llvm.fshl.i32(i32 %a, i32 %a, i32 7)
78   ret i32 %1