[Alignment][NFC] migrate DataLayout internal struct to llvm::Align
[llvm-core.git] / test / CodeGen / AVR / add.ll
blobcd3a69e6454c9bce1ccd6e280ca1ab7d5619f846
1 ; RUN: llc -mattr=addsubiw < %s -march=avr | FileCheck %s
3 define i8 @add8_reg_reg(i8 %a, i8 %b) {
4 ; CHECK-LABEL: add8_reg_reg:
5 ; CHECK: add r24, r22
6     %result = add i8 %a, %b
7     ret i8 %result
10 define i8 @add8_reg_imm(i8 %a) {
11 ; CHECK-LABEL: add8_reg_imm:
12 ; CHECK: subi r24, -5
13     %result = add i8 %a, 5
14     ret i8 %result
17 define i8 @add8_reg_increment(i8 %a) {
18 ; CHECK-LABEL: add8_reg_increment:
19 ; CHECK: inc r24
20     %result = add i8 %a, 1
21     ret i8 %result
25 define i16 @add16_reg_reg(i16 %a, i16 %b) {
26 ; CHECK-LABEL: add16_reg_reg:
27 ; CHECK: add r24, r22
28 ; CHECK: adc r25, r23
29     %result = add i16 %a, %b
30     ret i16 %result
33 define i16 @add16_reg_imm(i16 %a) {
34 ; CHECK-LABEL: add16_reg_imm:
35 ; CHECK: adiw r24, 63
36     %result = add i16 %a, 63
37     ret i16 %result
40 define i16 @add16_reg_imm_subi(i16 %a) {
41 ; CHECK-LABEL: add16_reg_imm_subi:
42 ; CHECK: subi r24, 133
43 ; CHECK: sbci r25, 255
44     %result = add i16 %a, 123
45     ret i16 %result
48 define i32 @add32_reg_reg(i32 %a, i32 %b) {
49 ; CHECK-LABEL: add32_reg_reg:
50 ; CHECK: add r22, r18
51 ; CHECK: adc r23, r19
52 ; CHECK: adc r24, r20
53 ; CHECK: adc r25, r21
54     %result = add i32 %a, %b
55     ret i32 %result
58 define i32 @add32_reg_imm(i32 %a) {
59 ; CHECK-LABEL: add32_reg_imm:
60 ; CHECK: subi r22, 251
61 ; CHECK: sbci r23, 255
62 ; CHECK: sbci r24, 255
63 ; CHECK: sbci r25, 255
64     %result = add i32 %a, 5
65     ret i32 %result
68 define i64 @add64_reg_reg(i64 %a, i64 %b) {
69 ; CHECK-LABEL: add64_reg_reg:
70 ; CHECK: add r18, r10
71 ; CHECK: adc r20, r12
72 ; CHECK: adc r21, r13
73 ; CHECK: adc r22, r14
74 ; CHECK: adc r23, r15
75 ; CHECK: adc r24, r16
76 ; CHECK: adc r25, r17
77     %result = add i64 %a, %b
78     ret i64 %result
81 define i64 @add64_reg_imm(i64 %a) {
82 ; CHECK-LABEL: add64_reg_imm:
83 ; CHECK: subi r18, 251
84 ; CHECK: sbci r19, 255
85 ; CHECK: sbci r20, 255
86 ; CHECK: sbci r21, 255
87 ; CHECK: sbci r22, 255
88 ; CHECK: sbci r23, 255
89 ; CHECK: sbci r24, 255
90 ; CHECK: sbci r25, 255
91     %result = add i64 %a, 5
92     ret i64 %result