Scott Michel | 67d5755 | 2007-12-05 01:31:18 +0000 | [diff] [blame^] | 1 | //===-- CellSDKIntrinsics.td - Cell SDK Intrinsics ---------*- tablegen -*-===// |
| 2 | // |
| 3 | // The LLVM Compiler Infrastructure |
| 4 | // |
| 5 | // This file was developed by a team from the Computer Systems Research |
| 6 | // Department at The Aerospace Corporation. |
| 7 | // |
| 8 | // See README.txt for details. |
| 9 | //===----------------------------------------------------------------------===// |
| 10 | |
| 11 | ///--==-- Arithmetic ops intrinsics --==-- |
| 12 | def CellSDKah: |
| 13 | RR_Int_v8i16<0b00010011000, "ah", IntegerOp, int_spu_si_ah>; |
| 14 | def CellSDKahi: |
| 15 | RI10_Int_v8i16<0b00010011000, "ahi", IntegerOp, int_spu_si_ahi>; |
| 16 | def CellSDKa: |
| 17 | RR_Int_v4i32<0b00000011000, "a", IntegerOp, int_spu_si_a>; |
| 18 | def CellSDKai: |
| 19 | RI10_Int_v4i32<0b00111000, "ai", IntegerOp, int_spu_si_ai>; |
| 20 | def CellSDKsfh: |
| 21 | RR_Int_v8i16<0b00010010000, "sfh", IntegerOp, int_spu_si_sfh>; |
| 22 | def CellSDKsfhi: |
| 23 | RI10_Int_v8i16<0b10110000, "sfhi", IntegerOp, int_spu_si_sfhi>; |
| 24 | def CellSDKsf: |
| 25 | RR_Int_v4i32<0b00000010000, "sf", IntegerOp, int_spu_si_sf>; |
| 26 | def CellSDKsfi: |
| 27 | RI10_Int_v4i32<0b00110000, "sfi", IntegerOp, int_spu_si_sfi>; |
| 28 | def CellSDKaddx: |
| 29 | RR_Int_v4i32<0b00000010110, "addx", IntegerOp, int_spu_si_addx>; |
| 30 | def CellSDKcg: |
| 31 | RR_Int_v4i32<0b0100001100, "cg", IntegerOp, int_spu_si_cg>; |
| 32 | def CellSDKcgx: |
| 33 | RR_Int_v4i32<0b01000010110, "cgx", IntegerOp, int_spu_si_cgx>; |
| 34 | def CellSDKsfx: |
| 35 | RR_Int_v4i32<0b10000010110, "sfx", IntegerOp, int_spu_si_sfx>; |
| 36 | def CellSDKbg: |
| 37 | RR_Int_v4i32<0b01000010000, "bg", IntegerOp, int_spu_si_bg>; |
| 38 | def CellSDKbgx: |
| 39 | RR_Int_v4i32<0b11000010110, "bgx", IntegerOp, int_spu_si_bgx>; |
| 40 | |
| 41 | def CellSDKmpy: |
| 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)))]>; |
| 46 | |
| 47 | def CellSDKmpyu: |
| 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)))] >; |
| 52 | |
| 53 | def CellSDKmpyi: |
| 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))]>; |
| 58 | |
| 59 | def CellSDKmpyui: |
| 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))]>; |
| 64 | |
| 65 | def CellSDKmpya: |
| 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), |
| 69 | (v8i16 VECREG:$rB), |
| 70 | (v8i16 VECREG:$rC)))]>; |
| 71 | |
| 72 | def CellSDKmpyh: |
| 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)))]>; |
| 77 | |
| 78 | def CellSDKmpys: |
| 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)))]>; |
| 83 | |
| 84 | def CellSDKmpyhh: |
| 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)))]>; |
| 89 | |
| 90 | def CellSDKmpyhha: |
| 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)))]>; |
| 95 | |
| 96 | // Not sure how to match a (set $rT, (add $rT (mpyhh $rA, $rB)))... so leave |
| 97 | // as an intrinsic for the time being |
| 98 | def CellSDKmpyhhu: |
| 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)))]>; |
| 103 | |
| 104 | def CellSDKmpyhhau: |
| 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)))]>; |
| 109 | |
| 110 | def CellSDKand: |
| 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)))]>; |
| 115 | |
| 116 | def CellSDKandc: |
| 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)))]>; |
| 121 | |
| 122 | def CellSDKandbi: |
| 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))]>; |
| 127 | |
| 128 | def CellSDKandhi: |
| 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))]>; |
| 133 | |
| 134 | def CellSDKandi: |
| 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))]>; |
| 139 | |
| 140 | def CellSDKor: |
| 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)))]>; |
| 145 | |
| 146 | def CellSDKorc: |
| 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)))]>; |
| 151 | |
| 152 | def CellSDKorbi: |
| 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))]>; |
| 157 | |
| 158 | def CellSDKorhi: |
| 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))]>; |
| 163 | |
| 164 | def CellSDKori: |
| 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))]>; |
| 169 | |
| 170 | def CellSDKxor: |
| 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)))]>; |
| 175 | |
| 176 | def CellSDKxorbi: |
| 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))]>; |
| 180 | |
| 181 | def CellSDKxorhi: |
| 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))]>; |
| 186 | |
| 187 | def CellSDKxori: |
| 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))]>; |
| 192 | |
| 193 | def CellSDKnor: |
| 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)))]>; |
| 198 | |
| 199 | def CellSDKnand: |
| 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)))]>; |
| 204 | |
| 205 | //===----------------------------------------------------------------------===// |
| 206 | // Shift/rotate intrinsics: |
| 207 | //===----------------------------------------------------------------------===// |
| 208 | |
| 209 | def CellSDKshli: |
| 210 | Pat<(int_spu_si_shli (v4i32 VECREG:$rA), uimm7:$val), |
| 211 | (SHLIv4i32 VECREG:$rA, uimm7:$val)>; |
| 212 | |
| 213 | def CellSDKshlqbi: |
| 214 | Pat<(int_spu_si_shlqbi VECREG:$rA, VECREG:$rB), |
| 215 | (SHLQBIvec VECREG:$rA, VECREG:$rB)>; |
| 216 | |
| 217 | def CellSDKshlqii: |
| 218 | Pat<(int_spu_si_shlqbii VECREG:$rA, uimm7:$val), |
| 219 | (SHLQBIIvec VECREG:$rA, uimm7:$val)>; |
| 220 | |
| 221 | def CellSDKshlqby: |
| 222 | Pat<(int_spu_si_shlqby VECREG:$rA, VECREG:$rB), |
| 223 | (SHLQBYvec VECREG:$rA, VECREG:$rB)>; |
| 224 | |
| 225 | def CellSDKshlqbyi: |
| 226 | Pat<(int_spu_si_shlqbyi VECREG:$rA, uimm7:$val), |
| 227 | (SHLQBYIvec VECREG:$rA, uimm7:$val)>; |
| 228 | |
| 229 | //===----------------------------------------------------------------------===// |
| 230 | // Branch/compare intrinsics: |
| 231 | //===----------------------------------------------------------------------===// |
| 232 | |
| 233 | def CellSDKceq: |
| 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)))]>; |
| 238 | |
| 239 | def CellSDKceqi: |
| 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))]>; |
| 244 | |
| 245 | def CellSDKceqb: |
| 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)))]>; |
| 250 | |
| 251 | def CellSDKceqbi: |
| 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))]>; |
| 255 | |
| 256 | def CellSDKceqh: |
| 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)))]>; |
| 261 | |
| 262 | def CellSDKceqhi: |
| 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))]>; |
| 267 | def CellSDKcgth: |
| 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)))]>; |
| 272 | |
| 273 | def CellSDKcgthi: |
| 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))]>; |
| 278 | |
| 279 | def CellSDKcgt: |
| 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)))]>; |
| 284 | |
| 285 | def CellSDKcgti: |
| 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))]>; |
| 290 | |
| 291 | def CellSDKcgtb: |
| 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)))]>; |
| 296 | |
| 297 | def CellSDKcgtbi: |
| 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))]>; |
| 301 | |
| 302 | def CellSDKclgth: |
| 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)))]>; |
| 307 | |
| 308 | def CellSDKclgthi: |
| 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))]>; |
| 313 | |
| 314 | def CellSDKclgt: |
| 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)))]>; |
| 319 | |
| 320 | def CellSDKclgti: |
| 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))]>; |
| 325 | |
| 326 | def CellSDKclgtb: |
| 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)))]>; |
| 331 | |
| 332 | def CellSDKclgtbi: |
| 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))]>; |
| 337 | |
| 338 | //===----------------------------------------------------------------------===// |
| 339 | // Floating-point intrinsics: |
| 340 | //===----------------------------------------------------------------------===// |
| 341 | |
| 342 | def CellSDKfa: |
| 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)))]>; |
| 347 | |
| 348 | def CellSDKfs: |
| 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)))]>; |
| 353 | |
| 354 | def CellSDKfm: |
| 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)))]>; |
| 359 | |
| 360 | def CellSDKfceq: |
| 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)))]>; |
| 365 | |
| 366 | def CellSDKfcgt: |
| 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)))]>; |
| 371 | |
| 372 | def CellSDKfcmeq: |
| 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)))]>; |
| 377 | |
| 378 | def CellSDKfcmgt: |
| 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)))]>; |
| 383 | |
| 384 | def CellSDKfma: |
| 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), |
| 388 | (v4f32 VECREG:$rB), |
| 389 | (v4f32 VECREG:$rC)))]>; |
| 390 | |
| 391 | def CellSDKfnms: |
| 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), |
| 395 | (v4f32 VECREG:$rB), |
| 396 | (v4f32 VECREG:$rC)))]>; |
| 397 | |
| 398 | def CellSDKfms: |
| 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), |
| 402 | (v4f32 VECREG:$rB), |
| 403 | (v4f32 VECREG:$rC)))]>; |
| 404 | |
| 405 | //===----------------------------------------------------------------------===// |
| 406 | // Double precision floating-point intrinsics: |
| 407 | //===----------------------------------------------------------------------===// |
| 408 | |
| 409 | def CellSDKdfa: |
| 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)))]>; |
| 414 | |
| 415 | def CellSDKdfs: |
| 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)))]>; |
| 420 | |
| 421 | def CellSDKdfm: |
| 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)))]>; |
| 426 | |
| 427 | def CellSDKdfma: |
| 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)))]>; |
| 432 | |
| 433 | def CellSDKdfnma: |
| 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)))]>; |
| 438 | |
| 439 | def CellSDKdfnms: |
| 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)))]>; |
| 444 | |
| 445 | def CellSDKdfms: |
| 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)))]>; |