brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · c5d2000 Raw
94 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; 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 <32 x i8> @insert_extract_v32i8(<32 x i8> %a) nounwind {6; CHECK-LABEL: insert_extract_v32i8:7; CHECK:       # %bb.0: # %entry8; CHECK-NEXT:    xvextrins.b $xr0, $xr0, 319; CHECK-NEXT:    ret10entry:11  %b_lo = extractelement <32 x i8> %a, i32 1512  %b_hi = extractelement <32 x i8> %a, i32 3113  %c = insertelement <32 x i8> %a, i8 %b_lo, i32 114  %d = insertelement <32 x i8> %c, i8 %b_hi, i32 1715  ret <32 x i8> %d16}17 18define <16 x i16> @insert_extract_v16i16(<16 x i16> %a) nounwind {19; CHECK-LABEL: insert_extract_v16i16:20; CHECK:       # %bb.0: # %entry21; CHECK-NEXT:    xvextrins.h $xr0, $xr0, 2322; CHECK-NEXT:    ret23entry:24  %b_lo = extractelement <16 x i16> %a, i32 725  %b_hi = extractelement <16 x i16> %a, i32 1526  %c = insertelement <16 x i16> %a, i16 %b_lo, i32 127  %d = insertelement <16 x i16> %c, i16 %b_hi, i32 928  ret <16 x i16> %d29}30 31define <8 x i32> @insert_extract_v8i32(<8 x i32> %a) nounwind {32; CHECK-LABEL: insert_extract_v8i32:33; CHECK:       # %bb.0: # %entry34; CHECK-NEXT:    xvextrins.w $xr0, $xr0, 1935; CHECK-NEXT:    ret36entry:37  %b_lo = extractelement <8 x i32> %a, i32 338  %b_hi = extractelement <8 x i32> %a, i32 739  %c = insertelement <8 x i32> %a, i32 %b_lo, i32 140  %d = insertelement <8 x i32> %c, i32 %b_hi, i32 541  ret <8 x i32> %d42}43 44define <8 x float> @insert_extract_v8f32(<8 x float> %a) nounwind {45; CHECK-LABEL: insert_extract_v8f32:46; CHECK:       # %bb.0: # %entry47; CHECK-NEXT:    xvextrins.w $xr0, $xr0, 1948; CHECK-NEXT:    ret49entry:50  %b_lo = extractelement <8 x float> %a, i32 351  %b_hi = extractelement <8 x float> %a, i32 752  %c = insertelement <8 x float> %a, float %b_lo, i32 153  %d = insertelement <8 x float> %c, float %b_hi, i32 554  ret <8 x float> %d55}56 57define <4 x i64> @insert_extract_v4i64(<4 x i64> %a) nounwind {58; LA32-LABEL: insert_extract_v4i64:59; LA32:       # %bb.0: # %entry60; LA32-NEXT:    xvpickve.w $xr1, $xr0, 261; LA32-NEXT:    xvpickve.w $xr2, $xr0, 362; LA32-NEXT:    xvpickve.w $xr3, $xr0, 663; LA32-NEXT:    xvpickve.w $xr4, $xr0, 764; LA32-NEXT:    xvinsve0.w $xr0, $xr1, 065; LA32-NEXT:    xvinsve0.w $xr0, $xr2, 166; LA32-NEXT:    xvinsve0.w $xr0, $xr3, 467; LA32-NEXT:    xvinsve0.w $xr0, $xr4, 568; LA32-NEXT:    ret69;70; LA64-LABEL: insert_extract_v4i64:71; LA64:       # %bb.0: # %entry72; LA64-NEXT:    xvextrins.d $xr0, $xr0, 173; LA64-NEXT:    ret74entry:75  %b_lo = extractelement <4 x i64> %a, i32 176  %b_hi = extractelement <4 x i64> %a, i32 377  %c = insertelement <4 x i64> %a, i64 %b_lo, i32 078  %d = insertelement <4 x i64> %c, i64 %b_hi, i32 279  ret <4 x i64> %d80}81 82define <4 x double> @insert_extract_v4f64(<4 x double> %a) nounwind {83; CHECK-LABEL: insert_extract_v4f64:84; CHECK:       # %bb.0: # %entry85; CHECK-NEXT:    xvextrins.d $xr0, $xr0, 186; CHECK-NEXT:    ret87entry:88  %b_lo = extractelement <4 x double> %a, i32 189  %b_hi = extractelement <4 x double> %a, i32 390  %c = insertelement <4 x double> %a, double %b_lo, i32 091  %d = insertelement <4 x double> %c, double %b_hi, i32 292  ret <4 x double> %d93}94