blob: 1036689ff44d5893f79d5a2ec99140140dc23662 [file] [log] [blame]
Mehdi Amini945a6602015-02-27 18:32:11 +00001; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s --check-prefix=ELF64
Bill Schmidtccecf262013-08-30 02:29:45 +00002
3; Test add with non-legal types
4
Eric Christopher1fb23392015-07-24 01:07:50 +00005define void @add_i8(i8 %a, i8 %b) nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +00006entry:
7; ELF64: add_i8
8 %a.addr = alloca i8, align 4
9 %0 = add i8 %a, %b
10; ELF64: add
11 store i8 %0, i8* %a.addr, align 4
12 ret void
13}
14
Eric Christopher1fb23392015-07-24 01:07:50 +000015define void @add_i8_imm(i8 %a) nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000016entry:
17; ELF64: add_i8_imm
18 %a.addr = alloca i8, align 4
19 %0 = add i8 %a, 22;
20; ELF64: addi
21 store i8 %0, i8* %a.addr, align 4
22 ret void
23}
24
Eric Christopher1fb23392015-07-24 01:07:50 +000025define void @add_i16(i16 %a, i16 %b) nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000026entry:
27; ELF64: add_i16
28 %a.addr = alloca i16, align 4
29 %0 = add i16 %a, %b
30; ELF64: add
31 store i16 %0, i16* %a.addr, align 4
32 ret void
33}
34
Eric Christopher1fb23392015-07-24 01:07:50 +000035define void @add_i16_imm(i16 %a, i16 %b) nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000036entry:
37; ELF64: add_i16_imm
38 %a.addr = alloca i16, align 4
39 %0 = add i16 %a, 243;
40; ELF64: addi
41 store i16 %0, i16* %a.addr, align 4
42 ret void
43}
44
45; Test or with non-legal types
46
Eric Christopher1fb23392015-07-24 01:07:50 +000047define void @or_i8(i8 %a, i8 %b) nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000048entry:
49; ELF64: or_i8
50 %a.addr = alloca i8, align 4
51 %0 = or i8 %a, %b
52; ELF64: or
53 store i8 %0, i8* %a.addr, align 4
54 ret void
55}
56
Eric Christopher1fb23392015-07-24 01:07:50 +000057define void @or_i8_imm(i8 %a) nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000058entry:
59; ELF64: or_i8_imm
60 %a.addr = alloca i8, align 4
61 %0 = or i8 %a, -13;
62; ELF64: ori
63 store i8 %0, i8* %a.addr, align 4
64 ret void
65}
66
Eric Christopher1fb23392015-07-24 01:07:50 +000067define void @or_i16(i16 %a, i16 %b) nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000068entry:
69; ELF64: or_i16
70 %a.addr = alloca i16, align 4
71 %0 = or i16 %a, %b
72; ELF64: or
73 store i16 %0, i16* %a.addr, align 4
74 ret void
75}
76
Eric Christopher1fb23392015-07-24 01:07:50 +000077define void @or_i16_imm(i16 %a) nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000078entry:
79; ELF64: or_i16_imm
80 %a.addr = alloca i16, align 4
81 %0 = or i16 %a, 273;
82; ELF64: ori
83 store i16 %0, i16* %a.addr, align 4
84 ret void
85}
86
87; Test sub with non-legal types
88
Eric Christopher1fb23392015-07-24 01:07:50 +000089define void @sub_i8(i8 %a, i8 %b) nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +000090entry:
91; ELF64: sub_i8
92 %a.addr = alloca i8, align 4
93 %0 = sub i8 %a, %b
94; ELF64: subf
95 store i8 %0, i8* %a.addr, align 4
96 ret void
97}
98
Eric Christopher1fb23392015-07-24 01:07:50 +000099define void @sub_i8_imm(i8 %a) nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +0000100entry:
101; ELF64: sub_i8_imm
102 %a.addr = alloca i8, align 4
103 %0 = sub i8 %a, 22;
104; ELF64: addi
105 store i8 %0, i8* %a.addr, align 4
106 ret void
107}
108
Eric Christopher1fb23392015-07-24 01:07:50 +0000109define void @sub_i16(i16 %a, i16 %b) nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +0000110entry:
111; ELF64: sub_i16
112 %a.addr = alloca i16, align 4
113 %0 = sub i16 %a, %b
114; ELF64: subf
115 store i16 %0, i16* %a.addr, align 4
116 ret void
117}
118
Eric Christopher1fb23392015-07-24 01:07:50 +0000119define void @sub_i16_imm(i16 %a) nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +0000120entry:
121; ELF64: sub_i16_imm
122 %a.addr = alloca i16, align 4
123 %0 = sub i16 %a, 247;
124; ELF64: addi
125 store i16 %0, i16* %a.addr, align 4
126 ret void
127}
128
Eric Christopher1fb23392015-07-24 01:07:50 +0000129define void @sub_i16_badimm(i16 %a) nounwind {
Bill Schmidtccecf262013-08-30 02:29:45 +0000130entry:
131; ELF64: sub_i16_imm
132 %a.addr = alloca i16, align 4
133 %0 = sub i16 %a, -32768;
134; ELF64: subf
135 store i16 %0, i16* %a.addr, align 4
136 ret void
137}