brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · ec72f66 Raw
103 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=arm64-eabi -mcpu=cyclone -aarch64-enable-sink-fold=true | FileCheck %s3 4define i128 @shl(i128 %r, i128 %s) nounwind readnone {5; CHECK-LABEL: shl:6; CHECK:       // %bb.0:7; CHECK-NEXT:    lsl x8, x1, x28; CHECK-NEXT:    mvn w9, w29; CHECK-NEXT:    lsr x10, x0, #110; CHECK-NEXT:    lsr x9, x10, x911; CHECK-NEXT:    orr x8, x8, x912; CHECK-NEXT:    lsl x9, x0, x213; CHECK-NEXT:    tst x2, #0x4014; CHECK-NEXT:    csel x1, x9, x8, ne15; CHECK-NEXT:    csel x0, xzr, x9, ne16; CHECK-NEXT:    ret17  %shl = shl i128 %r, %s18  ret i128 %shl19}20 21define i128 @shl_mask(i128 %r, i128 %s) nounwind readnone {22; CHECK-LABEL: shl_mask:23; CHECK:       // %bb.0:24; CHECK-NEXT:    lsl x8, x1, x225; CHECK-NEXT:    lsr x9, x0, #126; CHECK-NEXT:    and x10, x2, #0x3f27; CHECK-NEXT:    eor x10, x10, #0x3f28; CHECK-NEXT:    lsr x9, x9, x1029; CHECK-NEXT:    lsl x0, x0, x230; CHECK-NEXT:    orr x1, x8, x931; CHECK-NEXT:    ret32  %mask = and i128 %s, 6333  %shl = shl i128 %r, %mask34  ret i128 %shl35}36 37define i128 @ashr(i128 %r, i128 %s) nounwind readnone {38; CHECK-LABEL: ashr:39; CHECK:       // %bb.0:40; CHECK-NEXT:    lsr x8, x0, x241; CHECK-NEXT:    mvn w9, w242; CHECK-NEXT:    lsl x10, x1, #143; CHECK-NEXT:    lsl x9, x10, x944; CHECK-NEXT:    orr x8, x9, x845; CHECK-NEXT:    asr x9, x1, x246; CHECK-NEXT:    tst x2, #0x4047; CHECK-NEXT:    csel x0, x9, x8, ne48; CHECK-NEXT:    asr x8, x1, #6349; CHECK-NEXT:    csel x1, x8, x9, ne50; CHECK-NEXT:    ret51  %shr = ashr i128 %r, %s52  ret i128 %shr53}54 55define i128 @ashr_mask(i128 %r, i128 %s) nounwind readnone {56; CHECK-LABEL: ashr_mask:57; CHECK:       // %bb.0:58; CHECK-NEXT:    lsr x8, x0, x259; CHECK-NEXT:    lsl x9, x1, #160; CHECK-NEXT:    and x10, x2, #0x3f61; CHECK-NEXT:    eor x10, x10, #0x3f62; CHECK-NEXT:    lsl x9, x9, x1063; CHECK-NEXT:    asr x1, x1, x264; CHECK-NEXT:    orr x0, x9, x865; CHECK-NEXT:    ret66  %mask = and i128 %s, 6367  %shr = ashr i128 %r, %mask68  ret i128 %shr69}70 71define i128 @lshr(i128 %r, i128 %s) nounwind readnone {72; CHECK-LABEL: lshr:73; CHECK:       // %bb.0:74; CHECK-NEXT:    lsr x8, x0, x275; CHECK-NEXT:    mvn w9, w276; CHECK-NEXT:    lsl x10, x1, #177; CHECK-NEXT:    lsl x9, x10, x978; CHECK-NEXT:    orr x8, x9, x879; CHECK-NEXT:    lsr x9, x1, x280; CHECK-NEXT:    tst x2, #0x4081; CHECK-NEXT:    csel x0, x9, x8, ne82; CHECK-NEXT:    csel x1, xzr, x9, ne83; CHECK-NEXT:    ret84  %shr = lshr i128 %r, %s85  ret i128 %shr86}87 88define i128 @lshr_mask(i128 %r, i128 %s) nounwind readnone {89; CHECK-LABEL: lshr_mask:90; CHECK:       // %bb.0:91; CHECK-NEXT:    lsr x8, x0, x292; CHECK-NEXT:    lsl x9, x1, #193; CHECK-NEXT:    and x10, x2, #0x3f94; CHECK-NEXT:    eor x10, x10, #0x3f95; CHECK-NEXT:    lsl x9, x9, x1096; CHECK-NEXT:    lsr x1, x1, x297; CHECK-NEXT:    orr x0, x9, x898; CHECK-NEXT:    ret99  %mask = and i128 %s, 63100  %shr = lshr i128 %r, %mask101  ret i128 %shr102}103