Mercurial > hg > Members > tobaru > cbc > CbC_llvm
comparison test/CodeGen/AArch64/aarch64-smull.ll @ 95:afa8332a0e37
LLVM 3.8
author | Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 13 Oct 2015 17:48:58 +0900 |
parents | 60c9769439b8 |
children | 1172e4bd9c6f |
comparison
equal
deleted
inserted
replaced
84:f3e34b893a5f | 95:afa8332a0e37 |
---|---|
1 ; RUN: llc -mtriple=aarch64-none-linux-gnu -mattr=+neon < %s -o -| FileCheck %s | 1 ; RUN: llc -mtriple=aarch64-none-linux-gnu -mattr=+neon < %s -o -| FileCheck %s |
2 | 2 |
3 define <8 x i16> @smull_v8i8_v8i16(<8 x i8>* %A, <8 x i8>* %B) nounwind { | 3 define <8 x i16> @smull_v8i8_v8i16(<8 x i8>* %A, <8 x i8>* %B) nounwind { |
4 ; CHECK-LABEL: smull_v8i8_v8i16: | 4 ; CHECK-LABEL: smull_v8i8_v8i16: |
5 ; CHECK: smull {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b | 5 ; CHECK: smull {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b |
6 %tmp1 = load <8 x i8>* %A | 6 %tmp1 = load <8 x i8>, <8 x i8>* %A |
7 %tmp2 = load <8 x i8>* %B | 7 %tmp2 = load <8 x i8>, <8 x i8>* %B |
8 %tmp3 = sext <8 x i8> %tmp1 to <8 x i16> | 8 %tmp3 = sext <8 x i8> %tmp1 to <8 x i16> |
9 %tmp4 = sext <8 x i8> %tmp2 to <8 x i16> | 9 %tmp4 = sext <8 x i8> %tmp2 to <8 x i16> |
10 %tmp5 = mul <8 x i16> %tmp3, %tmp4 | 10 %tmp5 = mul <8 x i16> %tmp3, %tmp4 |
11 ret <8 x i16> %tmp5 | 11 ret <8 x i16> %tmp5 |
12 } | 12 } |
13 | 13 |
14 define <4 x i32> @smull_v4i16_v4i32(<4 x i16>* %A, <4 x i16>* %B) nounwind { | 14 define <4 x i32> @smull_v4i16_v4i32(<4 x i16>* %A, <4 x i16>* %B) nounwind { |
15 ; CHECK-LABEL: smull_v4i16_v4i32: | 15 ; CHECK-LABEL: smull_v4i16_v4i32: |
16 ; CHECK: smull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h | 16 ; CHECK: smull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h |
17 %tmp1 = load <4 x i16>* %A | 17 %tmp1 = load <4 x i16>, <4 x i16>* %A |
18 %tmp2 = load <4 x i16>* %B | 18 %tmp2 = load <4 x i16>, <4 x i16>* %B |
19 %tmp3 = sext <4 x i16> %tmp1 to <4 x i32> | 19 %tmp3 = sext <4 x i16> %tmp1 to <4 x i32> |
20 %tmp4 = sext <4 x i16> %tmp2 to <4 x i32> | 20 %tmp4 = sext <4 x i16> %tmp2 to <4 x i32> |
21 %tmp5 = mul <4 x i32> %tmp3, %tmp4 | 21 %tmp5 = mul <4 x i32> %tmp3, %tmp4 |
22 ret <4 x i32> %tmp5 | 22 ret <4 x i32> %tmp5 |
23 } | 23 } |
24 | 24 |
25 define <2 x i64> @smull_v2i32_v2i64(<2 x i32>* %A, <2 x i32>* %B) nounwind { | 25 define <2 x i64> @smull_v2i32_v2i64(<2 x i32>* %A, <2 x i32>* %B) nounwind { |
26 ; CHECK-LABEL: smull_v2i32_v2i64: | 26 ; CHECK-LABEL: smull_v2i32_v2i64: |
27 ; CHECK: smull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s | 27 ; CHECK: smull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s |
28 %tmp1 = load <2 x i32>* %A | 28 %tmp1 = load <2 x i32>, <2 x i32>* %A |
29 %tmp2 = load <2 x i32>* %B | 29 %tmp2 = load <2 x i32>, <2 x i32>* %B |
30 %tmp3 = sext <2 x i32> %tmp1 to <2 x i64> | 30 %tmp3 = sext <2 x i32> %tmp1 to <2 x i64> |
31 %tmp4 = sext <2 x i32> %tmp2 to <2 x i64> | 31 %tmp4 = sext <2 x i32> %tmp2 to <2 x i64> |
32 %tmp5 = mul <2 x i64> %tmp3, %tmp4 | 32 %tmp5 = mul <2 x i64> %tmp3, %tmp4 |
33 ret <2 x i64> %tmp5 | 33 ret <2 x i64> %tmp5 |
34 } | 34 } |
35 | 35 |
36 define <8 x i16> @umull_v8i8_v8i16(<8 x i8>* %A, <8 x i8>* %B) nounwind { | 36 define <8 x i16> @umull_v8i8_v8i16(<8 x i8>* %A, <8 x i8>* %B) nounwind { |
37 ; CHECK-LABEL: umull_v8i8_v8i16: | 37 ; CHECK-LABEL: umull_v8i8_v8i16: |
38 ; CHECK: umull {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b | 38 ; CHECK: umull {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b |
39 %tmp1 = load <8 x i8>* %A | 39 %tmp1 = load <8 x i8>, <8 x i8>* %A |
40 %tmp2 = load <8 x i8>* %B | 40 %tmp2 = load <8 x i8>, <8 x i8>* %B |
41 %tmp3 = zext <8 x i8> %tmp1 to <8 x i16> | 41 %tmp3 = zext <8 x i8> %tmp1 to <8 x i16> |
42 %tmp4 = zext <8 x i8> %tmp2 to <8 x i16> | 42 %tmp4 = zext <8 x i8> %tmp2 to <8 x i16> |
43 %tmp5 = mul <8 x i16> %tmp3, %tmp4 | 43 %tmp5 = mul <8 x i16> %tmp3, %tmp4 |
44 ret <8 x i16> %tmp5 | 44 ret <8 x i16> %tmp5 |
45 } | 45 } |
46 | 46 |
47 define <4 x i32> @umull_v4i16_v4i32(<4 x i16>* %A, <4 x i16>* %B) nounwind { | 47 define <4 x i32> @umull_v4i16_v4i32(<4 x i16>* %A, <4 x i16>* %B) nounwind { |
48 ; CHECK-LABEL: umull_v4i16_v4i32: | 48 ; CHECK-LABEL: umull_v4i16_v4i32: |
49 ; CHECK: umull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h | 49 ; CHECK: umull {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h |
50 %tmp1 = load <4 x i16>* %A | 50 %tmp1 = load <4 x i16>, <4 x i16>* %A |
51 %tmp2 = load <4 x i16>* %B | 51 %tmp2 = load <4 x i16>, <4 x i16>* %B |
52 %tmp3 = zext <4 x i16> %tmp1 to <4 x i32> | 52 %tmp3 = zext <4 x i16> %tmp1 to <4 x i32> |
53 %tmp4 = zext <4 x i16> %tmp2 to <4 x i32> | 53 %tmp4 = zext <4 x i16> %tmp2 to <4 x i32> |
54 %tmp5 = mul <4 x i32> %tmp3, %tmp4 | 54 %tmp5 = mul <4 x i32> %tmp3, %tmp4 |
55 ret <4 x i32> %tmp5 | 55 ret <4 x i32> %tmp5 |
56 } | 56 } |
57 | 57 |
58 define <2 x i64> @umull_v2i32_v2i64(<2 x i32>* %A, <2 x i32>* %B) nounwind { | 58 define <2 x i64> @umull_v2i32_v2i64(<2 x i32>* %A, <2 x i32>* %B) nounwind { |
59 ; CHECK-LABEL: umull_v2i32_v2i64: | 59 ; CHECK-LABEL: umull_v2i32_v2i64: |
60 ; CHECK: umull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s | 60 ; CHECK: umull {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s |
61 %tmp1 = load <2 x i32>* %A | 61 %tmp1 = load <2 x i32>, <2 x i32>* %A |
62 %tmp2 = load <2 x i32>* %B | 62 %tmp2 = load <2 x i32>, <2 x i32>* %B |
63 %tmp3 = zext <2 x i32> %tmp1 to <2 x i64> | 63 %tmp3 = zext <2 x i32> %tmp1 to <2 x i64> |
64 %tmp4 = zext <2 x i32> %tmp2 to <2 x i64> | 64 %tmp4 = zext <2 x i32> %tmp2 to <2 x i64> |
65 %tmp5 = mul <2 x i64> %tmp3, %tmp4 | 65 %tmp5 = mul <2 x i64> %tmp3, %tmp4 |
66 ret <2 x i64> %tmp5 | 66 ret <2 x i64> %tmp5 |
67 } | 67 } |
68 | 68 |
69 define <8 x i16> @smlal_v8i8_v8i16(<8 x i16>* %A, <8 x i8>* %B, <8 x i8>* %C) nounwind { | 69 define <8 x i16> @smlal_v8i8_v8i16(<8 x i16>* %A, <8 x i8>* %B, <8 x i8>* %C) nounwind { |
70 ; CHECK-LABEL: smlal_v8i8_v8i16: | 70 ; CHECK-LABEL: smlal_v8i8_v8i16: |
71 ; CHECK: smlal {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b | 71 ; CHECK: smlal {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b |
72 %tmp1 = load <8 x i16>* %A | 72 %tmp1 = load <8 x i16>, <8 x i16>* %A |
73 %tmp2 = load <8 x i8>* %B | 73 %tmp2 = load <8 x i8>, <8 x i8>* %B |
74 %tmp3 = load <8 x i8>* %C | 74 %tmp3 = load <8 x i8>, <8 x i8>* %C |
75 %tmp4 = sext <8 x i8> %tmp2 to <8 x i16> | 75 %tmp4 = sext <8 x i8> %tmp2 to <8 x i16> |
76 %tmp5 = sext <8 x i8> %tmp3 to <8 x i16> | 76 %tmp5 = sext <8 x i8> %tmp3 to <8 x i16> |
77 %tmp6 = mul <8 x i16> %tmp4, %tmp5 | 77 %tmp6 = mul <8 x i16> %tmp4, %tmp5 |
78 %tmp7 = add <8 x i16> %tmp1, %tmp6 | 78 %tmp7 = add <8 x i16> %tmp1, %tmp6 |
79 ret <8 x i16> %tmp7 | 79 ret <8 x i16> %tmp7 |
80 } | 80 } |
81 | 81 |
82 define <4 x i32> @smlal_v4i16_v4i32(<4 x i32>* %A, <4 x i16>* %B, <4 x i16>* %C) nounwind { | 82 define <4 x i32> @smlal_v4i16_v4i32(<4 x i32>* %A, <4 x i16>* %B, <4 x i16>* %C) nounwind { |
83 ; CHECK-LABEL: smlal_v4i16_v4i32: | 83 ; CHECK-LABEL: smlal_v4i16_v4i32: |
84 ; CHECK: smlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h | 84 ; CHECK: smlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h |
85 %tmp1 = load <4 x i32>* %A | 85 %tmp1 = load <4 x i32>, <4 x i32>* %A |
86 %tmp2 = load <4 x i16>* %B | 86 %tmp2 = load <4 x i16>, <4 x i16>* %B |
87 %tmp3 = load <4 x i16>* %C | 87 %tmp3 = load <4 x i16>, <4 x i16>* %C |
88 %tmp4 = sext <4 x i16> %tmp2 to <4 x i32> | 88 %tmp4 = sext <4 x i16> %tmp2 to <4 x i32> |
89 %tmp5 = sext <4 x i16> %tmp3 to <4 x i32> | 89 %tmp5 = sext <4 x i16> %tmp3 to <4 x i32> |
90 %tmp6 = mul <4 x i32> %tmp4, %tmp5 | 90 %tmp6 = mul <4 x i32> %tmp4, %tmp5 |
91 %tmp7 = add <4 x i32> %tmp1, %tmp6 | 91 %tmp7 = add <4 x i32> %tmp1, %tmp6 |
92 ret <4 x i32> %tmp7 | 92 ret <4 x i32> %tmp7 |
93 } | 93 } |
94 | 94 |
95 define <2 x i64> @smlal_v2i32_v2i64(<2 x i64>* %A, <2 x i32>* %B, <2 x i32>* %C) nounwind { | 95 define <2 x i64> @smlal_v2i32_v2i64(<2 x i64>* %A, <2 x i32>* %B, <2 x i32>* %C) nounwind { |
96 ; CHECK-LABEL: smlal_v2i32_v2i64: | 96 ; CHECK-LABEL: smlal_v2i32_v2i64: |
97 ; CHECK: smlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s | 97 ; CHECK: smlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s |
98 %tmp1 = load <2 x i64>* %A | 98 %tmp1 = load <2 x i64>, <2 x i64>* %A |
99 %tmp2 = load <2 x i32>* %B | 99 %tmp2 = load <2 x i32>, <2 x i32>* %B |
100 %tmp3 = load <2 x i32>* %C | 100 %tmp3 = load <2 x i32>, <2 x i32>* %C |
101 %tmp4 = sext <2 x i32> %tmp2 to <2 x i64> | 101 %tmp4 = sext <2 x i32> %tmp2 to <2 x i64> |
102 %tmp5 = sext <2 x i32> %tmp3 to <2 x i64> | 102 %tmp5 = sext <2 x i32> %tmp3 to <2 x i64> |
103 %tmp6 = mul <2 x i64> %tmp4, %tmp5 | 103 %tmp6 = mul <2 x i64> %tmp4, %tmp5 |
104 %tmp7 = add <2 x i64> %tmp1, %tmp6 | 104 %tmp7 = add <2 x i64> %tmp1, %tmp6 |
105 ret <2 x i64> %tmp7 | 105 ret <2 x i64> %tmp7 |
106 } | 106 } |
107 | 107 |
108 define <8 x i16> @umlal_v8i8_v8i16(<8 x i16>* %A, <8 x i8>* %B, <8 x i8>* %C) nounwind { | 108 define <8 x i16> @umlal_v8i8_v8i16(<8 x i16>* %A, <8 x i8>* %B, <8 x i8>* %C) nounwind { |
109 ; CHECK-LABEL: umlal_v8i8_v8i16: | 109 ; CHECK-LABEL: umlal_v8i8_v8i16: |
110 ; CHECK: umlal {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b | 110 ; CHECK: umlal {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b |
111 %tmp1 = load <8 x i16>* %A | 111 %tmp1 = load <8 x i16>, <8 x i16>* %A |
112 %tmp2 = load <8 x i8>* %B | 112 %tmp2 = load <8 x i8>, <8 x i8>* %B |
113 %tmp3 = load <8 x i8>* %C | 113 %tmp3 = load <8 x i8>, <8 x i8>* %C |
114 %tmp4 = zext <8 x i8> %tmp2 to <8 x i16> | 114 %tmp4 = zext <8 x i8> %tmp2 to <8 x i16> |
115 %tmp5 = zext <8 x i8> %tmp3 to <8 x i16> | 115 %tmp5 = zext <8 x i8> %tmp3 to <8 x i16> |
116 %tmp6 = mul <8 x i16> %tmp4, %tmp5 | 116 %tmp6 = mul <8 x i16> %tmp4, %tmp5 |
117 %tmp7 = add <8 x i16> %tmp1, %tmp6 | 117 %tmp7 = add <8 x i16> %tmp1, %tmp6 |
118 ret <8 x i16> %tmp7 | 118 ret <8 x i16> %tmp7 |
119 } | 119 } |
120 | 120 |
121 define <4 x i32> @umlal_v4i16_v4i32(<4 x i32>* %A, <4 x i16>* %B, <4 x i16>* %C) nounwind { | 121 define <4 x i32> @umlal_v4i16_v4i32(<4 x i32>* %A, <4 x i16>* %B, <4 x i16>* %C) nounwind { |
122 ; CHECK-LABEL: umlal_v4i16_v4i32: | 122 ; CHECK-LABEL: umlal_v4i16_v4i32: |
123 ; CHECK: umlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h | 123 ; CHECK: umlal {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h |
124 %tmp1 = load <4 x i32>* %A | 124 %tmp1 = load <4 x i32>, <4 x i32>* %A |
125 %tmp2 = load <4 x i16>* %B | 125 %tmp2 = load <4 x i16>, <4 x i16>* %B |
126 %tmp3 = load <4 x i16>* %C | 126 %tmp3 = load <4 x i16>, <4 x i16>* %C |
127 %tmp4 = zext <4 x i16> %tmp2 to <4 x i32> | 127 %tmp4 = zext <4 x i16> %tmp2 to <4 x i32> |
128 %tmp5 = zext <4 x i16> %tmp3 to <4 x i32> | 128 %tmp5 = zext <4 x i16> %tmp3 to <4 x i32> |
129 %tmp6 = mul <4 x i32> %tmp4, %tmp5 | 129 %tmp6 = mul <4 x i32> %tmp4, %tmp5 |
130 %tmp7 = add <4 x i32> %tmp1, %tmp6 | 130 %tmp7 = add <4 x i32> %tmp1, %tmp6 |
131 ret <4 x i32> %tmp7 | 131 ret <4 x i32> %tmp7 |
132 } | 132 } |
133 | 133 |
134 define <2 x i64> @umlal_v2i32_v2i64(<2 x i64>* %A, <2 x i32>* %B, <2 x i32>* %C) nounwind { | 134 define <2 x i64> @umlal_v2i32_v2i64(<2 x i64>* %A, <2 x i32>* %B, <2 x i32>* %C) nounwind { |
135 ; CHECK-LABEL: umlal_v2i32_v2i64: | 135 ; CHECK-LABEL: umlal_v2i32_v2i64: |
136 ; CHECK: umlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s | 136 ; CHECK: umlal {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s |
137 %tmp1 = load <2 x i64>* %A | 137 %tmp1 = load <2 x i64>, <2 x i64>* %A |
138 %tmp2 = load <2 x i32>* %B | 138 %tmp2 = load <2 x i32>, <2 x i32>* %B |
139 %tmp3 = load <2 x i32>* %C | 139 %tmp3 = load <2 x i32>, <2 x i32>* %C |
140 %tmp4 = zext <2 x i32> %tmp2 to <2 x i64> | 140 %tmp4 = zext <2 x i32> %tmp2 to <2 x i64> |
141 %tmp5 = zext <2 x i32> %tmp3 to <2 x i64> | 141 %tmp5 = zext <2 x i32> %tmp3 to <2 x i64> |
142 %tmp6 = mul <2 x i64> %tmp4, %tmp5 | 142 %tmp6 = mul <2 x i64> %tmp4, %tmp5 |
143 %tmp7 = add <2 x i64> %tmp1, %tmp6 | 143 %tmp7 = add <2 x i64> %tmp1, %tmp6 |
144 ret <2 x i64> %tmp7 | 144 ret <2 x i64> %tmp7 |
145 } | 145 } |
146 | 146 |
147 define <8 x i16> @smlsl_v8i8_v8i16(<8 x i16>* %A, <8 x i8>* %B, <8 x i8>* %C) nounwind { | 147 define <8 x i16> @smlsl_v8i8_v8i16(<8 x i16>* %A, <8 x i8>* %B, <8 x i8>* %C) nounwind { |
148 ; CHECK-LABEL: smlsl_v8i8_v8i16: | 148 ; CHECK-LABEL: smlsl_v8i8_v8i16: |
149 ; CHECK: smlsl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b | 149 ; CHECK: smlsl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b |
150 %tmp1 = load <8 x i16>* %A | 150 %tmp1 = load <8 x i16>, <8 x i16>* %A |
151 %tmp2 = load <8 x i8>* %B | 151 %tmp2 = load <8 x i8>, <8 x i8>* %B |
152 %tmp3 = load <8 x i8>* %C | 152 %tmp3 = load <8 x i8>, <8 x i8>* %C |
153 %tmp4 = sext <8 x i8> %tmp2 to <8 x i16> | 153 %tmp4 = sext <8 x i8> %tmp2 to <8 x i16> |
154 %tmp5 = sext <8 x i8> %tmp3 to <8 x i16> | 154 %tmp5 = sext <8 x i8> %tmp3 to <8 x i16> |
155 %tmp6 = mul <8 x i16> %tmp4, %tmp5 | 155 %tmp6 = mul <8 x i16> %tmp4, %tmp5 |
156 %tmp7 = sub <8 x i16> %tmp1, %tmp6 | 156 %tmp7 = sub <8 x i16> %tmp1, %tmp6 |
157 ret <8 x i16> %tmp7 | 157 ret <8 x i16> %tmp7 |
158 } | 158 } |
159 | 159 |
160 define <4 x i32> @smlsl_v4i16_v4i32(<4 x i32>* %A, <4 x i16>* %B, <4 x i16>* %C) nounwind { | 160 define <4 x i32> @smlsl_v4i16_v4i32(<4 x i32>* %A, <4 x i16>* %B, <4 x i16>* %C) nounwind { |
161 ; CHECK-LABEL: smlsl_v4i16_v4i32: | 161 ; CHECK-LABEL: smlsl_v4i16_v4i32: |
162 ; CHECK: smlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h | 162 ; CHECK: smlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h |
163 %tmp1 = load <4 x i32>* %A | 163 %tmp1 = load <4 x i32>, <4 x i32>* %A |
164 %tmp2 = load <4 x i16>* %B | 164 %tmp2 = load <4 x i16>, <4 x i16>* %B |
165 %tmp3 = load <4 x i16>* %C | 165 %tmp3 = load <4 x i16>, <4 x i16>* %C |
166 %tmp4 = sext <4 x i16> %tmp2 to <4 x i32> | 166 %tmp4 = sext <4 x i16> %tmp2 to <4 x i32> |
167 %tmp5 = sext <4 x i16> %tmp3 to <4 x i32> | 167 %tmp5 = sext <4 x i16> %tmp3 to <4 x i32> |
168 %tmp6 = mul <4 x i32> %tmp4, %tmp5 | 168 %tmp6 = mul <4 x i32> %tmp4, %tmp5 |
169 %tmp7 = sub <4 x i32> %tmp1, %tmp6 | 169 %tmp7 = sub <4 x i32> %tmp1, %tmp6 |
170 ret <4 x i32> %tmp7 | 170 ret <4 x i32> %tmp7 |
171 } | 171 } |
172 | 172 |
173 define <2 x i64> @smlsl_v2i32_v2i64(<2 x i64>* %A, <2 x i32>* %B, <2 x i32>* %C) nounwind { | 173 define <2 x i64> @smlsl_v2i32_v2i64(<2 x i64>* %A, <2 x i32>* %B, <2 x i32>* %C) nounwind { |
174 ; CHECK-LABEL: smlsl_v2i32_v2i64: | 174 ; CHECK-LABEL: smlsl_v2i32_v2i64: |
175 ; CHECK: smlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s | 175 ; CHECK: smlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s |
176 %tmp1 = load <2 x i64>* %A | 176 %tmp1 = load <2 x i64>, <2 x i64>* %A |
177 %tmp2 = load <2 x i32>* %B | 177 %tmp2 = load <2 x i32>, <2 x i32>* %B |
178 %tmp3 = load <2 x i32>* %C | 178 %tmp3 = load <2 x i32>, <2 x i32>* %C |
179 %tmp4 = sext <2 x i32> %tmp2 to <2 x i64> | 179 %tmp4 = sext <2 x i32> %tmp2 to <2 x i64> |
180 %tmp5 = sext <2 x i32> %tmp3 to <2 x i64> | 180 %tmp5 = sext <2 x i32> %tmp3 to <2 x i64> |
181 %tmp6 = mul <2 x i64> %tmp4, %tmp5 | 181 %tmp6 = mul <2 x i64> %tmp4, %tmp5 |
182 %tmp7 = sub <2 x i64> %tmp1, %tmp6 | 182 %tmp7 = sub <2 x i64> %tmp1, %tmp6 |
183 ret <2 x i64> %tmp7 | 183 ret <2 x i64> %tmp7 |
184 } | 184 } |
185 | 185 |
186 define <8 x i16> @umlsl_v8i8_v8i16(<8 x i16>* %A, <8 x i8>* %B, <8 x i8>* %C) nounwind { | 186 define <8 x i16> @umlsl_v8i8_v8i16(<8 x i16>* %A, <8 x i8>* %B, <8 x i8>* %C) nounwind { |
187 ; CHECK-LABEL: umlsl_v8i8_v8i16: | 187 ; CHECK-LABEL: umlsl_v8i8_v8i16: |
188 ; CHECK: umlsl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b | 188 ; CHECK: umlsl {{v[0-9]+}}.8h, {{v[0-9]+}}.8b, {{v[0-9]+}}.8b |
189 %tmp1 = load <8 x i16>* %A | 189 %tmp1 = load <8 x i16>, <8 x i16>* %A |
190 %tmp2 = load <8 x i8>* %B | 190 %tmp2 = load <8 x i8>, <8 x i8>* %B |
191 %tmp3 = load <8 x i8>* %C | 191 %tmp3 = load <8 x i8>, <8 x i8>* %C |
192 %tmp4 = zext <8 x i8> %tmp2 to <8 x i16> | 192 %tmp4 = zext <8 x i8> %tmp2 to <8 x i16> |
193 %tmp5 = zext <8 x i8> %tmp3 to <8 x i16> | 193 %tmp5 = zext <8 x i8> %tmp3 to <8 x i16> |
194 %tmp6 = mul <8 x i16> %tmp4, %tmp5 | 194 %tmp6 = mul <8 x i16> %tmp4, %tmp5 |
195 %tmp7 = sub <8 x i16> %tmp1, %tmp6 | 195 %tmp7 = sub <8 x i16> %tmp1, %tmp6 |
196 ret <8 x i16> %tmp7 | 196 ret <8 x i16> %tmp7 |
197 } | 197 } |
198 | 198 |
199 define <4 x i32> @umlsl_v4i16_v4i32(<4 x i32>* %A, <4 x i16>* %B, <4 x i16>* %C) nounwind { | 199 define <4 x i32> @umlsl_v4i16_v4i32(<4 x i32>* %A, <4 x i16>* %B, <4 x i16>* %C) nounwind { |
200 ; CHECK-LABEL: umlsl_v4i16_v4i32: | 200 ; CHECK-LABEL: umlsl_v4i16_v4i32: |
201 ; CHECK: umlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h | 201 ; CHECK: umlsl {{v[0-9]+}}.4s, {{v[0-9]+}}.4h, {{v[0-9]+}}.4h |
202 %tmp1 = load <4 x i32>* %A | 202 %tmp1 = load <4 x i32>, <4 x i32>* %A |
203 %tmp2 = load <4 x i16>* %B | 203 %tmp2 = load <4 x i16>, <4 x i16>* %B |
204 %tmp3 = load <4 x i16>* %C | 204 %tmp3 = load <4 x i16>, <4 x i16>* %C |
205 %tmp4 = zext <4 x i16> %tmp2 to <4 x i32> | 205 %tmp4 = zext <4 x i16> %tmp2 to <4 x i32> |
206 %tmp5 = zext <4 x i16> %tmp3 to <4 x i32> | 206 %tmp5 = zext <4 x i16> %tmp3 to <4 x i32> |
207 %tmp6 = mul <4 x i32> %tmp4, %tmp5 | 207 %tmp6 = mul <4 x i32> %tmp4, %tmp5 |
208 %tmp7 = sub <4 x i32> %tmp1, %tmp6 | 208 %tmp7 = sub <4 x i32> %tmp1, %tmp6 |
209 ret <4 x i32> %tmp7 | 209 ret <4 x i32> %tmp7 |
210 } | 210 } |
211 | 211 |
212 define <2 x i64> @umlsl_v2i32_v2i64(<2 x i64>* %A, <2 x i32>* %B, <2 x i32>* %C) nounwind { | 212 define <2 x i64> @umlsl_v2i32_v2i64(<2 x i64>* %A, <2 x i32>* %B, <2 x i32>* %C) nounwind { |
213 ; CHECK-LABEL: umlsl_v2i32_v2i64: | 213 ; CHECK-LABEL: umlsl_v2i32_v2i64: |
214 ; CHECK: umlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s | 214 ; CHECK: umlsl {{v[0-9]+}}.2d, {{v[0-9]+}}.2s, {{v[0-9]+}}.2s |
215 %tmp1 = load <2 x i64>* %A | 215 %tmp1 = load <2 x i64>, <2 x i64>* %A |
216 %tmp2 = load <2 x i32>* %B | 216 %tmp2 = load <2 x i32>, <2 x i32>* %B |
217 %tmp3 = load <2 x i32>* %C | 217 %tmp3 = load <2 x i32>, <2 x i32>* %C |
218 %tmp4 = zext <2 x i32> %tmp2 to <2 x i64> | 218 %tmp4 = zext <2 x i32> %tmp2 to <2 x i64> |
219 %tmp5 = zext <2 x i32> %tmp3 to <2 x i64> | 219 %tmp5 = zext <2 x i32> %tmp3 to <2 x i64> |
220 %tmp6 = mul <2 x i64> %tmp4, %tmp5 | 220 %tmp6 = mul <2 x i64> %tmp4, %tmp5 |
221 %tmp7 = sub <2 x i64> %tmp1, %tmp6 | 221 %tmp7 = sub <2 x i64> %tmp1, %tmp6 |
222 ret <2 x i64> %tmp7 | 222 ret <2 x i64> %tmp7 |