brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · e8ddf84 Raw
101 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 62; RUN: llc --mtriple=loongarch32 --mattr=+32s,+lsx < %s | FileCheck %s --check-prefixes=CHECK,LA323; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s --check-prefixes=CHECK,LA644 5define i8 @extractelt_add_v16i8(ptr %p) {6; CHECK-LABEL: extractelt_add_v16i8:7; CHECK:       # %bb.0: # %entry8; CHECK-NEXT:    vld $vr0, $a0, 09; CHECK-NEXT:    vaddi.bu $vr0, $vr0, 1310; CHECK-NEXT:    vpickve2gr.b $a0, $vr0, 211; CHECK-NEXT:    ret12entry:13  %x = load <16 x i8>, ptr %p14  %add = add <16 x i8> %x, <i8 11, i8 12, i8 13, i8 14, i8 11, i8 12, i8 13, i8 14, i8 11, i8 12, i8 13, i8 14, i8 11, i8 12, i8 13, i8 14>15  %ext = extractelement <16 x i8> %add, i32 216  ret i8 %ext17}18 19define i16 @extractelt_add_v8i16(ptr %p) {20; CHECK-LABEL: extractelt_add_v8i16:21; CHECK:       # %bb.0: # %entry22; CHECK-NEXT:    vld $vr0, $a0, 023; CHECK-NEXT:    vaddi.hu $vr0, $vr0, 1324; CHECK-NEXT:    vpickve2gr.h $a0, $vr0, 225; CHECK-NEXT:    ret26entry:27  %x = load <8 x i16>, ptr %p28  %add = add <8 x i16> %x, <i16 11, i16 12, i16 13, i16 14, i16 11, i16 12, i16 13, i16 14>29  %ext = extractelement <8 x i16> %add, i32 230  ret i16 %ext31}32 33define i32 @extractelt_add_v4i32(ptr %p) {34; LA32-LABEL: extractelt_add_v4i32:35; LA32:       # %bb.0: # %entry36; LA32-NEXT:    ld.w $a0, $a0, 837; LA32-NEXT:    addi.w $a0, $a0, 1338; LA32-NEXT:    ret39;40; LA64-LABEL: extractelt_add_v4i32:41; LA64:       # %bb.0: # %entry42; LA64-NEXT:    vld $vr0, $a0, 043; LA64-NEXT:    vaddi.wu $vr0, $vr0, 1344; LA64-NEXT:    vpickve2gr.w $a0, $vr0, 245; LA64-NEXT:    ret46entry:47  %x = load <4 x i32>, ptr %p48  %add = add <4 x i32> %x, <i32 11, i32 12, i32 13, i32 14>49  %ext = extractelement <4 x i32> %add, i32 250  ret i32 %ext51}52 53define i64 @extractelt_add_v2i64(ptr %p) {54; LA32-LABEL: extractelt_add_v2i64:55; LA32:       # %bb.0: # %entry56; LA32-NEXT:    vld $vr0, $a0, 057; LA32-NEXT:    vaddi.du $vr0, $vr0, 1258; LA32-NEXT:    vpickve2gr.w $a0, $vr0, 259; LA32-NEXT:    vpickve2gr.w $a1, $vr0, 360; LA32-NEXT:    ret61;62; LA64-LABEL: extractelt_add_v2i64:63; LA64:       # %bb.0: # %entry64; LA64-NEXT:    ld.d $a0, $a0, 865; LA64-NEXT:    addi.d $a0, $a0, 1266; LA64-NEXT:    ret67entry:68  %x = load <2 x i64>, ptr %p69  %add = add <2 x i64> %x, <i64 11, i64 12>70  %ext = extractelement <2 x i64> %add, i32 171  ret i64 %ext72}73 74define float @extractelt_fadd_v4f32(ptr %p) {75; CHECK-LABEL: extractelt_fadd_v4f32:76; CHECK:       # %bb.0: # %entry77; CHECK-NEXT:    fld.s $fa0, $a0, 878; CHECK-NEXT:    vldi $vr1, -123879; CHECK-NEXT:    fadd.s $fa0, $fa0, $fa180; CHECK-NEXT:    ret81entry:82  %x = load <4 x float>, ptr %p83  %add = fadd <4 x float> %x, <float 11.0, float 12.0, float 13.0, float 14.0>84  %ext = extractelement <4 x float> %add, i32 285  ret float %ext86}87 88define double @extractelt_fadd_v2f64(ptr %p) {89; CHECK-LABEL: extractelt_fadd_v2f64:90; CHECK:       # %bb.0: # %entry91; CHECK-NEXT:    fld.d $fa0, $a0, 892; CHECK-NEXT:    vldi $vr1, -98493; CHECK-NEXT:    fadd.d $fa0, $fa0, $fa194; CHECK-NEXT:    ret95entry:96  %x = load <2 x double>, ptr %p97  %add = fadd <2 x double> %x, <double 11.0, double 12.0>98  %ext = extractelement <2 x double> %add, i32 199  ret double %ext100}101