Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / LoongArch / ir-instruction / sub.ll
blob12543f857a1984b1e58123990259734a5594d856
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc --mtriple=loongarch32 -mattr=+d < %s | FileCheck %s --check-prefix=LA32
3 ; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s --check-prefix=LA64
5 ;; Exercise the 'sub' LLVM IR: https://llvm.org/docs/LangRef.html#sub-instruction
7 define i1 @sub_i1(i1 %x, i1 %y) {
8 ; LA32-LABEL: sub_i1:
9 ; LA32:       # %bb.0:
10 ; LA32-NEXT:    sub.w $a0, $a0, $a1
11 ; LA32-NEXT:    ret
13 ; LA64-LABEL: sub_i1:
14 ; LA64:       # %bb.0:
15 ; LA64-NEXT:    sub.d $a0, $a0, $a1
16 ; LA64-NEXT:    ret
17   %sub = sub i1 %x, %y
18   ret i1 %sub
21 define i8 @sub_i8(i8 %x, i8 %y) {
22 ; LA32-LABEL: sub_i8:
23 ; LA32:       # %bb.0:
24 ; LA32-NEXT:    sub.w $a0, $a0, $a1
25 ; LA32-NEXT:    ret
27 ; LA64-LABEL: sub_i8:
28 ; LA64:       # %bb.0:
29 ; LA64-NEXT:    sub.d $a0, $a0, $a1
30 ; LA64-NEXT:    ret
31   %sub = sub i8 %x, %y
32   ret i8 %sub
35 define i16 @sub_i16(i16 %x, i16 %y) {
36 ; LA32-LABEL: sub_i16:
37 ; LA32:       # %bb.0:
38 ; LA32-NEXT:    sub.w $a0, $a0, $a1
39 ; LA32-NEXT:    ret
41 ; LA64-LABEL: sub_i16:
42 ; LA64:       # %bb.0:
43 ; LA64-NEXT:    sub.d $a0, $a0, $a1
44 ; LA64-NEXT:    ret
45   %sub = sub i16 %x, %y
46   ret i16 %sub
49 define i32 @sub_i32(i32 %x, i32 %y) {
50 ; LA32-LABEL: sub_i32:
51 ; LA32:       # %bb.0:
52 ; LA32-NEXT:    sub.w $a0, $a0, $a1
53 ; LA32-NEXT:    ret
55 ; LA64-LABEL: sub_i32:
56 ; LA64:       # %bb.0:
57 ; LA64-NEXT:    sub.w $a0, $a0, $a1
58 ; LA64-NEXT:    ret
59   %sub = sub i32 %x, %y
60   ret i32 %sub
63 ;; Match the pattern:
64 ;; def : PatGprGpr_32<sub, SUB_W>;
65 define signext i32 @sub_i32_sext(i32 %x, i32 %y) {
66 ; LA32-LABEL: sub_i32_sext:
67 ; LA32:       # %bb.0:
68 ; LA32-NEXT:    sub.w $a0, $a0, $a1
69 ; LA32-NEXT:    ret
71 ; LA64-LABEL: sub_i32_sext:
72 ; LA64:       # %bb.0:
73 ; LA64-NEXT:    sub.w $a0, $a0, $a1
74 ; LA64-NEXT:    ret
75   %sub = sub i32 %x, %y
76   ret i32 %sub
79 define i64 @sub_i64(i64 %x, i64 %y) {
80 ; LA32-LABEL: sub_i64:
81 ; LA32:       # %bb.0:
82 ; LA32-NEXT:    sltu $a4, $a0, $a2
83 ; LA32-NEXT:    sub.w $a1, $a1, $a3
84 ; LA32-NEXT:    sub.w $a1, $a1, $a4
85 ; LA32-NEXT:    sub.w $a0, $a0, $a2
86 ; LA32-NEXT:    ret
88 ; LA64-LABEL: sub_i64:
89 ; LA64:       # %bb.0:
90 ; LA64-NEXT:    sub.d $a0, $a0, $a1
91 ; LA64-NEXT:    ret
92   %sub = sub i64 %x, %y
93   ret i64 %sub