1# Copyright (c) 2008 The Regents of The University of Michigan 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright 9# notice, this list of conditions and the following disclaimer in the 10# documentation and/or other materials provided with the distribution; 11# neither the name of the copyright holders nor the names of its 12# contributors may be used to endorse or promote products derived from 13# this software without specific prior written permission. 14# 15# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 18# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 19# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 21# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26# 27# Authors: Gabe Black 28 29# Copyright (c) 2007-2008 The Hewlett-Packard Development Company 30# All rights reserved. 31# 32# Redistribution and use of this software in source and binary forms, 33# with or without modification, are permitted provided that the 34# following conditions are met: 35# 36# The software must be used only for Non-Commercial Use which means any 37# use which is NOT directed to receiving any direct monetary 38# compensation for, or commercial advantage from such use. Illustrative 39# examples of non-commercial use are academic research, personal study, 40# teaching, education and corporate research & development. 41# Illustrative examples of commercial use are distributing products for 42# commercial advantage and providing services using the software for 43# commercial advantage. 44# 45# If you wish to use this software or functionality therein that may be 46# covered by patents for commercial use, please contact: 47# Director of Intellectual Property Licensing 48# Office of Strategy and Technology 49# Hewlett-Packard Company 50# 1501 Page Mill Road 51# Palo Alto, California 94304 52# 53# Redistributions of source code must retain the above copyright notice, 54# this list of conditions and the following disclaimer. Redistributions 55# in binary form must reproduce the above copyright notice, this list of 56# conditions and the following disclaimer in the documentation and/or 57# other materials provided with the distribution. Neither the name of 58# the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its 59# contributors may be used to endorse or promote products derived from 60# this software without specific prior written permission. No right of 61# sublicense is granted herewith. Derivatives of the software and 62# output created using the software may be prepared, but only for 63# Non-Commercial Uses. Derivatives of the software may be shared with 64# others provided: (i) the others agree to abide by the list of 65# conditions herein which includes the Non-Commercial Use restrictions; 66# and (ii) such Derivatives of the software include the above copyright 67# notice to acknowledge the contribution from this software where 68# applicable, this list of conditions and the disclaimer below. 69# 70# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 71# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 72# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 73# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 74# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 75# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 76# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 77# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 78# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 79# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 80# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 81# 82# Authors: Gabe Black 83 84microcode = ''' 85def macroop BT_R_I { 86 sexti t0, reg, imm, flags=(CF,) 87}; 88 89def macroop BT_M_I { 90 limm t1, imm, dataSize=asz 91 # This fudges just a tiny bit, but it's reasonable to expect the 92 # microcode generation logic to have the log of the various sizes 93 # floating around as well. 94 ld t1, seg, sib, disp 95 sexti t0, t1, imm, flags=(CF,) 96}; 97 98def macroop BT_P_I { 99 rdip t7 100 limm t1, imm, dataSize=asz 101 ld t1, seg, riprel, disp, dataSize=asz 102 sexti t0, t1, imm, flags=(CF,) 103}; 104 105def macroop BT_R_R { 106 sext t0, reg, regm, flags=(CF,) 107}; 108 109def macroop BT_M_R { 110 srai t2, reg, 3, dataSize=asz 111 srai t3, t2, ldsz, dataSize=asz 112 lea t3, flatseg, [dsz, t3, base], dataSize=asz 113 ld t1, seg, [scale, index, t3], disp 114 sext t0, t1, reg, flags=(CF,) 115}; 116 117def macroop BT_P_R { 118 rdip t7 119 srai t2, reg, 3, dataSize=asz 120 srai t3, t2, ldsz, dataSize=asz 121 lea t3, flatseg, [ldsz, t3, base], dataSize=asz 122 ld t1, seg, [1, t3, t7], disp 123 sext t0, t1, reg, flags=(CF,) 124}; 125 126def macroop BTC_R_I { 127 sexti t0, reg, imm, flags=(CF,) 128 limm t1, 1 129 roli t1, t1, imm 130 xor reg, reg, t1 131}; 132 133def macroop BTC_M_I { 134 limm t1, imm, dataSize=asz 135 # This fudges just a tiny bit, but it's reasonable to expect the 136 # microcode generation logic to have the log of the various sizes 137 # floating around as well. 138 limm t4, 1 139 roli t4, t4, imm 140 ldst t1, seg, sib, disp 141 sexti t0, t1, imm, flags=(CF,) 142 xor t1, t1, t4 143 st t1, seg, sib, disp 144}; 145 146def macroop BTC_P_I { 147 rdip t7, dataSize=asz 148 limm t1, imm, dataSize=asz 149 limm t4, 1 150 roli t4, t4, imm 151 ldst t1, seg, riprel, disp 152 sexti t0, t1, imm, flags=(CF,) 153 xor t1, t1, t4 154 st t1, seg, riprel, disp 155}; 156
| 1# Copyright (c) 2008 The Regents of The University of Michigan 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright 9# notice, this list of conditions and the following disclaimer in the 10# documentation and/or other materials provided with the distribution; 11# neither the name of the copyright holders nor the names of its 12# contributors may be used to endorse or promote products derived from 13# this software without specific prior written permission. 14# 15# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 18# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 19# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 21# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26# 27# Authors: Gabe Black 28 29# Copyright (c) 2007-2008 The Hewlett-Packard Development Company 30# All rights reserved. 31# 32# Redistribution and use of this software in source and binary forms, 33# with or without modification, are permitted provided that the 34# following conditions are met: 35# 36# The software must be used only for Non-Commercial Use which means any 37# use which is NOT directed to receiving any direct monetary 38# compensation for, or commercial advantage from such use. Illustrative 39# examples of non-commercial use are academic research, personal study, 40# teaching, education and corporate research & development. 41# Illustrative examples of commercial use are distributing products for 42# commercial advantage and providing services using the software for 43# commercial advantage. 44# 45# If you wish to use this software or functionality therein that may be 46# covered by patents for commercial use, please contact: 47# Director of Intellectual Property Licensing 48# Office of Strategy and Technology 49# Hewlett-Packard Company 50# 1501 Page Mill Road 51# Palo Alto, California 94304 52# 53# Redistributions of source code must retain the above copyright notice, 54# this list of conditions and the following disclaimer. Redistributions 55# in binary form must reproduce the above copyright notice, this list of 56# conditions and the following disclaimer in the documentation and/or 57# other materials provided with the distribution. Neither the name of 58# the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its 59# contributors may be used to endorse or promote products derived from 60# this software without specific prior written permission. No right of 61# sublicense is granted herewith. Derivatives of the software and 62# output created using the software may be prepared, but only for 63# Non-Commercial Uses. Derivatives of the software may be shared with 64# others provided: (i) the others agree to abide by the list of 65# conditions herein which includes the Non-Commercial Use restrictions; 66# and (ii) such Derivatives of the software include the above copyright 67# notice to acknowledge the contribution from this software where 68# applicable, this list of conditions and the disclaimer below. 69# 70# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 71# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 72# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 73# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 74# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 75# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 76# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 77# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 78# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 79# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 80# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 81# 82# Authors: Gabe Black 83 84microcode = ''' 85def macroop BT_R_I { 86 sexti t0, reg, imm, flags=(CF,) 87}; 88 89def macroop BT_M_I { 90 limm t1, imm, dataSize=asz 91 # This fudges just a tiny bit, but it's reasonable to expect the 92 # microcode generation logic to have the log of the various sizes 93 # floating around as well. 94 ld t1, seg, sib, disp 95 sexti t0, t1, imm, flags=(CF,) 96}; 97 98def macroop BT_P_I { 99 rdip t7 100 limm t1, imm, dataSize=asz 101 ld t1, seg, riprel, disp, dataSize=asz 102 sexti t0, t1, imm, flags=(CF,) 103}; 104 105def macroop BT_R_R { 106 sext t0, reg, regm, flags=(CF,) 107}; 108 109def macroop BT_M_R { 110 srai t2, reg, 3, dataSize=asz 111 srai t3, t2, ldsz, dataSize=asz 112 lea t3, flatseg, [dsz, t3, base], dataSize=asz 113 ld t1, seg, [scale, index, t3], disp 114 sext t0, t1, reg, flags=(CF,) 115}; 116 117def macroop BT_P_R { 118 rdip t7 119 srai t2, reg, 3, dataSize=asz 120 srai t3, t2, ldsz, dataSize=asz 121 lea t3, flatseg, [ldsz, t3, base], dataSize=asz 122 ld t1, seg, [1, t3, t7], disp 123 sext t0, t1, reg, flags=(CF,) 124}; 125 126def macroop BTC_R_I { 127 sexti t0, reg, imm, flags=(CF,) 128 limm t1, 1 129 roli t1, t1, imm 130 xor reg, reg, t1 131}; 132 133def macroop BTC_M_I { 134 limm t1, imm, dataSize=asz 135 # This fudges just a tiny bit, but it's reasonable to expect the 136 # microcode generation logic to have the log of the various sizes 137 # floating around as well. 138 limm t4, 1 139 roli t4, t4, imm 140 ldst t1, seg, sib, disp 141 sexti t0, t1, imm, flags=(CF,) 142 xor t1, t1, t4 143 st t1, seg, sib, disp 144}; 145 146def macroop BTC_P_I { 147 rdip t7, dataSize=asz 148 limm t1, imm, dataSize=asz 149 limm t4, 1 150 roli t4, t4, imm 151 ldst t1, seg, riprel, disp 152 sexti t0, t1, imm, flags=(CF,) 153 xor t1, t1, t4 154 st t1, seg, riprel, disp 155}; 156
|
189def macroop BTR_R_I { 190 sexti t0, reg, imm, flags=(CF,) 191 limm t1, "(uint64_t(-(2ULL)))" 192 roli t1, t1, imm 193 and reg, reg, t1 194}; 195 196def macroop BTR_M_I { 197 limm t1, imm, dataSize=asz 198 limm t4, "(uint64_t(-(2ULL)))" 199 roli t4, t4, imm 200 ldst t1, seg, sib, disp 201 sexti t0, t1, imm, flags=(CF,) 202 and t1, t1, t4 203 st t1, seg, sib, disp 204}; 205 206def macroop BTR_P_I { 207 rdip t7, dataSize=asz 208 limm t1, imm, dataSize=asz 209 limm t4, "(uint64_t(-(2ULL)))" 210 roli t4, t4, imm 211 ldst t1, seg, riprel, disp 212 sexti t0, t1, imm, flags=(CF,) 213 and t1, t1, t4 214 st t1, seg, riprel, disp 215}; 216 217def macroop BTR_LOCKED_M_I { 218 limm t1, imm, dataSize=asz 219 limm t4, "(uint64_t(-(2ULL)))" 220 roli t4, t4, imm 221 ldstl t1, seg, sib, disp 222 sexti t0, t1, imm, flags=(CF,) 223 and t1, t1, t4 224 stul t1, seg, sib, disp 225}; 226 227def macroop BTR_LOCKED_P_I { 228 rdip t7, dataSize=asz 229 limm t1, imm, dataSize=asz 230 limm t4, "(uint64_t(-(2ULL)))" 231 roli t4, t4, imm 232 ldstl t1, seg, riprel, disp 233 sexti t0, t1, imm, flags=(CF,) 234 and t1, t1, t4 235 stul t1, seg, riprel, disp 236}; 237 238def macroop BTR_R_R { 239 sext t0, reg, regm, flags=(CF,) 240 limm t1, "(uint64_t(-(2ULL)))" 241 rol t1, t1, regm 242 and reg, reg, t1 243}; 244 245def macroop BTR_M_R { 246 srai t2, reg, 3, dataSize=asz 247 srai t3, t2, ldsz, dataSize=asz 248 lea t3, flatseg, [dsz, t3, base], dataSize=asz 249 limm t4, "(uint64_t(-(2ULL)))" 250 rol t4, t4, reg 251 ldst t1, seg, [scale, index, t3], disp 252 sext t0, t1, reg, flags=(CF,) 253 and t1, t1, t4 254 st t1, seg, [scale, index, t3], disp 255}; 256 257def macroop BTR_P_R { 258 rdip t7, dataSize=asz 259 srai t2, reg, 3, dataSize=asz 260 srai t3, t2, ldsz, dataSize=asz 261 lea t3, flatseg, [dsz, t3, base], dataSize=asz 262 limm t4, "(uint64_t(-(2ULL)))" 263 rol t4, t4, reg 264 ldst t1, seg, [1, t3, t7], disp 265 sext t0, t1, reg, flags=(CF,) 266 and t1, t1, t4 267 st t1, seg, [1, t3, t7], disp 268}; 269 270def macroop BTR_LOCKED_M_R { 271 srai t2, reg, 3, dataSize=asz 272 srai t3, t2, ldsz, dataSize=asz 273 lea t3, flatseg, [dsz, t3, base], dataSize=asz 274 limm t4, "(uint64_t(-(2ULL)))" 275 rol t4, t4, reg 276 ldstl t1, seg, [scale, index, t3], disp 277 sext t0, t1, reg, flags=(CF,) 278 and t1, t1, t4 279 stul t1, seg, [scale, index, t3], disp 280}; 281 282def macroop BTR_LOCKED_P_R { 283 rdip t7, dataSize=asz 284 srai t2, reg, 3, dataSize=asz 285 srai t3, t2, ldsz, dataSize=asz 286 lea t3, flatseg, [dsz, t3, base], dataSize=asz 287 limm t4, "(uint64_t(-(2ULL)))" 288 rol t4, t4, reg 289 ldstl t1, seg, [1, t3, t7], disp 290 sext t0, t1, reg, flags=(CF,) 291 and t1, t1, t4 292 stul t1, seg, [1, t3, t7], disp 293}; 294 295def macroop BTS_R_I { 296 sexti t0, reg, imm, flags=(CF,) 297 limm t1, 1 298 roli t1, t1, imm 299 or reg, reg, t1 300}; 301 302def macroop BTS_M_I { 303 limm t1, imm, dataSize=asz 304 limm t4, 1 305 roli t4, t4, imm 306 ldst t1, seg, sib, disp 307 sexti t0, t1, imm, flags=(CF,) 308 or t1, t1, t4 309 st t1, seg, sib, disp 310}; 311 312def macroop BTS_P_I { 313 rdip t7, dataSize=asz 314 limm t1, imm, dataSize=asz 315 limm t4, 1 316 roli t4, t4, imm 317 ldst t1, seg, riprel, disp 318 sexti t0, t1, imm, flags=(CF,) 319 or t1, t1, t4 320 st t1, seg, riprel, disp 321}; 322 323def macroop BTS_LOCKED_M_I { 324 limm t1, imm, dataSize=asz 325 limm t4, 1 326 roli t4, t4, imm 327 ldstl t1, seg, sib, disp 328 sexti t0, t1, imm, flags=(CF,) 329 or t1, t1, t4 330 stul t1, seg, sib, disp 331}; 332 333def macroop BTS_LOCKED_P_I { 334 rdip t7, dataSize=asz 335 limm t1, imm, dataSize=asz 336 limm t4, 1 337 roli t4, t4, imm 338 ldstl t1, seg, riprel, disp 339 sexti t0, t1, imm, flags=(CF,) 340 or t1, t1, t4 341 stul t1, seg, riprel, disp 342}; 343 344def macroop BTS_R_R { 345 sext t0, reg, regm, flags=(CF,) 346 limm t1, 1 347 rol t1, t1, regm 348 or reg, reg, t1 349}; 350 351def macroop BTS_M_R { 352 srai t2, reg, 3, dataSize=asz 353 srai t3, t2, ldsz, dataSize=asz 354 lea t3, flatseg, [dsz, t3, base], dataSize=asz 355 limm t4, 1 356 rol t4, t4, reg 357 ldst t1, seg, [scale, index, t3], disp 358 sext t0, t1, reg, flags=(CF,) 359 or t1, t1, t4 360 st t1, seg, [scale, index, t3], disp 361}; 362 363def macroop BTS_P_R { 364 rdip t7, dataSize=asz 365 srai t2, reg, 3, dataSize=asz 366 srai t3, t2, ldsz, dataSize=asz 367 lea t3, flatseg, [dsz, t3, base], dataSize=asz 368 limm t4, 1 369 rol t4, t4, reg 370 ldst t1, seg, [1, t3, t7], disp 371 sext t0, t1, reg, flags=(CF,) 372 or t1, t1, t4 373 st t1, seg, [1, t3, t7], disp 374}; 375 376def macroop BTS_LOCKED_M_R { 377 srai t2, reg, 3, dataSize=asz 378 srai t3, t2, ldsz, dataSize=asz 379 lea t3, flatseg, [dsz, t3, base], dataSize=asz 380 limm t4, 1 381 rol t4, t4, reg 382 ldstl t1, seg, [scale, index, t3], disp 383 sext t0, t1, reg, flags=(CF,) 384 or t1, t1, t4 385 stul t1, seg, [scale, index, t3], disp 386}; 387 388def macroop BTS_LOCKED_P_R { 389 rdip t7, dataSize=asz 390 srai t2, reg, 3, dataSize=asz 391 srai t3, t2, ldsz, dataSize=asz 392 lea t3, flatseg, [dsz, t3, base], dataSize=asz 393 limm t4, 1 394 rol t4, t4, reg 395 ldstl t1, seg, [1, t3, t7], disp 396 sext t0, t1, reg, flags=(CF,) 397 or t1, t1, t4 398 stul t1, seg, [1, t3, t7], disp 399}; 400'''
| 235def macroop BTR_R_I { 236 sexti t0, reg, imm, flags=(CF,) 237 limm t1, "(uint64_t(-(2ULL)))" 238 roli t1, t1, imm 239 and reg, reg, t1 240}; 241 242def macroop BTR_M_I { 243 limm t1, imm, dataSize=asz 244 limm t4, "(uint64_t(-(2ULL)))" 245 roli t4, t4, imm 246 ldst t1, seg, sib, disp 247 sexti t0, t1, imm, flags=(CF,) 248 and t1, t1, t4 249 st t1, seg, sib, disp 250}; 251 252def macroop BTR_P_I { 253 rdip t7, dataSize=asz 254 limm t1, imm, dataSize=asz 255 limm t4, "(uint64_t(-(2ULL)))" 256 roli t4, t4, imm 257 ldst t1, seg, riprel, disp 258 sexti t0, t1, imm, flags=(CF,) 259 and t1, t1, t4 260 st t1, seg, riprel, disp 261}; 262 263def macroop BTR_LOCKED_M_I { 264 limm t1, imm, dataSize=asz 265 limm t4, "(uint64_t(-(2ULL)))" 266 roli t4, t4, imm 267 ldstl t1, seg, sib, disp 268 sexti t0, t1, imm, flags=(CF,) 269 and t1, t1, t4 270 stul t1, seg, sib, disp 271}; 272 273def macroop BTR_LOCKED_P_I { 274 rdip t7, dataSize=asz 275 limm t1, imm, dataSize=asz 276 limm t4, "(uint64_t(-(2ULL)))" 277 roli t4, t4, imm 278 ldstl t1, seg, riprel, disp 279 sexti t0, t1, imm, flags=(CF,) 280 and t1, t1, t4 281 stul t1, seg, riprel, disp 282}; 283 284def macroop BTR_R_R { 285 sext t0, reg, regm, flags=(CF,) 286 limm t1, "(uint64_t(-(2ULL)))" 287 rol t1, t1, regm 288 and reg, reg, t1 289}; 290 291def macroop BTR_M_R { 292 srai t2, reg, 3, dataSize=asz 293 srai t3, t2, ldsz, dataSize=asz 294 lea t3, flatseg, [dsz, t3, base], dataSize=asz 295 limm t4, "(uint64_t(-(2ULL)))" 296 rol t4, t4, reg 297 ldst t1, seg, [scale, index, t3], disp 298 sext t0, t1, reg, flags=(CF,) 299 and t1, t1, t4 300 st t1, seg, [scale, index, t3], disp 301}; 302 303def macroop BTR_P_R { 304 rdip t7, dataSize=asz 305 srai t2, reg, 3, dataSize=asz 306 srai t3, t2, ldsz, dataSize=asz 307 lea t3, flatseg, [dsz, t3, base], dataSize=asz 308 limm t4, "(uint64_t(-(2ULL)))" 309 rol t4, t4, reg 310 ldst t1, seg, [1, t3, t7], disp 311 sext t0, t1, reg, flags=(CF,) 312 and t1, t1, t4 313 st t1, seg, [1, t3, t7], disp 314}; 315 316def macroop BTR_LOCKED_M_R { 317 srai t2, reg, 3, dataSize=asz 318 srai t3, t2, ldsz, dataSize=asz 319 lea t3, flatseg, [dsz, t3, base], dataSize=asz 320 limm t4, "(uint64_t(-(2ULL)))" 321 rol t4, t4, reg 322 ldstl t1, seg, [scale, index, t3], disp 323 sext t0, t1, reg, flags=(CF,) 324 and t1, t1, t4 325 stul t1, seg, [scale, index, t3], disp 326}; 327 328def macroop BTR_LOCKED_P_R { 329 rdip t7, dataSize=asz 330 srai t2, reg, 3, dataSize=asz 331 srai t3, t2, ldsz, dataSize=asz 332 lea t3, flatseg, [dsz, t3, base], dataSize=asz 333 limm t4, "(uint64_t(-(2ULL)))" 334 rol t4, t4, reg 335 ldstl t1, seg, [1, t3, t7], disp 336 sext t0, t1, reg, flags=(CF,) 337 and t1, t1, t4 338 stul t1, seg, [1, t3, t7], disp 339}; 340 341def macroop BTS_R_I { 342 sexti t0, reg, imm, flags=(CF,) 343 limm t1, 1 344 roli t1, t1, imm 345 or reg, reg, t1 346}; 347 348def macroop BTS_M_I { 349 limm t1, imm, dataSize=asz 350 limm t4, 1 351 roli t4, t4, imm 352 ldst t1, seg, sib, disp 353 sexti t0, t1, imm, flags=(CF,) 354 or t1, t1, t4 355 st t1, seg, sib, disp 356}; 357 358def macroop BTS_P_I { 359 rdip t7, dataSize=asz 360 limm t1, imm, dataSize=asz 361 limm t4, 1 362 roli t4, t4, imm 363 ldst t1, seg, riprel, disp 364 sexti t0, t1, imm, flags=(CF,) 365 or t1, t1, t4 366 st t1, seg, riprel, disp 367}; 368 369def macroop BTS_LOCKED_M_I { 370 limm t1, imm, dataSize=asz 371 limm t4, 1 372 roli t4, t4, imm 373 ldstl t1, seg, sib, disp 374 sexti t0, t1, imm, flags=(CF,) 375 or t1, t1, t4 376 stul t1, seg, sib, disp 377}; 378 379def macroop BTS_LOCKED_P_I { 380 rdip t7, dataSize=asz 381 limm t1, imm, dataSize=asz 382 limm t4, 1 383 roli t4, t4, imm 384 ldstl t1, seg, riprel, disp 385 sexti t0, t1, imm, flags=(CF,) 386 or t1, t1, t4 387 stul t1, seg, riprel, disp 388}; 389 390def macroop BTS_R_R { 391 sext t0, reg, regm, flags=(CF,) 392 limm t1, 1 393 rol t1, t1, regm 394 or reg, reg, t1 395}; 396 397def macroop BTS_M_R { 398 srai t2, reg, 3, dataSize=asz 399 srai t3, t2, ldsz, dataSize=asz 400 lea t3, flatseg, [dsz, t3, base], dataSize=asz 401 limm t4, 1 402 rol t4, t4, reg 403 ldst t1, seg, [scale, index, t3], disp 404 sext t0, t1, reg, flags=(CF,) 405 or t1, t1, t4 406 st t1, seg, [scale, index, t3], disp 407}; 408 409def macroop BTS_P_R { 410 rdip t7, dataSize=asz 411 srai t2, reg, 3, dataSize=asz 412 srai t3, t2, ldsz, dataSize=asz 413 lea t3, flatseg, [dsz, t3, base], dataSize=asz 414 limm t4, 1 415 rol t4, t4, reg 416 ldst t1, seg, [1, t3, t7], disp 417 sext t0, t1, reg, flags=(CF,) 418 or t1, t1, t4 419 st t1, seg, [1, t3, t7], disp 420}; 421 422def macroop BTS_LOCKED_M_R { 423 srai t2, reg, 3, dataSize=asz 424 srai t3, t2, ldsz, dataSize=asz 425 lea t3, flatseg, [dsz, t3, base], dataSize=asz 426 limm t4, 1 427 rol t4, t4, reg 428 ldstl t1, seg, [scale, index, t3], disp 429 sext t0, t1, reg, flags=(CF,) 430 or t1, t1, t4 431 stul t1, seg, [scale, index, t3], disp 432}; 433 434def macroop BTS_LOCKED_P_R { 435 rdip t7, dataSize=asz 436 srai t2, reg, 3, dataSize=asz 437 srai t3, t2, ldsz, dataSize=asz 438 lea t3, flatseg, [dsz, t3, base], dataSize=asz 439 limm t4, 1 440 rol t4, t4, reg 441 ldstl t1, seg, [1, t3, t7], disp 442 sext t0, t1, reg, flags=(CF,) 443 or t1, t1, t4 444 stul t1, seg, [1, t3, t7], disp 445}; 446'''
|