1 //===-- CellSDKIntrinsics.td - Cell SDK Intrinsics ---------*- tablegen -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file was developed by a team from the Computer Systems Research
6 // Department at The Aerospace Corporation.
8 // See README.txt for details.
9 //===----------------------------------------------------------------------===//
11 ///--==-- Arithmetic ops intrinsics --==--
13 RR_Int_v8i16<0b00010011000, "ah", IntegerOp, int_spu_si_ah>;
15 RI10_Int_v8i16<0b00010011000, "ahi", IntegerOp, int_spu_si_ahi>;
17 RR_Int_v4i32<0b00000011000, "a", IntegerOp, int_spu_si_a>;
19 RI10_Int_v4i32<0b00111000, "ai", IntegerOp, int_spu_si_ai>;
21 RR_Int_v8i16<0b00010010000, "sfh", IntegerOp, int_spu_si_sfh>;
23 RI10_Int_v8i16<0b10110000, "sfhi", IntegerOp, int_spu_si_sfhi>;
25 RR_Int_v4i32<0b00000010000, "sf", IntegerOp, int_spu_si_sf>;
27 RI10_Int_v4i32<0b00110000, "sfi", IntegerOp, int_spu_si_sfi>;
29 RR_Int_v4i32<0b00000010110, "addx", IntegerOp, int_spu_si_addx>;
31 RR_Int_v4i32<0b0100001100, "cg", IntegerOp, int_spu_si_cg>;
33 RR_Int_v4i32<0b01000010110, "cgx", IntegerOp, int_spu_si_cgx>;
35 RR_Int_v4i32<0b10000010110, "sfx", IntegerOp, int_spu_si_sfx>;
37 RR_Int_v4i32<0b01000010000, "bg", IntegerOp, int_spu_si_bg>;
39 RR_Int_v4i32<0b11000010110, "bgx", IntegerOp, int_spu_si_bgx>;
42 RRForm<0b00100011110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
43 "mpy $rT, $rA, $rB", IntegerMulDiv,
44 [(set (v4i32 VECREG:$rT), (int_spu_si_mpy (v8i16 VECREG:$rA),
45 (v8i16 VECREG:$rB)))]>;
48 RRForm<0b00110011110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
49 "mpyu $rT, $rA, $rB", IntegerMulDiv,
50 [(set (v4i32 VECREG:$rT), (int_spu_si_mpyu (v8i16 VECREG:$rA),
51 (v8i16 VECREG:$rB)))] >;
54 RI10Form<0b00101110, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
55 "mpyi $rT, $rA, $val", IntegerMulDiv,
56 [(set (v4i32 VECREG:$rT), (int_spu_si_mpyi (v8i16 VECREG:$rA),
57 i16ImmSExt10:$val))]>;
60 RI10Form<0b10101110, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
61 "mpyui $rT, $rA, $val", IntegerMulDiv,
62 [(set (v4i32 VECREG:$rT), (int_spu_si_mpyui (v8i16 VECREG:$rA),
63 i16ImmSExt10:$val))]>;
66 RRRForm<0b0011, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB, VECREG:$rC),
67 "mpya $rT, $rA, $rB, $rC", IntegerMulDiv,
68 [(set (v4i32 VECREG:$rT), (int_spu_si_mpya (v8i16 VECREG:$rA),
70 (v8i16 VECREG:$rC)))]>;
73 RRForm<0b10100011110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
74 "mpyh $rT, $rA, $rB", IntegerMulDiv,
75 [(set (v4i32 VECREG:$rT), (int_spu_si_mpyh (v4i32 VECREG:$rA),
76 (v8i16 VECREG:$rB)))]>;
79 RRForm<0b11100011110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
80 "mpys $rT, $rA, $rB", IntegerMulDiv,
81 [(set (v4i32 VECREG:$rT), (int_spu_si_mpys (v8i16 VECREG:$rA),
82 (v8i16 VECREG:$rB)))]>;
85 RRForm<0b01100011110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
86 "mpyhh $rT, $rA, $rB", IntegerMulDiv,
87 [(set (v4i32 VECREG:$rT), (int_spu_si_mpyhh (v8i16 VECREG:$rA),
88 (v8i16 VECREG:$rB)))]>;
91 RRForm<0b01100010110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
92 "mpyhha $rT, $rA, $rB", IntegerMulDiv,
93 [(set (v4i32 VECREG:$rT), (int_spu_si_mpyhha (v8i16 VECREG:$rA),
94 (v8i16 VECREG:$rB)))]>;
96 // Not sure how to match a (set $rT, (add $rT (mpyhh $rA, $rB)))... so leave
97 // as an intrinsic for the time being
99 RRForm<0b01110011110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
100 "mpyhhu $rT, $rA, $rB", IntegerMulDiv,
101 [(set (v4i32 VECREG:$rT), (int_spu_si_mpyhhu (v8i16 VECREG:$rA),
102 (v8i16 VECREG:$rB)))]>;
105 RRForm<0b01110010110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
106 "mpyhhau $rT, $rA, $rB", IntegerMulDiv,
107 [(set (v4i32 VECREG:$rT), (int_spu_si_mpyhhau (v8i16 VECREG:$rA),
108 (v8i16 VECREG:$rB)))]>;
111 RRForm<0b1000011000, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
112 "add\t $rT, $rA, $rB", IntegerOp,
113 [(set (v4i32 VECREG:$rT),
114 (int_spu_si_and (v4i32 VECREG:$rA), (v4i32 VECREG:$rB)))]>;
117 RRForm<0b10000011010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
118 "addc\t $rT, $rA, $rB", IntegerOp,
119 [(set (v4i32 VECREG:$rT),
120 (int_spu_si_andc (v4i32 VECREG:$rA), (v4i32 VECREG:$rB)))]>;
123 RI10Form<0b01101000, (outs VECREG:$rT), (ins VECREG:$rA, u10imm:$val),
124 "andbi\t $rT, $rA, $val", BranchResolv,
125 [(set (v16i8 VECREG:$rT),
126 (int_spu_si_andbi (v16i8 VECREG:$rA), immU8:$val))]>;
129 RI10Form<0b10101000, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
130 "andhi\t $rT, $rA, $val", BranchResolv,
131 [(set (v8i16 VECREG:$rT),
132 (int_spu_si_andhi (v8i16 VECREG:$rA), i16ImmSExt10:$val))]>;
135 RI10Form<0b00101000, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
136 "andi\t $rT, $rA, $val", BranchResolv,
137 [(set (v4i32 VECREG:$rT),
138 (int_spu_si_andi (v4i32 VECREG:$rA), i32ImmSExt10:$val))]>;
141 RRForm<0b10000010000, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
142 "or\t $rT, $rA, $rB", IntegerOp,
143 [(set (v4i32 VECREG:$rT),
144 (int_spu_si_or (v4i32 VECREG:$rA), (v4i32 VECREG:$rB)))]>;
147 RRForm<0b10010011010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
148 "addc\t $rT, $rA, $rB", IntegerOp,
149 [(set (v4i32 VECREG:$rT),
150 (int_spu_si_orc (v4i32 VECREG:$rA), (v4i32 VECREG:$rB)))]>;
153 RI10Form<0b01100000, (outs VECREG:$rT), (ins VECREG:$rA, u10imm:$val),
154 "orbi\t $rT, $rA, $val", BranchResolv,
155 [(set (v16i8 VECREG:$rT),
156 (int_spu_si_orbi (v16i8 VECREG:$rA), immU8:$val))]>;
159 RI10Form<0b10100000, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
160 "orhi\t $rT, $rA, $val", BranchResolv,
161 [(set (v8i16 VECREG:$rT),
162 (int_spu_si_orhi (v8i16 VECREG:$rA), i16ImmSExt10:$val))]>;
165 RI10Form<0b00100000, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
166 "ori\t $rT, $rA, $val", BranchResolv,
167 [(set (v4i32 VECREG:$rT),
168 (int_spu_si_ori (v4i32 VECREG:$rA), i32ImmSExt10:$val))]>;
171 RRForm<0b10000010000, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
172 "xor\t $rT, $rA, $rB", IntegerOp,
173 [(set (v4i32 VECREG:$rT),
174 (int_spu_si_xor (v4i32 VECREG:$rA), (v4i32 VECREG:$rB)))]>;
177 RI10Form<0b01100000, (outs VECREG:$rT), (ins VECREG:$rA, u10imm:$val),
178 "xorbi\t $rT, $rA, $val", BranchResolv,
179 [(set (v16i8 VECREG:$rT), (int_spu_si_xorbi (v16i8 VECREG:$rA), immU8:$val))]>;
182 RI10Form<0b10100000, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
183 "xorhi\t $rT, $rA, $val", BranchResolv,
184 [(set (v8i16 VECREG:$rT),
185 (int_spu_si_xorhi (v8i16 VECREG:$rA), i16ImmSExt10:$val))]>;
188 RI10Form<0b00100000, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
189 "xori\t $rT, $rA, $val", BranchResolv,
190 [(set (v4i32 VECREG:$rT),
191 (int_spu_si_xori (v4i32 VECREG:$rA), i32ImmSExt10:$val))]>;
194 RRForm<0b10000010000, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
195 "nor\t $rT, $rA, $rB", IntegerOp,
196 [(set (v4i32 VECREG:$rT),
197 (int_spu_si_nor (v4i32 VECREG:$rA), (v4i32 VECREG:$rB)))]>;
200 RRForm<0b10000010000, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
201 "nand\t $rT, $rA, $rB", IntegerOp,
202 [(set (v4i32 VECREG:$rT),
203 (int_spu_si_nand (v4i32 VECREG:$rA), (v4i32 VECREG:$rB)))]>;
205 //===----------------------------------------------------------------------===//
206 // Shift/rotate intrinsics:
207 //===----------------------------------------------------------------------===//
210 Pat<(int_spu_si_shli (v4i32 VECREG:$rA), uimm7:$val),
211 (SHLIv4i32 VECREG:$rA, uimm7:$val)>;
214 Pat<(int_spu_si_shlqbi VECREG:$rA, VECREG:$rB),
215 (SHLQBIvec VECREG:$rA, VECREG:$rB)>;
218 Pat<(int_spu_si_shlqbii VECREG:$rA, uimm7:$val),
219 (SHLQBIIvec VECREG:$rA, uimm7:$val)>;
222 Pat<(int_spu_si_shlqby VECREG:$rA, VECREG:$rB),
223 (SHLQBYvec VECREG:$rA, VECREG:$rB)>;
226 Pat<(int_spu_si_shlqbyi VECREG:$rA, uimm7:$val),
227 (SHLQBYIvec VECREG:$rA, uimm7:$val)>;
229 //===----------------------------------------------------------------------===//
230 // Branch/compare intrinsics:
231 //===----------------------------------------------------------------------===//
234 RRForm<0b00000011110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
235 "ceq\t $rT, $rA, $rB", BranchResolv,
236 [(set (v4i32 VECREG:$rT),
237 (int_spu_si_ceq (v4i32 VECREG:$rA), (v4i32 VECREG:$rB)))]>;
240 RI10Form<0b00111110, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
241 "ceqi\t $rT, $rA, $val", BranchResolv,
242 [(set (v4i32 VECREG:$rT),
243 (int_spu_si_ceqi (v4i32 VECREG:$rA), i32ImmSExt10:$val))]>;
246 RRForm<0b00001011110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
247 "ceqb\t $rT, $rA, $rB", BranchResolv,
248 [(set (v16i8 VECREG:$rT),
249 (int_spu_si_ceqb (v16i8 VECREG:$rA), (v16i8 VECREG:$rB)))]>;
252 RI10Form<0b01111110, (outs VECREG:$rT), (ins VECREG:$rA, u10imm:$val),
253 "ceqbi\t $rT, $rA, $val", BranchResolv,
254 [(set (v16i8 VECREG:$rT), (int_spu_si_ceqbi (v16i8 VECREG:$rA), immU8:$val))]>;
257 RRForm<0b00010011110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
258 "ceqh\t $rT, $rA, $rB", BranchResolv,
259 [(set (v8i16 VECREG:$rT),
260 (int_spu_si_ceqh (v8i16 VECREG:$rA), (v8i16 VECREG:$rB)))]>;
263 RI10Form<0b10111110, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
264 "ceqhi\t $rT, $rA, $val", BranchResolv,
265 [(set (v8i16 VECREG:$rT),
266 (int_spu_si_ceqhi (v8i16 VECREG:$rA), i16ImmSExt10:$val))]>;
268 RRForm<0b00010011110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
269 "cgth\t $rT, $rA, $rB", BranchResolv,
270 [(set (v8i16 VECREG:$rT),
271 (int_spu_si_cgth (v8i16 VECREG:$rA), (v8i16 VECREG:$rB)))]>;
274 RI10Form<0b10111110, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
275 "cgthi\t $rT, $rA, $val", BranchResolv,
276 [(set (v8i16 VECREG:$rT),
277 (int_spu_si_cgthi (v8i16 VECREG:$rA), i16ImmSExt10:$val))]>;
280 RRForm<0b00000010010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
281 "cgt\t $rT, $rA, $rB", BranchResolv,
282 [(set (v4i32 VECREG:$rT),
283 (int_spu_si_cgt (v4i32 VECREG:$rA), (v4i32 VECREG:$rB)))]>;
286 RI10Form<0b00110010, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
287 "cgti\t $rT, $rA, $val", BranchResolv,
288 [(set (v4i32 VECREG:$rT),
289 (int_spu_si_cgti (v4i32 VECREG:$rA), i32ImmSExt10:$val))]>;
292 RRForm<0b00001010010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
293 "cgtb\t $rT, $rA, $rB", BranchResolv,
294 [(set (v16i8 VECREG:$rT),
295 (int_spu_si_cgtb (v16i8 VECREG:$rA), (v16i8 VECREG:$rB)))]>;
298 RI10Form<0b01110010, (outs VECREG:$rT), (ins VECREG:$rA, u10imm:$val),
299 "cgtbi\t $rT, $rA, $val", BranchResolv,
300 [(set (v16i8 VECREG:$rT), (int_spu_si_cgtbi (v16i8 VECREG:$rA), immU8:$val))]>;
303 RRForm<0b00010011010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
304 "clgth\t $rT, $rA, $rB", BranchResolv,
305 [(set (v8i16 VECREG:$rT),
306 (int_spu_si_clgth (v8i16 VECREG:$rA), (v8i16 VECREG:$rB)))]>;
309 RI10Form<0b10111010, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
310 "clgthi\t $rT, $rA, $val", BranchResolv,
311 [(set (v8i16 VECREG:$rT),
312 (int_spu_si_clgthi (v8i16 VECREG:$rA), i16ImmSExt10:$val))]>;
315 RRForm<0b00000011010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
316 "clgt\t $rT, $rA, $rB", BranchResolv,
317 [(set (v4i32 VECREG:$rT),
318 (int_spu_si_clgt (v4i32 VECREG:$rA), (v4i32 VECREG:$rB)))]>;
321 RI10Form<0b00111010, (outs VECREG:$rT), (ins VECREG:$rA, s10imm:$val),
322 "clgti\t $rT, $rA, $val", BranchResolv,
323 [(set (v4i32 VECREG:$rT),
324 (int_spu_si_clgti (v4i32 VECREG:$rA), i32ImmSExt10:$val))]>;
327 RRForm<0b00001011010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
328 "clgtb\t $rT, $rA, $rB", BranchResolv,
329 [(set (v16i8 VECREG:$rT),
330 (int_spu_si_clgtb (v16i8 VECREG:$rA), (v16i8 VECREG:$rB)))]>;
333 RI10Form<0b01111010, (outs VECREG:$rT), (ins VECREG:$rA, u10imm:$val),
334 "clgtbi\t $rT, $rA, $val", BranchResolv,
335 [(set (v16i8 VECREG:$rT),
336 (int_spu_si_clgtbi (v16i8 VECREG:$rA), immU8:$val))]>;
338 //===----------------------------------------------------------------------===//
339 // Floating-point intrinsics:
340 //===----------------------------------------------------------------------===//
343 RRForm<0b00100011010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
344 "fa\t $rT, $rA, $rB", SPrecFP,
345 [(set (v4f32 VECREG:$rT), (int_spu_si_fa (v4f32 VECREG:$rA),
346 (v4f32 VECREG:$rB)))]>;
349 RRForm<0b10100011010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
350 "fs\t $rT, $rA, $rB", SPrecFP,
351 [(set (v4f32 VECREG:$rT), (int_spu_si_fs (v4f32 VECREG:$rA),
352 (v4f32 VECREG:$rB)))]>;
355 RRForm<0b01100011010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
356 "fm\t $rT, $rA, $rB", SPrecFP,
357 [(set (v4f32 VECREG:$rT), (int_spu_si_fm (v4f32 VECREG:$rA),
358 (v4f32 VECREG:$rB)))]>;
361 RRForm<0b01000011110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
362 "fceq\t $rT, $rA, $rB", SPrecFP,
363 [(set (v4f32 VECREG:$rT), (int_spu_si_fceq (v4f32 VECREG:$rA),
364 (v4f32 VECREG:$rB)))]>;
367 RRForm<0b01000011010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
368 "fcgt\t $rT, $rA, $rB", SPrecFP,
369 [(set (v4f32 VECREG:$rT), (int_spu_si_fcgt (v4f32 VECREG:$rA),
370 (v4f32 VECREG:$rB)))]>;
373 RRForm<0b01010011110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
374 "fcmeq\t $rT, $rA, $rB", SPrecFP,
375 [(set (v4f32 VECREG:$rT), (int_spu_si_fcmeq (v4f32 VECREG:$rA),
376 (v4f32 VECREG:$rB)))]>;
379 RRForm<0b01010011010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
380 "fcmgt\t $rT, $rA, $rB", SPrecFP,
381 [(set (v4f32 VECREG:$rT), (int_spu_si_fcmgt (v4f32 VECREG:$rA),
382 (v4f32 VECREG:$rB)))]>;
385 RRRForm<0b0111, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB, VECREG:$rC),
386 "fma\t $rT, $rA, $rB, $rC", SPrecFP,
387 [(set (v4f32 VECREG:$rT), (int_spu_si_fma (v4f32 VECREG:$rA),
389 (v4f32 VECREG:$rC)))]>;
392 RRRForm<0b1011, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB, VECREG:$rC),
393 "fnms\t $rT, $rA, $rB, $rC", SPrecFP,
394 [(set (v4f32 VECREG:$rT), (int_spu_si_fnms (v4f32 VECREG:$rA),
396 (v4f32 VECREG:$rC)))]>;
399 RRRForm<0b1111, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB, VECREG:$rC),
400 "fms\t $rT, $rA, $rB, $rC", SPrecFP,
401 [(set (v4f32 VECREG:$rT), (int_spu_si_fms (v4f32 VECREG:$rA),
403 (v4f32 VECREG:$rC)))]>;
405 //===----------------------------------------------------------------------===//
406 // Double precision floating-point intrinsics:
407 //===----------------------------------------------------------------------===//
410 RRForm<0b00110011010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
411 "dfa\t $rT, $rA, $rB", DPrecFP,
412 [(set (v2f64 VECREG:$rT), (int_spu_si_dfa (v2f64 VECREG:$rA),
413 (v2f64 VECREG:$rB)))]>;
416 RRForm<0b10110011010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
417 "dfs\t $rT, $rA, $rB", DPrecFP,
418 [(set (v2f64 VECREG:$rT), (int_spu_si_dfs (v2f64 VECREG:$rA),
419 (v2f64 VECREG:$rB)))]>;
422 RRForm<0b01110011010, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
423 "dfm\t $rT, $rA, $rB", DPrecFP,
424 [(set (v2f64 VECREG:$rT), (int_spu_si_dfm (v2f64 VECREG:$rA),
425 (v2f64 VECREG:$rB)))]>;
428 RRForm<0b00111010110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
429 "dfma\t $rT, $rA, $rB", DPrecFP,
430 [(set (v2f64 VECREG:$rT), (int_spu_si_dfma (v2f64 VECREG:$rA),
431 (v2f64 VECREG:$rB)))]>;
434 RRForm<0b11111010110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
435 "dfnma\t $rT, $rA, $rB", DPrecFP,
436 [(set (v2f64 VECREG:$rT), (int_spu_si_dfnma (v2f64 VECREG:$rA),
437 (v2f64 VECREG:$rB)))]>;
440 RRForm<0b01111010110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
441 "dfnms\t $rT, $rA, $rB", DPrecFP,
442 [(set (v2f64 VECREG:$rT), (int_spu_si_dfnms (v2f64 VECREG:$rA),
443 (v2f64 VECREG:$rB)))]>;
446 RRForm<0b10111010110, (outs VECREG:$rT), (ins VECREG:$rA, VECREG:$rB),
447 "dfms\t $rT, $rA, $rB", DPrecFP,
448 [(set (v2f64 VECREG:$rT), (int_spu_si_dfms (v2f64 VECREG:$rA),
449 (v2f64 VECREG:$rB)))]>;