84 lines · plain
1; RUN: llc -mtriple=hexagon < %s | FileCheck %s2 3; CHECK-LABEL: f0:4; CHECK: r0 = abs(r0)5define i32 @f0(i32 %a0) #0 {6 %v0 = ashr i32 %a0, 317 %v1 = xor i32 %a0, %v08 %v2 = sub i32 %v1, %v09 ret i32 %v210}11 12; CHECK-LABEL: f1:13; CHECK: r0 = abs(r0)14define i32 @f1(i32 %a0) #0 {15 %v0 = ashr i32 %a0, 3116 %v1 = add i32 %a0, %v017 %v2 = xor i32 %v0, %v118 ret i32 %v219}20 21; CHECK-LABEL: f2:22; CHECK: r0 = abs(r0)23define i32 @f2(i32 %a0) #0 {24 %v0 = icmp slt i32 %a0, 025 %v1 = sub nsw i32 0, %a026 %v2 = select i1 %v0, i32 %v1, i32 %a027 ret i32 %v228}29 30; CHECK-LABEL: f3:31; CHECK: r1:0 = abs(r1:0)32define i64 @f3(i64 %a0) #0 {33 %v0 = ashr i64 %a0, 6334 %v1 = xor i64 %a0, %v035 %v2 = sub i64 %v1, %v036 ret i64 %v237}38 39; CHECK-LABEL: f4:40; CHECK: r1:0 = abs(r1:0)41define i64 @f4(i64 %a0) #0 {42 %v0 = ashr i64 %a0, 6343 %v1 = add i64 %a0, %v044 %v2 = xor i64 %v0, %v145 ret i64 %v246}47 48; CHECK-LABEL: f5:49; CHECK: r1:0 = abs(r1:0)50define i64 @f5(i64 %a0) #0 {51 %v0 = icmp slt i64 %a0, 052 %v1 = sub nsw i64 0, %a053 %v2 = select i1 %v0, i64 %v1, i64 %a054 ret i64 %v255}56 57; CHECK-LABEL: f6:58; CHECK: r[[R60:[0-9]+]] = abs(r0)59; CHECK: r[[R61:[0-9]+]] = asr(r0,#31)60; CHECK: r0 = addasl(r[[R61]],r[[R60]],#1)61define i32 @f6(i32 %a0) #0 {62 %v0 = ashr i32 %a0, 3163 %v1 = add i32 %a0, %v064 %v2 = xor i32 %v0, %v165 %v3 = mul i32 %v2, 266 %v4 = add i32 %v0, %v367 ret i32 %v468}69 70; CHECK-LABEL: f7:71; CHECK: r[[R70:[0-9]+]] = abs(r0)72; CHECK: r[[R71:[0-9]+]] = asr(r0,#31)73; CHECK: r0 = addasl(r[[R71]],r[[R70]],#1)74define i32 @f7(i32 %a0) #0 {75 %v0 = ashr i32 %a0, 3176 %v1 = add i32 %v0, %a077 %v2 = xor i32 %v0, %v178 %v3 = shl i32 %v2, 179 %v4 = add i32 %v0, %v380 ret i32 %v481}82 83attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="-packets" }84