OLD | NEW |
1 ; Tests insertelement and extractelement vector instructions. | 1 ; Tests insertelement and extractelement vector instructions. |
2 | 2 |
3 ; RUN: %p2i -i %s --insts | FileCheck %s | 3 ; RUN: %p2i -i %s --insts | FileCheck %s |
4 ; RUN: %l2i -i %s --insts | %ifl FileCheck %s | 4 ; RUN: %l2i -i %s --insts | %ifl FileCheck %s |
5 ; RUN: %lc2i -i %s --insts | %iflc FileCheck %s | 5 ; RUN: %lc2i -i %s --insts | %iflc FileCheck %s |
6 ; RUN: %if --need=allow_disable_ir_gen --command \ | 6 ; RUN: %if --need=allow_disable_ir_gen --command \ |
7 ; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \ | 7 ; RUN: %p2i -i %s --args -notranslate -timing -no-ir-gen \ |
8 ; RUN: | %if --need=allow_disable_ir_gen --command \ | 8 ; RUN: | %if --need=allow_disable_ir_gen --command \ |
9 ; RUN: FileCheck --check-prefix=NOIR %s | 9 ; RUN: FileCheck --check-prefix=NOIR %s |
10 | 10 |
11 define void @ExtractV4xi1(<4 x i1> %v) { | 11 define internal void @ExtractV4xi1(<4 x i1> %v) { |
12 entry: | 12 entry: |
13 %e0 = extractelement <4 x i1> %v, i32 0 | 13 %e0 = extractelement <4 x i1> %v, i32 0 |
14 %e1 = extractelement <4 x i1> %v, i32 1 | 14 %e1 = extractelement <4 x i1> %v, i32 1 |
15 %e2 = extractelement <4 x i1> %v, i32 2 | 15 %e2 = extractelement <4 x i1> %v, i32 2 |
16 %e3 = extractelement <4 x i1> %v, i32 3 | 16 %e3 = extractelement <4 x i1> %v, i32 3 |
17 ret void | 17 ret void |
18 } | 18 } |
19 | 19 |
20 ; CHECK: define void @ExtractV4xi1(<4 x i1> %v) { | 20 ; CHECK: define internal void @ExtractV4xi1(<4 x i1> %v) { |
21 ; CHECK-NEXT: entry: | 21 ; CHECK-NEXT: entry: |
22 ; CHECK-NEXT: %e0 = extractelement <4 x i1> %v, i32 0 | 22 ; CHECK-NEXT: %e0 = extractelement <4 x i1> %v, i32 0 |
23 ; CHECK-NEXT: %e1 = extractelement <4 x i1> %v, i32 1 | 23 ; CHECK-NEXT: %e1 = extractelement <4 x i1> %v, i32 1 |
24 ; CHECK-NEXT: %e2 = extractelement <4 x i1> %v, i32 2 | 24 ; CHECK-NEXT: %e2 = extractelement <4 x i1> %v, i32 2 |
25 ; CHECK-NEXT: %e3 = extractelement <4 x i1> %v, i32 3 | 25 ; CHECK-NEXT: %e3 = extractelement <4 x i1> %v, i32 3 |
26 ; CHECK-NEXT: ret void | 26 ; CHECK-NEXT: ret void |
27 ; CHECK-NEXT: } | 27 ; CHECK-NEXT: } |
28 | 28 |
29 define void @ExtractV8xi1(<8 x i1> %v) { | 29 define internal void @ExtractV8xi1(<8 x i1> %v) { |
30 entry: | 30 entry: |
31 %e0 = extractelement <8 x i1> %v, i32 0 | 31 %e0 = extractelement <8 x i1> %v, i32 0 |
32 %e1 = extractelement <8 x i1> %v, i32 1 | 32 %e1 = extractelement <8 x i1> %v, i32 1 |
33 %e2 = extractelement <8 x i1> %v, i32 2 | 33 %e2 = extractelement <8 x i1> %v, i32 2 |
34 %e3 = extractelement <8 x i1> %v, i32 3 | 34 %e3 = extractelement <8 x i1> %v, i32 3 |
35 %e4 = extractelement <8 x i1> %v, i32 4 | 35 %e4 = extractelement <8 x i1> %v, i32 4 |
36 %e5 = extractelement <8 x i1> %v, i32 5 | 36 %e5 = extractelement <8 x i1> %v, i32 5 |
37 %e6 = extractelement <8 x i1> %v, i32 6 | 37 %e6 = extractelement <8 x i1> %v, i32 6 |
38 %e7 = extractelement <8 x i1> %v, i32 7 | 38 %e7 = extractelement <8 x i1> %v, i32 7 |
39 ret void | 39 ret void |
40 } | 40 } |
41 | 41 |
42 ; CHECK-NEXT: define void @ExtractV8xi1(<8 x i1> %v) { | 42 ; CHECK-NEXT: define internal void @ExtractV8xi1(<8 x i1> %v) { |
43 ; CHECK-NEXT: entry: | 43 ; CHECK-NEXT: entry: |
44 ; CHECK-NEXT: %e0 = extractelement <8 x i1> %v, i32 0 | 44 ; CHECK-NEXT: %e0 = extractelement <8 x i1> %v, i32 0 |
45 ; CHECK-NEXT: %e1 = extractelement <8 x i1> %v, i32 1 | 45 ; CHECK-NEXT: %e1 = extractelement <8 x i1> %v, i32 1 |
46 ; CHECK-NEXT: %e2 = extractelement <8 x i1> %v, i32 2 | 46 ; CHECK-NEXT: %e2 = extractelement <8 x i1> %v, i32 2 |
47 ; CHECK-NEXT: %e3 = extractelement <8 x i1> %v, i32 3 | 47 ; CHECK-NEXT: %e3 = extractelement <8 x i1> %v, i32 3 |
48 ; CHECK-NEXT: %e4 = extractelement <8 x i1> %v, i32 4 | 48 ; CHECK-NEXT: %e4 = extractelement <8 x i1> %v, i32 4 |
49 ; CHECK-NEXT: %e5 = extractelement <8 x i1> %v, i32 5 | 49 ; CHECK-NEXT: %e5 = extractelement <8 x i1> %v, i32 5 |
50 ; CHECK-NEXT: %e6 = extractelement <8 x i1> %v, i32 6 | 50 ; CHECK-NEXT: %e6 = extractelement <8 x i1> %v, i32 6 |
51 ; CHECK-NEXT: %e7 = extractelement <8 x i1> %v, i32 7 | 51 ; CHECK-NEXT: %e7 = extractelement <8 x i1> %v, i32 7 |
52 ; CHECK-NEXT: ret void | 52 ; CHECK-NEXT: ret void |
53 ; CHECK-NEXT: } | 53 ; CHECK-NEXT: } |
54 | 54 |
55 define void @ExtractV16xi1(<16 x i1> %v) { | 55 define internal void @ExtractV16xi1(<16 x i1> %v) { |
56 entry: | 56 entry: |
57 %e0 = extractelement <16 x i1> %v, i32 0 | 57 %e0 = extractelement <16 x i1> %v, i32 0 |
58 %e1 = extractelement <16 x i1> %v, i32 1 | 58 %e1 = extractelement <16 x i1> %v, i32 1 |
59 %e2 = extractelement <16 x i1> %v, i32 2 | 59 %e2 = extractelement <16 x i1> %v, i32 2 |
60 %e3 = extractelement <16 x i1> %v, i32 3 | 60 %e3 = extractelement <16 x i1> %v, i32 3 |
61 %e4 = extractelement <16 x i1> %v, i32 4 | 61 %e4 = extractelement <16 x i1> %v, i32 4 |
62 %e5 = extractelement <16 x i1> %v, i32 5 | 62 %e5 = extractelement <16 x i1> %v, i32 5 |
63 %e6 = extractelement <16 x i1> %v, i32 6 | 63 %e6 = extractelement <16 x i1> %v, i32 6 |
64 %e7 = extractelement <16 x i1> %v, i32 7 | 64 %e7 = extractelement <16 x i1> %v, i32 7 |
65 %e8 = extractelement <16 x i1> %v, i32 8 | 65 %e8 = extractelement <16 x i1> %v, i32 8 |
66 %e9 = extractelement <16 x i1> %v, i32 9 | 66 %e9 = extractelement <16 x i1> %v, i32 9 |
67 %e10 = extractelement <16 x i1> %v, i32 10 | 67 %e10 = extractelement <16 x i1> %v, i32 10 |
68 %e11 = extractelement <16 x i1> %v, i32 11 | 68 %e11 = extractelement <16 x i1> %v, i32 11 |
69 %e12 = extractelement <16 x i1> %v, i32 12 | 69 %e12 = extractelement <16 x i1> %v, i32 12 |
70 %e13 = extractelement <16 x i1> %v, i32 13 | 70 %e13 = extractelement <16 x i1> %v, i32 13 |
71 %e14 = extractelement <16 x i1> %v, i32 14 | 71 %e14 = extractelement <16 x i1> %v, i32 14 |
72 %e15 = extractelement <16 x i1> %v, i32 15 | 72 %e15 = extractelement <16 x i1> %v, i32 15 |
73 ret void | 73 ret void |
74 } | 74 } |
75 | 75 |
76 ; CHECK-NEXT: define void @ExtractV16xi1(<16 x i1> %v) { | 76 ; CHECK-NEXT: define internal void @ExtractV16xi1(<16 x i1> %v) { |
77 ; CHECK-NEXT: entry: | 77 ; CHECK-NEXT: entry: |
78 ; CHECK-NEXT: %e0 = extractelement <16 x i1> %v, i32 0 | 78 ; CHECK-NEXT: %e0 = extractelement <16 x i1> %v, i32 0 |
79 ; CHECK-NEXT: %e1 = extractelement <16 x i1> %v, i32 1 | 79 ; CHECK-NEXT: %e1 = extractelement <16 x i1> %v, i32 1 |
80 ; CHECK-NEXT: %e2 = extractelement <16 x i1> %v, i32 2 | 80 ; CHECK-NEXT: %e2 = extractelement <16 x i1> %v, i32 2 |
81 ; CHECK-NEXT: %e3 = extractelement <16 x i1> %v, i32 3 | 81 ; CHECK-NEXT: %e3 = extractelement <16 x i1> %v, i32 3 |
82 ; CHECK-NEXT: %e4 = extractelement <16 x i1> %v, i32 4 | 82 ; CHECK-NEXT: %e4 = extractelement <16 x i1> %v, i32 4 |
83 ; CHECK-NEXT: %e5 = extractelement <16 x i1> %v, i32 5 | 83 ; CHECK-NEXT: %e5 = extractelement <16 x i1> %v, i32 5 |
84 ; CHECK-NEXT: %e6 = extractelement <16 x i1> %v, i32 6 | 84 ; CHECK-NEXT: %e6 = extractelement <16 x i1> %v, i32 6 |
85 ; CHECK-NEXT: %e7 = extractelement <16 x i1> %v, i32 7 | 85 ; CHECK-NEXT: %e7 = extractelement <16 x i1> %v, i32 7 |
86 ; CHECK-NEXT: %e8 = extractelement <16 x i1> %v, i32 8 | 86 ; CHECK-NEXT: %e8 = extractelement <16 x i1> %v, i32 8 |
87 ; CHECK-NEXT: %e9 = extractelement <16 x i1> %v, i32 9 | 87 ; CHECK-NEXT: %e9 = extractelement <16 x i1> %v, i32 9 |
88 ; CHECK-NEXT: %e10 = extractelement <16 x i1> %v, i32 10 | 88 ; CHECK-NEXT: %e10 = extractelement <16 x i1> %v, i32 10 |
89 ; CHECK-NEXT: %e11 = extractelement <16 x i1> %v, i32 11 | 89 ; CHECK-NEXT: %e11 = extractelement <16 x i1> %v, i32 11 |
90 ; CHECK-NEXT: %e12 = extractelement <16 x i1> %v, i32 12 | 90 ; CHECK-NEXT: %e12 = extractelement <16 x i1> %v, i32 12 |
91 ; CHECK-NEXT: %e13 = extractelement <16 x i1> %v, i32 13 | 91 ; CHECK-NEXT: %e13 = extractelement <16 x i1> %v, i32 13 |
92 ; CHECK-NEXT: %e14 = extractelement <16 x i1> %v, i32 14 | 92 ; CHECK-NEXT: %e14 = extractelement <16 x i1> %v, i32 14 |
93 ; CHECK-NEXT: %e15 = extractelement <16 x i1> %v, i32 15 | 93 ; CHECK-NEXT: %e15 = extractelement <16 x i1> %v, i32 15 |
94 ; CHECK-NEXT: ret void | 94 ; CHECK-NEXT: ret void |
95 ; CHECK-NEXT: } | 95 ; CHECK-NEXT: } |
96 | 96 |
97 define void @ExtractV16xi8(<16 x i8> %v, i32 %i) { | 97 define internal void @ExtractV16xi8(<16 x i8> %v, i32 %i) { |
98 entry: | 98 entry: |
99 %e0 = extractelement <16 x i8> %v, i32 0 | 99 %e0 = extractelement <16 x i8> %v, i32 0 |
100 %e1 = extractelement <16 x i8> %v, i32 1 | 100 %e1 = extractelement <16 x i8> %v, i32 1 |
101 %e2 = extractelement <16 x i8> %v, i32 2 | 101 %e2 = extractelement <16 x i8> %v, i32 2 |
102 %e3 = extractelement <16 x i8> %v, i32 3 | 102 %e3 = extractelement <16 x i8> %v, i32 3 |
103 %e4 = extractelement <16 x i8> %v, i32 4 | 103 %e4 = extractelement <16 x i8> %v, i32 4 |
104 %e5 = extractelement <16 x i8> %v, i32 5 | 104 %e5 = extractelement <16 x i8> %v, i32 5 |
105 %e6 = extractelement <16 x i8> %v, i32 6 | 105 %e6 = extractelement <16 x i8> %v, i32 6 |
106 %e7 = extractelement <16 x i8> %v, i32 7 | 106 %e7 = extractelement <16 x i8> %v, i32 7 |
107 %e8 = extractelement <16 x i8> %v, i32 8 | 107 %e8 = extractelement <16 x i8> %v, i32 8 |
108 %e9 = extractelement <16 x i8> %v, i32 9 | 108 %e9 = extractelement <16 x i8> %v, i32 9 |
109 %e10 = extractelement <16 x i8> %v, i32 10 | 109 %e10 = extractelement <16 x i8> %v, i32 10 |
110 %e11 = extractelement <16 x i8> %v, i32 11 | 110 %e11 = extractelement <16 x i8> %v, i32 11 |
111 %e12 = extractelement <16 x i8> %v, i32 12 | 111 %e12 = extractelement <16 x i8> %v, i32 12 |
112 %e13 = extractelement <16 x i8> %v, i32 13 | 112 %e13 = extractelement <16 x i8> %v, i32 13 |
113 %e14 = extractelement <16 x i8> %v, i32 14 | 113 %e14 = extractelement <16 x i8> %v, i32 14 |
114 %e15 = extractelement <16 x i8> %v, i32 15 | 114 %e15 = extractelement <16 x i8> %v, i32 15 |
115 ret void | 115 ret void |
116 } | 116 } |
117 | 117 |
118 ; CHECK-NEXT: define void @ExtractV16xi8(<16 x i8> %v, i32 %i) { | 118 ; CHECK-NEXT: define internal void @ExtractV16xi8(<16 x i8> %v, i32 %i) { |
119 ; CHECK-NEXT: entry: | 119 ; CHECK-NEXT: entry: |
120 ; CHECK-NEXT: %e0 = extractelement <16 x i8> %v, i32 0 | 120 ; CHECK-NEXT: %e0 = extractelement <16 x i8> %v, i32 0 |
121 ; CHECK-NEXT: %e1 = extractelement <16 x i8> %v, i32 1 | 121 ; CHECK-NEXT: %e1 = extractelement <16 x i8> %v, i32 1 |
122 ; CHECK-NEXT: %e2 = extractelement <16 x i8> %v, i32 2 | 122 ; CHECK-NEXT: %e2 = extractelement <16 x i8> %v, i32 2 |
123 ; CHECK-NEXT: %e3 = extractelement <16 x i8> %v, i32 3 | 123 ; CHECK-NEXT: %e3 = extractelement <16 x i8> %v, i32 3 |
124 ; CHECK-NEXT: %e4 = extractelement <16 x i8> %v, i32 4 | 124 ; CHECK-NEXT: %e4 = extractelement <16 x i8> %v, i32 4 |
125 ; CHECK-NEXT: %e5 = extractelement <16 x i8> %v, i32 5 | 125 ; CHECK-NEXT: %e5 = extractelement <16 x i8> %v, i32 5 |
126 ; CHECK-NEXT: %e6 = extractelement <16 x i8> %v, i32 6 | 126 ; CHECK-NEXT: %e6 = extractelement <16 x i8> %v, i32 6 |
127 ; CHECK-NEXT: %e7 = extractelement <16 x i8> %v, i32 7 | 127 ; CHECK-NEXT: %e7 = extractelement <16 x i8> %v, i32 7 |
128 ; CHECK-NEXT: %e8 = extractelement <16 x i8> %v, i32 8 | 128 ; CHECK-NEXT: %e8 = extractelement <16 x i8> %v, i32 8 |
129 ; CHECK-NEXT: %e9 = extractelement <16 x i8> %v, i32 9 | 129 ; CHECK-NEXT: %e9 = extractelement <16 x i8> %v, i32 9 |
130 ; CHECK-NEXT: %e10 = extractelement <16 x i8> %v, i32 10 | 130 ; CHECK-NEXT: %e10 = extractelement <16 x i8> %v, i32 10 |
131 ; CHECK-NEXT: %e11 = extractelement <16 x i8> %v, i32 11 | 131 ; CHECK-NEXT: %e11 = extractelement <16 x i8> %v, i32 11 |
132 ; CHECK-NEXT: %e12 = extractelement <16 x i8> %v, i32 12 | 132 ; CHECK-NEXT: %e12 = extractelement <16 x i8> %v, i32 12 |
133 ; CHECK-NEXT: %e13 = extractelement <16 x i8> %v, i32 13 | 133 ; CHECK-NEXT: %e13 = extractelement <16 x i8> %v, i32 13 |
134 ; CHECK-NEXT: %e14 = extractelement <16 x i8> %v, i32 14 | 134 ; CHECK-NEXT: %e14 = extractelement <16 x i8> %v, i32 14 |
135 ; CHECK-NEXT: %e15 = extractelement <16 x i8> %v, i32 15 | 135 ; CHECK-NEXT: %e15 = extractelement <16 x i8> %v, i32 15 |
136 ; CHECK-NEXT: ret void | 136 ; CHECK-NEXT: ret void |
137 ; CHECK-NEXT: } | 137 ; CHECK-NEXT: } |
138 | 138 |
139 define void @ExtractV8xi16(<8 x i16> %v) { | 139 define internal void @ExtractV8xi16(<8 x i16> %v) { |
140 entry: | 140 entry: |
141 %e0 = extractelement <8 x i16> %v, i32 0 | 141 %e0 = extractelement <8 x i16> %v, i32 0 |
142 %e1 = extractelement <8 x i16> %v, i32 1 | 142 %e1 = extractelement <8 x i16> %v, i32 1 |
143 %e2 = extractelement <8 x i16> %v, i32 2 | 143 %e2 = extractelement <8 x i16> %v, i32 2 |
144 %e3 = extractelement <8 x i16> %v, i32 3 | 144 %e3 = extractelement <8 x i16> %v, i32 3 |
145 %e4 = extractelement <8 x i16> %v, i32 4 | 145 %e4 = extractelement <8 x i16> %v, i32 4 |
146 %e5 = extractelement <8 x i16> %v, i32 5 | 146 %e5 = extractelement <8 x i16> %v, i32 5 |
147 %e6 = extractelement <8 x i16> %v, i32 6 | 147 %e6 = extractelement <8 x i16> %v, i32 6 |
148 %e7 = extractelement <8 x i16> %v, i32 7 | 148 %e7 = extractelement <8 x i16> %v, i32 7 |
149 ret void | 149 ret void |
150 } | 150 } |
151 | 151 |
152 ; CHECK-NEXT: define void @ExtractV8xi16(<8 x i16> %v) { | 152 ; CHECK-NEXT: define internal void @ExtractV8xi16(<8 x i16> %v) { |
153 ; CHECK-NEXT: entry: | 153 ; CHECK-NEXT: entry: |
154 ; CHECK-NEXT: %e0 = extractelement <8 x i16> %v, i32 0 | 154 ; CHECK-NEXT: %e0 = extractelement <8 x i16> %v, i32 0 |
155 ; CHECK-NEXT: %e1 = extractelement <8 x i16> %v, i32 1 | 155 ; CHECK-NEXT: %e1 = extractelement <8 x i16> %v, i32 1 |
156 ; CHECK-NEXT: %e2 = extractelement <8 x i16> %v, i32 2 | 156 ; CHECK-NEXT: %e2 = extractelement <8 x i16> %v, i32 2 |
157 ; CHECK-NEXT: %e3 = extractelement <8 x i16> %v, i32 3 | 157 ; CHECK-NEXT: %e3 = extractelement <8 x i16> %v, i32 3 |
158 ; CHECK-NEXT: %e4 = extractelement <8 x i16> %v, i32 4 | 158 ; CHECK-NEXT: %e4 = extractelement <8 x i16> %v, i32 4 |
159 ; CHECK-NEXT: %e5 = extractelement <8 x i16> %v, i32 5 | 159 ; CHECK-NEXT: %e5 = extractelement <8 x i16> %v, i32 5 |
160 ; CHECK-NEXT: %e6 = extractelement <8 x i16> %v, i32 6 | 160 ; CHECK-NEXT: %e6 = extractelement <8 x i16> %v, i32 6 |
161 ; CHECK-NEXT: %e7 = extractelement <8 x i16> %v, i32 7 | 161 ; CHECK-NEXT: %e7 = extractelement <8 x i16> %v, i32 7 |
162 ; CHECK-NEXT: ret void | 162 ; CHECK-NEXT: ret void |
163 ; CHECK-NEXT: } | 163 ; CHECK-NEXT: } |
164 | 164 |
165 define i32 @ExtractV4xi32(<4 x i32> %v) { | 165 define internal i32 @ExtractV4xi32(<4 x i32> %v) { |
166 entry: | 166 entry: |
167 %e0 = extractelement <4 x i32> %v, i32 0 | 167 %e0 = extractelement <4 x i32> %v, i32 0 |
168 %e1 = extractelement <4 x i32> %v, i32 1 | 168 %e1 = extractelement <4 x i32> %v, i32 1 |
169 %e2 = extractelement <4 x i32> %v, i32 2 | 169 %e2 = extractelement <4 x i32> %v, i32 2 |
170 %e3 = extractelement <4 x i32> %v, i32 3 | 170 %e3 = extractelement <4 x i32> %v, i32 3 |
171 ret i32 %e0 | 171 ret i32 %e0 |
172 } | 172 } |
173 | 173 |
174 ; CHECK-NEXT: define i32 @ExtractV4xi32(<4 x i32> %v) { | 174 ; CHECK-NEXT: define internal i32 @ExtractV4xi32(<4 x i32> %v) { |
175 ; CHECK-NEXT: entry: | 175 ; CHECK-NEXT: entry: |
176 ; CHECK-NEXT: %e0 = extractelement <4 x i32> %v, i32 0 | 176 ; CHECK-NEXT: %e0 = extractelement <4 x i32> %v, i32 0 |
177 ; CHECK-NEXT: %e1 = extractelement <4 x i32> %v, i32 1 | 177 ; CHECK-NEXT: %e1 = extractelement <4 x i32> %v, i32 1 |
178 ; CHECK-NEXT: %e2 = extractelement <4 x i32> %v, i32 2 | 178 ; CHECK-NEXT: %e2 = extractelement <4 x i32> %v, i32 2 |
179 ; CHECK-NEXT: %e3 = extractelement <4 x i32> %v, i32 3 | 179 ; CHECK-NEXT: %e3 = extractelement <4 x i32> %v, i32 3 |
180 ; CHECK-NEXT: ret i32 %e0 | 180 ; CHECK-NEXT: ret i32 %e0 |
181 ; CHECK-NEXT: } | 181 ; CHECK-NEXT: } |
182 | 182 |
183 define float @ExtractV4xfloat(<4 x float> %v) { | 183 define internal float @ExtractV4xfloat(<4 x float> %v) { |
184 entry: | 184 entry: |
185 %e0 = extractelement <4 x float> %v, i32 0 | 185 %e0 = extractelement <4 x float> %v, i32 0 |
186 %e1 = extractelement <4 x float> %v, i32 1 | 186 %e1 = extractelement <4 x float> %v, i32 1 |
187 %e2 = extractelement <4 x float> %v, i32 2 | 187 %e2 = extractelement <4 x float> %v, i32 2 |
188 %e3 = extractelement <4 x float> %v, i32 3 | 188 %e3 = extractelement <4 x float> %v, i32 3 |
189 ret float %e0 | 189 ret float %e0 |
190 } | 190 } |
191 | 191 |
192 ; CHECK-NEXT: define float @ExtractV4xfloat(<4 x float> %v) { | 192 ; CHECK-NEXT: define internal float @ExtractV4xfloat(<4 x float> %v) { |
193 ; CHECK-NEXT: entry: | 193 ; CHECK-NEXT: entry: |
194 ; CHECK-NEXT: %e0 = extractelement <4 x float> %v, i32 0 | 194 ; CHECK-NEXT: %e0 = extractelement <4 x float> %v, i32 0 |
195 ; CHECK-NEXT: %e1 = extractelement <4 x float> %v, i32 1 | 195 ; CHECK-NEXT: %e1 = extractelement <4 x float> %v, i32 1 |
196 ; CHECK-NEXT: %e2 = extractelement <4 x float> %v, i32 2 | 196 ; CHECK-NEXT: %e2 = extractelement <4 x float> %v, i32 2 |
197 ; CHECK-NEXT: %e3 = extractelement <4 x float> %v, i32 3 | 197 ; CHECK-NEXT: %e3 = extractelement <4 x float> %v, i32 3 |
198 ; CHECK-NEXT: ret float %e0 | 198 ; CHECK-NEXT: ret float %e0 |
199 ; CHECK-NEXT: } | 199 ; CHECK-NEXT: } |
200 | 200 |
201 define <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) { | 201 define internal <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) { |
202 entry: | 202 entry: |
203 %e = trunc i32 %pe to i1 | 203 %e = trunc i32 %pe to i1 |
204 %r0 = insertelement <4 x i1> %v, i1 %e, i32 0 | 204 %r0 = insertelement <4 x i1> %v, i1 %e, i32 0 |
205 %r1 = insertelement <4 x i1> %v, i1 %e, i32 1 | 205 %r1 = insertelement <4 x i1> %v, i1 %e, i32 1 |
206 %r2 = insertelement <4 x i1> %v, i1 %e, i32 2 | 206 %r2 = insertelement <4 x i1> %v, i1 %e, i32 2 |
207 %r3 = insertelement <4 x i1> %v, i1 %e, i32 3 | 207 %r3 = insertelement <4 x i1> %v, i1 %e, i32 3 |
208 ret <4 x i1> %r3 | 208 ret <4 x i1> %r3 |
209 } | 209 } |
210 | 210 |
211 ; CHECK-NEXT: define <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) { | 211 ; CHECK-NEXT: define internal <4 x i1> @InsertV4xi1(<4 x i1> %v, i32 %pe) { |
212 ; CHECK-NEXT: entry: | 212 ; CHECK-NEXT: entry: |
213 ; CHECK-NEXT: %e = trunc i32 %pe to i1 | 213 ; CHECK-NEXT: %e = trunc i32 %pe to i1 |
214 ; CHECK-NEXT: %r0 = insertelement <4 x i1> %v, i1 %e, i32 0 | 214 ; CHECK-NEXT: %r0 = insertelement <4 x i1> %v, i1 %e, i32 0 |
215 ; CHECK-NEXT: %r1 = insertelement <4 x i1> %v, i1 %e, i32 1 | 215 ; CHECK-NEXT: %r1 = insertelement <4 x i1> %v, i1 %e, i32 1 |
216 ; CHECK-NEXT: %r2 = insertelement <4 x i1> %v, i1 %e, i32 2 | 216 ; CHECK-NEXT: %r2 = insertelement <4 x i1> %v, i1 %e, i32 2 |
217 ; CHECK-NEXT: %r3 = insertelement <4 x i1> %v, i1 %e, i32 3 | 217 ; CHECK-NEXT: %r3 = insertelement <4 x i1> %v, i1 %e, i32 3 |
218 ; CHECK-NEXT: ret <4 x i1> %r3 | 218 ; CHECK-NEXT: ret <4 x i1> %r3 |
219 ; CHECK-NEXT: } | 219 ; CHECK-NEXT: } |
220 | 220 |
221 define <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) { | 221 define internal <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) { |
222 entry: | 222 entry: |
223 %e = trunc i32 %pe to i1 | 223 %e = trunc i32 %pe to i1 |
224 %r0 = insertelement <8 x i1> %v, i1 %e, i32 0 | 224 %r0 = insertelement <8 x i1> %v, i1 %e, i32 0 |
225 %r1 = insertelement <8 x i1> %v, i1 %e, i32 1 | 225 %r1 = insertelement <8 x i1> %v, i1 %e, i32 1 |
226 %r2 = insertelement <8 x i1> %v, i1 %e, i32 2 | 226 %r2 = insertelement <8 x i1> %v, i1 %e, i32 2 |
227 %r3 = insertelement <8 x i1> %v, i1 %e, i32 3 | 227 %r3 = insertelement <8 x i1> %v, i1 %e, i32 3 |
228 %r4 = insertelement <8 x i1> %v, i1 %e, i32 4 | 228 %r4 = insertelement <8 x i1> %v, i1 %e, i32 4 |
229 %r5 = insertelement <8 x i1> %v, i1 %e, i32 5 | 229 %r5 = insertelement <8 x i1> %v, i1 %e, i32 5 |
230 %r6 = insertelement <8 x i1> %v, i1 %e, i32 6 | 230 %r6 = insertelement <8 x i1> %v, i1 %e, i32 6 |
231 %r7 = insertelement <8 x i1> %v, i1 %e, i32 7 | 231 %r7 = insertelement <8 x i1> %v, i1 %e, i32 7 |
232 ret <8 x i1> %r7 | 232 ret <8 x i1> %r7 |
233 } | 233 } |
234 | 234 |
235 ; CHECK-NEXT: define <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) { | 235 ; CHECK-NEXT: define internal <8 x i1> @InsertV8xi1(<8 x i1> %v, i32 %pe) { |
236 ; CHECK-NEXT: entry: | 236 ; CHECK-NEXT: entry: |
237 ; CHECK-NEXT: %e = trunc i32 %pe to i1 | 237 ; CHECK-NEXT: %e = trunc i32 %pe to i1 |
238 ; CHECK-NEXT: %r0 = insertelement <8 x i1> %v, i1 %e, i32 0 | 238 ; CHECK-NEXT: %r0 = insertelement <8 x i1> %v, i1 %e, i32 0 |
239 ; CHECK-NEXT: %r1 = insertelement <8 x i1> %v, i1 %e, i32 1 | 239 ; CHECK-NEXT: %r1 = insertelement <8 x i1> %v, i1 %e, i32 1 |
240 ; CHECK-NEXT: %r2 = insertelement <8 x i1> %v, i1 %e, i32 2 | 240 ; CHECK-NEXT: %r2 = insertelement <8 x i1> %v, i1 %e, i32 2 |
241 ; CHECK-NEXT: %r3 = insertelement <8 x i1> %v, i1 %e, i32 3 | 241 ; CHECK-NEXT: %r3 = insertelement <8 x i1> %v, i1 %e, i32 3 |
242 ; CHECK-NEXT: %r4 = insertelement <8 x i1> %v, i1 %e, i32 4 | 242 ; CHECK-NEXT: %r4 = insertelement <8 x i1> %v, i1 %e, i32 4 |
243 ; CHECK-NEXT: %r5 = insertelement <8 x i1> %v, i1 %e, i32 5 | 243 ; CHECK-NEXT: %r5 = insertelement <8 x i1> %v, i1 %e, i32 5 |
244 ; CHECK-NEXT: %r6 = insertelement <8 x i1> %v, i1 %e, i32 6 | 244 ; CHECK-NEXT: %r6 = insertelement <8 x i1> %v, i1 %e, i32 6 |
245 ; CHECK-NEXT: %r7 = insertelement <8 x i1> %v, i1 %e, i32 7 | 245 ; CHECK-NEXT: %r7 = insertelement <8 x i1> %v, i1 %e, i32 7 |
246 ; CHECK-NEXT: ret <8 x i1> %r7 | 246 ; CHECK-NEXT: ret <8 x i1> %r7 |
247 ; CHECK-NEXT: } | 247 ; CHECK-NEXT: } |
248 | 248 |
249 define <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) { | 249 define internal <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) { |
250 entry: | 250 entry: |
251 %e = trunc i32 %pe to i1 | 251 %e = trunc i32 %pe to i1 |
252 %r0 = insertelement <16 x i1> %v, i1 %e, i32 0 | 252 %r0 = insertelement <16 x i1> %v, i1 %e, i32 0 |
253 %r1 = insertelement <16 x i1> %v, i1 %e, i32 1 | 253 %r1 = insertelement <16 x i1> %v, i1 %e, i32 1 |
254 %r2 = insertelement <16 x i1> %v, i1 %e, i32 2 | 254 %r2 = insertelement <16 x i1> %v, i1 %e, i32 2 |
255 %r3 = insertelement <16 x i1> %v, i1 %e, i32 3 | 255 %r3 = insertelement <16 x i1> %v, i1 %e, i32 3 |
256 %r4 = insertelement <16 x i1> %v, i1 %e, i32 4 | 256 %r4 = insertelement <16 x i1> %v, i1 %e, i32 4 |
257 %r5 = insertelement <16 x i1> %v, i1 %e, i32 5 | 257 %r5 = insertelement <16 x i1> %v, i1 %e, i32 5 |
258 %r6 = insertelement <16 x i1> %v, i1 %e, i32 6 | 258 %r6 = insertelement <16 x i1> %v, i1 %e, i32 6 |
259 %r7 = insertelement <16 x i1> %v, i1 %e, i32 7 | 259 %r7 = insertelement <16 x i1> %v, i1 %e, i32 7 |
260 %r8 = insertelement <16 x i1> %v, i1 %e, i32 8 | 260 %r8 = insertelement <16 x i1> %v, i1 %e, i32 8 |
261 %r9 = insertelement <16 x i1> %v, i1 %e, i32 9 | 261 %r9 = insertelement <16 x i1> %v, i1 %e, i32 9 |
262 %r10 = insertelement <16 x i1> %v, i1 %e, i32 10 | 262 %r10 = insertelement <16 x i1> %v, i1 %e, i32 10 |
263 %r11 = insertelement <16 x i1> %v, i1 %e, i32 11 | 263 %r11 = insertelement <16 x i1> %v, i1 %e, i32 11 |
264 %r12 = insertelement <16 x i1> %v, i1 %e, i32 12 | 264 %r12 = insertelement <16 x i1> %v, i1 %e, i32 12 |
265 %r13 = insertelement <16 x i1> %v, i1 %e, i32 13 | 265 %r13 = insertelement <16 x i1> %v, i1 %e, i32 13 |
266 %r14 = insertelement <16 x i1> %v, i1 %e, i32 14 | 266 %r14 = insertelement <16 x i1> %v, i1 %e, i32 14 |
267 %r15 = insertelement <16 x i1> %v, i1 %e, i32 15 | 267 %r15 = insertelement <16 x i1> %v, i1 %e, i32 15 |
268 ret <16 x i1> %r15 | 268 ret <16 x i1> %r15 |
269 } | 269 } |
270 | 270 |
271 ; CHECK-NEXT: define <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) { | 271 ; CHECK-NEXT: define internal <16 x i1> @InsertV16xi1(<16 x i1> %v, i32 %pe) { |
272 ; CHECK-NEXT: entry: | 272 ; CHECK-NEXT: entry: |
273 ; CHECK-NEXT: %e = trunc i32 %pe to i1 | 273 ; CHECK-NEXT: %e = trunc i32 %pe to i1 |
274 ; CHECK-NEXT: %r0 = insertelement <16 x i1> %v, i1 %e, i32 0 | 274 ; CHECK-NEXT: %r0 = insertelement <16 x i1> %v, i1 %e, i32 0 |
275 ; CHECK-NEXT: %r1 = insertelement <16 x i1> %v, i1 %e, i32 1 | 275 ; CHECK-NEXT: %r1 = insertelement <16 x i1> %v, i1 %e, i32 1 |
276 ; CHECK-NEXT: %r2 = insertelement <16 x i1> %v, i1 %e, i32 2 | 276 ; CHECK-NEXT: %r2 = insertelement <16 x i1> %v, i1 %e, i32 2 |
277 ; CHECK-NEXT: %r3 = insertelement <16 x i1> %v, i1 %e, i32 3 | 277 ; CHECK-NEXT: %r3 = insertelement <16 x i1> %v, i1 %e, i32 3 |
278 ; CHECK-NEXT: %r4 = insertelement <16 x i1> %v, i1 %e, i32 4 | 278 ; CHECK-NEXT: %r4 = insertelement <16 x i1> %v, i1 %e, i32 4 |
279 ; CHECK-NEXT: %r5 = insertelement <16 x i1> %v, i1 %e, i32 5 | 279 ; CHECK-NEXT: %r5 = insertelement <16 x i1> %v, i1 %e, i32 5 |
280 ; CHECK-NEXT: %r6 = insertelement <16 x i1> %v, i1 %e, i32 6 | 280 ; CHECK-NEXT: %r6 = insertelement <16 x i1> %v, i1 %e, i32 6 |
281 ; CHECK-NEXT: %r7 = insertelement <16 x i1> %v, i1 %e, i32 7 | 281 ; CHECK-NEXT: %r7 = insertelement <16 x i1> %v, i1 %e, i32 7 |
282 ; CHECK-NEXT: %r8 = insertelement <16 x i1> %v, i1 %e, i32 8 | 282 ; CHECK-NEXT: %r8 = insertelement <16 x i1> %v, i1 %e, i32 8 |
283 ; CHECK-NEXT: %r9 = insertelement <16 x i1> %v, i1 %e, i32 9 | 283 ; CHECK-NEXT: %r9 = insertelement <16 x i1> %v, i1 %e, i32 9 |
284 ; CHECK-NEXT: %r10 = insertelement <16 x i1> %v, i1 %e, i32 10 | 284 ; CHECK-NEXT: %r10 = insertelement <16 x i1> %v, i1 %e, i32 10 |
285 ; CHECK-NEXT: %r11 = insertelement <16 x i1> %v, i1 %e, i32 11 | 285 ; CHECK-NEXT: %r11 = insertelement <16 x i1> %v, i1 %e, i32 11 |
286 ; CHECK-NEXT: %r12 = insertelement <16 x i1> %v, i1 %e, i32 12 | 286 ; CHECK-NEXT: %r12 = insertelement <16 x i1> %v, i1 %e, i32 12 |
287 ; CHECK-NEXT: %r13 = insertelement <16 x i1> %v, i1 %e, i32 13 | 287 ; CHECK-NEXT: %r13 = insertelement <16 x i1> %v, i1 %e, i32 13 |
288 ; CHECK-NEXT: %r14 = insertelement <16 x i1> %v, i1 %e, i32 14 | 288 ; CHECK-NEXT: %r14 = insertelement <16 x i1> %v, i1 %e, i32 14 |
289 ; CHECK-NEXT: %r15 = insertelement <16 x i1> %v, i1 %e, i32 15 | 289 ; CHECK-NEXT: %r15 = insertelement <16 x i1> %v, i1 %e, i32 15 |
290 ; CHECK-NEXT: ret <16 x i1> %r15 | 290 ; CHECK-NEXT: ret <16 x i1> %r15 |
291 ; CHECK-NEXT: } | 291 ; CHECK-NEXT: } |
292 | 292 |
293 define <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) { | 293 define internal <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) { |
294 entry: | 294 entry: |
295 %e = trunc i32 %pe to i8 | 295 %e = trunc i32 %pe to i8 |
296 %r0 = insertelement <16 x i8> %v, i8 %e, i32 0 | 296 %r0 = insertelement <16 x i8> %v, i8 %e, i32 0 |
297 %r1 = insertelement <16 x i8> %v, i8 %e, i32 1 | 297 %r1 = insertelement <16 x i8> %v, i8 %e, i32 1 |
298 %r2 = insertelement <16 x i8> %v, i8 %e, i32 2 | 298 %r2 = insertelement <16 x i8> %v, i8 %e, i32 2 |
299 %r3 = insertelement <16 x i8> %v, i8 %e, i32 3 | 299 %r3 = insertelement <16 x i8> %v, i8 %e, i32 3 |
300 %r4 = insertelement <16 x i8> %v, i8 %e, i32 4 | 300 %r4 = insertelement <16 x i8> %v, i8 %e, i32 4 |
301 %r5 = insertelement <16 x i8> %v, i8 %e, i32 5 | 301 %r5 = insertelement <16 x i8> %v, i8 %e, i32 5 |
302 %r6 = insertelement <16 x i8> %v, i8 %e, i32 6 | 302 %r6 = insertelement <16 x i8> %v, i8 %e, i32 6 |
303 %r7 = insertelement <16 x i8> %v, i8 %e, i32 7 | 303 %r7 = insertelement <16 x i8> %v, i8 %e, i32 7 |
304 ret <16 x i8> %r7 | 304 ret <16 x i8> %r7 |
305 } | 305 } |
306 | 306 |
307 ; CHECK-NEXT: define <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) { | 307 ; CHECK-NEXT: define internal <16 x i8> @InsertV16xi8(<16 x i8> %v, i32 %pe) { |
308 ; CHECK-NEXT: entry: | 308 ; CHECK-NEXT: entry: |
309 ; CHECK-NEXT: %e = trunc i32 %pe to i8 | 309 ; CHECK-NEXT: %e = trunc i32 %pe to i8 |
310 ; CHECK-NEXT: %r0 = insertelement <16 x i8> %v, i8 %e, i32 0 | 310 ; CHECK-NEXT: %r0 = insertelement <16 x i8> %v, i8 %e, i32 0 |
311 ; CHECK-NEXT: %r1 = insertelement <16 x i8> %v, i8 %e, i32 1 | 311 ; CHECK-NEXT: %r1 = insertelement <16 x i8> %v, i8 %e, i32 1 |
312 ; CHECK-NEXT: %r2 = insertelement <16 x i8> %v, i8 %e, i32 2 | 312 ; CHECK-NEXT: %r2 = insertelement <16 x i8> %v, i8 %e, i32 2 |
313 ; CHECK-NEXT: %r3 = insertelement <16 x i8> %v, i8 %e, i32 3 | 313 ; CHECK-NEXT: %r3 = insertelement <16 x i8> %v, i8 %e, i32 3 |
314 ; CHECK-NEXT: %r4 = insertelement <16 x i8> %v, i8 %e, i32 4 | 314 ; CHECK-NEXT: %r4 = insertelement <16 x i8> %v, i8 %e, i32 4 |
315 ; CHECK-NEXT: %r5 = insertelement <16 x i8> %v, i8 %e, i32 5 | 315 ; CHECK-NEXT: %r5 = insertelement <16 x i8> %v, i8 %e, i32 5 |
316 ; CHECK-NEXT: %r6 = insertelement <16 x i8> %v, i8 %e, i32 6 | 316 ; CHECK-NEXT: %r6 = insertelement <16 x i8> %v, i8 %e, i32 6 |
317 ; CHECK-NEXT: %r7 = insertelement <16 x i8> %v, i8 %e, i32 7 | 317 ; CHECK-NEXT: %r7 = insertelement <16 x i8> %v, i8 %e, i32 7 |
318 ; CHECK-NEXT: ret <16 x i8> %r7 | 318 ; CHECK-NEXT: ret <16 x i8> %r7 |
319 ; CHECK-NEXT: } | 319 ; CHECK-NEXT: } |
320 | 320 |
321 define <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) { | 321 define internal <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) { |
322 entry: | 322 entry: |
323 %e = trunc i32 %pe to i16 | 323 %e = trunc i32 %pe to i16 |
324 %r0 = insertelement <8 x i16> %v, i16 %e, i32 0 | 324 %r0 = insertelement <8 x i16> %v, i16 %e, i32 0 |
325 %r1 = insertelement <8 x i16> %v, i16 %e, i32 1 | 325 %r1 = insertelement <8 x i16> %v, i16 %e, i32 1 |
326 %r2 = insertelement <8 x i16> %v, i16 %e, i32 2 | 326 %r2 = insertelement <8 x i16> %v, i16 %e, i32 2 |
327 %r3 = insertelement <8 x i16> %v, i16 %e, i32 3 | 327 %r3 = insertelement <8 x i16> %v, i16 %e, i32 3 |
328 %r4 = insertelement <8 x i16> %v, i16 %e, i32 4 | 328 %r4 = insertelement <8 x i16> %v, i16 %e, i32 4 |
329 %r5 = insertelement <8 x i16> %v, i16 %e, i32 5 | 329 %r5 = insertelement <8 x i16> %v, i16 %e, i32 5 |
330 %r6 = insertelement <8 x i16> %v, i16 %e, i32 6 | 330 %r6 = insertelement <8 x i16> %v, i16 %e, i32 6 |
331 %r7 = insertelement <8 x i16> %v, i16 %e, i32 7 | 331 %r7 = insertelement <8 x i16> %v, i16 %e, i32 7 |
332 ret <8 x i16> %r7 | 332 ret <8 x i16> %r7 |
333 } | 333 } |
334 | 334 |
335 ; CHECK-NEXT: define <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) { | 335 ; CHECK-NEXT: define internal <8 x i16> @InsertV8xi16(<8 x i16> %v, i32 %pe) { |
336 ; CHECK-NEXT: entry: | 336 ; CHECK-NEXT: entry: |
337 ; CHECK-NEXT: %e = trunc i32 %pe to i16 | 337 ; CHECK-NEXT: %e = trunc i32 %pe to i16 |
338 ; CHECK-NEXT: %r0 = insertelement <8 x i16> %v, i16 %e, i32 0 | 338 ; CHECK-NEXT: %r0 = insertelement <8 x i16> %v, i16 %e, i32 0 |
339 ; CHECK-NEXT: %r1 = insertelement <8 x i16> %v, i16 %e, i32 1 | 339 ; CHECK-NEXT: %r1 = insertelement <8 x i16> %v, i16 %e, i32 1 |
340 ; CHECK-NEXT: %r2 = insertelement <8 x i16> %v, i16 %e, i32 2 | 340 ; CHECK-NEXT: %r2 = insertelement <8 x i16> %v, i16 %e, i32 2 |
341 ; CHECK-NEXT: %r3 = insertelement <8 x i16> %v, i16 %e, i32 3 | 341 ; CHECK-NEXT: %r3 = insertelement <8 x i16> %v, i16 %e, i32 3 |
342 ; CHECK-NEXT: %r4 = insertelement <8 x i16> %v, i16 %e, i32 4 | 342 ; CHECK-NEXT: %r4 = insertelement <8 x i16> %v, i16 %e, i32 4 |
343 ; CHECK-NEXT: %r5 = insertelement <8 x i16> %v, i16 %e, i32 5 | 343 ; CHECK-NEXT: %r5 = insertelement <8 x i16> %v, i16 %e, i32 5 |
344 ; CHECK-NEXT: %r6 = insertelement <8 x i16> %v, i16 %e, i32 6 | 344 ; CHECK-NEXT: %r6 = insertelement <8 x i16> %v, i16 %e, i32 6 |
345 ; CHECK-NEXT: %r7 = insertelement <8 x i16> %v, i16 %e, i32 7 | 345 ; CHECK-NEXT: %r7 = insertelement <8 x i16> %v, i16 %e, i32 7 |
346 ; CHECK-NEXT: ret <8 x i16> %r7 | 346 ; CHECK-NEXT: ret <8 x i16> %r7 |
347 ; CHECK-NEXT: } | 347 ; CHECK-NEXT: } |
348 | 348 |
349 define <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) { | 349 define internal <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) { |
350 entry: | 350 entry: |
351 %r0 = insertelement <4 x i32> %v, i32 %e, i32 0 | 351 %r0 = insertelement <4 x i32> %v, i32 %e, i32 0 |
352 %r1 = insertelement <4 x i32> %v, i32 %e, i32 1 | 352 %r1 = insertelement <4 x i32> %v, i32 %e, i32 1 |
353 %r2 = insertelement <4 x i32> %v, i32 %e, i32 2 | 353 %r2 = insertelement <4 x i32> %v, i32 %e, i32 2 |
354 %r3 = insertelement <4 x i32> %v, i32 %e, i32 3 | 354 %r3 = insertelement <4 x i32> %v, i32 %e, i32 3 |
355 ret <4 x i32> %r3 | 355 ret <4 x i32> %r3 |
356 } | 356 } |
357 | 357 |
358 ; CHECK-NEXT: define <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) { | 358 ; CHECK-NEXT: define internal <4 x i32> @InsertV4xi32(<4 x i32> %v, i32 %e) { |
359 ; CHECK-NEXT: entry: | 359 ; CHECK-NEXT: entry: |
360 ; CHECK-NEXT: %r0 = insertelement <4 x i32> %v, i32 %e, i32 0 | 360 ; CHECK-NEXT: %r0 = insertelement <4 x i32> %v, i32 %e, i32 0 |
361 ; CHECK-NEXT: %r1 = insertelement <4 x i32> %v, i32 %e, i32 1 | 361 ; CHECK-NEXT: %r1 = insertelement <4 x i32> %v, i32 %e, i32 1 |
362 ; CHECK-NEXT: %r2 = insertelement <4 x i32> %v, i32 %e, i32 2 | 362 ; CHECK-NEXT: %r2 = insertelement <4 x i32> %v, i32 %e, i32 2 |
363 ; CHECK-NEXT: %r3 = insertelement <4 x i32> %v, i32 %e, i32 3 | 363 ; CHECK-NEXT: %r3 = insertelement <4 x i32> %v, i32 %e, i32 3 |
364 ; CHECK-NEXT: ret <4 x i32> %r3 | 364 ; CHECK-NEXT: ret <4 x i32> %r3 |
365 ; CHECK-NEXT: } | 365 ; CHECK-NEXT: } |
366 | 366 |
367 define <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) { | 367 define internal <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) { |
368 entry: | 368 entry: |
369 %r0 = insertelement <4 x float> %v, float %e, i32 0 | 369 %r0 = insertelement <4 x float> %v, float %e, i32 0 |
370 %r1 = insertelement <4 x float> %v, float %e, i32 1 | 370 %r1 = insertelement <4 x float> %v, float %e, i32 1 |
371 %r2 = insertelement <4 x float> %v, float %e, i32 2 | 371 %r2 = insertelement <4 x float> %v, float %e, i32 2 |
372 %r3 = insertelement <4 x float> %v, float %e, i32 3 | 372 %r3 = insertelement <4 x float> %v, float %e, i32 3 |
373 ret <4 x float> %r3 | 373 ret <4 x float> %r3 |
374 } | 374 } |
375 | 375 |
376 ; CHECK-NEXT: define <4 x float> @InsertV4xfloat(<4 x float> %v, float %e) { | 376 ; CHECK-NEXT: define internal <4 x float> @InsertV4xfloat(<4 x float> %v, float
%e) { |
377 ; CHECK-NEXT: entry: | 377 ; CHECK-NEXT: entry: |
378 ; CHECK-NEXT: %r0 = insertelement <4 x float> %v, float %e, i32 0 | 378 ; CHECK-NEXT: %r0 = insertelement <4 x float> %v, float %e, i32 0 |
379 ; CHECK-NEXT: %r1 = insertelement <4 x float> %v, float %e, i32 1 | 379 ; CHECK-NEXT: %r1 = insertelement <4 x float> %v, float %e, i32 1 |
380 ; CHECK-NEXT: %r2 = insertelement <4 x float> %v, float %e, i32 2 | 380 ; CHECK-NEXT: %r2 = insertelement <4 x float> %v, float %e, i32 2 |
381 ; CHECK-NEXT: %r3 = insertelement <4 x float> %v, float %e, i32 3 | 381 ; CHECK-NEXT: %r3 = insertelement <4 x float> %v, float %e, i32 3 |
382 ; CHECK-NEXT: ret <4 x float> %r3 | 382 ; CHECK-NEXT: ret <4 x float> %r3 |
383 ; CHECK-NEXT: } | 383 ; CHECK-NEXT: } |
384 | 384 |
385 ; NOIR: Total across all functions | 385 ; NOIR: Total across all functions |
OLD | NEW |