1 /*========================== begin_copyright_notice ============================ 2 3 Copyright (C) 2017-2021 Intel Corporation 4 5 SPDX-License-Identifier: MIT 6 7 ============================= end_copyright_notice ===========================*/ 8 #ifndef IGA_MODELS_XE_HP_HPP 9 #define IGA_MODELS_XE_HP_HPP 10 11 // ******************** DO NOT MODIFY DIRECTLY ******************** 12 // Auto-generated by IGA project tools 13 14 #include "../Models.hpp" 15 16 namespace iga { 17 static const iga::OpSpec MODEL_XE_HP_OPSPECS[unsigned(Op::TOTAL_OPS) + 1] { 18 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 19 {Op::ADD /* Op::1 */, Platform::XE_HP, 0x40, 20 "add", 21 "Addition", 22 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 23 { 24 // UB,B,UW,W,UD,D <- UB,B,UW,W,UD,D 25 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 26 // F <- F 27 {TYPE(Type::F),TYPE(Type::F)}, 28 // HF <- HF 29 {TYPE(Type::HF),TYPE(Type::HF)}, 30 // BF,F <- BF,F 31 {TYPE(Type::BF)|TYPE(Type::F),TYPE(Type::BF)|TYPE(Type::F)}, 32 // DF <- DF 33 {TYPE(Type::DF),TYPE(Type::DF)}, 34 // UQ,Q <- UW,W,UD,D,UQ,Q 35 {TYPE(Type::UQ)|TYPE(Type::Q),TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)|TYPE(Type::UQ)|TYPE(Type::Q)}, 36 // UW,W,UD,D <- UQ,Q 37 {TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UQ)|TYPE(Type::Q)} 38 }, 39 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 40 }, 41 {Op::ADD3 /* Op::2 */, Platform::XE_HP, 0x52, 42 "add3", 43 "Addition Ternary", 44 OpSpec::Format::TERNARY_REGIMM_REG_REGIMM, 45 { 46 // UW,W,UD,D <- UW,W,UD,D 47 {TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)} 48 }, 49 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 50 }, 51 {Op::ADDC /* Op::3 */, Platform::XE_HP, 0x4E, 52 "addc", 53 "Addition with Carry", 54 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 55 { 56 // UD <- UD 57 {TYPE(Type::UD),TYPE(Type::UD)} 58 }, 59 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER 60 }, 61 {Op::AND /* Op::4 */, Platform::XE_HP, 0x65, 62 "and", 63 "Logic And", 64 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 65 { 66 // UB,B,UW,W,UD,D <- UB,B,UW,W,UD,D 67 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 68 // UQ,Q <- UW,W,UD,D,UQ,Q 69 {TYPE(Type::UQ)|TYPE(Type::Q),TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)|TYPE(Type::UQ)|TYPE(Type::Q)}, 70 // UW,W,UD,D <- UQ,Q 71 {TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UQ)|TYPE(Type::Q)} 72 }, 73 OpSpec::Attr::IS_BITWISE|OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SRCMODS 74 }, 75 {Op::ASR /* Op::5 */, Platform::XE_HP, 0x6C, 76 "asr", 77 "Arithmetic Shift Right", 78 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 79 { 80 // UB,B,UW,W,UD,D <- UB,B,UW,W,UD,D 81 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 82 // UQ,Q <- UW,W,UD,D,UQ,Q 83 {TYPE(Type::UQ)|TYPE(Type::Q),TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)|TYPE(Type::UQ)|TYPE(Type::Q)}, 84 // UW,W,UD,D <- UQ,Q 85 {TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UQ)|TYPE(Type::Q)} 86 }, 87 OpSpec::Attr::IS_BITWISE|OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 88 }, 89 {Op::AVG /* Op::6 */, Platform::XE_HP, 0x42, 90 "avg", 91 "Average", 92 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 93 { 94 // UB,B,UW,W,UD,D <- UB,B,UW,W,UD,D 95 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)} 96 }, 97 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 98 }, 99 {Op::BFE /* Op::7 */, Platform::XE_HP, 0x78, 100 "bfe", 101 "Bit Field Extract", 102 OpSpec::Format::TERNARY_REGIMM_REG_REGIMM, 103 { 104 // UD <- UD 105 {TYPE(Type::UD),TYPE(Type::UD)}, 106 // D <- D 107 {TYPE(Type::D),TYPE(Type::D)} 108 }, 109 OpSpec::Attr::SUPPORTS_PREDICATION 110 }, 111 {Op::BFI1 /* Op::8 */, Platform::XE_HP, 0x79, 112 "bfi1", 113 "Bit Field Insert 1", 114 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 115 { 116 // UD <- UD 117 {TYPE(Type::UD),TYPE(Type::UD)}, 118 // D <- D 119 {TYPE(Type::D),TYPE(Type::D)} 120 }, 121 OpSpec::Attr::SUPPORTS_PREDICATION 122 }, 123 {Op::BFI2 /* Op::9 */, Platform::XE_HP, 0x7A, 124 "bfi2", 125 "Bit Field Insert 2", 126 OpSpec::Format::TERNARY_REGIMM_REG_REGIMM, 127 { 128 // UD <- UD 129 {TYPE(Type::UD),TYPE(Type::UD)}, 130 // D <- D 131 {TYPE(Type::D),TYPE(Type::D)} 132 }, 133 OpSpec::Attr::SUPPORTS_PREDICATION 134 }, 135 {Op::BFN /* Op::10 */, Platform::XE_HP, 0x6B, 136 "bfn", 137 "Boolean Function", 138 OpSpec::Format::TERNARY_REGIMM_REG_REGIMM, 139 { 140 // UD,UW <- UD,UW 141 {TYPE(Type::UD)|TYPE(Type::UW),TYPE(Type::UD)|TYPE(Type::UW)} 142 }, 143 OpSpec::Attr::IS_BITWISE|OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER 144 }, 145 {Op::BFREV /* Op::11 */, Platform::XE_HP, 0x77, 146 "bfrev", 147 "Bit Field Reverse", 148 OpSpec::Format::BASIC_UNARY_REGIMM, 149 { 150 // UD <- UD 151 {TYPE(Type::UD),TYPE(Type::UD)} 152 }, 153 OpSpec::Attr::SUPPORTS_PREDICATION 154 }, 155 {Op::BRC /* Op::12 */, Platform::XE_HP, 0x23, 156 "brc", 157 "Branch Converging", 158 OpSpec::Format::JUMP_BINARY_BRC, 159 { }, // no type mappings 160 OpSpec::Attr::SUPPORTS_PREDICATION 161 }, 162 {Op::BRD /* Op::13 */, Platform::XE_HP, 0x21, 163 "brd", 164 "Branch Diverging", 165 OpSpec::Format::JUMP_UNARY_REGIMM, 166 { }, // no type mappings 167 OpSpec::Attr::SUPPORTS_PREDICATION 168 }, 169 {Op::BREAK /* Op::14 */, Platform::XE_HP, 0x28, 170 "break", 171 "Break", 172 OpSpec::Format::JUMP_BINARY_IMM_IMM, 173 { }, // no type mappings 174 OpSpec::Attr::SUPPORTS_PREDICATION 175 }, 176 {Op::CALL /* Op::15 */, Platform::XE_HP, 0x2C, 177 "call", 178 "Call", 179 OpSpec::Format::JUMP_UNARY_CALL_REGIMM, 180 { }, // no type mappings 181 OpSpec::Attr::SUPPORTS_PREDICATION 182 }, 183 {Op::CALLA /* Op::16 */, Platform::XE_HP, 0x2B, 184 "calla", 185 "Call Absolute", 186 OpSpec::Format::JUMP_UNARY_CALL_REGIMM, 187 { }, // no type mappings 188 OpSpec::Attr::SUPPORTS_PREDICATION 189 }, 190 {Op::CBIT /* Op::17 */, Platform::XE_HP, 0x4D, 191 "cbit", 192 "Count Bits Set", 193 OpSpec::Format::BASIC_UNARY_REGIMM, 194 { 195 // UD <- UB,UW,UD 196 {TYPE(Type::UD),TYPE(Type::UB)|TYPE(Type::UW)|TYPE(Type::UD)} 197 }, 198 OpSpec::Attr::SUPPORTS_PREDICATION 199 }, 200 {Op::CMP /* Op::18 */, Platform::XE_HP, 0x70, 201 "cmp", 202 "Compare", 203 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 204 { 205 // UB,B,UW,W,UD,D <- UB,B,UW,W,UD,D 206 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 207 // F <- UB,B,UW,W,UD,D 208 {TYPE(Type::F),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 209 // F <- F 210 {TYPE(Type::F),TYPE(Type::F)}, 211 // HF <- HF 212 {TYPE(Type::HF),TYPE(Type::HF)}, 213 // HF <- UB,B,UW,W,UD,D 214 {TYPE(Type::HF),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 215 // BF,F <- BF,F 216 {TYPE(Type::BF)|TYPE(Type::F),TYPE(Type::BF)|TYPE(Type::F)}, 217 // DF <- DF 218 {TYPE(Type::DF),TYPE(Type::DF)}, 219 // UQ,Q <- UW,W,UD,D,UQ,Q 220 {TYPE(Type::UQ)|TYPE(Type::Q),TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)|TYPE(Type::UQ)|TYPE(Type::Q)}, 221 // UW,W,UD,D <- UQ,Q 222 {TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UQ)|TYPE(Type::Q)} 223 }, 224 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SRCMODS 225 }, 226 {Op::CMPN /* Op::19 */, Platform::XE_HP, 0x71, 227 "cmpn", 228 "Compare NaN", 229 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 230 { 231 // UB,B,UW,W,UD,D <- UB,B,UW,W,UD,D 232 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 233 // F <- UB,B,UW,W,UD,D 234 {TYPE(Type::F),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 235 // F <- F 236 {TYPE(Type::F),TYPE(Type::F)}, 237 // HF <- HF 238 {TYPE(Type::HF),TYPE(Type::HF)}, 239 // DF <- DF 240 {TYPE(Type::DF),TYPE(Type::DF)} 241 }, 242 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SRCMODS 243 }, 244 {Op::CONT /* Op::20 */, Platform::XE_HP, 0x29, 245 "cont", 246 "Continue", 247 OpSpec::Format::JUMP_BINARY_IMM_IMM, 248 { }, // no type mappings 249 OpSpec::Attr::SUPPORTS_PREDICATION 250 }, 251 {Op::CSEL /* Op::21 */, Platform::XE_HP, 0x72, 252 "csel", 253 "Conditional Select", 254 OpSpec::Format::TERNARY_REGIMM_REG_REGIMM, 255 { 256 // F <- F 257 {TYPE(Type::F),TYPE(Type::F)}, 258 // HF <- HF 259 {TYPE(Type::HF),TYPE(Type::HF)}, 260 // D <- D 261 {TYPE(Type::D),TYPE(Type::D)}, 262 // W <- W 263 {TYPE(Type::W),TYPE(Type::W)} 264 }, 265 OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 266 }, 267 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 268 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 269 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 270 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 271 {Op::DP4A /* Op::26 */, Platform::XE_HP, 0x58, 272 "dp4a", 273 "Dot Product 4 Accumulate", 274 OpSpec::Format::TERNARY_REGIMM_REG_REGIMM, 275 { 276 // UD,D <- UD,D 277 {TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UD)|TYPE(Type::D)} 278 }, 279 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION 280 }, 281 {Op::DPAS /* Op::27 */, Platform::XE_HP, 0x59, 282 "dpas", 283 "Dot Product Accumulate Systolic", 284 OpSpec::Format::TERNARY_REGIMM_REG_REGIMM, 285 { 286 // UD,D <- UD,D,UB,B,U4,S4,U2,S2 287 {TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UD)|TYPE(Type::D)|TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::U4)|TYPE(Type::S4)|TYPE(Type::U2)|TYPE(Type::S2)}, 288 // F <- F,BF 289 {TYPE(Type::F),TYPE(Type::F)|TYPE(Type::BF)}, 290 // F <- F,HF 291 {TYPE(Type::F),TYPE(Type::F)|TYPE(Type::HF)} 292 }, 293 OpSpec::Attr::NONE 294 }, 295 {Op::DPASW /* Op::28 */, Platform::XE_HP, 0x5A, 296 "dpasw", 297 "Dot Product Accumulate Systolic Wide", 298 OpSpec::Format::TERNARY_REGIMM_REG_REGIMM, 299 { 300 // UD,D <- UD,D,UB,B,U4,S4,U2,S2 301 {TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UD)|TYPE(Type::D)|TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::U4)|TYPE(Type::S4)|TYPE(Type::U2)|TYPE(Type::S2)}, 302 // F <- F,BF 303 {TYPE(Type::F),TYPE(Type::F)|TYPE(Type::BF)}, 304 // F <- F,HF 305 {TYPE(Type::F),TYPE(Type::F)|TYPE(Type::HF)} 306 }, 307 OpSpec::Attr::NONE 308 }, 309 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 310 {Op::ELSE /* Op::30 */, Platform::XE_HP, 0x24, 311 "else", 312 "Else", 313 OpSpec::Format::JUMP_BINARY_IMM_IMM, 314 { }, // no type mappings 315 OpSpec::Attr::SUPPORTS_BRCTL 316 }, 317 {Op::ENDIF /* Op::31 */, Platform::XE_HP, 0x25, 318 "endif", 319 "End If", 320 OpSpec::Format::JUMP_UNARY_IMM, 321 { }, // no type mappings 322 OpSpec::Attr::NONE 323 }, 324 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 325 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 326 {Op::FBH /* Op::34 */, Platform::XE_HP, 0x4B, 327 "fbh", 328 "Find First Bit from MSB Side", 329 OpSpec::Format::BASIC_UNARY_REGIMM, 330 { 331 // UD <- UD,D 332 {TYPE(Type::UD),TYPE(Type::UD)|TYPE(Type::D)} 333 }, 334 OpSpec::Attr::SUPPORTS_PREDICATION 335 }, 336 {Op::FBL /* Op::35 */, Platform::XE_HP, 0x4C, 337 "fbl", 338 "Find First Bit from LSB Side", 339 OpSpec::Format::BASIC_UNARY_REGIMM, 340 { 341 // UD <- UD 342 {TYPE(Type::UD),TYPE(Type::UD)} 343 }, 344 OpSpec::Attr::SUPPORTS_PREDICATION 345 }, 346 {Op::FRC /* Op::36 */, Platform::XE_HP, 0x43, 347 "frc", 348 "Fraction", 349 OpSpec::Format::BASIC_UNARY_REGIMM, 350 { 351 // F <- F 352 {TYPE(Type::F),TYPE(Type::F)} 353 }, 354 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SRCMODS 355 }, 356 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 357 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 358 {Op::GOTO /* Op::39 */, Platform::XE_HP, 0x2E, 359 "goto", 360 "Goto", 361 OpSpec::Format::JUMP_BINARY_IMM_IMM, 362 { }, // no type mappings 363 OpSpec::Attr::SUPPORTS_BRCTL|OpSpec::Attr::SUPPORTS_PREDICATION 364 }, 365 {Op::HALT /* Op::40 */, Platform::XE_HP, 0x2A, 366 "halt", 367 "Halt", 368 OpSpec::Format::JUMP_BINARY_IMM_IMM, 369 { }, // no type mappings 370 OpSpec::Attr::SUPPORTS_PREDICATION 371 }, 372 {Op::IF /* Op::41 */, Platform::XE_HP, 0x22, 373 "if", 374 "If", 375 OpSpec::Format::JUMP_BINARY_IMM_IMM, 376 { }, // no type mappings 377 OpSpec::Attr::SUPPORTS_BRCTL|OpSpec::Attr::SUPPORTS_PREDICATION 378 }, 379 {Op::ILLEGAL /* Op::42 */, Platform::XE_HP, 0x00, 380 "illegal", 381 "Illegal", 382 OpSpec::Format::NULLARY, 383 { }, // no type mappings 384 OpSpec::Attr::NONE 385 }, 386 {Op::JMPI /* Op::43 */, Platform::XE_HP, 0x20, 387 "jmpi", 388 "Jump Indexed", 389 OpSpec::Format::JUMP_UNARY_REGIMM, 390 { }, // no type mappings 391 OpSpec::Attr::SUPPORTS_PREDICATION 392 }, 393 {Op::JOIN /* Op::44 */, Platform::XE_HP, 0x2F, 394 "join", 395 "Join", 396 OpSpec::Format::JUMP_UNARY_IMM, 397 { }, // no type mappings 398 OpSpec::Attr::SUPPORTS_PREDICATION 399 }, 400 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 401 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 402 {Op::LZD /* Op::47 */, Platform::XE_HP, 0x4A, 403 "lzd", 404 "Leading Zero Detection", 405 OpSpec::Format::BASIC_UNARY_REGIMM, 406 { 407 // UD <- UB,B,UW,W,UD,D 408 {TYPE(Type::UD),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)} 409 }, 410 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 411 }, 412 {Op::MAC /* Op::48 */, Platform::XE_HP, 0x48, 413 "mac", 414 "Multiply Accumulate", 415 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 416 { 417 // UB,B,UW,W,UD,D <- UB,B,UW,W 418 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)}, 419 // F <- F 420 {TYPE(Type::F),TYPE(Type::F)}, 421 // HF <- HF 422 {TYPE(Type::HF),TYPE(Type::HF)}, 423 // BF,F <- BF,F 424 {TYPE(Type::BF)|TYPE(Type::F),TYPE(Type::BF)|TYPE(Type::F)}, 425 // DF <- DF 426 {TYPE(Type::DF),TYPE(Type::DF)} 427 }, 428 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 429 }, 430 {Op::MACH /* Op::49 */, Platform::XE_HP, 0x49, 431 "mach", 432 "Multiply Accumulate High", 433 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 434 { 435 // D <- D 436 {TYPE(Type::D),TYPE(Type::D)}, 437 // UD <- UD 438 {TYPE(Type::UD),TYPE(Type::UD)} 439 }, 440 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_SRCMODS 441 }, 442 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 443 {Op::MAD /* Op::51 */, Platform::XE_HP, 0x5B, 444 "mad", 445 "Multiply Add", 446 OpSpec::Format::TERNARY_REGIMM_REG_REGIMM, 447 { 448 // F <- F 449 {TYPE(Type::F),TYPE(Type::F)}, 450 // HF <- HF 451 {TYPE(Type::HF),TYPE(Type::HF)}, 452 // BF,F <- BF,F 453 {TYPE(Type::BF)|TYPE(Type::F),TYPE(Type::BF)|TYPE(Type::F)}, 454 // W <- B 455 {TYPE(Type::W),TYPE(Type::B)}, 456 // W,D <- W,D 457 {TYPE(Type::W)|TYPE(Type::D),TYPE(Type::W)|TYPE(Type::D)}, 458 // DF <- DF 459 {TYPE(Type::DF),TYPE(Type::DF)} 460 }, 461 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 462 }, 463 {Op::MADM /* Op::52 */, Platform::XE_HP, 0x5D, 464 "madm", 465 "Multiply Add for Macro", 466 OpSpec::Format::TERNARY_REGIMM_REG_REGIMM, 467 { 468 // F <- F 469 {TYPE(Type::F),TYPE(Type::F)}, 470 // DF <- DF 471 {TYPE(Type::DF),TYPE(Type::DF)} 472 }, 473 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 474 }, 475 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 476 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 477 {Op::MATH /* Op::55 */, Platform::XE_HP, 0x38, 478 "math", 479 "Extended Math Function", 480 OpSpec::Format::MATH_BINARY_REG_REGIMM, 481 { 482 // F,HF <- F,HF 483 {TYPE(Type::F)|TYPE(Type::HF),TYPE(Type::F)|TYPE(Type::HF)} 484 }, 485 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 486 }, 487 {Op::MOV /* Op::56 */, Platform::XE_HP, 0x61, 488 "mov", 489 "Move", 490 OpSpec::Format::BASIC_UNARY_REGIMM, 491 { 492 // UB,B,UW,W,UD,D <- UB,B,UW,W,UD,D 493 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 494 // F <- UB,B,UW,W,UD,D 495 {TYPE(Type::F),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 496 // UB,B,UW,W,UD,D <- F 497 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::F)}, 498 // F <- F 499 {TYPE(Type::F),TYPE(Type::F)}, 500 // HF <- UB,B,UW,W,UD,D 501 {TYPE(Type::HF),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 502 // HF <- F 503 {TYPE(Type::HF),TYPE(Type::F)}, 504 // UB,B,UW,W,UD,D <- HF 505 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::HF)}, 506 // F <- HF 507 {TYPE(Type::F),TYPE(Type::HF)}, 508 // HF <- HF 509 {TYPE(Type::HF),TYPE(Type::HF)}, 510 // BF <- F 511 {TYPE(Type::BF),TYPE(Type::F)}, 512 // F <- BF 513 {TYPE(Type::F),TYPE(Type::BF)}, 514 // DF,F,UQ,Q,UW,W,UD,D <- DF 515 {TYPE(Type::DF)|TYPE(Type::F)|TYPE(Type::UQ)|TYPE(Type::Q)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::DF)}, 516 // DF <- F,UQ,Q,UW,W,UD,D 517 {TYPE(Type::DF),TYPE(Type::F)|TYPE(Type::UQ)|TYPE(Type::Q)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 518 // UQ,Q,F,UW,W,UD,D <- UQ,Q 519 {TYPE(Type::UQ)|TYPE(Type::Q)|TYPE(Type::F)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UQ)|TYPE(Type::Q)}, 520 // UQ,Q <- F,UW,W,UD,D 521 {TYPE(Type::UQ)|TYPE(Type::Q),TYPE(Type::F)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)} 522 }, 523 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 524 }, 525 {Op::MOVI /* Op::57 */, Platform::XE_HP, 0x63, 526 "movi", 527 "Move Indexed", 528 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 529 { 530 // B <- B 531 {TYPE(Type::B),TYPE(Type::B)}, 532 // UB <- UB 533 {TYPE(Type::UB),TYPE(Type::UB)}, 534 // W <- W 535 {TYPE(Type::W),TYPE(Type::W)}, 536 // UW <- UW 537 {TYPE(Type::UW),TYPE(Type::UW)}, 538 // D <- D 539 {TYPE(Type::D),TYPE(Type::D)}, 540 // UD <- UD 541 {TYPE(Type::UD),TYPE(Type::UD)} 542 }, 543 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 544 }, 545 {Op::MUL /* Op::58 */, Platform::XE_HP, 0x41, 546 "mul", 547 "Multiply", 548 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 549 { 550 // UB,B <- UB,B 551 {TYPE(Type::UB)|TYPE(Type::B),TYPE(Type::UB)|TYPE(Type::B)}, 552 // UW,W <- UB,B 553 {TYPE(Type::UW)|TYPE(Type::W),TYPE(Type::UB)|TYPE(Type::B)}, 554 // UD,D <- UB,B 555 {TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)}, 556 // UW,W <- UW,W 557 {TYPE(Type::UW)|TYPE(Type::W),TYPE(Type::UW)|TYPE(Type::W)}, 558 // UD,D <- UW,W 559 {TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UW)|TYPE(Type::W)}, 560 // F <- F 561 {TYPE(Type::F),TYPE(Type::F)}, 562 // HF <- HF 563 {TYPE(Type::HF),TYPE(Type::HF)}, 564 // BF,F <- BF,F 565 {TYPE(Type::BF)|TYPE(Type::F),TYPE(Type::BF)|TYPE(Type::F)}, 566 // DF <- DF 567 {TYPE(Type::DF),TYPE(Type::DF)}, 568 // UQ,Q <- UD,D 569 {TYPE(Type::UQ)|TYPE(Type::Q),TYPE(Type::UD)|TYPE(Type::D)}, 570 // UD,D <- UD,D 571 {TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UD)|TYPE(Type::D)} 572 }, 573 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 574 }, 575 {Op::NOP /* Op::59 */, Platform::XE_HP, 0x60, 576 "nop", 577 "No Operation", 578 OpSpec::Format::NULLARY, 579 { }, // no type mappings 580 OpSpec::Attr::NONE 581 }, 582 {Op::NOT /* Op::60 */, Platform::XE_HP, 0x64, 583 "not", 584 "Logic Not", 585 OpSpec::Format::BASIC_UNARY_REGIMM, 586 { 587 // UB,B,UW,W,UD,D <- UB,B,UW,W,UD,D 588 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 589 // UQ,Q <- UW,W,UD,D,UQ,Q 590 {TYPE(Type::UQ)|TYPE(Type::Q),TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)|TYPE(Type::UQ)|TYPE(Type::Q)}, 591 // UW,W,UD,D <- UQ,Q 592 {TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UQ)|TYPE(Type::Q)} 593 }, 594 OpSpec::Attr::IS_BITWISE|OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SRCMODS 595 }, 596 {Op::OR /* Op::61 */, Platform::XE_HP, 0x66, 597 "or", 598 "Logic Or", 599 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 600 { 601 // UB,B,UW,W,UD,D <- UB,B,UW,W,UD,D 602 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 603 // UQ,Q <- UW,W,UD,D,UQ,Q 604 {TYPE(Type::UQ)|TYPE(Type::Q),TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)|TYPE(Type::UQ)|TYPE(Type::Q)}, 605 // UW,W,UD,D <- UQ,Q 606 {TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UQ)|TYPE(Type::Q)} 607 }, 608 OpSpec::Attr::IS_BITWISE|OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SRCMODS 609 }, 610 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 611 {Op::RET /* Op::63 */, Platform::XE_HP, 0x2D, 612 "ret", 613 "Return", 614 OpSpec::Format::JUMP_UNARY_REG, 615 { }, // no type mappings 616 OpSpec::Attr::SUPPORTS_PREDICATION 617 }, 618 {Op::RNDD /* Op::64 */, Platform::XE_HP, 0x45, 619 "rndd", 620 "Round Down", 621 OpSpec::Format::BASIC_UNARY_REGIMM, 622 { 623 // F <- F 624 {TYPE(Type::F),TYPE(Type::F)} 625 }, 626 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 627 }, 628 {Op::RNDE /* Op::65 */, Platform::XE_HP, 0x46, 629 "rnde", 630 "Round to Nearest or Even", 631 OpSpec::Format::BASIC_UNARY_REGIMM, 632 { 633 // F <- F 634 {TYPE(Type::F),TYPE(Type::F)} 635 }, 636 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 637 }, 638 {Op::RNDU /* Op::66 */, Platform::XE_HP, 0x44, 639 "rndu", 640 "Round Up", 641 OpSpec::Format::BASIC_UNARY_REGIMM, 642 { 643 // F <- F 644 {TYPE(Type::F),TYPE(Type::F)} 645 }, 646 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 647 }, 648 {Op::RNDZ /* Op::67 */, Platform::XE_HP, 0x47, 649 "rndz", 650 "Round to Zero", 651 OpSpec::Format::BASIC_UNARY_REGIMM, 652 { 653 // F <- F 654 {TYPE(Type::F),TYPE(Type::F)} 655 }, 656 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 657 }, 658 {Op::ROL /* Op::68 */, Platform::XE_HP, 0x6F, 659 "rol", 660 "Rotate Left", 661 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 662 { 663 // UW,UD <- UW,UD 664 {TYPE(Type::UW)|TYPE(Type::UD),TYPE(Type::UW)|TYPE(Type::UD)} 665 }, 666 OpSpec::Attr::IS_BITWISE|OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER 667 }, 668 {Op::ROR /* Op::69 */, Platform::XE_HP, 0x6E, 669 "ror", 670 "Rotate Right", 671 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 672 { 673 // UW,UD <- UW,UD 674 {TYPE(Type::UW)|TYPE(Type::UD),TYPE(Type::UW)|TYPE(Type::UD)} 675 }, 676 OpSpec::Attr::IS_BITWISE|OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER 677 }, 678 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 679 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 680 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 681 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 682 {Op::SEL /* Op::74 */, Platform::XE_HP, 0x62, 683 "sel", 684 "Select", 685 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 686 { 687 // UB,B,UW,W,UD,D <- UB,B,UW,W,UD,D 688 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 689 // F <- F 690 {TYPE(Type::F),TYPE(Type::F)}, 691 // HF <- HF 692 {TYPE(Type::HF),TYPE(Type::HF)}, 693 // BF,F <- BF,F 694 {TYPE(Type::BF)|TYPE(Type::F),TYPE(Type::BF)|TYPE(Type::F)}, 695 // DF <- DF 696 {TYPE(Type::DF),TYPE(Type::DF)}, 697 // UQ,Q <- UW,W,UD,D,UQ,Q 698 {TYPE(Type::UQ)|TYPE(Type::Q),TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)|TYPE(Type::UQ)|TYPE(Type::Q)}, 699 // UW,W,UD,D <- UQ,Q 700 {TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UQ)|TYPE(Type::Q)} 701 }, 702 OpSpec::Attr::IS_SELECT|OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 703 }, 704 {Op::SEND /* Op::75 */, Platform::XE_HP, 0x31, 705 "send", 706 "Send Message", 707 OpSpec::Format::SEND_BINARY, 708 { }, // no type mappings 709 OpSpec::Attr::SUPPORTS_PREDICATION 710 }, 711 {Op::SENDC /* Op::76 */, Platform::XE_HP, 0x32, 712 "sendc", 713 "Send Message Conditional", 714 OpSpec::Format::SEND_BINARY, 715 { }, // no type mappings 716 OpSpec::Attr::SUPPORTS_PREDICATION 717 }, 718 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 719 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 720 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 721 {Op::SHL /* Op::80 */, Platform::XE_HP, 0x69, 722 "shl", 723 "Shift Left", 724 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 725 { 726 // UB,B,UW,W,UD,D <- UB,B,UW,W,UD,D 727 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 728 // UQ,Q <- UW,W,UD,D,UQ,Q 729 {TYPE(Type::UQ)|TYPE(Type::Q),TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)|TYPE(Type::UQ)|TYPE(Type::Q)}, 730 // UW,W,UD,D <- UQ,Q 731 {TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UQ)|TYPE(Type::Q)} 732 }, 733 OpSpec::Attr::IS_BITWISE|OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 734 }, 735 {Op::SHR /* Op::81 */, Platform::XE_HP, 0x68, 736 "shr", 737 "Shift Right", 738 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 739 { 740 // UB,UW,UD <- UB,UW,UD 741 {TYPE(Type::UB)|TYPE(Type::UW)|TYPE(Type::UD),TYPE(Type::UB)|TYPE(Type::UW)|TYPE(Type::UD)}, 742 // UQ <- UW,UD,UQ 743 {TYPE(Type::UQ),TYPE(Type::UW)|TYPE(Type::UD)|TYPE(Type::UQ)}, 744 // UW,UD <- UQ 745 {TYPE(Type::UW)|TYPE(Type::UD),TYPE(Type::UQ)} 746 }, 747 OpSpec::Attr::IS_BITWISE|OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION|OpSpec::Attr::SUPPORTS_SRCMODS 748 }, 749 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 750 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 751 {Op::SUBB /* Op::84 */, Platform::XE_HP, 0x4F, 752 "subb", 753 "Subtraction with Borrow", 754 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 755 { 756 // UD <- UD 757 {TYPE(Type::UD),TYPE(Type::UD)} 758 }, 759 OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SATURATION 760 }, 761 {Op::SYNC /* Op::85 */, Platform::XE_HP, 0x01, 762 "sync", 763 "Synchronize", 764 OpSpec::Format::SYNC_UNARY, 765 { 766 // <- UB,B,UW,W,UD,D,UQ,Q,HF,F,DF 767 {ENUM_BITSET_EMPTY_VALUE,TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)|TYPE(Type::UQ)|TYPE(Type::Q)|TYPE(Type::HF)|TYPE(Type::F)|TYPE(Type::DF)} 768 }, 769 OpSpec::Attr::NONE 770 }, 771 {Op::INVALID, Platform::XE_HP, 0x0, nullptr, nullptr, OpSpec::Format::INVALID, {}, OpSpec::Attr::NONE, }, 772 {Op::WHILE /* Op::87 */, Platform::XE_HP, 0x27, 773 "while", 774 "While", 775 OpSpec::Format::JUMP_UNARY_IMM, 776 { }, // no type mappings 777 OpSpec::Attr::SUPPORTS_PREDICATION 778 }, 779 {Op::XOR /* Op::88 */, Platform::XE_HP, 0x67, 780 "xor", 781 "Logic Xor", 782 OpSpec::Format::BASIC_BINARY_REG_REGIMM, 783 { 784 // UB,B,UW,W,UD,D <- UB,B,UW,W,UD,D 785 {TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UB)|TYPE(Type::B)|TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)}, 786 // UQ,Q <- UW,W,UD,D,UQ,Q 787 {TYPE(Type::UQ)|TYPE(Type::Q),TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D)|TYPE(Type::UQ)|TYPE(Type::Q)}, 788 // UW,W,UD,D <- UQ,Q 789 {TYPE(Type::UW)|TYPE(Type::W)|TYPE(Type::UD)|TYPE(Type::D),TYPE(Type::UQ)|TYPE(Type::Q)} 790 }, 791 OpSpec::Attr::IS_BITWISE|OpSpec::Attr::SUPPORTS_PREDICATION|OpSpec::Attr::SUPPORTS_FLAGMODIFIER|OpSpec::Attr::SUPPORTS_SRCMODS 792 } 793 }; // end MODEL_XE_HP_OPSPECS 794 } // namespace iga 795 #endif // IGA_MODELS_XE_HP_HPP 796