[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / Thumb / iabs.ll
blob6bebea67e265a3b87587ef29530f44bcb8212468
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=thumbv6m-none-eabi | FileCheck %s
4 define i8 @test_i8(i8 %a) nounwind {
5 ; CHECK-LABEL: test_i8:
6 ; CHECK:       @ %bb.0:
7 ; CHECK-NEXT:    sxtb r1, r0
8 ; CHECK-NEXT:    asrs r1, r1, #7
9 ; CHECK-NEXT:    eors r0, r1
10 ; CHECK-NEXT:    subs r0, r0, r1
11 ; CHECK-NEXT:    bx lr
12   %tmp1neg = sub i8 0, %a
13   %b = icmp sgt i8 %a, -1
14   %abs = select i1 %b, i8 %a, i8 %tmp1neg
15   ret i8 %abs
18 define i16 @test_i16(i16 %a) nounwind {
19 ; CHECK-LABEL: test_i16:
20 ; CHECK:       @ %bb.0:
21 ; CHECK-NEXT:    sxth r1, r0
22 ; CHECK-NEXT:    asrs r1, r1, #15
23 ; CHECK-NEXT:    eors r0, r1
24 ; CHECK-NEXT:    subs r0, r0, r1
25 ; CHECK-NEXT:    bx lr
26   %tmp1neg = sub i16 0, %a
27   %b = icmp sgt i16 %a, -1
28   %abs = select i1 %b, i16 %a, i16 %tmp1neg
29   ret i16 %abs
32 define i32 @test_i32(i32 %a) nounwind {
33 ; CHECK-LABEL: test_i32:
34 ; CHECK:       @ %bb.0:
35 ; CHECK-NEXT:    asrs r1, r0, #31
36 ; CHECK-NEXT:    eors r0, r1
37 ; CHECK-NEXT:    subs r0, r0, r1
38 ; CHECK-NEXT:    bx lr
39   %tmp1neg = sub i32 0, %a
40   %b = icmp sgt i32 %a, -1
41   %abs = select i1 %b, i32 %a, i32 %tmp1neg
42   ret i32 %abs
45 define i64 @test_i64(i64 %a) nounwind {
46 ; CHECK-LABEL: test_i64:
47 ; CHECK:       @ %bb.0:
48 ; CHECK-NEXT:    asrs r2, r1, #31
49 ; CHECK-NEXT:    eors r1, r2
50 ; CHECK-NEXT:    eors r0, r2
51 ; CHECK-NEXT:    subs r0, r0, r2
52 ; CHECK-NEXT:    sbcs r1, r2
53 ; CHECK-NEXT:    bx lr
54   %tmp1neg = sub i64 0, %a
55   %b = icmp sgt i64 %a, -1
56   %abs = select i1 %b, i64 %a, i64 %tmp1neg
57   ret i64 %abs