brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.4 KiB · 6f8ccf4 Raw
121 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 %s3; RUN: llc --mtriple=loongarch64 --mattr=+lsx < %s | FileCheck %s4 5define void @vabs_b(ptr %dst, ptr %src) {6; CHECK-LABEL: vabs_b:7; CHECK:       # %bb.0: # %entry8; CHECK-NEXT:    vld $vr0, $a1, 09; CHECK-NEXT:    vsigncov.b $vr0, $vr0, $vr010; CHECK-NEXT:    vst $vr0, $a0, 011; CHECK-NEXT:    ret12entry:13  %a = load <16 x i8>, ptr %src14  %b = tail call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a, i1 true)15  store <16 x i8> %b, ptr %dst16  ret void17}18 19define void @vabs_b_1(ptr %dst, ptr %src) {20; CHECK-LABEL: vabs_b_1:21; CHECK:       # %bb.0: # %entry22; CHECK-NEXT:    vld $vr0, $a1, 023; CHECK-NEXT:    vsigncov.b $vr0, $vr0, $vr024; CHECK-NEXT:    vst $vr0, $a0, 025; CHECK-NEXT:    ret26entry:27  %a = load <16 x i8>, ptr %src28  %b = tail call <16 x i8> @llvm.abs.v16i8(<16 x i8> %a, i1 false)29  store <16 x i8> %b, ptr %dst30  ret void31}32 33define void @vabs_h(ptr %dst, ptr %src) {34; CHECK-LABEL: vabs_h:35; CHECK:       # %bb.0: # %entry36; CHECK-NEXT:    vld $vr0, $a1, 037; CHECK-NEXT:    vsigncov.h $vr0, $vr0, $vr038; CHECK-NEXT:    vst $vr0, $a0, 039; CHECK-NEXT:    ret40entry:41  %a = load <8 x i16>, ptr %src42  %b = tail call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a, i1 true)43  store <8 x i16> %b, ptr %dst44  ret void45}46 47define void @vabs_h_1(ptr %dst, ptr %src) {48; CHECK-LABEL: vabs_h_1:49; CHECK:       # %bb.0: # %entry50; CHECK-NEXT:    vld $vr0, $a1, 051; CHECK-NEXT:    vsigncov.h $vr0, $vr0, $vr052; CHECK-NEXT:    vst $vr0, $a0, 053; CHECK-NEXT:    ret54entry:55  %a = load <8 x i16>, ptr %src56  %b = tail call <8 x i16> @llvm.abs.v8i16(<8 x i16> %a, i1 false)57  store <8 x i16> %b, ptr %dst58  ret void59}60 61define void @vabs_w(ptr %dst, ptr %src) {62; CHECK-LABEL: vabs_w:63; CHECK:       # %bb.0: # %entry64; CHECK-NEXT:    vld $vr0, $a1, 065; CHECK-NEXT:    vsigncov.w $vr0, $vr0, $vr066; CHECK-NEXT:    vst $vr0, $a0, 067; CHECK-NEXT:    ret68entry:69  %a = load <4 x i32>, ptr %src70  %b = tail call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a, i1 true)71  store <4 x i32> %b, ptr %dst72  ret void73}74 75define void @vabs_w_1(ptr %dst, ptr %src) {76; CHECK-LABEL: vabs_w_1:77; CHECK:       # %bb.0: # %entry78; CHECK-NEXT:    vld $vr0, $a1, 079; CHECK-NEXT:    vsigncov.w $vr0, $vr0, $vr080; CHECK-NEXT:    vst $vr0, $a0, 081; CHECK-NEXT:    ret82entry:83  %a = load <4 x i32>, ptr %src84  %b = tail call <4 x i32> @llvm.abs.v4i32(<4 x i32> %a, i1 false)85  store <4 x i32> %b, ptr %dst86  ret void87}88 89define void @vabs_d(ptr %dst, ptr %src) {90; CHECK-LABEL: vabs_d:91; CHECK:       # %bb.0: # %entry92; CHECK-NEXT:    vld $vr0, $a1, 093; CHECK-NEXT:    vsigncov.d $vr0, $vr0, $vr094; CHECK-NEXT:    vst $vr0, $a0, 095; CHECK-NEXT:    ret96entry:97  %a = load <2 x i64>, ptr %src98  %b = tail call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a, i1 true)99  store <2 x i64> %b, ptr %dst100  ret void101}102 103define void @vabs_d_1(ptr %dst, ptr %src) {104; CHECK-LABEL: vabs_d_1:105; CHECK:       # %bb.0: # %entry106; CHECK-NEXT:    vld $vr0, $a1, 0107; CHECK-NEXT:    vsigncov.d $vr0, $vr0, $vr0108; CHECK-NEXT:    vst $vr0, $a0, 0109; CHECK-NEXT:    ret110entry:111  %a = load <2 x i64>, ptr %src112  %b = tail call <2 x i64> @llvm.abs.v2i64(<2 x i64> %a, i1 false)113  store <2 x i64> %b, ptr %dst114  ret void115}116 117declare <16 x i8> @llvm.abs.v16i8(<16 x i8>, i1)118declare <8 x i16> @llvm.abs.v8i16(<8 x i16>, i1)119declare <4 x i32> @llvm.abs.v4i32(<4 x i32>, i1)120declare <2 x i64> @llvm.abs.v2i64(<2 x i64>, i1)121