1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=hexagon < %s | FileCheck %s 3 4define <128 x i8> @abs80(<128 x i8> %a0) #0 { 5; CHECK-LABEL: abs80: 6; CHECK: // %bb.0: 7; CHECK-NEXT: { 8; CHECK-NEXT: v3:2.h = vsxt(v0.b) 9; CHECK-NEXT: } 10; CHECK-NEXT: { 11; CHECK-NEXT: v3:2.b = vshuffoe(v3.b,v2.b) 12; CHECK-NEXT: } 13; CHECK-NEXT: { 14; CHECK-NEXT: v1.b = vadd(v0.b,v3.b) 15; CHECK-NEXT: } 16; CHECK-NEXT: { 17; CHECK-NEXT: v0 = vxor(v0,v1) 18; CHECK-NEXT: jumpr r31 19; CHECK-NEXT: } 20 %v0 = sub <128 x i8> zeroinitializer, %a0 21 %v1 = icmp sgt <128 x i8> %a0, zeroinitializer 22 %v2 = select <128 x i1> %v1, <128 x i8> %a0, <128 x i8> %v0 23 ret <128 x i8> %v2 24} 25 26define <128 x i8> @abs81(<128 x i8> %a0) #1 { 27; CHECK-LABEL: abs81: 28; CHECK: // %bb.0: 29; CHECK-NEXT: { 30; CHECK-NEXT: v0.b = vabs(v0.b) 31; CHECK-NEXT: jumpr r31 32; CHECK-NEXT: } 33 %v0 = sub <128 x i8> zeroinitializer, %a0 34 %v1 = icmp sgt <128 x i8> %a0, zeroinitializer 35 %v2 = select <128 x i1> %v1, <128 x i8> %a0, <128 x i8> %v0 36 ret <128 x i8> %v2 37} 38 39define <64 x i16> @abs16(<64 x i16> %a0) #0 { 40; CHECK-LABEL: abs16: 41; CHECK: // %bb.0: 42; CHECK-NEXT: { 43; CHECK-NEXT: v0.h = vabs(v0.h) 44; CHECK-NEXT: jumpr r31 45; CHECK-NEXT: } 46 %v0 = sub <64 x i16> zeroinitializer, %a0 47 %v1 = icmp sgt <64 x i16> %a0, zeroinitializer 48 %v2 = select <64 x i1> %v1, <64 x i16> %a0, <64 x i16> %v0 49 ret <64 x i16> %v2 50} 51 52define <32 x i32> @abs32(<32 x i32> %a0) #0 { 53; CHECK-LABEL: abs32: 54; CHECK: // %bb.0: 55; CHECK-NEXT: { 56; CHECK-NEXT: v0.w = vabs(v0.w) 57; CHECK-NEXT: jumpr r31 58; CHECK-NEXT: } 59 %v0 = sub <32 x i32> zeroinitializer, %a0 60 %v1 = icmp sgt <32 x i32> %a0, zeroinitializer 61 %v2 = select <32 x i1> %v1, <32 x i32> %a0, <32 x i32> %v0 62 ret <32 x i32> %v2 63} 64 65attributes #0 = { nounwind readnone "target-features"="+hvxv60,+hvx-length128b" } 66attributes #1 = { nounwind readnone "target-features"="+hvxv62,+hvx-length128b" } 67