[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / PowerPC / fast-isel-binary.ll
blob7f9a72061b313cfe233c7b7b8892ce90fccba8a6
1 ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 | FileCheck %s --check-prefix=PPC64
2 ; RUN: llc < %s -O0 -verify-machineinstrs -fast-isel-abort=1 -mtriple=powerpc64-ibm-aix-xcoff -mcpu=pwr7 | FileCheck %s --check-prefix=PPC64
4 ; Test add with non-legal types
6 define void @add_i8(i8 %a, i8 %b) nounwind {
7 entry:
8 ; PPC64: add_i8
9   %a.addr = alloca i8, align 4
10   %0 = add i8 %a, %b
11 ; PPC64: add
12   store i8 %0, ptr %a.addr, align 4
13   ret void
16 define void @add_i8_imm(i8 %a) nounwind {
17 entry:
18 ; PPC64: add_i8_imm
19   %a.addr = alloca i8, align 4
20   %0 = add i8 %a, 22;
21 ; PPC64: addi
22   store i8 %0, ptr %a.addr, align 4
23   ret void
26 define void @add_i16(i16 %a, i16 %b) nounwind {
27 entry:
28 ; PPC64: add_i16
29   %a.addr = alloca i16, align 4
30   %0 = add i16 %a, %b
31 ; PPC64: add
32   store i16 %0, ptr %a.addr, align 4
33   ret void
36 define void @add_i16_imm(i16 %a, i16 %b) nounwind {
37 entry:
38 ; PPC64: add_i16_imm
39   %a.addr = alloca i16, align 4
40   %0 = add i16 %a, 243;
41 ; PPC64: addi
42   store i16 %0, ptr %a.addr, align 4
43   ret void
46 ; Test or with non-legal types
48 define void @or_i8(i8 %a, i8 %b) nounwind {
49 entry:
50 ; PPC64: or_i8
51   %a.addr = alloca i8, align 4
52   %0 = or i8 %a, %b
53 ; PPC64: or
54   store i8 %0, ptr %a.addr, align 4
55   ret void
58 define void @or_i8_imm(i8 %a) nounwind {
59 entry:
60 ; PPC64: or_i8_imm
61   %a.addr = alloca i8, align 4
62   %0 = or i8 %a, -13;
63 ; PPC64: ori
64   store i8 %0, ptr %a.addr, align 4
65   ret void
68 define void @or_i16(i16 %a, i16 %b) nounwind {
69 entry:
70 ; PPC64: or_i16
71   %a.addr = alloca i16, align 4
72   %0 = or i16 %a, %b
73 ; PPC64: or
74   store i16 %0, ptr %a.addr, align 4
75   ret void
78 define void @or_i16_imm(i16 %a) nounwind {
79 entry:
80 ; PPC64: or_i16_imm
81   %a.addr = alloca i16, align 4
82   %0 = or i16 %a, 273;
83 ; PPC64: ori
84   store i16 %0, ptr %a.addr, align 4
85   ret void
88 ; Test sub with non-legal types
90 define void @sub_i8(i8 %a, i8 %b) nounwind {
91 entry:
92 ; PPC64: sub_i8
93   %a.addr = alloca i8, align 4
94   %0 = sub i8 %a, %b
95 ; PPC64: sub
96   store i8 %0, ptr %a.addr, align 4
97   ret void
100 define void @sub_i8_imm(i8 %a) nounwind {
101 entry:
102 ; PPC64: sub_i8_imm
103   %a.addr = alloca i8, align 4
104   %0 = sub i8 %a, 22;
105 ; PPC64: addi
106   store i8 %0, ptr %a.addr, align 4
107   ret void
110 define void @sub_i16(i16 %a, i16 %b) nounwind {
111 entry:
112 ; PPC64: sub_i16
113   %a.addr = alloca i16, align 4
114   %0 = sub i16 %a, %b
115 ; PPC64: sub
116   store i16 %0, ptr %a.addr, align 4
117   ret void
120 define void @sub_i16_imm(i16 %a) nounwind {
121 entry:
122 ; PPC64: sub_i16_imm
123   %a.addr = alloca i16, align 4
124   %0 = sub i16 %a, 247;
125 ; PPC64: addi
126   store i16 %0, ptr %a.addr, align 4
127   ret void
130 define void @sub_i16_badimm(i16 %a) nounwind {
131 entry:
132 ; PPC64: sub_i16_imm
133   %a.addr = alloca i16, align 4
134   %0 = sub i16 %a, -32768;
135 ; PPC64: sub
136   store i16 %0, ptr %a.addr, align 4
137   ret void