76 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=arm64-eabi | FileCheck %s3; RUN: llc < %s -mtriple=arm64-eabi -mattr=+cssc | FileCheck %s -check-prefix=CHECK-CSSC4 5define i8 @test_i8(i8 %a) nounwind {6; CHECK-LABEL: test_i8:7; CHECK: // %bb.0:8; CHECK-NEXT: sxtb w8, w09; CHECK-NEXT: cmp w8, #010; CHECK-NEXT: cneg w0, w8, mi11; CHECK-NEXT: ret12;13; CHECK-CSSC-LABEL: test_i8:14; CHECK-CSSC: // %bb.0:15; CHECK-CSSC-NEXT: sxtb w8, w016; CHECK-CSSC-NEXT: abs w0, w817; CHECK-CSSC-NEXT: ret18 %tmp1neg = sub i8 0, %a19 %b = icmp sgt i8 %a, -120 %abs = select i1 %b, i8 %a, i8 %tmp1neg21 ret i8 %abs22}23 24define i16 @test_i16(i16 %a) nounwind {25; CHECK-LABEL: test_i16:26; CHECK: // %bb.0:27; CHECK-NEXT: sxth w8, w028; CHECK-NEXT: cmp w8, #029; CHECK-NEXT: cneg w0, w8, mi30; CHECK-NEXT: ret31;32; CHECK-CSSC-LABEL: test_i16:33; CHECK-CSSC: // %bb.0:34; CHECK-CSSC-NEXT: sxth w8, w035; CHECK-CSSC-NEXT: abs w0, w836; CHECK-CSSC-NEXT: ret37 %tmp1neg = sub i16 0, %a38 %b = icmp sgt i16 %a, -139 %abs = select i1 %b, i16 %a, i16 %tmp1neg40 ret i16 %abs41}42 43define i32 @test_i32(i32 %a) nounwind {44; CHECK-LABEL: test_i32:45; CHECK: // %bb.0:46; CHECK-NEXT: cmp w0, #047; CHECK-NEXT: cneg w0, w0, mi48; CHECK-NEXT: ret49;50; CHECK-CSSC-LABEL: test_i32:51; CHECK-CSSC: // %bb.0:52; CHECK-CSSC-NEXT: abs w0, w053; CHECK-CSSC-NEXT: ret54 %tmp1neg = sub i32 0, %a55 %b = icmp sgt i32 %a, -156 %abs = select i1 %b, i32 %a, i32 %tmp1neg57 ret i32 %abs58}59 60define i64 @test_i64(i64 %a) nounwind {61; CHECK-LABEL: test_i64:62; CHECK: // %bb.0:63; CHECK-NEXT: cmp x0, #064; CHECK-NEXT: cneg x0, x0, mi65; CHECK-NEXT: ret66;67; CHECK-CSSC-LABEL: test_i64:68; CHECK-CSSC: // %bb.0:69; CHECK-CSSC-NEXT: abs x0, x070; CHECK-CSSC-NEXT: ret71 %tmp1neg = sub i64 0, %a72 %b = icmp sgt i64 %a, -173 %abs = select i1 %b, i64 %a, i64 %tmp1neg74 ret i64 %abs75}76