1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=m68k-linux -verify-machineinstrs | FileCheck %s 3 4; op reg, reg 5 6define zeroext i8 @asrb(i8 zeroext %a, i8 zeroext %b) nounwind { 7; CHECK-LABEL: asrb: 8; CHECK: ; %bb.0: 9; CHECK-NEXT: move.b (11,%sp), %d0 10; CHECK-NEXT: move.b (7,%sp), %d1 11; CHECK-NEXT: asr.b %d0, %d1 12; CHECK-NEXT: move.l %d1, %d0 13; CHECK-NEXT: and.l #255, %d0 14; CHECK-NEXT: rts 15 %1 = ashr i8 %a, %b 16 ret i8 %1 17} 18 19define zeroext i16 @asrw(i16 zeroext %a, i16 zeroext %b) nounwind { 20; CHECK-LABEL: asrw: 21; CHECK: ; %bb.0: 22; CHECK-NEXT: move.w (10,%sp), %d0 23; CHECK-NEXT: move.w (6,%sp), %d1 24; CHECK-NEXT: asr.w %d0, %d1 25; CHECK-NEXT: move.l %d1, %d0 26; CHECK-NEXT: and.l #65535, %d0 27; CHECK-NEXT: rts 28 %1 = ashr i16 %a, %b 29 ret i16 %1 30} 31 32define i32 @asrl(i32 %a, i32 %b) nounwind { 33; CHECK-LABEL: asrl: 34; CHECK: ; %bb.0: 35; CHECK-NEXT: move.l (8,%sp), %d1 36; CHECK-NEXT: move.l (4,%sp), %d0 37; CHECK-NEXT: asr.l %d1, %d0 38; CHECK-NEXT: rts 39 %1 = ashr i32 %a, %b 40 ret i32 %1 41} 42 43; op reg, imm 44 45define zeroext i8 @asrib(i8 zeroext %a) nounwind { 46; CHECK-LABEL: asrib: 47; CHECK: ; %bb.0: 48; CHECK-NEXT: move.b (7,%sp), %d0 49; CHECK-NEXT: asr.b #3, %d0 50; CHECK-NEXT: and.l #255, %d0 51; CHECK-NEXT: rts 52 %1 = ashr i8 %a, 3 53 ret i8 %1 54} 55 56define zeroext i16 @asriw(i16 zeroext %a) nounwind { 57; CHECK-LABEL: asriw: 58; CHECK: ; %bb.0: 59; CHECK-NEXT: move.w (6,%sp), %d0 60; CHECK-NEXT: asr.w #5, %d0 61; CHECK-NEXT: and.l #65535, %d0 62; CHECK-NEXT: rts 63 %1 = ashr i16 %a, 5 64 ret i16 %1 65} 66 67define i32 @asril(i32 %a) nounwind { 68; CHECK-LABEL: asril: 69; CHECK: ; %bb.0: 70; CHECK-NEXT: move.l (4,%sp), %d0 71; CHECK-NEXT: asr.l #7, %d0 72; CHECK-NEXT: rts 73 %1 = ashr i32 %a, 7 74 ret i32 %1 75} 76