brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · 4b60256 Raw
213 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=m68k-linux -verify-machineinstrs | FileCheck %s3 4; TODO fold the shifts5define zeroext i16 @test1(i16 zeroext %x) nounwind {6; CHECK-LABEL: test1:7; CHECK:       ; %bb.0: ; %entry8; CHECK-NEXT:    move.w (6,%sp), %d09; CHECK-NEXT:    mulu #-1985, %d010; CHECK-NEXT:    lsr.l #8, %d011; CHECK-NEXT:    lsr.l #8, %d012; CHECK-NEXT:    lsr.w #5, %d013; CHECK-NEXT:    and.l #65535, %d014; CHECK-NEXT:    rts15entry:16	%div = udiv i16 %x, 3317	ret i16 %div18}19 20define zeroext i16 @test2(i8 signext %x, i16 zeroext %c) {21; CHECK-LABEL: test2:22; CHECK:         .cfi_startproc23; CHECK-NEXT:  ; %bb.0: ; %entry24; CHECK-NEXT:    move.w (10,%sp), %d025; CHECK-NEXT:    mulu #-21845, %d026; CHECK-NEXT:    lsr.l #8, %d027; CHECK-NEXT:    lsr.l #8, %d028; CHECK-NEXT:    lsr.w #1, %d029; CHECK-NEXT:    and.l #65535, %d030; CHECK-NEXT:    rts31entry:32  %div = udiv i16 %c, 333  ret i16 %div34}35 36define zeroext i8 @test3(i8 zeroext %x, i8 zeroext %c) {37; CHECK-LABEL: test3:38; CHECK:         .cfi_startproc39; CHECK-NEXT:  ; %bb.0: ; %entry40; CHECK-NEXT:    move.b (11,%sp), %d041; CHECK-NEXT:    and.l #255, %d042; CHECK-NEXT:    muls #171, %d043; CHECK-NEXT:    moveq #9, %d144; CHECK-NEXT:    lsr.w %d1, %d045; CHECK-NEXT:    and.l #65535, %d046; CHECK-NEXT:    rts47entry:48  %div = udiv i8 %c, 349  ret i8 %div50}51 52define signext i16 @test4(i16 signext %x) nounwind {53; CHECK-LABEL: test4:54; CHECK:       ; %bb.0: ; %entry55; CHECK-NEXT:    suba.l #4, %sp56; CHECK-NEXT:    movem.l %d2, (0,%sp) ; 8-byte Folded Spill57; CHECK-NEXT:    move.w (10,%sp), %d058; CHECK-NEXT:    muls #1986, %d059; CHECK-NEXT:    asr.l #8, %d060; CHECK-NEXT:    asr.l #8, %d061; CHECK-NEXT:    moveq #15, %d162; CHECK-NEXT:    move.w %d0, %d263; CHECK-NEXT:    lsr.w %d1, %d264; CHECK-NEXT:    add.w %d2, %d065; CHECK-NEXT:    ext.l %d066; CHECK-NEXT:    movem.l (0,%sp), %d2 ; 8-byte Folded Reload67; CHECK-NEXT:    adda.l #4, %sp68; CHECK-NEXT:    rts69entry:70	%div = sdiv i16 %x, 33		; <i32> [#uses=1]71	ret i16 %div72}73 74define i32 @test5(i32 %A) nounwind {75; CHECK-LABEL: test5:76; CHECK:       ; %bb.0:77; CHECK-NEXT:    suba.l #12, %sp78; CHECK-NEXT:    move.l #1577682821, (4,%sp)79; CHECK-NEXT:    move.l (16,%sp), (%sp)80; CHECK-NEXT:    jsr __udivsi381; CHECK-NEXT:    adda.l #12, %sp82; CHECK-NEXT:    rts83  %tmp1 = udiv i32 %A, 1577682821         ; <i32> [#uses=1]84  ret i32 %tmp185}86 87; TODO fold shift88define signext i16 @test6(i16 signext %x) nounwind {89; CHECK-LABEL: test6:90; CHECK:       ; %bb.0: ; %entry91; CHECK-NEXT:    suba.l #4, %sp92; CHECK-NEXT:    movem.l %d2, (0,%sp) ; 8-byte Folded Spill93; CHECK-NEXT:    move.w (10,%sp), %d094; CHECK-NEXT:    muls #26215, %d095; CHECK-NEXT:    asr.l #8, %d096; CHECK-NEXT:    asr.l #8, %d097; CHECK-NEXT:    moveq #15, %d198; CHECK-NEXT:    move.w %d0, %d299; CHECK-NEXT:    lsr.w %d1, %d2100; CHECK-NEXT:    asr.w #2, %d0101; CHECK-NEXT:    add.w %d2, %d0102; CHECK-NEXT:    ext.l %d0103; CHECK-NEXT:    movem.l (0,%sp), %d2 ; 8-byte Folded Reload104; CHECK-NEXT:    adda.l #4, %sp105; CHECK-NEXT:    rts106entry:107  %div = sdiv i16 %x, 10108  ret i16 %div109}110 111define i32 @test7(i32 %x) nounwind {112; CHECK-LABEL: test7:113; CHECK:       ; %bb.0:114; CHECK-NEXT:    suba.l #12, %sp115; CHECK-NEXT:    move.l #28, (4,%sp)116; CHECK-NEXT:    move.l (16,%sp), (%sp)117; CHECK-NEXT:    jsr __udivsi3118; CHECK-NEXT:    adda.l #12, %sp119; CHECK-NEXT:    rts120  %div = udiv i32 %x, 28121  ret i32 %div122}123 124define i8 @test8(i8 %x) nounwind {125; CHECK-LABEL: test8:126; CHECK:       ; %bb.0:127; CHECK-NEXT:    move.b (7,%sp), %d0128; CHECK-NEXT:    lsr.b #1, %d0129; CHECK-NEXT:    and.l #255, %d0130; CHECK-NEXT:    muls #211, %d0131; CHECK-NEXT:    moveq #13, %d1132; CHECK-NEXT:    lsr.w %d1, %d0133; CHECK-NEXT:    ; kill: def $bd0 killed $bd0 killed $d0134; CHECK-NEXT:    rts135  %div = udiv i8 %x, 78136  ret i8 %div137}138 139define i8 @test9(i8 %x) nounwind {140; CHECK-LABEL: test9:141; CHECK:       ; %bb.0:142; CHECK-NEXT:    move.b (7,%sp), %d0143; CHECK-NEXT:    lsr.b #2, %d0144; CHECK-NEXT:    and.l #255, %d0145; CHECK-NEXT:    muls #71, %d0146; CHECK-NEXT:    moveq #11, %d1147; CHECK-NEXT:    lsr.w %d1, %d0148; CHECK-NEXT:    ; kill: def $bd0 killed $bd0 killed $d0149; CHECK-NEXT:    rts150  %div = udiv i8 %x, 116151  ret i8 %div152}153 154define i32 @testsize1(i32 %x) minsize nounwind {155; CHECK-LABEL: testsize1:156; CHECK:       ; %bb.0: ; %entry157; CHECK-NEXT:    suba.l #4, %sp158; CHECK-NEXT:    movem.l %d2, (0,%sp) ; 8-byte Folded Spill159; CHECK-NEXT:    moveq #31, %d1160; CHECK-NEXT:    move.l (8,%sp), %d0161; CHECK-NEXT:    move.l %d0, %d2162; CHECK-NEXT:    asr.l %d1, %d2163; CHECK-NEXT:    moveq #27, %d1164; CHECK-NEXT:    lsr.l %d1, %d2165; CHECK-NEXT:    add.l %d2, %d0166; CHECK-NEXT:    asr.l #5, %d0167; CHECK-NEXT:    movem.l (0,%sp), %d2 ; 8-byte Folded Reload168; CHECK-NEXT:    adda.l #4, %sp169; CHECK-NEXT:    rts170entry:171	%div = sdiv i32 %x, 32172	ret i32 %div173}174 175define i32 @testsize2(i32 %x) minsize nounwind {176; CHECK-LABEL: testsize2:177; CHECK:       ; %bb.0: ; %entry178; CHECK-NEXT:    suba.l #12, %sp179; CHECK-NEXT:    move.l #33, (4,%sp)180; CHECK-NEXT:    move.l (16,%sp), (%sp)181; CHECK-NEXT:    jsr __divsi3182; CHECK-NEXT:    adda.l #12, %sp183; CHECK-NEXT:    rts184entry:185	%div = sdiv i32 %x, 33186	ret i32 %div187}188 189define i32 @testsize3(i32 %x) minsize nounwind {190; CHECK-LABEL: testsize3:191; CHECK:       ; %bb.0: ; %entry192; CHECK-NEXT:    move.l (4,%sp), %d0193; CHECK-NEXT:    lsr.l #5, %d0194; CHECK-NEXT:    rts195entry:196	%div = udiv i32 %x, 32197	ret i32 %div198}199 200define i32 @testsize4(i32 %x) minsize nounwind {201; CHECK-LABEL: testsize4:202; CHECK:       ; %bb.0: ; %entry203; CHECK-NEXT:    suba.l #12, %sp204; CHECK-NEXT:    move.l #33, (4,%sp)205; CHECK-NEXT:    move.l (16,%sp), (%sp)206; CHECK-NEXT:    jsr __udivsi3207; CHECK-NEXT:    adda.l #12, %sp208; CHECK-NEXT:    rts209entry:210	%div = udiv i32 %x, 33211	ret i32 %div212}213