brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 4986b12 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,+lasx < %s | FileCheck %s --check-prefixes=CHECK,LA323; RUN: llc --mtriple=loongarch64 --mattr=+lasx < %s | FileCheck %s --check-prefixes=CHECK,LA644 5define i8 @extractelt_add_v32i8(ptr %p) {6; CHECK-LABEL: extractelt_add_v32i8:7; CHECK:       # %bb.0: # %entry8; CHECK-NEXT:    xvld $xr0, $a0, 09; CHECK-NEXT:    xvaddi.bu $xr0, $xr0, 1310; CHECK-NEXT:    vpickve2gr.b $a0, $vr0, 211; CHECK-NEXT:    ret12entry:13  %x = load <32 x i8>, ptr %p14  %add = add <32 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, 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 <32 x i8> %add, i32 216  ret i8 %ext17}18 19define i16 @extractelt_add_v16i16(ptr %p) {20; CHECK-LABEL: extractelt_add_v16i16:21; CHECK:       # %bb.0: # %entry22; CHECK-NEXT:    xvld $xr0, $a0, 023; CHECK-NEXT:    xvaddi.hu $xr0, $xr0, 1324; CHECK-NEXT:    vpickve2gr.h $a0, $vr0, 225; CHECK-NEXT:    ret26entry:27  %x = load <16 x i16>, ptr %p28  %add = add <16 x i16> %x, <i16 11, i16 12, i16 13, i16 14, i16 11, i16 12, i16 13, i16 14, i16 11, i16 12, i16 13, i16 14, i16 11, i16 12, i16 13, i16 14>29  %ext = extractelement <16 x i16> %add, i32 230  ret i16 %ext31}32 33define i32 @extractelt_add_v8i32(ptr %p) {34; LA32-LABEL: extractelt_add_v8i32: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_v8i32:41; LA64:       # %bb.0: # %entry42; LA64-NEXT:    xvld $xr0, $a0, 043; LA64-NEXT:    xvaddi.wu $xr0, $xr0, 1344; LA64-NEXT:    xvpickve2gr.w $a0, $xr0, 245; LA64-NEXT:    ret46entry:47  %x = load <8 x i32>, ptr %p48  %add = add <8 x i32> %x, <i32 11, i32 12, i32 13, i32 14, i32 11, i32 12, i32 13, i32 14>49  %ext = extractelement <8 x i32> %add, i32 250  ret i32 %ext51}52 53define i64 @extractelt_add_v4i64(ptr %p) {54; LA32-LABEL: extractelt_add_v4i64:55; LA32:       # %bb.0: # %entry56; LA32-NEXT:    xvld $xr0, $a0, 057; LA32-NEXT:    xvaddi.du $xr0, $xr0, 1258; LA32-NEXT:    xvpickve2gr.w $a0, $xr0, 259; LA32-NEXT:    xvpickve2gr.w $a1, $xr0, 360; LA32-NEXT:    ret61;62; LA64-LABEL: extractelt_add_v4i64: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 <4 x i64>, ptr %p69  %add = add <4 x i64> %x, <i64 11, i64 12, i64 13, i64 14>70  %ext = extractelement <4 x i64> %add, i32 171  ret i64 %ext72}73 74define float @extractelt_fadd_v8f32(ptr %p) {75; CHECK-LABEL: extractelt_fadd_v8f32: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 <8 x float>, ptr %p83  %add = fadd <8 x float> %x, <float 11.0, float 12.0, float 13.0, float 14.0, float 11.0, float 12.0, float 13.0, float 14.0>84  %ext = extractelement <8 x float> %add, i32 285  ret float %ext86}87 88define double @extractelt_fadd_v4f64(ptr %p) {89; CHECK-LABEL: extractelt_fadd_v4f64: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 <4 x double>, ptr %p97  %add = fadd <4 x double> %x, <double 11.0, double 12.0, double 13.0, double 14.0>98  %ext = extractelement <4 x double> %add, i32 199  ret double %ext100}101