xref: /llvm-project/llvm/test/CodeGen/M68k/Arith/unary.ll (revision 614a5780347ff0c8f82b8867660ea7fb4d9fdccb)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --filter-out ";*\.cfi_*"
2; RUN: llc < %s -mtriple=m68k-linux -verify-machineinstrs | FileCheck %s
3
4define i64 @notll(i64 %x) {
5; CHECK-LABEL: notll:
6; CHECK:  ; %bb.0:
7; CHECK:    move.l (4,%sp), %d0
8; CHECK:    not.l %d0
9; CHECK:    move.l (8,%sp), %d1
10; CHECK:    not.l %d1
11; CHECK:    rts
12  %not = xor i64 %x, -1
13  ret i64 %not
14}
15
16define i32 @notl(i32 %x) {
17; CHECK-LABEL: notl:
18; CHECK:  ; %bb.0:
19; CHECK:    move.l (4,%sp), %d0
20; CHECK:    not.l %d0
21; CHECK:    rts
22  %not = xor i32 %x, -1
23  ret i32 %not
24}
25
26define i16 @nots(i16 %x) {
27; CHECK-LABEL: nots:
28; CHECK:  ; %bb.0:
29; CHECK:    move.w (6,%sp), %d0
30; CHECK:    not.w %d0
31; CHECK:    rts
32  %not = xor i16 %x, -1
33  ret i16 %not
34}
35
36define i8 @notb(i8 %x) {
37; CHECK-LABEL: notb:
38; CHECK:  ; %bb.0:
39; CHECK:    move.b (7,%sp), %d0
40; CHECK:    not.b %d0
41; CHECK:    rts
42  %not = xor i8 %x, -1
43  ret i8 %not
44}
45
46define i64 @negll(i64 %x) {
47; CHECK-LABEL: negll:
48; CHECK:  ; %bb.0:
49; CHECK:    move.l (4,%sp), %d0
50; CHECK:    move.l (8,%sp), %d1
51; CHECK:    neg.l %d1
52; CHECK:    negx.l %d0
53; CHECK:    rts
54  %neg = sub i64 0, %x
55  ret i64 %neg
56}
57
58define i32 @negl(i32 %x) {
59; CHECK-LABEL: negl:
60; CHECK:  ; %bb.0:
61; CHECK:    move.l (4,%sp), %d0
62; CHECK:    neg.l %d0
63; CHECK:    rts
64  %neg = sub i32 0, %x
65  ret i32 %neg
66}
67
68define i16 @negs(i16 %x) {
69; CHECK-LABEL: negs:
70; CHECK:  ; %bb.0:
71; CHECK:    move.w (6,%sp), %d0
72; CHECK:    neg.w %d0
73; CHECK:    rts
74  %neg = sub i16 0, %x
75  ret i16 %neg
76}
77
78define i8 @negb(i8 %x) {
79; CHECK-LABEL: negb:
80; CHECK:  ; %bb.0:
81; CHECK:    move.b (7,%sp), %d0
82; CHECK:    neg.b %d0
83; CHECK:    rts
84  %neg = sub i8 0, %x
85  ret i8 %neg
86}
87