brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.7 KiB · eb2e61d Raw
238 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s3 4define i1 @t32_3_1(i32 %X) nounwind {5; CHECK-LABEL: t32_3_1:6; CHECK:       // %bb.0:7; CHECK-NEXT:    mov w8, #43691 // =0xaaab8; CHECK-NEXT:    mov w9, #1431655765 // =0x555555559; CHECK-NEXT:    movk w8, #43690, lsl #1610; CHECK-NEXT:    madd w8, w0, w8, w911; CHECK-NEXT:    cmp w8, w912; CHECK-NEXT:    cset w0, lo13; CHECK-NEXT:    ret14  %urem = urem i32 %X, 315  %cmp = icmp eq i32 %urem, 116  ret i1 %cmp17}18 19define i1 @t32_3_2(i32 %X) nounwind {20; CHECK-LABEL: t32_3_2:21; CHECK:       // %bb.0:22; CHECK-NEXT:    mov w8, #43691 // =0xaaab23; CHECK-NEXT:    mov w9, #-1431655766 // =0xaaaaaaaa24; CHECK-NEXT:    movk w8, #43690, lsl #1625; CHECK-NEXT:    madd w8, w0, w8, w926; CHECK-NEXT:    mov w9, #1431655765 // =0x5555555527; CHECK-NEXT:    cmp w8, w928; CHECK-NEXT:    cset w0, lo29; CHECK-NEXT:    ret30  %urem = urem i32 %X, 331  %cmp = icmp eq i32 %urem, 232  ret i1 %cmp33}34 35 36define i1 @t32_5_1(i32 %X) nounwind {37; CHECK-LABEL: t32_5_1:38; CHECK:       // %bb.0:39; CHECK-NEXT:    mov w8, #52429 // =0xcccd40; CHECK-NEXT:    mov w9, #858993459 // =0x3333333341; CHECK-NEXT:    movk w8, #52428, lsl #1642; CHECK-NEXT:    madd w8, w0, w8, w943; CHECK-NEXT:    cmp w8, w944; CHECK-NEXT:    cset w0, lo45; CHECK-NEXT:    ret46  %urem = urem i32 %X, 547  %cmp = icmp eq i32 %urem, 148  ret i1 %cmp49}50 51define i1 @t32_5_2(i32 %X) nounwind {52; CHECK-LABEL: t32_5_2:53; CHECK:       // %bb.0:54; CHECK-NEXT:    mov w8, #52429 // =0xcccd55; CHECK-NEXT:    mov w9, #1717986918 // =0x6666666656; CHECK-NEXT:    movk w8, #52428, lsl #1657; CHECK-NEXT:    madd w8, w0, w8, w958; CHECK-NEXT:    mov w9, #858993459 // =0x3333333359; CHECK-NEXT:    cmp w8, w960; CHECK-NEXT:    cset w0, lo61; CHECK-NEXT:    ret62  %urem = urem i32 %X, 563  %cmp = icmp eq i32 %urem, 264  ret i1 %cmp65}66 67define i1 @t32_5_3(i32 %X) nounwind {68; CHECK-LABEL: t32_5_3:69; CHECK:       // %bb.0:70; CHECK-NEXT:    mov w8, #52429 // =0xcccd71; CHECK-NEXT:    mov w9, #-1717986919 // =0x9999999972; CHECK-NEXT:    movk w8, #52428, lsl #1673; CHECK-NEXT:    madd w8, w0, w8, w974; CHECK-NEXT:    mov w9, #858993459 // =0x3333333375; CHECK-NEXT:    cmp w8, w976; CHECK-NEXT:    cset w0, lo77; CHECK-NEXT:    ret78  %urem = urem i32 %X, 579  %cmp = icmp eq i32 %urem, 380  ret i1 %cmp81}82 83define i1 @t32_5_4(i32 %X) nounwind {84; CHECK-LABEL: t32_5_4:85; CHECK:       // %bb.0:86; CHECK-NEXT:    mov w8, #52429 // =0xcccd87; CHECK-NEXT:    mov w9, #-858993460 // =0xcccccccc88; CHECK-NEXT:    movk w8, #52428, lsl #1689; CHECK-NEXT:    madd w8, w0, w8, w990; CHECK-NEXT:    mov w9, #858993459 // =0x3333333391; CHECK-NEXT:    cmp w8, w992; CHECK-NEXT:    cset w0, lo93; CHECK-NEXT:    ret94  %urem = urem i32 %X, 595  %cmp = icmp eq i32 %urem, 496  ret i1 %cmp97}98 99 100define i1 @t32_6_1(i32 %X) nounwind {101; CHECK-LABEL: t32_6_1:102; CHECK:       // %bb.0:103; CHECK-NEXT:    mov w8, #43691 // =0xaaab104; CHECK-NEXT:    mov w9, #1431655765 // =0x55555555105; CHECK-NEXT:    movk w8, #43690, lsl #16106; CHECK-NEXT:    madd w8, w0, w8, w9107; CHECK-NEXT:    mov w9, #43691 // =0xaaab108; CHECK-NEXT:    movk w9, #10922, lsl #16109; CHECK-NEXT:    ror w8, w8, #1110; CHECK-NEXT:    cmp w8, w9111; CHECK-NEXT:    cset w0, lo112; CHECK-NEXT:    ret113  %urem = urem i32 %X, 6114  %cmp = icmp eq i32 %urem, 1115  ret i1 %cmp116}117 118define i1 @t32_6_2(i32 %X) nounwind {119; CHECK-LABEL: t32_6_2:120; CHECK:       // %bb.0:121; CHECK-NEXT:    mov w8, #43691 // =0xaaab122; CHECK-NEXT:    mov w9, #-1431655766 // =0xaaaaaaaa123; CHECK-NEXT:    movk w8, #43690, lsl #16124; CHECK-NEXT:    madd w8, w0, w8, w9125; CHECK-NEXT:    mov w9, #43691 // =0xaaab126; CHECK-NEXT:    movk w9, #10922, lsl #16127; CHECK-NEXT:    ror w8, w8, #1128; CHECK-NEXT:    cmp w8, w9129; CHECK-NEXT:    cset w0, lo130; CHECK-NEXT:    ret131  %urem = urem i32 %X, 6132  %cmp = icmp eq i32 %urem, 2133  ret i1 %cmp134}135 136define i1 @t32_6_3(i32 %X) nounwind {137; CHECK-LABEL: t32_6_3:138; CHECK:       // %bb.0:139; CHECK-NEXT:    mov w8, #43691 // =0xaaab140; CHECK-NEXT:    mov w9, #-1 // =0xffffffff141; CHECK-NEXT:    movk w8, #43690, lsl #16142; CHECK-NEXT:    madd w8, w0, w8, w9143; CHECK-NEXT:    mov w9, #43691 // =0xaaab144; CHECK-NEXT:    movk w9, #10922, lsl #16145; CHECK-NEXT:    ror w8, w8, #1146; CHECK-NEXT:    cmp w8, w9147; CHECK-NEXT:    cset w0, lo148; CHECK-NEXT:    ret149  %urem = urem i32 %X, 6150  %cmp = icmp eq i32 %urem, 3151  ret i1 %cmp152}153 154define i1 @t32_6_4(i32 %X) nounwind {155; CHECK-LABEL: t32_6_4:156; CHECK:       // %bb.0:157; CHECK-NEXT:    mov w8, #43691 // =0xaaab158; CHECK-NEXT:    sub w9, w0, #4159; CHECK-NEXT:    movk w8, #43690, lsl #16160; CHECK-NEXT:    mul w8, w9, w8161; CHECK-NEXT:    mov w9, #43690 // =0xaaaa162; CHECK-NEXT:    movk w9, #10922, lsl #16163; CHECK-NEXT:    ror w8, w8, #1164; CHECK-NEXT:    cmp w8, w9165; CHECK-NEXT:    cset w0, lo166; CHECK-NEXT:    ret167  %urem = urem i32 %X, 6168  %cmp = icmp eq i32 %urem, 4169  ret i1 %cmp170}171 172define i1 @t32_6_5(i32 %X) nounwind {173; CHECK-LABEL: t32_6_5:174; CHECK:       // %bb.0:175; CHECK-NEXT:    mov w8, #43691 // =0xaaab176; CHECK-NEXT:    sub w9, w0, #5177; CHECK-NEXT:    movk w8, #43690, lsl #16178; CHECK-NEXT:    mul w8, w9, w8179; CHECK-NEXT:    mov w9, #43690 // =0xaaaa180; CHECK-NEXT:    movk w9, #10922, lsl #16181; CHECK-NEXT:    ror w8, w8, #1182; CHECK-NEXT:    cmp w8, w9183; CHECK-NEXT:    cset w0, lo184; CHECK-NEXT:    ret185  %urem = urem i32 %X, 6186  %cmp = icmp eq i32 %urem, 5187  ret i1 %cmp188}189 190;-------------------------------------------------------------------------------191; Other widths.192 193define i1 @t16_3_2(i16 %X) nounwind {194; CHECK-LABEL: t16_3_2:195; CHECK:       // %bb.0:196; CHECK-NEXT:    mov w8, #-21845 // =0xffffaaab197; CHECK-NEXT:    mov w9, #-21846 // =0xffffaaaa198; CHECK-NEXT:    madd w8, w0, w8, w9199; CHECK-NEXT:    mov w9, #21845 // =0x5555200; CHECK-NEXT:    cmp w9, w8, uxth201; CHECK-NEXT:    cset w0, hi202; CHECK-NEXT:    ret203  %urem = urem i16 %X, 3204  %cmp = icmp eq i16 %urem, 2205  ret i1 %cmp206}207 208define i1 @t8_3_2(i8 %X) nounwind {209; CHECK-LABEL: t8_3_2:210; CHECK:       // %bb.0:211; CHECK-NEXT:    mov w8, #-85 // =0xffffffab212; CHECK-NEXT:    mov w9, #-86 // =0xffffffaa213; CHECK-NEXT:    madd w8, w0, w8, w9214; CHECK-NEXT:    and w8, w8, #0xff215; CHECK-NEXT:    cmp w8, #85216; CHECK-NEXT:    cset w0, lo217; CHECK-NEXT:    ret218  %urem = urem i8 %X, 3219  %cmp = icmp eq i8 %urem, 2220  ret i1 %cmp221}222 223define i1 @t64_3_2(i64 %X) nounwind {224; CHECK-LABEL: t64_3_2:225; CHECK:       // %bb.0:226; CHECK-NEXT:    mov x8, #-6148914691236517206 // =0xaaaaaaaaaaaaaaaa227; CHECK-NEXT:    mov x9, #-6148914691236517206 // =0xaaaaaaaaaaaaaaaa228; CHECK-NEXT:    movk x8, #43691229; CHECK-NEXT:    madd x8, x0, x8, x9230; CHECK-NEXT:    mov x9, #6148914691236517205 // =0x5555555555555555231; CHECK-NEXT:    cmp x8, x9232; CHECK-NEXT:    cset w0, lo233; CHECK-NEXT:    ret234  %urem = urem i64 %X, 3235  %cmp = icmp eq i64 %urem, 2236  ret i1 %cmp237}238