41# 42# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 43# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 44# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 45# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 46# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 47# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 48# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 49# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 50# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 51# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 52# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 53# 54# Authors: Gabe Black 55 56microcode = ''' 57def macroop CMOVZ_R_R 58{ 59 mov reg, reg, reg, flags=(nCZF,) 60 mov reg, reg, regm, flags=(CZF,) 61}; 62 63def macroop CMOVZ_R_M 64{ 65 ld t1, seg, sib, disp 66 mov reg, reg, reg, flags=(nCZF,) 67 mov reg, reg, t1, flags=(CZF,) 68}; 69 70def macroop CMOVZ_R_P 71{ 72 rdip t7 73 ld t1, seg, riprel, disp 74 mov reg, reg, reg, flags=(nCZF,) 75 mov reg, reg, t1, flags=(CZF,) 76}; 77 78def macroop CMOVNZ_R_R 79{ 80 mov reg, reg, reg, flags=(CZF,) 81 mov reg, reg, regm, flags=(nCZF,) 82}; 83 84def macroop CMOVNZ_R_M 85{ 86 ld t1, seg, sib, disp 87 mov reg, reg, reg, flags=(CZF,) 88 mov reg, reg, t1, flags=(nCZF,) 89}; 90 91def macroop CMOVNZ_R_P 92{ 93 rdip t7 94 ld t1, seg, riprel, disp 95 mov reg, reg, reg, flags=(CZF,) 96 mov reg, reg, t1, flags=(nCZF,) 97}; 98 99def macroop CMOVB_R_R 100{ 101 mov reg, reg, reg, flags=(nCCF,) 102 mov reg, reg, regm, flags=(CCF,) 103}; 104 105def macroop CMOVB_R_M 106{ 107 ld t1, seg, sib, disp 108 mov reg, reg, reg, flags=(nCCF,) 109 mov reg, reg, t1, flags=(CCF,) 110}; 111 112def macroop CMOVB_R_P 113{ 114 rdip t7 115 ld t1, seg, riprel, disp 116 mov reg, reg, reg, flags=(nCCF,) 117 mov reg, reg, t1, flags=(CCF,) 118}; 119 120def macroop CMOVNB_R_R 121{ 122 mov reg, reg, reg, flags=(CCF,) 123 mov reg, reg, regm, flags=(nCCF,) 124}; 125 126def macroop CMOVNB_R_M 127{ 128 ld t1, seg, sib, disp 129 mov reg, reg, reg, flags=(CCF,) 130 mov reg, reg, t1, flags=(nCCF,) 131}; 132 133def macroop CMOVNB_R_P 134{ 135 rdip t7 136 ld t1, seg, riprel, disp 137 mov reg, reg, reg, flags=(CCF,) 138 mov reg, reg, t1, flags=(nCCF,) 139}; 140 141def macroop CMOVBE_R_R 142{ 143 mov reg, reg, reg, flags=(nCCvZF,) 144 mov reg, reg, regm, flags=(CCvZF,) 145}; 146 147def macroop CMOVBE_R_M 148{ 149 ld t1, seg, sib, disp 150 mov reg, reg, reg, flags=(nCCvZF,) 151 mov reg, reg, t1, flags=(CCvZF,) 152}; 153 154def macroop CMOVBE_R_P 155{ 156 rdip t7 157 ld t1, seg, riprel, disp 158 mov reg, reg, reg, flags=(nCCvZF,) 159 mov reg, reg, t1, flags=(CCvZF,) 160}; 161 162def macroop CMOVNBE_R_R 163{ 164 mov reg, reg, reg, flags=(CCvZF,) 165 mov reg, reg, regm, flags=(nCCvZF,) 166}; 167 168def macroop CMOVNBE_R_M 169{ 170 ld t1, seg, sib, disp 171 mov reg, reg, reg, flags=(CCvZF,) 172 mov reg, reg, t1, flags=(nCCvZF,) 173}; 174 175def macroop CMOVNBE_R_P 176{ 177 rdip t7 178 ld t1, seg, riprel, disp 179 mov reg, reg, reg, flags=(CCvZF,) 180 mov reg, reg, t1, flags=(nCCvZF,) 181}; 182 183def macroop CMOVS_R_R 184{ 185 mov reg, reg, reg, flags=(nCSF,) 186 mov reg, reg, regm, flags=(CSF,) 187}; 188 189def macroop CMOVS_R_M 190{ 191 ld t1, seg, sib, disp 192 mov reg, reg, reg, flags=(nCSF,) 193 mov reg, reg, t1, flags=(CSF,) 194}; 195 196def macroop CMOVS_R_P 197{ 198 rdip t7 199 ld t1, seg, riprel, disp 200 mov reg, reg, reg, flags=(nCSF,) 201 mov reg, reg, t1, flags=(CSF,) 202}; 203 204def macroop CMOVNS_R_R 205{ 206 mov reg, reg, reg, flags=(CSF,) 207 mov reg, reg, regm, flags=(nCSF,) 208}; 209 210def macroop CMOVNS_R_M 211{ 212 ld t1, seg, sib, disp 213 mov reg, reg, reg, flags=(CSF,) 214 mov reg, reg, t1, flags=(nCSF,) 215}; 216 217def macroop CMOVNS_R_P 218{ 219 rdip t7 220 ld t1, seg, riprel, disp 221 mov reg, reg, reg, flags=(CSF,) 222 mov reg, reg, t1, flags=(nCSF,) 223}; 224 225def macroop CMOVP_R_R 226{ 227 mov reg, reg, reg, flags=(nCPF,) 228 mov reg, reg, regm, flags=(CPF,) 229}; 230 231def macroop CMOVP_R_M 232{ 233 ld t1, seg, sib, disp 234 mov reg, reg, reg, flags=(nCPF,) 235 mov reg, reg, t1, flags=(CPF,) 236}; 237 238def macroop CMOVP_R_P 239{ 240 rdip t7 241 ld t1, seg, riprel, disp 242 mov reg, reg, reg, flags=(nCPF,) 243 mov reg, reg, t1, flags=(CPF,) 244}; 245 246def macroop CMOVNP_R_R 247{ 248 mov reg, reg, reg, flags=(CPF,) 249 mov reg, reg, regm, flags=(nCPF,) 250}; 251 252def macroop CMOVNP_R_M 253{ 254 ld t1, seg, sib, disp 255 mov reg, reg, reg, flags=(CPF,) 256 mov reg, reg, t1, flags=(nCPF,) 257}; 258 259def macroop CMOVNP_R_P 260{ 261 rdip t7 262 ld t1, seg, riprel, disp 263 mov reg, reg, reg, flags=(CPF,) 264 mov reg, reg, t1, flags=(nCPF,) 265}; 266 267def macroop CMOVL_R_R 268{ 269 mov reg, reg, reg, flags=(nCSxOF,) 270 mov reg, reg, regm, flags=(CSxOF,) 271}; 272 273def macroop CMOVL_R_M 274{ 275 ld t1, seg, sib, disp 276 mov reg, reg, reg, flags=(nCSxOF,) 277 mov reg, reg, t1, flags=(CSxOF,) 278}; 279 280def macroop CMOVL_R_P 281{ 282 rdip t7 283 ld t1, seg, riprel, disp 284 mov reg, reg, reg, flags=(nCSxOF,) 285 mov reg, reg, t1, flags=(CSxOF,) 286}; 287 288def macroop CMOVNL_R_R 289{ 290 mov reg, reg, reg, flags=(CSxOF,) 291 mov reg, reg, regm, flags=(nCSxOF,) 292}; 293 294def macroop CMOVNL_R_M 295{ 296 ld t1, seg, sib, disp 297 mov reg, reg, reg, flags=(CSxOF,) 298 mov reg, reg, t1, flags=(nCSxOF,) 299}; 300 301def macroop CMOVNL_R_P 302{ 303 rdip t7 304 ld t1, seg, riprel, disp 305 mov reg, reg, reg, flags=(CSxOF,) 306 mov reg, reg, t1, flags=(nCSxOF,) 307}; 308 309def macroop CMOVLE_R_R 310{ 311 mov reg, reg, reg, flags=(nCSxOvZF,) 312 mov reg, reg, regm, flags=(CSxOvZF,) 313}; 314 315def macroop CMOVLE_R_M 316{ 317 ld t1, seg, sib, disp 318 mov reg, reg, reg, flags=(nCSxOvZF,) 319 mov reg, reg, t1, flags=(CSxOvZF,) 320}; 321 322def macroop CMOVLE_R_P 323{ 324 rdip t7 325 ld t1, seg, riprel, disp 326 mov reg, reg, reg, flags=(nCSxOvZF,) 327 mov reg, reg, t1, flags=(CSxOvZF,) 328}; 329 330def macroop CMOVNLE_R_R 331{ 332 mov reg, reg, reg, flags=(CSxOvZF,) 333 mov reg, reg, regm, flags=(nCSxOvZF,) 334}; 335 336def macroop CMOVNLE_R_M 337{ 338 ld t1, seg, sib, disp 339 mov reg, reg, reg, flags=(CSxOvZF,) 340 mov reg, reg, t1, flags=(nCSxOvZF,) 341}; 342 343def macroop CMOVNLE_R_P 344{ 345 rdip t7 346 ld t1, seg, riprel, disp 347 mov reg, reg, reg, flags=(CSxOvZF,) 348 mov reg, reg, t1, flags=(nCSxOvZF,) 349}; 350 351def macroop CMOVO_R_R 352{ 353 mov reg, reg, reg, flags=(nCOF,) 354 mov reg, reg, regm, flags=(COF,) 355}; 356 357def macroop CMOVO_R_M 358{ 359 ld t1, seg, sib, disp 360 mov reg, reg, reg, flags=(nCOF,) 361 mov reg, reg, t1, flags=(COF,) 362}; 363 364def macroop CMOVO_R_P 365{ 366 rdip t7 367 ld t1, seg, riprel, disp 368 mov reg, reg, reg, flags=(nCOF,) 369 mov reg, reg, t1, flags=(COF,) 370}; 371 372def macroop CMOVNO_R_R 373{ 374 mov reg, reg, reg, flags=(COF,) 375 mov reg, reg, regm, flags=(nCOF,) 376}; 377 378def macroop CMOVNO_R_M 379{ 380 ld t1, seg, sib, disp 381 mov reg, reg, reg, flags=(COF,) 382 mov reg, reg, t1, flags=(nCOF,) 383}; 384 385def macroop CMOVNO_R_P 386{ 387 rdip t7 388 ld t1, seg, riprel, disp 389 mov reg, reg, reg, flags=(COF,) 390 mov reg, reg, t1, flags=(nCOF,) 391}; 392'''
| 23# 24# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 25# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 26# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 27# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 28# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 29# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 30# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 31# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 32# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 33# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 34# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35# 36# Authors: Gabe Black 37 38microcode = ''' 39def macroop CMOVZ_R_R 40{ 41 mov reg, reg, reg, flags=(nCZF,) 42 mov reg, reg, regm, flags=(CZF,) 43}; 44 45def macroop CMOVZ_R_M 46{ 47 ld t1, seg, sib, disp 48 mov reg, reg, reg, flags=(nCZF,) 49 mov reg, reg, t1, flags=(CZF,) 50}; 51 52def macroop CMOVZ_R_P 53{ 54 rdip t7 55 ld t1, seg, riprel, disp 56 mov reg, reg, reg, flags=(nCZF,) 57 mov reg, reg, t1, flags=(CZF,) 58}; 59 60def macroop CMOVNZ_R_R 61{ 62 mov reg, reg, reg, flags=(CZF,) 63 mov reg, reg, regm, flags=(nCZF,) 64}; 65 66def macroop CMOVNZ_R_M 67{ 68 ld t1, seg, sib, disp 69 mov reg, reg, reg, flags=(CZF,) 70 mov reg, reg, t1, flags=(nCZF,) 71}; 72 73def macroop CMOVNZ_R_P 74{ 75 rdip t7 76 ld t1, seg, riprel, disp 77 mov reg, reg, reg, flags=(CZF,) 78 mov reg, reg, t1, flags=(nCZF,) 79}; 80 81def macroop CMOVB_R_R 82{ 83 mov reg, reg, reg, flags=(nCCF,) 84 mov reg, reg, regm, flags=(CCF,) 85}; 86 87def macroop CMOVB_R_M 88{ 89 ld t1, seg, sib, disp 90 mov reg, reg, reg, flags=(nCCF,) 91 mov reg, reg, t1, flags=(CCF,) 92}; 93 94def macroop CMOVB_R_P 95{ 96 rdip t7 97 ld t1, seg, riprel, disp 98 mov reg, reg, reg, flags=(nCCF,) 99 mov reg, reg, t1, flags=(CCF,) 100}; 101 102def macroop CMOVNB_R_R 103{ 104 mov reg, reg, reg, flags=(CCF,) 105 mov reg, reg, regm, flags=(nCCF,) 106}; 107 108def macroop CMOVNB_R_M 109{ 110 ld t1, seg, sib, disp 111 mov reg, reg, reg, flags=(CCF,) 112 mov reg, reg, t1, flags=(nCCF,) 113}; 114 115def macroop CMOVNB_R_P 116{ 117 rdip t7 118 ld t1, seg, riprel, disp 119 mov reg, reg, reg, flags=(CCF,) 120 mov reg, reg, t1, flags=(nCCF,) 121}; 122 123def macroop CMOVBE_R_R 124{ 125 mov reg, reg, reg, flags=(nCCvZF,) 126 mov reg, reg, regm, flags=(CCvZF,) 127}; 128 129def macroop CMOVBE_R_M 130{ 131 ld t1, seg, sib, disp 132 mov reg, reg, reg, flags=(nCCvZF,) 133 mov reg, reg, t1, flags=(CCvZF,) 134}; 135 136def macroop CMOVBE_R_P 137{ 138 rdip t7 139 ld t1, seg, riprel, disp 140 mov reg, reg, reg, flags=(nCCvZF,) 141 mov reg, reg, t1, flags=(CCvZF,) 142}; 143 144def macroop CMOVNBE_R_R 145{ 146 mov reg, reg, reg, flags=(CCvZF,) 147 mov reg, reg, regm, flags=(nCCvZF,) 148}; 149 150def macroop CMOVNBE_R_M 151{ 152 ld t1, seg, sib, disp 153 mov reg, reg, reg, flags=(CCvZF,) 154 mov reg, reg, t1, flags=(nCCvZF,) 155}; 156 157def macroop CMOVNBE_R_P 158{ 159 rdip t7 160 ld t1, seg, riprel, disp 161 mov reg, reg, reg, flags=(CCvZF,) 162 mov reg, reg, t1, flags=(nCCvZF,) 163}; 164 165def macroop CMOVS_R_R 166{ 167 mov reg, reg, reg, flags=(nCSF,) 168 mov reg, reg, regm, flags=(CSF,) 169}; 170 171def macroop CMOVS_R_M 172{ 173 ld t1, seg, sib, disp 174 mov reg, reg, reg, flags=(nCSF,) 175 mov reg, reg, t1, flags=(CSF,) 176}; 177 178def macroop CMOVS_R_P 179{ 180 rdip t7 181 ld t1, seg, riprel, disp 182 mov reg, reg, reg, flags=(nCSF,) 183 mov reg, reg, t1, flags=(CSF,) 184}; 185 186def macroop CMOVNS_R_R 187{ 188 mov reg, reg, reg, flags=(CSF,) 189 mov reg, reg, regm, flags=(nCSF,) 190}; 191 192def macroop CMOVNS_R_M 193{ 194 ld t1, seg, sib, disp 195 mov reg, reg, reg, flags=(CSF,) 196 mov reg, reg, t1, flags=(nCSF,) 197}; 198 199def macroop CMOVNS_R_P 200{ 201 rdip t7 202 ld t1, seg, riprel, disp 203 mov reg, reg, reg, flags=(CSF,) 204 mov reg, reg, t1, flags=(nCSF,) 205}; 206 207def macroop CMOVP_R_R 208{ 209 mov reg, reg, reg, flags=(nCPF,) 210 mov reg, reg, regm, flags=(CPF,) 211}; 212 213def macroop CMOVP_R_M 214{ 215 ld t1, seg, sib, disp 216 mov reg, reg, reg, flags=(nCPF,) 217 mov reg, reg, t1, flags=(CPF,) 218}; 219 220def macroop CMOVP_R_P 221{ 222 rdip t7 223 ld t1, seg, riprel, disp 224 mov reg, reg, reg, flags=(nCPF,) 225 mov reg, reg, t1, flags=(CPF,) 226}; 227 228def macroop CMOVNP_R_R 229{ 230 mov reg, reg, reg, flags=(CPF,) 231 mov reg, reg, regm, flags=(nCPF,) 232}; 233 234def macroop CMOVNP_R_M 235{ 236 ld t1, seg, sib, disp 237 mov reg, reg, reg, flags=(CPF,) 238 mov reg, reg, t1, flags=(nCPF,) 239}; 240 241def macroop CMOVNP_R_P 242{ 243 rdip t7 244 ld t1, seg, riprel, disp 245 mov reg, reg, reg, flags=(CPF,) 246 mov reg, reg, t1, flags=(nCPF,) 247}; 248 249def macroop CMOVL_R_R 250{ 251 mov reg, reg, reg, flags=(nCSxOF,) 252 mov reg, reg, regm, flags=(CSxOF,) 253}; 254 255def macroop CMOVL_R_M 256{ 257 ld t1, seg, sib, disp 258 mov reg, reg, reg, flags=(nCSxOF,) 259 mov reg, reg, t1, flags=(CSxOF,) 260}; 261 262def macroop CMOVL_R_P 263{ 264 rdip t7 265 ld t1, seg, riprel, disp 266 mov reg, reg, reg, flags=(nCSxOF,) 267 mov reg, reg, t1, flags=(CSxOF,) 268}; 269 270def macroop CMOVNL_R_R 271{ 272 mov reg, reg, reg, flags=(CSxOF,) 273 mov reg, reg, regm, flags=(nCSxOF,) 274}; 275 276def macroop CMOVNL_R_M 277{ 278 ld t1, seg, sib, disp 279 mov reg, reg, reg, flags=(CSxOF,) 280 mov reg, reg, t1, flags=(nCSxOF,) 281}; 282 283def macroop CMOVNL_R_P 284{ 285 rdip t7 286 ld t1, seg, riprel, disp 287 mov reg, reg, reg, flags=(CSxOF,) 288 mov reg, reg, t1, flags=(nCSxOF,) 289}; 290 291def macroop CMOVLE_R_R 292{ 293 mov reg, reg, reg, flags=(nCSxOvZF,) 294 mov reg, reg, regm, flags=(CSxOvZF,) 295}; 296 297def macroop CMOVLE_R_M 298{ 299 ld t1, seg, sib, disp 300 mov reg, reg, reg, flags=(nCSxOvZF,) 301 mov reg, reg, t1, flags=(CSxOvZF,) 302}; 303 304def macroop CMOVLE_R_P 305{ 306 rdip t7 307 ld t1, seg, riprel, disp 308 mov reg, reg, reg, flags=(nCSxOvZF,) 309 mov reg, reg, t1, flags=(CSxOvZF,) 310}; 311 312def macroop CMOVNLE_R_R 313{ 314 mov reg, reg, reg, flags=(CSxOvZF,) 315 mov reg, reg, regm, flags=(nCSxOvZF,) 316}; 317 318def macroop CMOVNLE_R_M 319{ 320 ld t1, seg, sib, disp 321 mov reg, reg, reg, flags=(CSxOvZF,) 322 mov reg, reg, t1, flags=(nCSxOvZF,) 323}; 324 325def macroop CMOVNLE_R_P 326{ 327 rdip t7 328 ld t1, seg, riprel, disp 329 mov reg, reg, reg, flags=(CSxOvZF,) 330 mov reg, reg, t1, flags=(nCSxOvZF,) 331}; 332 333def macroop CMOVO_R_R 334{ 335 mov reg, reg, reg, flags=(nCOF,) 336 mov reg, reg, regm, flags=(COF,) 337}; 338 339def macroop CMOVO_R_M 340{ 341 ld t1, seg, sib, disp 342 mov reg, reg, reg, flags=(nCOF,) 343 mov reg, reg, t1, flags=(COF,) 344}; 345 346def macroop CMOVO_R_P 347{ 348 rdip t7 349 ld t1, seg, riprel, disp 350 mov reg, reg, reg, flags=(nCOF,) 351 mov reg, reg, t1, flags=(COF,) 352}; 353 354def macroop CMOVNO_R_R 355{ 356 mov reg, reg, reg, flags=(COF,) 357 mov reg, reg, regm, flags=(nCOF,) 358}; 359 360def macroop CMOVNO_R_M 361{ 362 ld t1, seg, sib, disp 363 mov reg, reg, reg, flags=(COF,) 364 mov reg, reg, t1, flags=(nCOF,) 365}; 366 367def macroop CMOVNO_R_P 368{ 369 rdip t7 370 ld t1, seg, riprel, disp 371 mov reg, reg, reg, flags=(COF,) 372 mov reg, reg, t1, flags=(nCOF,) 373}; 374'''
|