brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 97af45e Raw
160 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 -mattr=+d < %s | FileCheck %s --check-prefix=LA323; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s --check-prefix=LA644 5;; Exercise the 'shl' LLVM IR: https://llvm.org/docs/LangRef.html#shl-instruction6 7define i1 @shl_i1(i1 %x, i1 %y) {8; LA32-LABEL: shl_i1:9; LA32:       # %bb.0:10; LA32-NEXT:    ret11;12; LA64-LABEL: shl_i1:13; LA64:       # %bb.0:14; LA64-NEXT:    ret15  %shl = shl i1 %x, %y16  ret i1 %shl17}18 19define i8 @shl_i8(i8 %x, i8 %y) {20; LA32-LABEL: shl_i8:21; LA32:       # %bb.0:22; LA32-NEXT:    sll.w $a0, $a0, $a123; LA32-NEXT:    ret24;25; LA64-LABEL: shl_i8:26; LA64:       # %bb.0:27; LA64-NEXT:    sll.d $a0, $a0, $a128; LA64-NEXT:    ret29  %shl = shl i8 %x, %y30  ret i8 %shl31}32 33define i16 @shl_i16(i16 %x, i16 %y) {34; LA32-LABEL: shl_i16:35; LA32:       # %bb.0:36; LA32-NEXT:    sll.w $a0, $a0, $a137; LA32-NEXT:    ret38;39; LA64-LABEL: shl_i16:40; LA64:       # %bb.0:41; LA64-NEXT:    sll.d $a0, $a0, $a142; LA64-NEXT:    ret43  %shl = shl i16 %x, %y44  ret i16 %shl45}46 47define i32 @shl_i32(i32 %x, i32 %y) {48; LA32-LABEL: shl_i32:49; LA32:       # %bb.0:50; LA32-NEXT:    sll.w $a0, $a0, $a151; LA32-NEXT:    ret52;53; LA64-LABEL: shl_i32:54; LA64:       # %bb.0:55; LA64-NEXT:    sll.w $a0, $a0, $a156; LA64-NEXT:    ret57  %shl = shl i32 %x, %y58  ret i32 %shl59}60 61define i64 @shl_i64(i64 %x, i64 %y) {62; LA32-LABEL: shl_i64:63; LA32:       # %bb.0:64; LA32-NEXT:    addi.w $a3, $a2, -3265; LA32-NEXT:    bltz $a3, .LBB4_266; LA32-NEXT:  # %bb.1:67; LA32-NEXT:    sll.w $a1, $a0, $a368; LA32-NEXT:    b .LBB4_369; LA32-NEXT:  .LBB4_2:70; LA32-NEXT:    sll.w $a1, $a1, $a271; LA32-NEXT:    xori $a4, $a2, 3172; LA32-NEXT:    srli.w $a5, $a0, 173; LA32-NEXT:    srl.w $a4, $a5, $a474; LA32-NEXT:    or $a1, $a1, $a475; LA32-NEXT:  .LBB4_3:76; LA32-NEXT:    slti $a3, $a3, 077; LA32-NEXT:    sub.w $a3, $zero, $a378; LA32-NEXT:    sll.w $a0, $a0, $a279; LA32-NEXT:    and $a0, $a3, $a080; LA32-NEXT:    ret81;82; LA64-LABEL: shl_i64:83; LA64:       # %bb.0:84; LA64-NEXT:    sll.d $a0, $a0, $a185; LA64-NEXT:    ret86  %shl = shl i64 %x, %y87  ret i64 %shl88}89 90define i1 @shl_i1_3(i1 %x) {91; LA32-LABEL: shl_i1_3:92; LA32:       # %bb.0:93; LA32-NEXT:    ret94;95; LA64-LABEL: shl_i1_3:96; LA64:       # %bb.0:97; LA64-NEXT:    ret98  %shl = shl i1 %x, 399  ret i1 %shl100}101 102define i8 @shl_i8_3(i8 %x) {103; LA32-LABEL: shl_i8_3:104; LA32:       # %bb.0:105; LA32-NEXT:    slli.w $a0, $a0, 3106; LA32-NEXT:    ret107;108; LA64-LABEL: shl_i8_3:109; LA64:       # %bb.0:110; LA64-NEXT:    slli.d $a0, $a0, 3111; LA64-NEXT:    ret112  %shl = shl i8 %x, 3113  ret i8 %shl114}115 116define i16 @shl_i16_3(i16 %x) {117; LA32-LABEL: shl_i16_3:118; LA32:       # %bb.0:119; LA32-NEXT:    slli.w $a0, $a0, 3120; LA32-NEXT:    ret121;122; LA64-LABEL: shl_i16_3:123; LA64:       # %bb.0:124; LA64-NEXT:    slli.d $a0, $a0, 3125; LA64-NEXT:    ret126  %shl = shl i16 %x, 3127  ret i16 %shl128}129 130define i32 @shl_i32_3(i32 %x) {131; LA32-LABEL: shl_i32_3:132; LA32:       # %bb.0:133; LA32-NEXT:    slli.w $a0, $a0, 3134; LA32-NEXT:    ret135;136; LA64-LABEL: shl_i32_3:137; LA64:       # %bb.0:138; LA64-NEXT:    slli.d $a0, $a0, 3139; LA64-NEXT:    ret140  %shl = shl i32 %x, 3141  ret i32 %shl142}143 144define i64 @shl_i64_3(i64 %x) {145; LA32-LABEL: shl_i64_3:146; LA32:       # %bb.0:147; LA32-NEXT:    srli.w $a2, $a0, 29148; LA32-NEXT:    slli.w $a1, $a1, 3149; LA32-NEXT:    or $a1, $a1, $a2150; LA32-NEXT:    slli.w $a0, $a0, 3151; LA32-NEXT:    ret152;153; LA64-LABEL: shl_i64_3:154; LA64:       # %bb.0:155; LA64-NEXT:    slli.d $a0, $a0, 3156; LA64-NEXT:    ret157  %shl = shl i64 %x, 3158  ret i64 %shl159}160