1; RUN: llc < %s -march=avr | FileCheck %s
2
3; Tests for the exclusive OR operation.
4
5define i8 @eor8_reg_reg(i8 %a, i8 %b) {
6; CHECK-LABEL: eor8_reg_reg:
7; CHECK: eor r24, r22
8    %result = xor i8 %a, %b
9    ret i8 %result
10}
11
12define i8 @eor8_reg_imm(i8 %a) {
13; CHECK-LABEL: eor8_reg_imm:
14; CHECK: ldi r25, 5
15; CHECK: eor r24, r25
16    %result = xor i8 %a, 5
17    ret i8 %result
18}
19
20define i16 @eor16_reg_reg(i16 %a, i16 %b) {
21; CHECK-LABEL: eor16_reg_reg:
22; CHECK: eor r24, r22
23; CHECK: eor r25, r23
24    %result = xor i16 %a, %b
25    ret i16 %result
26}
27
28define i16 @eor16_reg_imm(i16 %a) {
29; CHECK-LABEL: eor16_reg_imm:
30; CHECK: ldi r18, 210
31; CHECK: ldi r19, 4
32; CHECK: eor r24, r18
33; CHECK: eor r25, r19
34    %result = xor i16 %a, 1234
35    ret i16 %result
36}
37
38define i32 @eor32_reg_reg(i32 %a, i32 %b) {
39; CHECK-LABEL: eor32_reg_reg:
40; CHECK: eor r22, r18
41; CHECK: eor r23, r19
42; CHECK: eor r24, r20
43; CHECK: eor r25, r21
44    %result = xor i32 %a, %b
45    ret i32 %result
46}
47
48define i32 @eor32_reg_imm(i32 %a) {
49; CHECK-LABEL: eor32_reg_imm:
50; CHECK: ldi r18, 210
51; CHECK: ldi r19, 4
52; CHECK: eor r22, r18
53; CHECK: eor r23, r19
54    %result = xor i32 %a, 1234
55    ret i32 %result
56}
57
58define i64 @eor64_reg_reg(i64 %a, i64 %b) {
59; CHECK-LABEL: eor64_reg_reg:
60; CHECK: eor r18, r10
61; CHECK: eor r19, r11
62; CHECK: eor r20, r12
63; CHECK: eor r21, r13
64; CHECK: eor r22, r14
65; CHECK: eor r23, r15
66; CHECK: eor r24, r16
67; CHECK: eor r25, r17
68    %result = xor i64 %a, %b
69    ret i64 %result
70}
71
72define i64 @eor64_reg_imm(i64 %a) {
73; CHECK-LABEL: eor64_reg_imm:
74; CHECK: ldi r30, 253
75; CHECK: ldi r31, 255
76; CHECK: eor r18, r30
77; CHECK: eor r19, r31
78; CHECK: ldi r30, 155
79; CHECK: ldi r31, 88
80; CHECK: eor r20, r30
81; CHECK: eor r21, r31
82; CHECK: ldi r30, 76
83; CHECK: ldi r31, 73
84; CHECK: eor r22, r30
85; CHECK: eor r23, r31
86; CHECK: ldi r30, 31
87; CHECK: ldi r31, 242
88; CHECK: eor r24, r30
89; CHECK: eor r25, r31
90    %result = xor i64 %a, 17446744073709551613
91    ret i64 %result
92}
93