Changeset 255
- Timestamp:
- Jan 10, 2004, 10:13:22 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/ccl/compiler/PPC/ppc-vinsns.lisp (modified) (275 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/compiler/PPC/ppc-vinsns.lisp
r203 r255 25 25 (require "PPCENV")) 26 26 27 (defmacro define-ppc -vinsn (vinsn-name (results args &optional temps) &body body)27 (defmacro define-ppc32-vinsn (vinsn-name (results args &optional temps) &body body) 28 28 (%define-vinsn *ppc-backend* vinsn-name results args temps body)) 29 29 … … 31 31 ; Index "scaling" and constant-offset misc-ref vinsns. 32 32 33 (define-ppc -vinsn scale-32bit-misc-index (((dest :u32))33 (define-ppc32-vinsn scale-32bit-misc-index (((dest :u32)) 34 34 ((idx :imm) ; A fixnum 35 35 ) … … 37 37 (addi dest idx ppc32::misc-data-offset)) 38 38 39 (define-ppc -vinsn scale-16bit-misc-index (((dest :u32))39 (define-ppc32-vinsn scale-16bit-misc-index (((dest :u32)) 40 40 ((idx :imm) ; A fixnum 41 41 ) … … 44 44 (addi dest dest ppc32::misc-data-offset)) 45 45 46 (define-ppc -vinsn scale-8bit-misc-index (((dest :u32))46 (define-ppc32-vinsn scale-8bit-misc-index (((dest :u32)) 47 47 ((idx :imm) ; A fixnum 48 48 ) … … 51 51 (addi dest dest ppc32::misc-data-offset)) 52 52 53 (define-ppc -vinsn scale-64bit-misc-index (((dest :u32))53 (define-ppc32-vinsn scale-64bit-misc-index (((dest :u32)) 54 54 ((idx :imm) ; A fixnum 55 55 ) … … 58 58 (addi dest dest ppc32::misc-dfloat-offset)) 59 59 60 (define-ppc -vinsn scale-1bit-misc-index (((word-index :u32)60 (define-ppc32-vinsn scale-1bit-misc-index (((word-index :u32) 61 61 (bitnum :u8)) ; (unsigned-byte 5) 62 62 ((idx :imm) ; A fixnum … … 74 74 75 75 76 (define-ppc -vinsn misc-ref-u32 (((dest :u32))76 (define-ppc32-vinsn misc-ref-u32 (((dest :u32)) 77 77 ((v :lisp) 78 78 (scaled-idx :u32)) … … 80 80 (lwzx dest v scaled-idx)) 81 81 82 (define-ppc -vinsn misc-ref-c-u32 (((dest :u32))82 (define-ppc32-vinsn misc-ref-c-u32 (((dest :u32)) 83 83 ((v :lisp) 84 84 (idx :u32const)) … … 86 86 (lwz dest (:apply + ppc32::misc-data-offset (:apply ash idx 2)) v)) 87 87 88 (define-ppc -vinsn misc-ref-s32 (((dest :s32))88 (define-ppc32-vinsn misc-ref-s32 (((dest :s32)) 89 89 ((v :lisp) 90 90 (scaled-idx :u32)) … … 92 92 (lwzx dest v scaled-idx)) 93 93 94 (define-ppc -vinsn misc-ref-c-s32 (((dest :s32))94 (define-ppc32-vinsn misc-ref-c-s32 (((dest :s32)) 95 95 ((v :lisp) 96 96 (idx :u32const)) … … 99 99 100 100 101 (define-ppc -vinsn misc-set-c-u32 (()101 (define-ppc32-vinsn misc-set-c-u32 (() 102 102 ((val :u32) 103 103 (v :lisp) … … 105 105 (stw val (:apply + ppc32::misc-data-offset (:apply ash idx 2)) v)) 106 106 107 (define-ppc -vinsn misc-set-u32 (()107 (define-ppc32-vinsn misc-set-u32 (() 108 108 ((val :u32) 109 109 (v :lisp) … … 112 112 113 113 114 (define-ppc -vinsn misc-ref-single-float (((dest :single-float))114 (define-ppc32-vinsn misc-ref-single-float (((dest :single-float)) 115 115 ((v :lisp) 116 116 (scaled-idx :u32)) … … 118 118 (lfsx dest v scaled-idx)) 119 119 120 (define-ppc -vinsn misc-ref-c-single-float (((dest :single-float))120 (define-ppc32-vinsn misc-ref-c-single-float (((dest :single-float)) 121 121 ((v :lisp) 122 122 (idx :u32const)) … … 124 124 (lfs dest (:apply + ppc32::misc-data-offset (:apply ash idx 2)) v)) 125 125 126 (define-ppc -vinsn misc-ref-double-float (((dest :double-float))126 (define-ppc32-vinsn misc-ref-double-float (((dest :double-float)) 127 127 ((v :lisp) 128 128 (scaled-idx :u32)) … … 131 131 132 132 133 (define-ppc -vinsn misc-ref-c-double-float (((dest :double-float))133 (define-ppc32-vinsn misc-ref-c-double-float (((dest :double-float)) 134 134 ((v :lisp) 135 135 (idx :u32const)) … … 137 137 (lfd dest (:apply + ppc32::misc-dfloat-offset (:apply ash idx 3)) v)) 138 138 139 (define-ppc -vinsn misc-set-c-double-float (((val :double-float))139 (define-ppc32-vinsn misc-set-c-double-float (((val :double-float)) 140 140 ((v :lisp) 141 141 (idx :u32const))) 142 142 (stfd val (:apply + ppc32::misc-dfloat-offset (:apply ash idx 3)) v)) 143 143 144 (define-ppc -vinsn misc-set-double-float (()144 (define-ppc32-vinsn misc-set-double-float (() 145 145 ((val :double-float) 146 146 (v :lisp) … … 148 148 (stfdx val v scaled-idx)) 149 149 150 (define-ppc -vinsn misc-set-c-single-float (((val :single-float))150 (define-ppc32-vinsn misc-set-c-single-float (((val :single-float)) 151 151 ((v :lisp) 152 152 (idx :u32const))) 153 153 (stfs val (:apply + ppc32::misc-data-offset (:apply ash idx 2)) v)) 154 154 155 (define-ppc -vinsn misc-set-single-float (()155 (define-ppc32-vinsn misc-set-single-float (() 156 156 ((val :single-float) 157 157 (v :lisp) … … 160 160 161 161 162 (define-ppc -vinsn misc-ref-u16 (((dest :u16))162 (define-ppc32-vinsn misc-ref-u16 (((dest :u16)) 163 163 ((v :lisp) 164 164 (scaled-idx :u32)) … … 166 166 (lhzx dest v scaled-idx)) 167 167 168 (define-ppc -vinsn misc-ref-c-u16 (((dest :u16))168 (define-ppc32-vinsn misc-ref-c-u16 (((dest :u16)) 169 169 ((v :lisp) 170 170 (idx :u32const)) … … 172 172 (lhz dest (:apply + ppc32::misc-data-offset (:apply ash idx 1)) v)) 173 173 174 (define-ppc -vinsn misc-set-c-u16 (((val :u16))174 (define-ppc32-vinsn misc-set-c-u16 (((val :u16)) 175 175 ((v :lisp) 176 176 (idx :u32const)) … … 178 178 (sth val (:apply + ppc32::misc-data-offset (:apply ash idx 1)) v)) 179 179 180 (define-ppc -vinsn misc-set-u16 (((val :u16))180 (define-ppc32-vinsn misc-set-u16 (((val :u16)) 181 181 ((v :lisp) 182 182 (scaled-idx :s32))) 183 183 (sthx val v scaled-idx)) 184 184 185 (define-ppc -vinsn misc-ref-s16 (((dest :s16))185 (define-ppc32-vinsn misc-ref-s16 (((dest :s16)) 186 186 ((v :lisp) 187 187 (scaled-idx :u32)) … … 189 189 (lhax dest v scaled-idx)) 190 190 191 (define-ppc -vinsn misc-ref-c-s16 (((dest :s16))191 (define-ppc32-vinsn misc-ref-c-s16 (((dest :s16)) 192 192 ((v :lisp) 193 193 (idx :u32const)) … … 195 195 (lha dest (:apply + ppc32::misc-data-offset (:apply ash idx 1)) v)) 196 196 197 (define-ppc -vinsn misc-ref-u8 (((dest :u8))197 (define-ppc32-vinsn misc-ref-u8 (((dest :u8)) 198 198 ((v :lisp) 199 199 (scaled-idx :u32)) … … 201 201 (lbzx dest v scaled-idx)) 202 202 203 (define-ppc -vinsn misc-ref-c-u8 (((dest :u8))203 (define-ppc32-vinsn misc-ref-c-u8 (((dest :u8)) 204 204 ((v :lisp) 205 205 (idx :u32const)) … … 207 207 (lbz dest (:apply + ppc32::misc-data-offset idx) v)) 208 208 209 (define-ppc -vinsn misc-set-c-u8 (((val :u8))209 (define-ppc32-vinsn misc-set-c-u8 (((val :u8)) 210 210 ((v :lisp) 211 211 (idx :u32const)) … … 213 213 (stb val (:apply + ppc32::misc-data-offset idx) v)) 214 214 215 (define-ppc -vinsn misc-set-u8 (((val :u8))215 (define-ppc32-vinsn misc-set-u8 (((val :u8)) 216 216 ((v :lisp) 217 217 (scaled-idx :u32)) … … 219 219 (stbx val v scaled-idx)) 220 220 221 (define-ppc -vinsn misc-ref-s8 (((dest :s8))221 (define-ppc32-vinsn misc-ref-s8 (((dest :s8)) 222 222 ((v :lisp) 223 223 (scaled-idx :u32)) … … 226 226 (extsb dest dest)) 227 227 228 (define-ppc -vinsn misc-ref-c-s8 (((dest :s8))228 (define-ppc32-vinsn misc-ref-c-s8 (((dest :s8)) 229 229 ((v :lisp) 230 230 (idx :u32const)) … … 234 234 235 235 236 (define-ppc -vinsn misc-ref-c-bit (((dest :u8))236 (define-ppc32-vinsn misc-ref-c-bit (((dest :u8)) 237 237 ((v :lisp) 238 238 (idx :u32const)) … … 241 241 (rlwinm dest dest (:apply 1+ (:apply logand idx #x1f)) 31 31)) 242 242 243 (define-ppc -vinsn misc-ref-c-bit[fixnum](((dest :imm))243 (define-ppc32-vinsn misc-ref-c-bit-fixnum (((dest :imm)) 244 244 ((v :lisp) 245 245 (idx :u32const)) … … 253 253 254 254 255 (define-ppc -vinsn misc-ref-node (((dest :lisp))255 (define-ppc32-vinsn misc-ref-node (((dest :lisp)) 256 256 ((v :lisp) 257 257 (scaled-idx :s32)) … … 259 259 (lwzx dest v scaled-idx)) 260 260 261 (define-ppc -vinsn misc-set-node (()261 (define-ppc32-vinsn misc-set-node (() 262 262 ((val :lisp) 263 263 (v :lisp) … … 269 269 270 270 271 (define-ppc -vinsn misc-ref-c-node (((dest :lisp))271 (define-ppc32-vinsn misc-ref-c-node (((dest :lisp)) 272 272 ((v :lisp) 273 273 (idx :s16const)) … … 275 275 (lwz dest (:apply + ppc32::misc-data-offset (:apply ash idx 2)) v)) 276 276 277 (define-ppc -vinsn misc-set-c-node (()277 (define-ppc32-vinsn misc-set-c-node (() 278 278 ((val :lisp) 279 279 (v :lisp) … … 283 283 284 284 285 (define-ppc -vinsn misc-element-count[fixnum](((dest :imm))285 (define-ppc32-vinsn misc-element-count-fixnum (((dest :imm)) 286 286 ((v :lisp)) 287 287 ((temp :u32))) … … 293 293 (- ppc32::least-significant-bit ppc32::fixnumshift))) 294 294 295 (define-ppc -vinsn check-misc-bound (()295 (define-ppc32-vinsn check-misc-bound (() 296 296 ((idx :imm) 297 297 (v :lisp)) … … 305 305 (twlge idx temp)) 306 306 307 (define-ppc -vinsn 2d-unscaled-index (((dest :u32))307 (define-ppc32-vinsn 2d-unscaled-index (((dest :u32)) 308 308 ((array :lisp) 309 309 (i :imm) … … 315 315 316 316 317 (define-ppc -vinsn 2d-32-scaled-index (((dest :u32))317 (define-ppc32-vinsn 2d-32-scaled-index (((dest :u32)) 318 318 ((array :lisp) 319 319 (i :imm) … … 324 324 (la dest ppc32::misc-data-offset dest)) 325 325 326 (define-ppc -vinsn 2d-dim1 (((dest :u32))326 (define-ppc32-vinsn 2d-dim1 (((dest :u32)) 327 327 ((header :lisp))) 328 328 (lwz dest (+ ppc32::misc-data-offset (* 4 (1+ ppc32::arrayH.dim0-cell))) header) … … 330 330 331 331 ;; Return dim1 (unboxed) 332 (define-ppc -vinsn check-2d-bound (((dim :u32))332 (define-ppc32-vinsn check-2d-bound (((dim :u32)) 333 333 ((i :imm) 334 334 (j :imm) … … 340 340 (srawi dim dim ppc32::fixnumshift)) 341 341 342 (define-ppc -vinsn array-data-vector-ref (((dest :lisp))342 (define-ppc32-vinsn array-data-vector-ref (((dest :lisp)) 343 343 ((header :lisp))) 344 344 (lwz dest ppc32::arrayH.data-vector header)) 345 345 346 346 347 (define-ppc -vinsn check-arrayH-rank (()347 (define-ppc32-vinsn check-arrayH-rank (() 348 348 ((header :lisp) 349 349 (expected :u32const)) … … 352 352 (twi 27 rank (:apply ash expected ppc32::fixnumshift))) 353 353 354 (define-ppc -vinsn check-arrayH-flags (()354 (define-ppc32-vinsn check-arrayH-flags (() 355 355 ((header :lisp) 356 356 (expected :u16const)) … … 363 363 364 364 365 (define-ppc-vinsn misc-element-count[u32] (((dest :u32)) 366 ((v :lisp)) 367 ()) 368 (lwz dest ppc32::misc-header-offset v) 369 (srwi dest dest ppc32::num-subtag-bits)) 370 371 (define-ppc-vinsn misc-subtag[fixnum] (((dest :imm)) 372 ((v :lisp)) 373 ((temp :u32))) 374 (lbz temp ppc32::misc-subtag-offset v) 375 (slwi dest temp ppc32::fixnumshift)) 376 377 (define-ppc-vinsn misc-subtag[u32] (((dest :u32)) 378 ((v :lisp)) 379 ()) 380 (lbz dest ppc32::misc-subtag-offset v)) 381 382 (define-ppc-vinsn header->subtag[u32] (((dest :u32)) 383 ((header :u32)) 384 ()) 385 (clrlwi dest header (- ppc32::nbits-in-word ppc32::num-subtag-bits))) 386 387 (define-ppc-vinsn header->subtag[fixnum] (((dest :imm)) 388 ((header :u32)) 389 ()) 390 (rlwinm dest 391 header 392 ppc32::fixnumshift 393 (- ppc32::nbits-in-word (+ ppc32::nfixnumtagbits ppc32::num-subtag-bits)) 394 (- ppc32::least-significant-bit ppc32::nfixnumtagbits))) 395 396 (define-ppc-vinsn header->element-count[u32] (((dest :u32)) 397 ((header :u32)) 398 ()) 399 (srwi dest header ppc32::num-subtag-bits)) 365 400 366 401 367 402 (define-ppc -vinsn node-slot-ref (((dest :lisp))368 (define-ppc32-vinsn node-slot-ref (((dest :lisp)) 403 369 ((node :lisp) 404 370 (cellno :u32const))) … … 407 373 408 374 409 (define-ppc -vinsn %slot-ref (((dest :lisp))375 (define-ppc32-vinsn %slot-ref (((dest :lisp)) 410 376 ((instance (:lisp (:ne dest))) 411 377 (index :lisp)) … … 418 384 ; Untagged memory reference & assignment. 419 385 420 (define-ppc -vinsn mem-ref-c-fullword (((dest :u32))386 (define-ppc32-vinsn mem-ref-c-fullword (((dest :u32)) 421 387 ((src :address) 422 388 (index :s16const))) 423 389 (lwz dest index src)) 424 390 425 (define-ppc -vinsn mem-ref-fullword (((dest :u32))391 (define-ppc32-vinsn mem-ref-fullword (((dest :u32)) 426 392 ((src :address) 427 393 (index :s32))) 428 394 (lwzx dest src index)) 429 395 430 (define-ppc -vinsn mem-ref-c-u16 (((dest :u16))396 (define-ppc32-vinsn mem-ref-c-u16 (((dest :u16)) 431 397 ((src :address) 432 398 (index :s16const))) 433 399 (lhz dest index src)) 434 400 435 (define-ppc -vinsn mem-ref-u16 (((dest :u16))401 (define-ppc32-vinsn mem-ref-u16 (((dest :u16)) 436 402 ((src :address) 437 403 (index :s32))) … … 439 405 440 406 441 (define-ppc -vinsn mem-ref-c-s16 (((dest :s16))407 (define-ppc32-vinsn mem-ref-c-s16 (((dest :s16)) 442 408 ((src :address) 443 409 (index :s16const))) 444 410 (lha dest src index)) 445 411 446 (define-ppc -vinsn mem-ref-s16 (((dest :s16))412 (define-ppc32-vinsn mem-ref-s16 (((dest :s16)) 447 413 ((src :address) 448 414 (index :s32))) 449 415 (lhax dest src index)) 450 416 451 (define-ppc -vinsn mem-ref-c-u8 (((dest :u8))417 (define-ppc32-vinsn mem-ref-c-u8 (((dest :u8)) 452 418 ((src :address) 453 419 (index :s16const))) 454 420 (lbz dest index src)) 455 421 456 (define-ppc -vinsn mem-ref-u8 (((dest :u8))422 (define-ppc32-vinsn mem-ref-u8 (((dest :u8)) 457 423 ((src :address) 458 424 (index :s32))) 459 425 (lbzx dest src index)) 460 426 461 (define-ppc -vinsn mem-ref-c-s8 (((dest :s8))427 (define-ppc32-vinsn mem-ref-c-s8 (((dest :s8)) 462 428 ((src :address) 463 429 (index :s16const))) … … 465 431 (extsb dest dest)) 466 432 467 (define-ppc -vinsn mem-ref-s8 (((dest :s8))433 (define-ppc32-vinsn mem-ref-s8 (((dest :s8)) 468 434 ((src :address) 469 435 (index :s32))) … … 471 437 (extsb dest dest)) 472 438 473 (define-ppc -vinsn mem-ref-c-bit (((dest :u8))439 (define-ppc32-vinsn mem-ref-c-bit (((dest :u8)) 474 440 ((src :address) 475 441 (byte-index :s16const) … … 478 444 (rlwinm dest dest bit-shift 31 31)) 479 445 480 (define-ppc -vinsn mem-ref-c-bit[fixnum](((dest :lisp))446 (define-ppc32-vinsn mem-ref-c-bit-fixnum (((dest :lisp)) 481 447 ((src :address) 482 448 (byte-index :s16const) … … 486 452 (rlwinm dest byteval bit-shift 29 29)) 487 453 488 (define-ppc -vinsn mem-ref-bit (((dest :u8))454 (define-ppc32-vinsn mem-ref-bit (((dest :u8)) 489 455 ((src :address) 490 456 (bit-index :lisp)) … … 498 464 499 465 500 (define-ppc -vinsn mem-ref-bit[fixnum](((dest :lisp))466 (define-ppc32-vinsn mem-ref-bit-fixnum (((dest :lisp)) 501 467 ((src :address) 502 468 (bit-index :lisp)) … … 513 479 (- ppc32::least-significant-bit ppc32::fixnum-shift))) 514 480 515 (define-ppc -vinsn mem-ref-c-double-float (((dest :double-float))481 (define-ppc32-vinsn mem-ref-c-double-float (((dest :double-float)) 516 482 ((src :address) 517 483 (index :s16const))) 518 484 (lfd dest index src)) 519 485 520 (define-ppc -vinsn mem-ref-double-float (((dest :double-float))486 (define-ppc32-vinsn mem-ref-double-float (((dest :double-float)) 521 487 ((src :address) 522 488 (index :s32))) 523 489 (lfdx dest src index)) 524 490 525 (define-ppc -vinsn mem-set-c-double-float (()491 (define-ppc32-vinsn mem-set-c-double-float (() 526 492 ((val :double-float) 527 493 (src :address) … … 529 495 (stfd val index src)) 530 496 531 (define-ppc -vinsn mem-set-double-float (()497 (define-ppc32-vinsn mem-set-double-float (() 532 498 ((val :double-float) 533 499 (src :address) … … 535 501 (stfdx val src index)) 536 502 537 (define-ppc -vinsn mem-ref-c-single-float (((dest :single-float))503 (define-ppc32-vinsn mem-ref-c-single-float (((dest :single-float)) 538 504 ((src :address) 539 505 (index :s16const))) 540 506 (lfs dest index src)) 541 507 542 (define-ppc -vinsn mem-ref-single-float (((dest :single-float))508 (define-ppc32-vinsn mem-ref-single-float (((dest :single-float)) 543 509 ((src :address) 544 510 (index :s32))) 545 511 (lfsx dest src index)) 546 512 547 (define-ppc -vinsn mem-set-c-single-float (()513 (define-ppc32-vinsn mem-set-c-single-float (() 548 514 ((val :single-float) 549 515 (src :address) … … 551 517 (stfs val index src)) 552 518 553 (define-ppc -vinsn mem-set-single-float (()519 (define-ppc32-vinsn mem-set-single-float (() 554 520 ((val :single-float) 555 521 (src :address) … … 558 524 559 525 560 (define-ppc -vinsn mem-set-c-fullword (()526 (define-ppc32-vinsn mem-set-c-fullword (() 561 527 ((val :u32) 562 528 (src :address) … … 564 530 (stw val index src)) 565 531 566 (define-ppc -vinsn mem-set-fullword (()532 (define-ppc32-vinsn mem-set-fullword (() 567 533 ((val :u32) 568 534 (src :address) … … 570 536 (stwx val src index)) 571 537 572 (define-ppc -vinsn mem-set-c-halfword (()538 (define-ppc32-vinsn mem-set-c-halfword (() 573 539 ((val :u16) 574 540 (src :address) … … 576 542 (sth val index src)) 577 543 578 (define-ppc -vinsn mem-set-halfword (()544 (define-ppc32-vinsn mem-set-halfword (() 579 545 ((val :u16) 580 546 (src :address) … … 582 548 (sthx val src index)) 583 549 584 (define-ppc -vinsn mem-set-c-byte (()550 (define-ppc32-vinsn mem-set-c-byte (() 585 551 ((val :u16) 586 552 (src :address) … … 588 554 (stb val index src)) 589 555 590 (define-ppc -vinsn mem-set-byte (()556 (define-ppc32-vinsn mem-set-byte (() 591 557 ((val :u8) 592 558 (src :address) … … 594 560 (stbx val src index)) 595 561 596 (define-ppc -vinsn mem-set-c-bit-0 (()562 (define-ppc32-vinsn mem-set-c-bit-0 (() 597 563 ((src :address) 598 564 (byte-index :s16const) … … 604 570 (stb val byte-index src)) 605 571 606 (define-ppc -vinsn mem-set-c-bit-1 (()572 (define-ppc32-vinsn mem-set-c-bit-1 (() 607 573 ((src :address) 608 574 (byte-index :s16const) … … 613 579 (stb val byte-index src)) 614 580 615 (define-ppc -vinsn mem-set-c-bit (()581 (define-ppc32-vinsn mem-set-c-bit (() 616 582 ((src :address) 617 583 (byte-index :s16const) … … 625 591 ;;; Hey, they should be happy that it even works. Who cares how big it is or how 626 592 ;;; long it takes ... 627 (define-ppc -vinsn mem-set-bit (()593 (define-ppc32-vinsn mem-set-bit (() 628 594 ((src :address) 629 595 (bit-index :lisp) … … 653 619 ; Tag and subtag extraction, comparison, checking, trapping ... 654 620 655 (define-ppc -vinsn extract-tag (((tag :u8))621 (define-ppc32-vinsn extract-tag (((tag :u8)) 656 622 ((object :lisp)) 657 623 ()) 658 624 (clrlwi tag object (- ppc32::nbits-in-word ppc32::nlisptagbits))) 659 625 660 (define-ppc -vinsn extract-tag[fixnum](((tag :imm))626 (define-ppc32-vinsn extract-tag-fixnum (((tag :imm)) 661 627 ((object :lisp))) 662 628 (rlwinm tag … … 667 633 (- ppc32::least-significant-bit ppc32::fixnum-shift))) 668 634 669 (define-ppc -vinsn extract-fulltag (((tag :u8))635 (define-ppc32-vinsn extract-fulltag (((tag :u8)) 670 636 ((object :lisp)) 671 637 ()) … … 673 639 674 640 675 (define-ppc -vinsn extract-fulltag[fixnum](((tag :imm))641 (define-ppc32-vinsn extract-fulltag-fixnum (((tag :imm)) 676 642 ((object :lisp))) 677 643 (rlwinm tag … … 682 648 (- ppc32::least-significant-bit ppc32::fixnum-shift))) 683 649 684 (define-ppc -vinsn extract-typecode (((code :u8))650 (define-ppc32-vinsn extract-typecode (((code :u8)) 685 651 ((object :lisp)) 686 652 ((crf :crf))) … … 691 657 :not-misc) 692 658 693 (define-ppc -vinsn extract-typecode[fixnum](((code :imm))659 (define-ppc32-vinsn extract-typecode-fixnum (((code :imm)) 694 660 ((object (:lisp (:ne code)))) 695 661 ((crf :crf) (subtag :u8))) … … 707 673 708 674 709 (define-ppc -vinsn require-fixnum (()675 (define-ppc32-vinsn require-fixnum (() 710 676 ((object :lisp)) 711 677 ((crf0 (:crf 0)) … … 718 684 :got-it) 719 685 720 (define-ppc -vinsn require-integer (()686 (define-ppc32-vinsn require-integer (() 721 687 ((object :lisp)) 722 688 ((crf0 (:crf 0)) … … 735 701 :got-it) 736 702 737 (define-ppc -vinsn require-simple-vector (()703 (define-ppc32-vinsn require-simple-vector (() 738 704 ((object :lisp)) 739 705 ((tag :u8) … … 751 717 :got-it) 752 718 753 (define-ppc -vinsn require-simple-string (()719 (define-ppc32-vinsn require-simple-string (() 754 720 ((object :lisp)) 755 721 ((tag :u8) … … 771 737 772 738 773 (define-ppc -vinsn require-real (()739 (define-ppc32-vinsn require-real (() 774 740 ((object :lisp)) 775 741 ((crf0 (:crf 0)) … … 788 754 :got-it) 789 755 790 (define-ppc -vinsn require-number (()756 (define-ppc32-vinsn require-number (() 791 757 ((object :lisp)) 792 758 ((crf0 (:crf 0)) … … 806 772 807 773 808 (define-ppc -vinsn require-list (()774 (define-ppc32-vinsn require-list (() 809 775 ((object :lisp)) 810 776 ((tag :u8) … … 818 784 :got-it) 819 785 820 (define-ppc -vinsn require-symbol (()786 (define-ppc32-vinsn require-symbol (() 821 787 ((object :lisp)) 822 788 ((tag :u8) … … 836 802 :got-it) 837 803 838 (define-ppc -vinsn require-character (()804 (define-ppc32-vinsn require-character (() 839 805 ((object :lisp)) 840 806 ((tag :u8) … … 849 815 850 816 851 (define-ppc -vinsn require-u8 (()817 (define-ppc32-vinsn require-u8 (() 852 818 ((object :lisp)) 853 819 ((crf0 (:crf 0)) … … 861 827 :got-it) 862 828 863 (define-ppc -vinsn box-fixnum (((dest :imm))829 (define-ppc32-vinsn box-fixnum (((dest :imm)) 864 830 ((src :s32))) 865 831 (slwi dest src ppc32::fixnumshift)) 866 832 867 (define-ppc -vinsn fixnum->s32 (((dest :s32))833 (define-ppc32-vinsn fixnum->s32 (((dest :s32)) 868 834 ((src :imm))) 869 835 (srawi dest src ppc32::fixnumshift)) 870 836 871 (define-ppc -vinsn fixnum->u32 (((dest :u32))837 (define-ppc32-vinsn fixnum->u32 (((dest :u32)) 872 838 ((src :imm))) 873 839 (srwi dest src ppc32::fixnumshift)) … … 878 844 ; c) it's a bignum of length 2 and the sign-digit is 0. 879 845 880 (define-ppc -vinsn unbox-u32 (((dest :u32))846 (define-ppc32-vinsn unbox-u32 (((dest :u32)) 881 847 ((src :lisp)) 882 848 ((crf0 (:crf 0)) … … 909 875 ; b) it's a bignum with exactly one digit. 910 876 911 (define-ppc -vinsn unbox-s32 (((dest :s32))877 (define-ppc32-vinsn unbox-s32 (((dest :s32)) 912 878 ((src :lisp)) 913 879 ((crfx :crf) … … 931 897 ; Return dest if src is either (signed-byte 32) or (unsigned-byte 32). 932 898 ; Say that it's not (signed-byte 32) if neither. 933 (define-ppc -vinsn unbox-x32 (((dest :u32))899 (define-ppc32-vinsn unbox-x32 (((dest :u32)) 934 900 ((src :lisp)) 935 901 ((crfx :crf) … … 955 921 :got-it) 956 922 957 (define-ppc -vinsn unbox-u16 (((dest :u16))923 (define-ppc32-vinsn unbox-u16 (((dest :u16)) 958 924 ((src :lisp)) 959 925 ((crf0 (:crf 0)))) … … 965 931 :got-it) 966 932 967 (define-ppc -vinsn unbox-s16 (((dest :s16))933 (define-ppc32-vinsn unbox-s16 (((dest :s16)) 968 934 ((src :lisp)) 969 935 ((crf :crf))) … … 982 948 983 949 984 (define-ppc -vinsn unbox-u8 (((dest :u8))950 (define-ppc32-vinsn unbox-u8 (((dest :u8)) 985 951 ((src :lisp)) 986 952 ((crf0 (:crf 0)))) … … 992 958 :got-it) 993 959 994 (define-ppc -vinsn unbox-s8 (((dest :s8))960 (define-ppc32-vinsn unbox-s8 (((dest :s8)) 995 961 ((src :lisp)) 996 962 ((crf :crf))) … … 1007 973 :got-it) 1008 974 1009 (define-ppc -vinsn unbox-base-char (((dest :u32))975 (define-ppc32-vinsn unbox-base-char (((dest :u32)) 1010 976 ((src :lisp)) 1011 977 ((crf :crf))) … … 1017 983 :got-it) 1018 984 1019 (define-ppc -vinsn unbox-character (((dest :u32))985 (define-ppc32-vinsn unbox-character (((dest :u32)) 1020 986 ((src :lisp)) 1021 987 ((crf :crf))) … … 1027 993 :got-it) 1028 994 1029 (define-ppc -vinsn unbox-bit (((dest :u32))995 (define-ppc32-vinsn unbox-bit (((dest :u32)) 1030 996 ((src :lisp)) 1031 997 ((crf :crf))) … … 1036 1002 :got-it) 1037 1003 1038 (define-ppc -vinsn unbox-bit-bit0 (((dest :u32))1004 (define-ppc32-vinsn unbox-bit-bit0 (((dest :u32)) 1039 1005 ((src :lisp)) 1040 1006 ((crf :crf))) … … 1045 1011 :got-it) 1046 1012 1047 (define-ppc -vinsn fixnum->fpr (((dest :double-float))1013 (define-ppc32-vinsn fixnum->fpr (((dest :double-float)) 1048 1014 ((src :lisp)) 1049 1015 ((imm :s32))) … … 1059 1025 1060 1026 1061 (define-ppc -vinsn shift-right-variable-word (((dest :u32))1027 (define-ppc32-vinsn shift-right-variable-word (((dest :u32)) 1062 1028 ((src :u32) 1063 1029 (sh :u32))) 1064 1030 (srw dest src sh)) 1065 1031 1066 (define-ppc -vinsn u32logandc2 (((dest :u32))1032 (define-ppc32-vinsn u32logandc2 (((dest :u32)) 1067 1033 ((x :u32) 1068 1034 (y :u32))) 1069 1035 (andc dest x y)) 1070 1036 1071 (define-ppc -vinsn u32logior (((dest :u32))1037 (define-ppc32-vinsn u32logior (((dest :u32)) 1072 1038 ((x :u32) 1073 1039 (y :u32))) 1074 1040 (or dest x y)) 1075 1041 1076 (define-ppc -vinsn rotate-left-variable-word (((dest :u32))1042 (define-ppc32-vinsn rotate-left-variable-word (((dest :u32)) 1077 1043 ((src :u32) 1078 1044 (rot :u32))) 1079 1045 (rlwnm dest src rot 0 31)) 1080 1046 1081 (define-ppc -vinsn complement-shift-count (((dest :u32))1047 (define-ppc32-vinsn complement-shift-count (((dest :u32)) 1082 1048 ((src :u32))) 1083 1049 (subfic dest src 32)) 1084 1050 1085 (define-ppc -vinsn extract-lowbyte (((dest :u32))1051 (define-ppc32-vinsn extract-lowbyte (((dest :u32)) 1086 1052 ((src :lisp))) 1087 1053 (clrlwi dest src (- ppc32::nbits-in-word ppc32::num-subtag-bits))) 1088 1054 1089 1055 ; Set DEST to the difference between the low byte of SRC and BYTEVAL. 1090 (define-ppc -vinsn extract-compare-lowbyte (((dest :u32))1056 (define-ppc32-vinsn extract-compare-lowbyte (((dest :u32)) 1091 1057 ((src :lisp) 1092 1058 (byteval :u8const))) … … 1098 1064 ; a fixnum. Leave the object's tag in TAG. 1099 1065 ; This is a little easier if CRF is CR0. 1100 (define-ppc -vinsn eq-if-fixnum (((crf :crf)1066 (define-ppc32-vinsn eq-if-fixnum (((crf :crf) 1101 1067 (tag :u8)) 1102 1068 ((object :lisp)) … … 1108 1074 (cmpwi crf tag ppc32::tag-fixnum))) 1109 1075 1110 (define-ppc -vinsn trap-unless-tag= (()1076 (define-ppc32-vinsn trap-unless-tag= (() 1111 1077 ((object :lisp) 1112 1078 (tagval :u16const)) … … 1115 1081 (twnei tag tagval)) 1116 1082 1117 (define-ppc -vinsn trap-unless-fulltag= (()1083 (define-ppc32-vinsn trap-unless-fulltag= (() 1118 1084 ((object :lisp) 1119 1085 (tagval :u16const)) … … 1122 1088 (twnei tag tagval)) 1123 1089 1124 (define-ppc -vinsn trap-unless-lowbyte= (()1090 (define-ppc32-vinsn trap-unless-lowbyte= (() 1125 1091 ((object :lisp) 1126 1092 (tagval :u16const)) … … 1129 1095 (twnei tag tagval)) 1130 1096 1131 (define-ppc -vinsn trap-unless-typecode= (()1097 (define-ppc32-vinsn trap-unless-typecode= (() 1132 1098 ((object :lisp) 1133 1099 (tagval :u16const)) … … 1141 1107 (twnei tag tagval)) 1142 1108 1143 (define-ppc -vinsn subtract-constant (((dest :imm))1109 (define-ppc32-vinsn subtract-constant (((dest :imm)) 1144 1110 ((src :imm) 1145 1111 (const :s16const))) 1146 1112 (subi dest src const)) 1147 1113 1148 (define-ppc -vinsn trap-unless-numeric-type (()1114 (define-ppc32-vinsn trap-unless-numeric-type (() 1149 1115 ((object :lisp) 1150 1116 (maxtype :u16const)) … … 1177 1143 ;; 31.)) 1178 1144 1179 (define-ppc -vinsn extract-variable-bit (((dest :u8))1145 (define-ppc32-vinsn extract-variable-bit (((dest :u8)) 1180 1146 ((src :u32) 1181 1147 (bitnum :u8)) … … 1185 1151 1186 1152 1187 (define-ppc -vinsn extract-variable-bit[fixnum](((dest :imm))1153 (define-ppc32-vinsn extract-variable-bit-fixnum (((dest :imm)) 1188 1154 ((src :u32) 1189 1155 (bitnum :u8)) … … 1203 1169 ;; between T and NIL) or 0. 1204 1170 1205 (define-ppc -vinsn bit31->truth (((dest :lisp)1171 (define-ppc32-vinsn bit31->truth (((dest :lisp) 1206 1172 (bits :u32)) 1207 1173 ((bits :u32)) … … 1210 1176 (addi dest bits ppc32::nil-value)) 1211 1177 1212 (define-ppc -vinsn invert-bit31 (((bits :u32))1178 (define-ppc32-vinsn invert-bit31 (((bits :u32)) 1213 1179 ((bits :u32)) 1214 1180 ()) … … 1230 1196 1231 1197 1232 (define-ppc -vinsn eq0->bit31 (((bits :u32))1198 (define-ppc32-vinsn eq0->bit31 (((bits :u32)) 1233 1199 ((src (t (:ne bits))))) 1234 1200 (cntlzw bits src) 1235 1201 (srwi bits bits 5)) ; bits = 0000...000X 1236 1202 1237 (define-ppc -vinsn ne0->bit31 (((bits :u32))1203 (define-ppc32-vinsn ne0->bit31 (((bits :u32)) 1238 1204 ((src (t (:ne bits))))) 1239 1205 (cntlzw bits src) … … 1241 1207 (srwi bits bits 31)) ; bits = 0000...000X 1242 1208 1243 (define-ppc -vinsn lt0->bit31 (((bits :u32))1209 (define-ppc32-vinsn lt0->bit31 (((bits :u32)) 1244 1210 ((src (t (:ne bits))))) 1245 1211 (srwi bits src 31)) ; bits = 0000...000X 1246 1212 1247 1213 1248 (define-ppc -vinsn ge0->bit31 (((bits :u32))1214 (define-ppc32-vinsn ge0->bit31 (((bits :u32)) 1249 1215 ((src (t (:ne bits))))) 1250 1216 (srwi bits src 31) … … 1252 1218 1253 1219 1254 (define-ppc -vinsn le0->bit31 (((bits :u32))1220 (define-ppc32-vinsn le0->bit31 (((bits :u32)) 1255 1221 ((src (t (:ne bits))))) 1256 1222 (neg bits src) … … 1258 1224 (srwi bits bits 31)) ; bits = 0000...000X 1259 1225 1260 (define-ppc -vinsn gt0->bit31 (((bits :u32))1226 (define-ppc32-vinsn gt0->bit31 (((bits :u32)) 1261 1227 ((src (t (:ne bits))))) 1262 1228 (subi bits src 1) … … 1264 1230 (srwi bits bits 31)) ; bits = 0000...000X 1265 1231 1266 (define-ppc -vinsn ne->bit31 (((bits :u32))1232 (define-ppc32-vinsn ne->bit31 (((bits :u32)) 1267 1233 ((x t) 1268 1234 (y t)) … … 1273 1239 (srwi bits bits 31)) ; bits = 0000...000X 1274 1240 1275 (define-ppc -vinsn fulltag->bit31 (((bits :u32))1241 (define-ppc32-vinsn fulltag->bit31 (((bits :u32)) 1276 1242 ((lispobj :lisp) 1277 1243 (tagval :u8const)) … … 1283 1249 1284 1250 1285 (define-ppc -vinsn eq->bit31 (((bits :u32))1251 (define-ppc32-vinsn eq->bit31 (((bits :u32)) 1286 1252 ((x t) 1287 1253 (y t))) … … 1290 1256 (srwi bits bits 5)) ; bits = 0000...000X 1291 1257 1292 (define-ppc -vinsn eqnil->bit31 (((bits :u32))1258 (define-ppc32-vinsn eqnil->bit31 (((bits :u32)) 1293 1259 ((x t))) 1294 1260 (subi bits x ppc32::nil-value) … … 1296 1262 (srwi bits bits 5)) 1297 1263 1298 (define-ppc -vinsn ne->bit31 (((bits :u32))1264 (define-ppc32-vinsn ne->bit31 (((bits :u32)) 1299 1265 ((x t) 1300 1266 (y t))) … … 1304 1270 (xori bits bits 1)) 1305 1271 1306 (define-ppc -vinsn nenil->bit31 (((bits :u32))1272 (define-ppc32-vinsn nenil->bit31 (((bits :u32)) 1307 1273 ((x t))) 1308 1274 (subi bits x ppc32::nil-value) … … 1311 1277 (xori bits bits 1)) 1312 1278 1313 (define-ppc -vinsn lt->bit31 (((bits :u32))1279 (define-ppc32-vinsn lt->bit31 (((bits :u32)) 1314 1280 ((x (t (:ne bits))) 1315 1281 (y (t (:ne bits))))) … … 1321 1287 (srwi bits bits 31)) ; bits = 0000...000X 1322 1288 1323 (define-ppc -vinsn ltu->bit31 (((bits :u32))1289 (define-ppc32-vinsn ltu->bit31 (((bits :u32)) 1324 1290 ((x :u32) 1325 1291 (y :u32))) … … 1328 1294 (neg bits bits)) 1329 1295 1330 (define-ppc -vinsn le->bit31 (((bits :u32))1296 (define-ppc32-vinsn le->bit31 (((bits :u32)) 1331 1297 ((x (t (:ne bits))) 1332 1298 (y (t (:ne bits))))) … … 1338 1304 (srwi bits bits 31)) ; bits = 0000...000X 1339 1305 1340 (define-ppc -vinsn leu->bit31 (((bits :u32))1306 (define-ppc32-vinsn leu->bit31 (((bits :u32)) 1341 1307 ((x :u32) 1342 1308 (y :u32))) … … 1344 1310 (addze bits ppc::rzero)) 1345 1311 1346 (define-ppc -vinsn gt->bit31 (((bits :u32))1312 (define-ppc32-vinsn gt->bit31 (((bits :u32)) 1347 1313 ((x (t (:ne bits))) 1348 1314 (y (t (:ne bits))))) … … 1354 1320 (srwi bits bits 31)) ; bits = 0000...000X 1355 1321 1356 (define-ppc -vinsn gtu->bit31 (((bits :u32))1322 (define-ppc32-vinsn gtu->bit31 (((bits :u32)) 1357 1323 ((x :u32) 1358 1324 (y :u32))) … … 1361 1327 (neg bits bits)) 1362 1328 1363 (define-ppc -vinsn ge->bit31 (((bits :u32))1329 (define-ppc32-vinsn ge->bit31 (((bits :u32)) 1364 1330 ((x (t (:ne bits))) 1365 1331 (y (t (:ne bits))))) … … 1370 1336 (srwi bits bits 31)) ; bits = 0000...000X 1371 1337 1372 (define-ppc -vinsn geu->bit31 (((bits :u32))1338 (define-ppc32-vinsn geu->bit31 (((bits :u32)) 1373 1339 ((x :u32) 1374 1340 (y :u32))) … … 1383 1349 ; MFCR takes three cycles and waits for previous instructions to complete. 1384 1350 ; Of course, using a CR field costs us something as well. 1385 (define-ppc -vinsn crbit->bit31 (((bits :u32))1351 (define-ppc32-vinsn crbit->bit31 (((bits :u32)) 1386 1352 ((crf :crf) 1387 1353 (bitnum :crbit)) … … 1391 1357 1392 1358 1393 (define-ppc -vinsn compare (((crf :crf))1359 (define-ppc32-vinsn compare (((crf :crf)) 1394 1360 ((arg0 t) 1395 1361 (arg1 t)) … … 1397 1363 (cmpw crf arg0 arg1)) 1398 1364 1399 (define-ppc -vinsn compare-to-nil (((crf :crf))1365 (define-ppc32-vinsn compare-to-nil (((crf :crf)) 1400 1366 ((arg0 t))) 1401 1367 (cmpwi crf arg0 ppc32::nil-value)) 1402 1368 1403 (define-ppc -vinsn compare-logical (((crf :crf))1369 (define-ppc32-vinsn compare-logical (((crf :crf)) 1404 1370 ((arg0 t) 1405 1371 (arg1 t)) … … 1407 1373 (cmplw crf arg0 arg1)) 1408 1374 1409 (define-ppc -vinsn double-float-compare (((crf :crf))1375 (define-ppc32-vinsn double-float-compare (((crf :crf)) 1410 1376 ((arg0 :double-float) 1411 1377 (arg1 :double-float)) … … 1414 1380 1415 1381 1416 (define-ppc -vinsn double-float+-2 (((result :double-float))1382 (define-ppc32-vinsn double-float+-2 (((result :double-float)) 1417 1383 ((x :double-float) 1418 1384 (y :double-float)) … … 1420 1386 (fadd result x y)) 1421 1387 1422 (define-ppc -vinsn double-float--2 (((result :double-float))1388 (define-ppc32-vinsn double-float--2 (((result :double-float)) 1423 1389 ((x :double-float) 1424 1390 (y :double-float)) … … 1426 1392 (fsub result x y)) 1427 1393 1428 (define-ppc -vinsn double-float*-2 (((result :double-float))1394 (define-ppc32-vinsn double-float*-2 (((result :double-float)) 1429 1395 ((x :double-float) 1430 1396 (y :double-float)) … … 1432 1398 (fmul result x y)) 1433 1399 1434 (define-ppc -vinsn double-float/-2 (((result :double-float))1400 (define-ppc32-vinsn double-float/-2 (((result :double-float)) 1435 1401 ((x :double-float) 1436 1402 (y :double-float)) … … 1438 1404 (fdiv result x y)) 1439 1405 1440 (define-ppc -vinsn single-float+-2 (((result :single-float))1406 (define-ppc32-vinsn single-float+-2 (((result :single-float)) 1441 1407 ((x :single-float) 1442 1408 (y :single-float)) … … 1444 1410 (fadds result x y)) 1445 1411 1446 (define-ppc -vinsn single-float--2 (((result :single-float))1412 (define-ppc32-vinsn single-float--2 (((result :single-float)) 1447 1413 ((x :single-float) 1448 1414 (y :single-float)) … … 1450 1416 (fsubs result x y)) 1451 1417 1452 (define-ppc -vinsn single-float*-2 (((result :single-float))1418 (define-ppc32-vinsn single-float*-2 (((result :single-float)) 1453 1419 ((x :single-float) 1454 1420 (y :single-float)) … … 1456 1422 (fmuls result x y)) 1457 1423 1458 (define-ppc -vinsn single-float/-2 (((result :single-float))1424 (define-ppc32-vinsn single-float/-2 (((result :single-float)) 1459 1425 ((x :single-float) 1460 1426 (y :single-float)) … … 1466 1432 1467 1433 1468 (define-ppc -vinsn compare-unsigned (((crf :crf))1434 (define-ppc32-vinsn compare-unsigned (((crf :crf)) 1469 1435 ((arg0 :imm) 1470 1436 (arg1 :imm)) … … 1472 1438 (cmplw crf arg0 arg1)) 1473 1439 1474 (define-ppc -vinsn compare-signed-s16const (((crf :crf))1440 (define-ppc32-vinsn compare-signed-s16const (((crf :crf)) 1475 1441 ((arg0 :imm) 1476 1442 (imm :s16const)) … … 1478 1444 (cmpwi crf arg0 imm)) 1479 1445 1480 (define-ppc -vinsn compare-unsigned-u16const (((crf :crf))1446 (define-ppc32-vinsn compare-unsigned-u16const (((crf :crf)) 1481 1447 ((arg0 :u32) 1482 1448 (imm :u16const)) … … 1488 1454 ;; Extract a constant bit (0-31) from src; make it be bit 31 of dest. 1489 1455 ;; Bitnum is treated mod 32. 1490 (define-ppc -vinsn extract-constant-ppc-bit (((dest :u32))1456 (define-ppc32-vinsn extract-constant-ppc-bit (((dest :u32)) 1491 1457 ((src :imm) 1492 1458 (bitnum :u16const)) … … 1495 1461 1496 1462 1497 (define-ppc -vinsn set-constant-ppc-bit-to-variable-value (((dest :u32))1463 (define-ppc32-vinsn set-constant-ppc-bit-to-variable-value (((dest :u32)) 1498 1464 ((src :u32) 1499 1465 (bitval :u32) ; 0 or 1 … … 1501 1467 (rlwimi dest bitval (:apply - 31 bitnum) bitnum bitnum)) 1502 1468 1503 (define-ppc -vinsn set-constant-ppc-bit-to-1 (((dest :u32))1469 (define-ppc32-vinsn set-constant-ppc-bit-to-1 (((dest :u32)) 1504 1470 ((src :u32) 1505 1471 (bitnum :u8const))) … … 1509 1475 (ori dest src (:apply ash #x8000 (:apply - (:apply - bitnum 16)))))) 1510 1476 1511 (define-ppc -vinsn set-constant-ppc-bit-to-0 (((dest :u32))1477 (define-ppc32-vinsn set-constant-ppc-bit-to-0 (((dest :u32)) 1512 1478 ((src :u32) 1513 1479 (bitnum :u8const))) … … 1515 1481 1516 1482 1517 (define-ppc -vinsn insert-bit-0 (((dest :u32))1483 (define-ppc32-vinsn insert-bit-0 (((dest :u32)) 1518 1484 ((src :u32) 1519 1485 (val :u32))) … … 1527 1493 ; I think ... 1528 1494 ; Actually, it'd be "unbox, then subtract from 30". 1529 (define-ppc -vinsn extract-variable-non-insane-bit (((dest :u32))1495 (define-ppc32-vinsn extract-variable-non-insane-bit (((dest :u32)) 1530 1496 ((src :imm) 1531 1497 (bit :imm)) … … 1537 1503 ; Operations on lists and cons cells 1538 1504 1539 (define-ppc -vinsn %cdr (((dest :lisp))1505 (define-ppc32-vinsn %cdr (((dest :lisp)) 1540 1506 ((src :lisp))) 1541 1507 (lwz dest ppc32::cons.cdr src)) 1542 1508 1543 (define-ppc -vinsn %car (((dest :lisp))1509 (define-ppc32-vinsn %car (((dest :lisp)) 1544 1510 ((src :lisp))) 1545 1511 (lwz dest ppc32::cons.car src)) 1546 1512 1547 (define-ppc -vinsn %set-car (()1513 (define-ppc32-vinsn %set-car (() 1548 1514 ((cell :lisp) 1549 1515 (new :lisp))) 1550 1516 (stw new ppc32::cons.car cell)) 1551 1517 1552 (define-ppc -vinsn %set-cdr (()1518 (define-ppc32-vinsn %set-cdr (() 1553 1519 ((cell :lisp) 1554 1520 (new :lisp))) 1555 1521 (stw new ppc32::cons.cdr cell)) 1556 1522 1557 (define-ppc -vinsn load-adl (()1523 (define-ppc32-vinsn load-adl (() 1558 1524 ((n :u32const))) 1559 1525 (lis ppc::nargs (:apply ldb (byte 16 16) n)) 1560 1526 (ori ppc::nargs ppc::nargs (:apply ldb (byte 16 0) n))) 1561 1527 1562 (define-ppc -vinsn set-nargs (()1528 (define-ppc32-vinsn set-nargs (() 1563 1529 ((n :s16const))) 1564 1530 (li ppc::nargs (:apply ash n ppc32::word-shift))) 1565 1531 1566 (define-ppc -vinsn scale-nargs (()1532 (define-ppc32-vinsn scale-nargs (() 1567 1533 ((nfixed :s16const))) 1568 1534 ((:pred > nfixed 0) … … 1571 1537 1572 1538 1573 (define-ppc -vinsn (vpush-register :push :node :vsp)1539 (define-ppc32-vinsn (vpush-register :push :node :vsp) 1574 1540 (() 1575 1541 ((reg :lisp))) 1576 1542 (stwu reg -4 ppc::vsp)) 1577 1543 1578 (define-ppc -vinsn (vpush-register-arg :push :node :vsp :outgoing-argument)1544 (define-ppc32-vinsn (vpush-register-arg :push :node :vsp :outgoing-argument) 1579 1545 (() 1580 1546 ((reg :lisp))) 1581 1547 (stwu reg -4 ppc::vsp)) 1582 1548 1583 (define-ppc -vinsn (vpop-register :pop :node :vsp)1549 (define-ppc32-vinsn (vpop-register :pop :node :vsp) 1584 1550 (((dest :lisp)) 1585 1551 ()) … … 1588 1554 1589 1555 1590 (define-ppc -vinsn copy-node-gpr (((dest :lisp))1556 (define-ppc32-vinsn copy-node-gpr (((dest :lisp)) 1591 1557 ((src :lisp))) 1592 1558 ((:not (:pred = … … 1595 1561 (mr dest src))) 1596 1562 1597 (define-ppc -vinsn copy-gpr (((dest t))1563 (define-ppc32-vinsn copy-gpr (((dest t)) 1598 1564 ((src t))) 1599 1565 ((:not (:pred = … … 1603 1569 1604 1570 1605 (define-ppc -vinsn copy-fpr (((dest t))1571 (define-ppc32-vinsn copy-fpr (((dest t)) 1606 1572 ((src t))) 1607 1573 ((:not (:pred = … … 1610 1576 (fmr dest src))) 1611 1577 1612 (define-ppc -vinsn vcell-ref (((dest :lisp))1578 (define-ppc32-vinsn vcell-ref (((dest :lisp)) 1613 1579 ((vcell :lisp))) 1614 1580 (lwz dest ppc32::misc-data-offset vcell)) 1615 1581 1616 (define-ppc -vinsn vcell-set (()1582 (define-ppc32-vinsn vcell-set (() 1617 1583 ((vcell :lisp) 1618 1584 (value :lisp))) … … 1620 1586 1621 1587 1622 (define-ppc -vinsn make-vcell (((dest :lisp))1588 (define-ppc32-vinsn make-vcell (((dest :lisp)) 1623 1589 ((closed (:lisp :ne dest))) 1624 1590 ((header :u32))) … … 1631 1597 (stw closed ppc32::value-cell.value dest)) 1632 1598 1633 (define-ppc -vinsn make-tsp-vcell (((dest :lisp))1599 (define-ppc32-vinsn make-tsp-vcell (((dest :lisp)) 1634 1600 ((closed :lisp)) 1635 1601 ((header :u32))) … … 1643 1609 (la dest (+ 8 ppc32::fulltag-misc) ppc::tsp)) 1644 1610 1645 (define-ppc -vinsn make-tsp-cons (((dest :lisp))1611 (define-ppc32-vinsn make-tsp-cons (((dest :lisp)) 1646 1612 ((car :lisp) (cdr :lisp)) 1647 1613 ()) … … 1655 1621 1656 1622 1657 (define-ppc -vinsn %closure-code% (((dest :lisp))1623 (define-ppc32-vinsn %closure-code% (((dest :lisp)) 1658 1624 ()) 1659 1625 (lwz dest (+ ppc32::symbol.vcell (ppc32::nrs-offset %closure-code%) ppc32::nil-value) 0)) 1660 1626 1661 1627 1662 (define-ppc -vinsn (call-subprim :call :subprim-call) (()1628 (define-ppc32-vinsn (call-subprim :call :subprim-call) (() 1663 1629 ((spno :s32const))) 1664 1630 (bla spno)) 1665 1631 1666 (define-ppc -vinsn (jump-subprim :jumpLR) (()1632 (define-ppc32-vinsn (jump-subprim :jumpLR) (() 1667 1633 ((spno :s32const))) 1668 1634 (ba spno)) … … 1670 1636 ; Same as "call-subprim", but gives us a place to 1671 1637 ; track args, results, etc. 1672 (define-ppc -vinsn (call-subprim-0 :call :subprim-call) (((dest t))1638 (define-ppc32-vinsn (call-subprim-0 :call :subprim-call) (((dest t)) 1673 1639 ((spno :s32const))) 1674 1640 (bla spno)) 1675 1641 1676 (define-ppc -vinsn (call-subprim-1 :call :subprim-call) (((dest t))1642 (define-ppc32-vinsn (call-subprim-1 :call :subprim-call) (((dest t)) 1677 1643 ((spno :s32const) 1678 1644 (z t))) 1679 1645 (bla spno)) 1680 1646 1681 (define-ppc -vinsn (call-subprim-2 :call :subprim-call) (((dest t))1647 (define-ppc32-vinsn (call-subprim-2 :call :subprim-call) (((dest t)) 1682 1648 ((spno :s32const) 1683 1649 (y t) … … 1685 1651 (bla spno)) 1686 1652 1687 (define-ppc -vinsn (call-subprim-3 :call :subprim-call) (((dest t))1653 (define-ppc32-vinsn (call-subprim-3 :call :subprim-call) (((dest t)) 1688 1654 ((spno :s32const) 1689 1655 (x t) … … 1692 1658 (bla spno)) 1693 1659 1694 (define-ppc -vinsn event-poll (()1660 (define-ppc32-vinsn event-poll (() 1695 1661 ()) 1696 1662 (lwz ppc::nargs ppc32::tcr.interrupt-level ppc::rcontext) … … 1699 1665 1700 1666 ; Unconditional (pc-relative) branch 1701 (define-ppc -vinsn (jump :jump)1667 (define-ppc32-vinsn (jump :jump) 1702 1668 (() 1703 1669 ((label :label))) 1704 1670 (b label)) 1705 1671 1706 (define-ppc -vinsn (call-label :call) (()1672 (define-ppc32-vinsn (call-label :call) (() 1707 1673 ((label :label))) 1708 1674 (bl label)) … … 1710 1676 ; just like JUMP, only (implicitly) asserts that the following 1711 1677 ; code is somehow reachable. 1712 (define-ppc -vinsn (non-barrier-jump :xref) (()1678 (define-ppc32-vinsn (non-barrier-jump :xref) (() 1713 1679 ((label :label))) 1714 1680 (b label)) 1715 1681 1716 1682 1717 (define-ppc -vinsn (cbranch-true :branch) (()1683 (define-ppc32-vinsn (cbranch-true :branch) (() 1718 1684 ((label :label) 1719 1685 (crf :crf) … … 1721 1687 (bt (:apply + crf crbit) label)) 1722 1688 1723 (define-ppc -vinsn (cbranch-false :branch) (()1689 (define-ppc32-vinsn (cbranch-false :branch) (() 1724 1690 ((label :label) 1725 1691 (crf :crf) … … 1727 1693 (bf (:apply + crf crbit) label)) 1728 1694 1729 (define-ppc -vinsn check-trap-error (()1695 (define-ppc32-vinsn check-trap-error (() 1730 1696 ()) 1731 1697 (beq+ 0 :no-error) … … 1734 1700 1735 1701 1736 (define-ppc -vinsn lisp-word-ref (((dest t))1702 (define-ppc32-vinsn lisp-word-ref (((dest t)) 1737 1703 ((base t) 1738 1704 (offset t))) 1739 1705 (lwzx dest base offset)) 1740 1706 1741 (define-ppc -vinsn lisp-word-ref-c (((dest t))1707 (define-ppc32-vinsn lisp-word-ref-c (((dest t)) 1742 1708 ((base t) 1743 1709 (offset :s16const))) … … 1747 1713 1748 1714 ;; Load an unsigned, 32-bit constant into a destination register. 1749 (define-ppc -vinsn (lwi :constant-ref) (((dest :imm))1715 (define-ppc32-vinsn (lwi :constant-ref) (((dest :imm)) 1750 1716 ((intval :u32const)) 1751 1717 ()) … … 1764 1730 1765 1731 ; Exactly the same thing, but take a signed integer value 1766 (define-ppc -vinsn lwi-s32 (((dest :imm))1732 (define-ppc32-vinsn lwi-s32 (((dest :imm)) 1767 1733 ((intval :s32const)) 1768 1734 ()) … … 1780 1746 (ori dest dest (:apply logand intval #xffff)))))) 1781 1747 1782 (define-ppc -vinsn discard-temp-frame (()1748 (define-ppc32-vinsn discard-temp-frame (() 1783 1749 ()) 1784 1750 (lwz ppc::tsp 0 ppc::tsp)) … … 1792 1758 ;;; The caller always has to reserve a 24-byte linkage area 1793 1759 ;;; (large chunks of which are unused). 1794 (define-ppc -vinsn alloc-c-frame (()1760 (define-ppc32-vinsn alloc-c-frame (() 1795 1761 ((n-c-args :u16const))) 1796 1762 ;; Always reserve space for at least 8 args and space for a lisp … … 1820 1786 (stw ppc::rzero ppc32::c-frame.savelr ppc::sp)) 1821 1787 1822 (define-ppc -vinsn alloc-eabi-c-frame (()1788 (define-ppc32-vinsn alloc-eabi-c-frame (() 1823 1789 ((n-c-args :u16const))) 1824 1790 ; Always reserve space for at least 8 args and space for a lisp … … 1845 1811 ; to do the memory reference than it would be to keep track of the size 1846 1812 ; of each frame. 1847 (define-ppc -vinsn discard-c-frame (()1813 (define-ppc32-vinsn discard-c-frame (() 1848 1814 ()) 1849 1815 (lwz ppc::sp 0 ppc::sp)) … … 1852 1818 1853 1819 1854 (define-ppc -vinsn set-c-arg (()1820 (define-ppc32-vinsn set-c-arg (() 1855 1821 ((argval :u32) 1856 1822 (argnum :u16const))) 1857 1823 (stw argval (:apply + ppc32::c-frame.param0 (:apply ash argnum ppc32::word-shift)) ppc::sp)) 1858 1824 1859 (define-ppc -vinsn set-single-c-arg (()1825 (define-ppc32-vinsn set-single-c-arg (() 1860 1826 ((argval :single-float) 1861 1827 (argnum :u16const))) 1862 1828 (stfs argval (:apply + ppc32::c-frame.param0 (:apply ash argnum ppc32::word-shift)) ppc::sp)) 1863 1829 1864 (define-ppc -vinsn set-double-c-arg (()1830 (define-ppc32-vinsn set-double-c-arg (() 1865 1831 ((argval :double-float) 1866 1832 (argnum :u16const))) 1867 1833 (stfd argval (:apply + ppc32::c-frame.param0 (:apply ash argnum ppc32::word-shift)) ppc::sp)) 1868 1834 1869 (define-ppc -vinsn reload-single-c-arg (((argval :single-float))1835 (define-ppc32-vinsn reload-single-c-arg (((argval :single-float)) 1870 1836 ((argnum :u16const))) 1871 1837 (lfs argval (:apply + ppc32::c-frame.param0 (:apply ash argnum ppc32::word-shift)) ppc::sp)) 1872 1838 1873 (define-ppc -vinsn reload-double-c-arg (((argval :double-float))1839 (define-ppc32-vinsn reload-double-c-arg (((argval :double-float)) 1874 1840 ((argnum :u16const))) 1875 1841 (lfd argval (:apply + ppc32::c-frame.param0 (:apply ash argnum ppc32::word-shift)) ppc::sp)) 1876 1842 1877 (define-ppc -vinsn set-eabi-c-arg (()1843 (define-ppc32-vinsn set-eabi-c-arg (() 1878 1844 ((argval :u32) 1879 1845 (argnum :u16const))) 1880 1846 (stw argval (:apply + ppc32::eabi-c-frame.param0 (:apply ash argnum ppc32::word-shift)) ppc::sp)) 1881 1847 1882 (define-ppc -vinsn set-single-eabi-c-arg (()1848 (define-ppc32-vinsn set-single-eabi-c-arg (() 1883 1849 ((argval :single-float) 1884 1850 (argnum :u16const))) 1885 1851 (stfs argval (:apply + ppc32::eabi-c-frame.param0 (:apply ash argnum ppc32::word-shift)) ppc::sp)) 1886 1852 1887 (define-ppc -vinsn set-double-eabi-c-arg (()1853 (define-ppc32-vinsn set-double-eabi-c-arg (() 1888 1854 ((argval :double-float) 1889 1855 (argnum :u16const))) 1890 1856 (stfd argval (:apply + ppc32::eabi-c-frame.param0 (:apply ash argnum ppc32::word-shift)) ppc::sp)) 1891 1857 1892 (define-ppc -vinsn reload-single-eabi-c-arg (((argval :single-float))1858 (define-ppc32-vinsn reload-single-eabi-c-arg (((argval :single-float)) 1893 1859 ((argnum :u16const))) 1894 1860 (lfs argval (:apply + ppc32::eabi-c-frame.param0 (:apply ash argnum ppc32::word-shift)) ppc::sp)) 1895 1861 1896 (define-ppc -vinsn reload-double-eabi-c-arg (((argval :double-float))1862 (define-ppc32-vinsn reload-double-eabi-c-arg (((argval :double-float)) 1897 1863 ((argnum :u16const))) 1898 1864 (lfd argval (:apply + ppc32::eabi-c-frame.param0 (:apply ash argnum ppc32::word-shift)) ppc::sp)) 1899 1865 1900 (define-ppc -vinsn (load-nil :constant-ref) (((dest t))1866 (define-ppc32-vinsn (load-nil :constant-ref) (((dest t)) 1901 1867 ()) 1902 1868 (li dest ppc32::nil-value)) 1903 1869 1904 (define-ppc -vinsn (load-t :constant-ref) (((dest t))1870 (define-ppc32-vinsn (load-t :constant-ref) (((dest t)) 1905 1871 ()) 1906 1872 (li dest (+ ppc32::t-offset ppc32::nil-value))) 1907 1873 1908 (define-ppc -vinsn set-eq-bit (((dest :crf))1874 (define-ppc32-vinsn set-eq-bit (((dest :crf)) 1909 1875 ()) 1910 1876 (creqv (:apply + ppc::ppc-eq-bit dest) … … 1912 1878 (:apply + ppc::ppc-eq-bit dest))) 1913 1879 1914 (define-ppc -vinsn (ref-constant :constant-ref) (((dest :lisp))1880 (define-ppc32-vinsn (ref-constant :constant-ref) (((dest :lisp)) 1915 1881 ((src :s16const))) 1916 1882 (lwz dest (:apply + ppc32::misc-data-offset (:apply ash (:apply 1+ src) 2)) ppc::fn)) 1917 1883 1918 (define-ppc -vinsn ref-indexed-constant (((dest :lisp))1884 (define-ppc32-vinsn ref-indexed-constant (((dest :lisp)) 1919 1885 ((idxreg :s32))) 1920 1886 (lwzx dest ppc::fn idxreg)) 1921 1887 1922 1888 1923 (define-ppc -vinsn cons (((dest :lisp))1889 (define-ppc32-vinsn cons (((dest :lisp)) 1924 1890 ((newcar :lisp) 1925 1891 (newcdr :lisp))) … … 1934 1900 1935 1901 ;; subtag had better be a PPC-NODE-SUBTAG of some sort! 1936 (define-ppc -vinsn %ppc-gvector (((dest :lisp))1902 (define-ppc32-vinsn %ppc-gvector (((dest :lisp)) 1937 1903 ((Rheader :u32) 1938 1904 (nbytes :u32const)) … … 1959 1925 1960 1926 ;; allocate a small (phys size <= 32K bytes) misc obj of known size/subtag 1961 (define-ppc -vinsn %alloc-misc-fixed (((dest :lisp))1927 (define-ppc32-vinsn %alloc-misc-fixed (((dest :lisp)) 1962 1928 ((Rheader :u32) 1963 1929 (nbytes :u32const))) … … 1971 1937 (clrrwi ppc::allocptr ppc::allocptr ppc32::ntagbits)) 1972 1938 1973 (define-ppc -vinsn vstack-discard (()1939 (define-ppc32-vinsn vstack-discard (() 1974 1940 ((nwords :u32const))) 1975 1941 ((:not (:pred = nwords 0)) … … 1977 1943 1978 1944 1979 (define-ppc -vinsn lcell-load (((dest :lisp))1945 (define-ppc32-vinsn lcell-load (((dest :lisp)) 1980 1946 ((cell :lcell) 1981 1947 (top :lcell))) … … 1984 1950 (:apply calc-lcell-offset cell)) ppc::vsp)) 1985 1951 1986 (define-ppc -vinsn vframe-load (((dest :lisp))1952 (define-ppc32-vinsn vframe-load (((dest :lisp)) 1987 1953 ((frame-offset :u16const) 1988 1954 (cur-vsp :u16const))) 1989 1955 (lwz dest (:apply - (:apply - cur-vsp 4) frame-offset) ppc::vsp)) 1990 1956 1991 (define-ppc -vinsn lcell-store (()1957 (define-ppc32-vinsn lcell-store (() 1992 1958 ((src :lisp) 1993 1959 (cell :lcell) … … 1997 1963 (:apply calc-lcell-offset cell)) ppc::vsp)) 1998 1964 1999 (define-ppc -vinsn vframe-store (()1965 (define-ppc32-vinsn vframe-store (() 2000 1966 ((src :lisp) 2001 1967 (frame-offset :u16const) … … 2003 1969 (stw src (:apply - (:apply - cur-vsp 4) frame-offset) ppc::vsp)) 2004 1970 2005 (define-ppc -vinsn load-vframe-address (((dest :imm))1971 (define-ppc32-vinsn load-vframe-address (((dest :imm)) 2006 1972 ((offset :s16const))) 2007 1973 (la dest offset ppc::vsp)) 2008 1974 2009 (define-ppc -vinsn copy-lexpr-argument (()1975 (define-ppc32-vinsn copy-lexpr-argument (() 2010 1976 () 2011 1977 ((temp :lisp))) … … 2016 1982 2017 1983 ; Treat the low 8 bits of VAL as an unsigned integer; set RESULT to the equivalent fixnum. 2018 (define-ppc -vinsn u8->fixnum (((result :imm))1984 (define-ppc32-vinsn u8->fixnum (((result :imm)) 2019 1985 ((val :u8)) 2020 1986 ()) … … 2022 1988 2023 1989 ; Treat the low 8 bits of VAL as a signed integer; set RESULT to the equivalent fixnum. 2024 (define-ppc -vinsn s8->fixnum (((result :imm))1990 (define-ppc32-vinsn s8->fixnum (((result :imm)) 2025 1991 ((val :s8)) 2026 1992 ()) … … 2030 1996 2031 1997 ; Treat the low 16 bits of VAL as an unsigned integer; set RESULT to the equivalent fixnum. 2032 (define-ppc -vinsn u16->fixnum (((result :imm))1998 (define-ppc32-vinsn u16->fixnum (((result :imm)) 2033 1999 ((val :u16)) 2034 2000 ()) … … 2036 2002 2037 2003 ; Treat the low 16 bits of VAL as a signed integer; set RESULT to the equivalent fixnum. 2038 (define-ppc -vinsn s16->fixnum (((result :imm))2004 (define-ppc32-vinsn s16->fixnum (((result :imm)) 2039 2005 ((val :s16)) 2040 2006 ()) … … 2042 2008 (srawi result result (- (- ppc32::nbits-in-word 16) ppc32::fixnumshift))) 2043 2009 2044 (define-ppc -vinsn fixnum->s16 (((result :s16))2010 (define-ppc32-vinsn fixnum->s16 (((result :s16)) 2045 2011 ((src :imm))) 2046 2012 (srawi result src ppc32::fixnumshift)) … … 2049 2015 ; There should be something very much like this that takes a stack-consed 2050 2016 ; bignum result ... 2051 (define-ppc -vinsn s32->integer (((result :lisp))2017 (define-ppc32-vinsn s32->integer (((result :lisp)) 2052 2018 ((src :s32)) 2053 2019 ((crf (:crf 0)) ; a casualty … … 2068 2034 2069 2035 ; An unsigned 32-bit untagged value can be either a 1 or a 2-digit bignum. 2070 (define-ppc -vinsn u32->integer (((result :lisp))2036 (define-ppc32-vinsn u32->integer (((result :lisp)) 2071 2037 ((src :u32)) 2072 2038 ((crf (:crf 0)) ; a casualty … … 2091 2057 :done) 2092 2058 2093 (define-ppc -vinsn u16->u32 (((dest :u32))2059 (define-ppc32-vinsn u16->u32 (((dest :u32)) 2094 2060 ((src :u16))) 2095 2061 (clrlwi dest src 16)) 2096 2062 2097 (define-ppc -vinsn u8->u32 (((dest :u32))2063 (define-ppc32-vinsn u8->u32 (((dest :u32)) 2098 2064 ((src :u8))) 2099 2065 (clrlwi dest src 24)) 2100 2066 2101 2067 2102 (define-ppc -vinsn s16->s32 (((dest :s32))2068 (define-ppc32-vinsn s16->s32 (((dest :s32)) 2103 2069 ((src :s16))) 2104 2070 (extsh dest src)) 2105 2071 2106 (define-ppc -vinsn s8->s32 (((dest :s32))2072 (define-ppc32-vinsn s8->s32 (((dest :s32)) 2107 2073 ((src :s8))) 2108 2074 (extsb dest src)) … … 2113 2079 ; Heap-cons a double-float to store contents of FPREG. Hope that we don't do 2114 2080 ; this blindly. 2115 (define-ppc -vinsn double->heap (((result :lisp)) ; tagged as a double-float2081 (define-ppc32-vinsn double->heap (((result :lisp)) ; tagged as a double-float 2116 2082 ((fpreg :double-float)) 2117 2083 ((header-temp :u32))) … … 2128 2094 ; Wouldn't kill us to do either/both out-of-line, but need to make visible to 2129 2095 ; compiler so unnecessary heap-consing can be elided. 2130 (define-ppc -vinsn single->heap (((result :lisp)) ; tagged as a single-float2096 (define-ppc32-vinsn single->heap (((result :lisp)) ; tagged as a single-float 2131 2097 ((fpreg :single-float)) 2132 2098 ((header-temp :u32))) … … 2141 2107 2142 2108 ; "dest" is preallocated, presumably on a stack somewhere. 2143 (define-ppc -vinsn store-double (()2109 (define-ppc32-vinsn store-double (() 2144 2110 ((dest :lisp) 2145 2111 (source :double-float)) … … 2147 2113 (stfd source ppc32::double-float.value dest)) 2148 2114 2149 (define-ppc -vinsn get-double (((target :double-float))2115 (define-ppc32-vinsn get-double (((target :double-float)) 2150 2116 ((source :lisp)) 2151 2117 ()) … … 2156 2122 ;;; instead of replicating it .. 2157 2123 2158 (define-ppc -vinsn get-double? (((target :double-float))2124 (define-ppc32-vinsn get-double? (((target :double-float)) 2159 2125 ((source :lisp)) 2160 2126 ((tag :u8) … … 2169 2135 2170 2136 2171 (define-ppc -vinsn store-single (()2137 (define-ppc32-vinsn store-single (() 2172 2138 ((dest :lisp) 2173 2139 (source :single-float)) … … 2175 2141 (stfs source ppc32::single-float.value dest)) 2176 2142 2177 (define-ppc -vinsn get-single (((target :single-float))2143 (define-ppc32-vinsn get-single (((target :single-float)) 2178 2144 ((source :lisp)) 2179 2145 ()) … … 2181 2147 2182 2148 ; ... of characters ... 2183 (define-ppc -vinsn charcode->u16 (((dest :u16))2149 (define-ppc32-vinsn charcode->u16 (((dest :u16)) 2184 2150 ((src :imm)) 2185 2151 ()) 2186 2152 (srwi dest src ppc32::charcode-shift)) 2187 2153 2188 (define-ppc -vinsn character->fixnum (((dest :lisp))2154 (define-ppc32-vinsn character->fixnum (((dest :lisp)) 2189 2155 ((src :lisp)) 2190 2156 ()) … … 2195 2161 (- ppc32::least-significant-bit ppc32::fixnumshift))) 2196 2162 2197 (define-ppc -vinsn character->code (((dest :u32))2163 (define-ppc32-vinsn character->code (((dest :u32)) 2198 2164 ((src :lisp))) 2199 2165 (rlwinm dest src ppc32::charcode-shift ppc32::charcode-shift ppc32::least-significant-bit)) 2200 2166 2201 (define-ppc -vinsn charcode->fixnum (((dest :lisp))2167 (define-ppc32-vinsn charcode->fixnum (((dest :lisp)) 2202 2168 ((src :imm)) 2203 2169 ()) … … 2208 2174 (- ppc32::least-significant-bit ppc32::fixnumshift))) 2209 2175 2210 (define-ppc -vinsn fixnum->char (((dest :lisp))2176 (define-ppc32-vinsn fixnum->char (((dest :lisp)) 2211 2177 ((src :imm)) 2212 2178 ()) … … 2214 2180 (addi dest dest ppc32::subtag-character)) 2215 2181 2216 (define-ppc -vinsn u8->char (((dest :lisp))2182 (define-ppc32-vinsn u8->char (((dest :lisp)) 2217 2183 ((src :u8)) 2218 2184 ()) … … 2222 2188 ;; ... Macptrs ... 2223 2189 2224 (define-ppc -vinsn deref-macptr (((addr :address))2190 (define-ppc32-vinsn deref-macptr (((addr :address)) 2225 2191 ((src :lisp)) 2226 2192 ()) 2227 2193 (lwz addr ppc32::macptr.address src)) 2228 2194 2229 (define-ppc -vinsn set-macptr-address (()2195 (define-ppc32-vinsn set-macptr-address (() 2230 2196 ((addr :address) 2231 2197 (src :lisp)) … … 2234 2200 2235 2201 2236 (define-ppc -vinsn macptr->heap (((dest :lisp))2202 (define-ppc32-vinsn macptr->heap (((dest :lisp)) 2237 2203 ((address :address)) 2238 2204 ((header :u32))) … … 2247 2213 (stw address ppc32::macptr.address dest)) 2248 2214 2249 (define-ppc -vinsn macptr->stack (((dest :lisp))2215 (define-ppc32-vinsn macptr->stack (((dest :lisp)) 2250 2216 ((address :address)) 2251 2217 ((header :u32))) … … 2261 2227 2262 2228 2263 (define-ppc -vinsn adjust-stack-register (()2229 (define-ppc32-vinsn adjust-stack-register (() 2264 2230 ((reg t) 2265 2231 (amount :s16const))) 2266 2232 (la reg amount reg)) 2267 2233 2268 (define-ppc -vinsn adjust-vsp (()2234 (define-ppc32-vinsn adjust-vsp (() 2269 2235 ((amount :s16const))) 2270 2236 (la ppc::vsp amount ppc::vsp)) … … 2272 2238 ;; Arithmetic on fixnums & unboxed numbers 2273 2239 2274 (define-ppc -vinsn u32-lognot (((dest :u32))2240 (define-ppc32-vinsn u32-lognot (((dest :u32)) 2275 2241 ((src :u32)) 2276 2242 ()) 2277 2243 (not dest src)) 2278 2244 2279 (define-ppc -vinsn fixnum-lognot (((dest :imm))2245 (define-ppc32-vinsn fixnum-lognot (((dest :imm)) 2280 2246 ((src :imm)) 2281 2247 ((temp :u32))) … … 2284 2250 2285 2251 2286 (define-ppc -vinsn negate-fixnum-overflow-inline (((dest :lisp))2252 (define-ppc32-vinsn negate-fixnum-overflow-inline (((dest :lisp)) 2287 2253 ((src :imm)) 2288 2254 ((unboxed :s32) … … 2302 2268 :done) 2303 2269 2304 (define-ppc -vinsn negate-fixnum-overflow-ool (()2270 (define-ppc32-vinsn negate-fixnum-overflow-ool (() 2305 2271 ((src :imm)) 2306 2272 ) … … 2311 2277 2312 2278 2313 (define-ppc -vinsn negate-fixnum-no-ovf (((dest :lisp))2279 (define-ppc32-vinsn negate-fixnum-no-ovf (((dest :lisp)) 2314 2280 ((src :imm))) 2315 2281 … … 2317 2283 2318 2284 2319 (define-ppc -vinsn logior-high (((dest :imm))2285 (define-ppc32-vinsn logior-high (((dest :imm)) 2320 2286 ((src :imm) 2321 2287 (high :u16const))) 2322 2288 (oris dest src high)) 2323 2289 2324 (define-ppc -vinsn logior-low (((dest :imm))2290 (define-ppc32-vinsn logior-low (((dest :imm)) 2325 2291 ((src :imm) 2326 2292 (low :u16const))) … … 2329 2295 2330 2296 2331 (define-ppc -vinsn %logior2 (((dest :imm))2297 (define-ppc32-vinsn %logior2 (((dest :imm)) 2332 2298 ((x :imm) 2333 2299 (y :imm)) … … 2335 2301 (or dest x y)) 2336 2302 2337 (define-ppc -vinsn logand-high (((dest :imm))2303 (define-ppc32-vinsn logand-high (((dest :imm)) 2338 2304 ((src :imm) 2339 2305 (high :u16const)) … … 2341 2307 (andis. dest src high)) 2342 2308 2343 (define-ppc -vinsn logand-low (((dest :imm))2309 (define-ppc32-vinsn logand-low (((dest :imm)) 2344 2310 ((src :imm) 2345 2311 (low :u16const)) … … 2348 2314 2349 2315 2350 (define-ppc -vinsn %logand2 (((dest :imm))2316 (define-ppc32-vinsn %logand2 (((dest :imm)) 2351 2317 ((x :imm) 2352 2318 (y :imm)) … … 2354 2320 (and dest x y)) 2355 2321 2356 (define-ppc -vinsn logxor-high (((dest :imm))2322 (define-ppc32-vinsn logxor-high (((dest :imm)) 2357 2323 ((src :imm) 2358 2324 (high :u16const))) 2359 2325 (xoris dest src high)) 2360 2326 2361 (define-ppc -vinsn logxor-low (((dest :imm))2327 (define-ppc32-vinsn logxor-low (((dest :imm)) 2362 2328 ((src :imm) 2363 2329 (low :u16const))) … … 2366 2332 2367 2333 2368 (define-ppc -vinsn %logxor2 (((dest :imm))2334 (define-ppc32-vinsn %logxor2 (((dest :imm)) 2369 2335 ((x :imm) 2370 2336 (y :imm)) … … 2372 2338 (xor dest x y)) 2373 2339 2374 (define-ppc -vinsn %ilsl (((dest :imm))2340 (define-ppc32-vinsn %ilsl (((dest :imm)) 2375 2341 ((count :imm) 2376 2342 (src :imm)) … … 2384 2350 :foo) 2385 2351 2386 (define-ppc -vinsn %ilsl-c (((dest :imm))2352 (define-ppc32-vinsn %ilsl-c (((dest :imm)) 2387 2353 ((count :u8const) 2388 2354 (src :imm))) … … 2391 2357 2392 2358 2393 (define-ppc -vinsn %ilsr-c (((dest :imm))2359 (define-ppc32-vinsn %ilsr-c (((dest :imm)) 2394 2360 ((count :u8const) 2395 2361 (src :imm))) … … 2403 2369 2404 2370 2405 (define-ppc -vinsn %iasr (((dest :imm))2371 (define-ppc32-vinsn %iasr (((dest :imm)) 2406 2372 ((count :imm) 2407 2373 (src :imm)) … … 2416 2382 (clrrwi dest temp ppc32::fixnumshift)) 2417 2383 2418 (define-ppc -vinsn %iasr-c (((dest :imm))2384 (define-ppc32-vinsn %iasr-c (((dest :imm)) 2419 2385 ((count :u8const) 2420 2386 (src :imm)) … … 2423 2389 (clrrwi dest temp ppc32::fixnumshift)) 2424 2390 2425 (define-ppc -vinsn %ilsr (((dest :imm))2391 (define-ppc32-vinsn %ilsr (((dest :imm)) 2426 2392 ((count :imm) 2427 2393 (src :imm)) … … 2437 2403 ) 2438 2404 2439 (define-ppc -vinsn %ilsr-c (((dest :imm))2405 (define-ppc32-vinsn %ilsr-c (((dest :imm)) 2440 2406 ((count :u8const) 2441 2407 (src :imm)) … … 2444 2410 (clrrwi dest temp ppc32::fixnumshift)) 2445 2411 2446 (define-ppc -vinsn u32-shift-left (((dest :u32))2412 (define-ppc32-vinsn u32-shift-left (((dest :u32)) 2447 2413 ((src :u32) 2448 2414 (count :u8const))) 2449 2415 (rlwinm dest src count 0 (:apply - 31 count))) 2450 2416 2451 (define-ppc -vinsn u32-shift-right (((dest :u32))2417 (define-ppc32-vinsn u32-shift-right (((dest :u32)) 2452 2418 ((src :u32) 2453 2419 (count :u8const))) 2454 2420 (rlwinm dest src (:apply - 32 count) count 31)) 2455 2421 2456 (define-ppc -vinsn sign-extend-halfword (((dest :imm))2422 (define-ppc32-vinsn sign-extend-halfword (((dest :imm)) 2457 2423 ((src :imm))) 2458 2424 (slwi dest src (- 16 ppc32::fixnumshift)) 2459 2425 (srawi dest dest (- 16 ppc32::fixnumshift))) 2460 2426 2461 (define-ppc -vinsn s32-highword (((dest :imm))2427 (define-ppc32-vinsn s32-highword (((dest :imm)) 2462 2428 ((src :s32)) 2463 2429 ((temp :s32))) … … 2467 2433 2468 2434 2469 (define-ppc -vinsn fixnum-add (((dest t))2435 (define-ppc32-vinsn fixnum-add (((dest t)) 2470 2436 ((x t) 2471 2437 (y t))) … … 2473 2439 2474 2440 2475 (define-ppc -vinsn fixnum-add-overflow-ool (()2441 (define-ppc32-vinsn fixnum-add-overflow-ool (() 2476 2442 ((x :imm) 2477 2443 (y :imm)) … … 2480 2446 (bsola- .SPfix-overflow)) 2481 2447 2482 (define-ppc -vinsn fixnum-add-overflow-inline (((dest :lisp))2448 (define-ppc32-vinsn fixnum-add-overflow-inline (((dest :lisp)) 2483 2449 ((x :imm) 2484 2450 (y :imm)) … … 2504 2470 2505 2471 ; (setq dest (- x y)) 2506 (define-ppc -vinsn fixnum-sub (((dest t))2472 (define-ppc32-vinsn fixnum-sub (((dest t)) 2507 2473 ((x t) 2508 2474 (y t))) 2509 2475 (subf dest y x)) 2510 2476 2511 (define-ppc -vinsn fixnum-sub-from-constant (((dest :imm))2477 (define-ppc32-vinsn fixnum-sub-from-constant (((dest :imm)) 2512 2478 ((x :s16const) 2513 2479 (y :imm))) … … 2517 2483 2518 2484 2519 (define-ppc -vinsn fixnum-sub-overflow-ool (()2485 (define-ppc32-vinsn fixnum-sub-overflow-ool (() 2520 2486 ((x :imm) 2521 2487 (y :imm))) … … 2523 2489 (bsola- .SPfix-overflow)) 2524 2490 2525 (define-ppc -vinsn fixnum-sub-overflow-inline (((dest :lisp))2491 (define-ppc32-vinsn fixnum-sub-overflow-inline (((dest :lisp)) 2526 2492 ((x :imm) 2527 2493 (y :imm)) … … 2544 2510 2545 2511 ; This is, of course, also "subtract-immediate." 2546 (define-ppc -vinsn add-immediate (((dest t))2512 (define-ppc32-vinsn add-immediate (((dest t)) 2547 2513 ((src t) 2548 2514 (upper :u32const) … … 2557 2523 ;This must unbox one reg, but hard to tell which is better. 2558 2524 ;(The one with the smaller absolute value might be) 2559 (define-ppc -vinsn multiply-fixnums (((dest :imm))2525 (define-ppc32-vinsn multiply-fixnums (((dest :imm)) 2560 2526 ((a :imm) 2561 2527 (b :imm)) … … 2564 2530 (mullw dest a unboxed)) 2565 2531 2566 (define-ppc -vinsn multiply-immediate (((dest :imm))2532 (define-ppc32-vinsn multiply-immediate (((dest :imm)) 2567 2533 ((boxed :imm) 2568 2534 (const :s16const))) … … 2571 2537 ; Mask out the code field of a base character; the result 2572 2538 ; should be EXACTLY = to subtag-base-char 2573 (define-ppc -vinsn mask-base-char (((dest :u32))2539 (define-ppc32-vinsn mask-base-char (((dest :u32)) 2574 2540 ((src :imm))) 2575 2541 (rlwinm dest src 0 (1+ (- ppc32::least-significant-bit ppc32::charcode-shift)) (1- (- ppc32::nbits-in-word (+ ppc32::charcode-shift 8))))) … … 2577 2543 2578 2544 ;; Boundp, fboundp stuff. 2579 (define-ppc -vinsn (svar-ref-symbol-value :call :subprim-call)2545 (define-ppc32-vinsn (svar-ref-symbol-value :call :subprim-call) 2580 2546 (((val :lisp)) 2581 2547 ((sym (:lisp (:ne val))))) 2582 2548 (bla .SPsvar-specrefcheck)) 2583 2549 2584 (define-ppc -vinsn (%svar-ref-symbol-value :call :subprim-call)2550 (define-ppc32-vinsn (%svar-ref-symbol-value :call :subprim-call) 2585 2551 (((val :lisp)) 2586 2552 ((sym (:lisp (:ne val))))) 2587 2553 (bla .SPsvar-specref)) 2588 2554 2589 (define-ppc -vinsn (svar-setq-special :call :subprim-call)2555 (define-ppc32-vinsn (svar-setq-special :call :subprim-call) 2590 2556 (() 2591 2557 ((sym :lisp) … … 2594 2560 2595 2561 2596 (define-ppc -vinsn symbol-function (((val :lisp))2562 (define-ppc32-vinsn symbol-function (((val :lisp)) 2597 2563 ((sym (:lisp (:ne val)))) 2598 2564 ((crf :crf) … … 2609 2575 :good) 2610 2576 2611 (define-ppc -vinsn (temp-push-unboxed-word :push :word :tsp)2577 (define-ppc32-vinsn (temp-push-unboxed-word :push :word :tsp) 2612 2578 (() 2613 2579 ((w :u32))) … … 2616 2582 (stw w 8 ppc::tsp)) 2617 2583 2618 (define-ppc -vinsn (temp-pop-unboxed-word :pop :word :tsp)2584 (define-ppc32-vinsn (temp-pop-unboxed-word :pop :word :tsp) 2619 2585 (((w :u32)) 2620 2586 ()) … … 2622 2588 (lwz ppc::tsp 0 ppc::tsp)) 2623 2589 2624 (define-ppc -vinsn (temp-push-double-float :push :doubleword :tsp)2590 (define-ppc32-vinsn (temp-push-double-float :push :doubleword :tsp) 2625 2591 (((d :double-float)) 2626 2592 ()) … … 2629 2595 (stfd d 8 ppc::tsp)) 2630 2596 2631 (define-ppc -vinsn (temp-pop-double-float :pop :doubleword :tsp)2597 (define-ppc32-vinsn (temp-pop-double-float :pop :doubleword :tsp) 2632 2598 (() 2633 2599 ((d :double-float))) … … 2635 2601 (lwz ppc::tsp 0 ppc::tsp)) 2636 2602 2637 (define-ppc -vinsn (temp-push-single-float :push :word :tsp)2603 (define-ppc32-vinsn (temp-push-single-float :push :word :tsp) 2638 2604 (((s :single-float)) 2639 2605 ()) … … 2642 2608 (stfs s 8 ppc::tsp)) 2643 2609 2644 (define-ppc -vinsn (temp-pop-single-float :pop :word :tsp)2610 (define-ppc32-vinsn (temp-pop-single-float :pop :word :tsp) 2645 2611 (() 2646 2612 ((s :single-float))) … … 2649 2615 2650 2616 2651 (define-ppc -vinsn (save-nvrs-individually :push :node :vsp :multiple)2617 (define-ppc32-vinsn (save-nvrs-individually :push :node :vsp :multiple) 2652 2618 (() 2653 2619 ((first :u8const))) … … 2668 2634 (stwu ppc::save7 -4 ppc::vsp))))))))) 2669 2635 2670 (define-ppc -vinsn (save-nvrs :push :node :vsp :multiple)2636 (define-ppc32-vinsn (save-nvrs :push :node :vsp :multiple) 2671 2637 (() 2672 2638 ((first :u8const))) … … 2682 2648 2683 2649 2684 (define-ppc -vinsn (restore-nvrs :pop :node :vsp :multiple)2650 (define-ppc32-vinsn (restore-nvrs :pop :node :vsp :multiple) 2685 2651 (() 2686 2652 ((firstreg :u8const) … … 2699 2665 (lwz ppc::save0 offset basereg))) 2700 2666 2701 (define-ppc -vinsn %current-frame-ptr (((dest :imm))2667 (define-ppc32-vinsn %current-frame-ptr (((dest :imm)) 2702 2668 ()) 2703 2669 (mr dest ppc::sp)) 2704 2670 2705 (define-ppc -vinsn %current-tcr (((dest :imm))2671 (define-ppc32-vinsn %current-tcr (((dest :imm)) 2706 2672 ()) 2707 2673 (mr dest ppc::rcontext)) 2708 2674 2709 (define-ppc -vinsn (svar-dpayback :call :subprim-call) (()2675 (define-ppc32-vinsn (svar-dpayback :call :subprim-call) (() 2710 2676 ((n :s16const)) 2711 2677 ((temp (:u32 #.ppc::imm0)))) … … 2716 2682 (bla .SPsvar-unbind))) 2717 2683 2718 (define-ppc -vinsn zero-double-float-register2684 (define-ppc32-vinsn zero-double-float-register 2719 2685 (((dest :double-float)) 2720 2686 ()) 2721 2687 (fmr dest ppc::fp-zero)) 2722 2688 2723 (define-ppc -vinsn zero-single-float-register2689 (define-ppc32-vinsn zero-single-float-register 2724 2690 (((dest :single-float)) 2725 2691 ()) 2726 2692 (fmr dest ppc::fp-zero)) 2727 2693 2728 (define-ppc -vinsn load-double-float-constant2694 (define-ppc32-vinsn load-double-float-constant 2729 2695 (((dest :double-float)) 2730 2696 ((high t) … … 2737 2703 (lwz ppc::tsp 0 ppc::tsp)) 2738 2704 2739 (define-ppc -vinsn load-single-float-constant2705 (define-ppc32-vinsn load-single-float-constant 2740 2706 (((dest :single-float)) 2741 2707 ((src t))) … … 2746 2712 (lwz ppc::tsp 0 ppc::tsp)) 2747 2713 2748 (define-ppc -vinsn load-indexed-node (((node :lisp))2714 (define-ppc32-vinsn load-indexed-node (((node :lisp)) 2749 2715 ((base :lisp) 2750 2716 (offset :s16const))) 2751 2717 (lwz node offset base)) 2752 2718 2753 (define-ppc -vinsn recover-saved-vsp (((dest :imm))2719 (define-ppc32-vinsn recover-saved-vsp (((dest :imm)) 2754 2720 ()) 2755 2721 (lwz dest ppc32::lisp-frame.savevsp ppc::sp)) 2756 2722 2757 2723 2758 (define-ppc -vinsn check-exact-nargs (()2724 (define-ppc32-vinsn check-exact-nargs (() 2759 2725 ((n :u16const))) 2760 2726 (twnei ppc::nargs (:apply ash n 2))) 2761 2727 2762 (define-ppc -vinsn check-min-nargs (()2728 (define-ppc32-vinsn check-min-nargs (() 2763 2729 ((min :u16const))) 2764 2730 (twllti ppc::nargs (:apply ash min 2))) 2765 2731 2766 (define-ppc -vinsn check-max-nargs (()2732 (define-ppc32-vinsn check-max-nargs (() 2767 2733 ((max :u16const))) 2768 2734 (twlgti ppc::nargs (:apply ash max 2))) … … 2770 2736 ; Save context and establish FN. The current VSP is the the 2771 2737 ; same as the caller's, e.g., no arguments were vpushed. 2772 (define-ppc -vinsn save-lisp-context-vsp (()2738 (define-ppc32-vinsn save-lisp-context-vsp (() 2773 2739 () 2774 2740 ((imm :u32))) … … 2783 2749 2784 2750 ; Do the same thing via a subprim call. 2785 (define-ppc -vinsn (save-lisp-context-vsp-ool :call :subprim-call)2751 (define-ppc32-vinsn (save-lisp-context-vsp-ool :call :subprim-call) 2786 2752 (() 2787 2753 () … … 2789 2755 (bla .SPsavecontextvsp)) 2790 2756 2791 (define-ppc -vinsn save-lisp-context-offset (()2757 (define-ppc32-vinsn save-lisp-context-offset (() 2792 2758 ((nbytes-vpushed :u16const)) 2793 2759 ((imm :u32))) … … 2802 2768 (twllt ppc::sp imm)) 2803 2769 2804 (define-ppc -vinsn save-lisp-context-offset-ool (()2770 (define-ppc32-vinsn save-lisp-context-offset-ool (() 2805 2771 ((nbytes-vpushed :u16const)) 2806 2772 ((imm (:u32 #.ppc::imm0)))) … … 2809 2775 2810 2776 2811 (define-ppc -vinsn save-lisp-context-lexpr (()2777 (define-ppc32-vinsn save-lisp-context-lexpr (() 2812 2778 () 2813 2779 ((imm :u32))) … … 2821 2787 (twllt ppc::sp imm)) 2822 2788 2823 (define-ppc -vinsn save-cleanup-context (()2789 (define-ppc32-vinsn save-cleanup-context (() 2824 2790 ()) 2825 2791 ;; SP was this deep just a second ago, so no need to do a stack-probe. … … 2832 2798 ;; Vpush the argument registers. We got at least "min-fixed" args; 2833 2799 ;; that knowledge may help us generate better code. 2834 (define-ppc -vinsn (save-lexpr-argregs :call :subprim-call)2800 (define-ppc32-vinsn (save-lexpr-argregs :call :subprim-call) 2835 2801 (() 2836 2802 ((min-fixed :u16const)) … … 2883 2849 2884 2850 2885 (define-ppc -vinsn (jump-return-pc :jumpLR)2851 (define-ppc32-vinsn (jump-return-pc :jumpLR) 2886 2852 (() 2887 2853 ()) 2888 2854 (blr)) 2889 2855 2890 (define-ppc -vinsn (restore-full-lisp-context :lispcontext :pop :csp :lrRestore)2856 (define-ppc32-vinsn (restore-full-lisp-context :lispcontext :pop :csp :lrRestore) 2891 2857 (() 2892 2858 ()) … … 2897 2863 (la ppc::sp ppc32::lisp-frame.size ppc::sp)) 2898 2864 2899 (define-ppc -vinsn (restore-full-lisp-context-ool :lispcontext :pop :csp :lrRestore)2865 (define-ppc32-vinsn (restore-full-lisp-context-ool :lispcontext :pop :csp :lrRestore) 2900 2866 (() 2901 2867 ()) … … 2903 2869 (mtlr ppc::loc-pc)) 2904 2870 2905 (define-ppc -vinsn (popj :lispcontext :pop :csp :lrRestore :jumpLR)2871 (define-ppc32-vinsn (popj :lispcontext :pop :csp :lrRestore :jumpLR) 2906 2872 (() 2907 2873 ()) … … 2910 2876 ; Exiting from an UNWIND-PROTECT cleanup is similar to 2911 2877 ; (and a little simpler than) returning from a function. 2912 (define-ppc -vinsn restore-cleanup-context (()2878 (define-ppc32-vinsn restore-cleanup-context (() 2913 2879 ()) 2914 2880 (lwz ppc::loc-pc ppc32::lisp-frame.savelr ppc::sp) … … 2918 2884 2919 2885 2920 (define-ppc -vinsn default-1-arg (()2886 (define-ppc32-vinsn default-1-arg (() 2921 2887 ((min :u16const)) 2922 2888 ((crf :crf))) … … 2932 2898 :done) 2933 2899 2934 (define-ppc -vinsn default-2-args (()2900 (define-ppc32-vinsn default-2-args (() 2935 2901 ((min :u16const)) 2936 2902 ((crf :crf))) … … 2958 2924 :done) 2959 2925 2960 (define-ppc -vinsn default-3-args (()2926 (define-ppc32-vinsn default-3-args (() 2961 2927 ((min :u16const)) 2962 2928 ((crfx :crf) … … 2996 2962 :done) 2997 2963 2998 (define-ppc -vinsn save-lr (()2964 (define-ppc32-vinsn save-lr (() 2999 2965 ()) 3000 2966 (mflr ppc::loc-pc)) … … 3002 2968 ;; "n" is the sum of the number of required args + 3003 2969 ;; the number of &optionals. 3004 (define-ppc -vinsn (default-optionals :call :subprim-call) (()2970 (define-ppc32-vinsn (default-optionals :call :subprim-call) (() 3005 2971 ((n :u16const))) 3006 2972 (li ppc::imm0 (:apply ash n 2)) … … 3008 2974 3009 2975 ; fname contains a known symbol 3010 (define-ppc -vinsn (call-known-symbol :call) (((result (:lisp ppc::arg_z)))2976 (define-ppc32-vinsn (call-known-symbol :call) (((result (:lisp ppc::arg_z))) 3011 2977 ()) 3012 2978 (lwz ppc::nfn ppc32::symbol.fcell ppc::fname) … … 3015 2981 (bctrl)) 3016 2982 3017 (define-ppc -vinsn (jump-known-symbol :jumplr) (()2983 (define-ppc32-vinsn (jump-known-symbol :jumplr) (() 3018 2984 ()) 3019 2985 (lwz ppc::nfn ppc32::symbol.fcell ppc::fname) … … 3022 2988 (bctr)) 3023 2989 3024 (define-ppc -vinsn (call-known-function :call) (()2990 (define-ppc32-vinsn (call-known-function :call) (() 3025 2991 ()) 3026 2992 (lwz ppc::temp0 ppc32::misc-data-offset ppc::nfn) … … 3028 2994 (bctrl)) 3029 2995 3030 (define-ppc -vinsn (jump-known-function :jumplr) (()2996 (define-ppc32-vinsn (jump-known-function :jumplr) (() 3031 2997 ()) 3032 2998 (lwz ppc::temp0 ppc32::misc-data-offset ppc::nfn) … … 3034 3000 (bctr)) 3035 3001 3036 (define-ppc -vinsn %schar (((char :imm))3002 (define-ppc32-vinsn %schar (((char :imm)) 3037 3003 ((str :lisp) 3038 3004 (idx :imm)) … … 3045 3011 (addi char imm ppc32::subtag-character)) 3046 3012 3047 (define-ppc -vinsn %set-schar (()3013 (define-ppc32-vinsn %set-schar (() 3048 3014 ((str :lisp) 3049 3015 (idx :imm) … … 3058 3024 ) 3059 3025 3060 (define-ppc -vinsn %set-scharcode (()3026 (define-ppc32-vinsn %set-scharcode (() 3061 3027 ((str :lisp) 3062 3028 (idx :imm) … … 3072 3038 3073 3039 3074 (define-ppc -vinsn %scharcode (((code :imm))3040 (define-ppc32-vinsn %scharcode (((code :imm)) 3075 3041 ((str :lisp) 3076 3042 (idx :imm)) … … 3083 3049 3084 3050 ; Clobbers LR 3085 (define-ppc -vinsn (%debug-trap :call :subprim-call) (()3051 (define-ppc32-vinsn (%debug-trap :call :subprim-call) (() 3086 3052 ()) 3087 3053 (bla .SPbreakpoint) … … 3089 3055 3090 3056 3091 (define-ppc -vinsn eep.address (((dest t))3057 (define-ppc32-vinsn eep.address (((dest t)) 3092 3058 ((src (:lisp (:ne dest ))))) 3093 3059 (lwz dest (+ (ash 1 2) ppc32::misc-data-offset) src) 3094 3060 (tweqi dest ppc32::nil-value)) 3095 3061 3096 (define-ppc -vinsn %u32+ (((dest :u32))3062 (define-ppc32-vinsn %u32+ (((dest :u32)) 3097 3063 ((x :u32) (y :u32))) 3098 3064 (add dest x y)) 3099 3065 3100 (define-ppc -vinsn %u32+-c (((dest :u32))3066 (define-ppc32-vinsn %u32+-c (((dest :u32)) 3101 3067 ((x :u32) (y :u16const))) 3102 3068 (addi dest x y)) 3103 3069 3104 (define-ppc -vinsn %u32- (((dest :u32))3070 (define-ppc32-vinsn %u32- (((dest :u32)) 3105 3071 ((x :u32) (y :u32))) 3106 3072 (sub dest x y)) 3107 3073 3108 (define-ppc -vinsn %u32--c (((dest :u32))3074 (define-ppc32-vinsn %u32--c (((dest :u32)) 3109 3075 ((x :u32) (y :u16const))) 3110 3076 (subi dest x y)) 3111 3077 3112 (define-ppc -vinsn %u32-logior (((dest :u32))3078 (define-ppc32-vinsn %u32-logior (((dest :u32)) 3113 3079 ((x :u32) (y :u32))) 3114 3080 (or dest x y)) 3115 3081 3116 (define-ppc -vinsn %u32-logior-c (((dest :u32))3082 (define-ppc32-vinsn %u32-logior-c (((dest :u32)) 3117 3083 ((x :u32) (high :u16const) (low :u16const))) 3118 3084 ((:not (:pred = high 0)) … … 3121 3087 (ori dest x low))) 3122 3088 3123 (define-ppc -vinsn %u32-logxor (((dest :u32))3089 (define-ppc32-vinsn %u32-logxor (((dest :u32)) 3124 3090 ((x :u32) (y :u32))) 3125 3091 (xor dest x y)) 3126 3092 3127 (define-ppc -vinsn %u32-logxor-c (((dest :u32))3093 (define-ppc32-vinsn %u32-logxor-c (((dest :u32)) 3128 3094 ((x :u32) (high :u16const) (low :u16const))) 3129 3095 ((:not (:pred = high 0)) … … 3132 3098 (xori dest x low))) 3133 3099 3134 (define-ppc -vinsn %u32-logand (((dest :u32))3100 (define-ppc32-vinsn %u32-logand (((dest :u32)) 3135 3101 ((x :u32) (y :u32))) 3136 3102 (and dest x y)) 3137 3103 3138 (define-ppc -vinsn %u32-logand-high-c (((dest :u32))3104 (define-ppc32-vinsn %u32-logand-high-c (((dest :u32)) 3139 3105 ((x :u32) (high :u16const)) 3140 3106 ((cr0 (:crf 0)))) 3141 3107 (andis. dest x high)) 3142 3108 3143 (define-ppc -vinsn %u32-logand-low-c (((dest :u32))3109 (define-ppc32-vinsn %u32-logand-low-c (((dest :u32)) 3144 3110 ((x :u32) (low :u16const)) 3145 3111 ((cr0 (:crf 0)))) 3146 3112 (andi. dest x low)) 3147 3113 3148 (define-ppc -vinsn %u32-logand-mask-c (((dest :u32))3114 (define-ppc32-vinsn %u32-logand-mask-c (((dest :u32)) 3149 3115 ((x :u32) 3150 3116 (start :u8const) … … 3152 3118 (rlwinm dest x 0 start end)) 3153 3119 3154 (define-ppc -vinsn disable-interrupts (((dest :lisp))3120 (define-ppc32-vinsn disable-interrupts (((dest :lisp)) 3155 3121 () 3156 3122 ((temp :imm))) … … 3160 3126 3161 3127 ;;; Subprim calls. Done this way for the benefit of VINSN-OPTIMIZE. 3162 (defmacro define-ppc -subprim-call-vinsn ((name &rest other-attrs) spno)3163 `(define-ppc -vinsn (,name :call :subprim-call ,@other-attrs) (() ())3128 (defmacro define-ppc32-subprim-call-vinsn ((name &rest other-attrs) spno) 3129 `(define-ppc32-vinsn (,name :call :subprim-call ,@other-attrs) (() ()) 3164 3130 (bla ,spno))) 3165 3131 3166 (defmacro define-ppc -subprim-jump-vinsn ((name &rest other-attrs) spno)3167 `(define-ppc -vinsn (,name :jump :jumpLR ,@other-attrs) (() ())3132 (defmacro define-ppc32-subprim-jump-vinsn ((name &rest other-attrs) spno) 3133 `(define-ppc32-vinsn (,name :jump :jumpLR ,@other-attrs) (() ()) 3168 3134 (ba ,spno))) 3169 3135 3170 (define-ppc -subprim-jump-vinsn (restore-interrupt-level) .SPrestoreintlevel)3171 3172 (define-ppc -subprim-call-vinsn (save-values) .SPsave-values)3173 3174 (define-ppc -subprim-call-vinsn (recover-values) .SPrecover-values)3175 3176 (define-ppc -subprim-call-vinsn (add-values) .SPadd-values)3177 3178 (define-ppc -subprim-jump-vinsn (jump-known-symbol-ool) .SPjmpsym)3179 3180 (define-ppc -subprim-call-vinsn (call-known-symbol-ool) .SPjmpsym)3181 3182 (define-ppc -subprim-call-vinsn (pass-multiple-values) .SPmvpass)3183 3184 (define-ppc -subprim-call-vinsn (pass-multiple-values-symbol) .SPmvpasssym)3185 3186 (define-ppc -subprim-jump-vinsn (tail-call-sym-gen) .SPtcallsymgen)3187 3188 (define-ppc -subprim-jump-vinsn (tail-call-fn-gen) .SPtcallnfngen)3189 3190 (define-ppc -subprim-jump-vinsn (tail-call-sym-slide) .SPtcallsymslide)3191 3192 (define-ppc -subprim-jump-vinsn (tail-call-fn-slide) .SPtcallnfnslide)3193 3194 (define-ppc -subprim-jump-vinsn (tail-call-sym-vsp) .SPtcallsymvsp)3195 3196 (define-ppc -subprim-jump-vinsn (tail-call-fn-vsp) .SPtcallnfnvsp)3197 3198 (define-ppc -subprim-call-vinsn (funcall) .SPfuncall)3199 3200 (define-ppc -subprim-jump-vinsn (tail-funcall-gen) .SPtfuncallgen)3201 3202 (define-ppc -subprim-jump-vinsn (tail-funcall-slide) .SPtfuncallslide)3203 3204 (define-ppc -subprim-jump-vinsn (tail-funcall-vsp) .SPtfuncallvsp)3205 3206 (define-ppc -subprim-call-vinsn (spread-lexpr) .SPspread-lexpr-z)3207 3208 (define-ppc -subprim-call-vinsn (spread-list) .SPspreadargz)3209 3210 (define-ppc -subprim-call-vinsn (pop-argument-registers) .SPvpopargregs)3211 3212 (define-ppc -subprim-call-vinsn (getxlong) .SPgetXlong)3213 3214 (define-ppc -subprim-call-vinsn (stack-cons-list) .SPstkconslist)3215 3216 (define-ppc -subprim-call-vinsn (list) .SPconslist)3217 3218 (define-ppc -subprim-call-vinsn (stack-cons-list*) .SPstkconslist-star)3219 3220 (define-ppc -subprim-call-vinsn (list*) .SPconslist-star)3221 3222 (define-ppc -subprim-call-vinsn (make-stack-block) .SPmakestackblock)3223 3224 (define-ppc -subprim-call-vinsn (make-stack-block0) .Spmakestackblock0)3225 3226 (define-ppc -subprim-call-vinsn (make-stack-list) .Spmakestacklist)3227 3228 (define-ppc -subprim-call-vinsn (make-stack-vector) .SPmkstackv)3229 3230 (define-ppc -subprim-call-vinsn (make-stack-gvector) .SPstkgvector)3231 3232 (define-ppc -subprim-call-vinsn (stack-misc-alloc) .SPstack-misc-alloc)3233 3234 (define-ppc -subprim-call-vinsn (stack-misc-alloc-init) .SPstack-misc-alloc-init)3235 3236 (define-ppc -subprim-call-vinsn (svar-bind-nil) .SPsvar-bind-nil)3237 3238 (define-ppc -subprim-call-vinsn (svar-bind-self) .SPsvar-bind-self)3239 3240 (define-ppc -subprim-call-vinsn (svar-bind-self-boundp-check) .SPsvar-bind-self-boundp-check)3241 3242 (define-ppc -subprim-call-vinsn (svar-bind) .SPsvar-bind)3243 3244 (define-ppc -subprim-jump-vinsn (nvalret :jumpLR) .SPnvalret)3245 3246 (define-ppc -subprim-call-vinsn (nthrowvalues) .SPnthrowvalues)3247 3248 (define-ppc -subprim-call-vinsn (nthrow1value) .SPnthrow1value)3249 3250 (define-ppc -subprim-call-vinsn (slide-values) .SPmvslide)3251 3252 (define-ppc -subprim-call-vinsn (macro-bind) .SPmacro-bind)3253 3254 (define-ppc -subprim-call-vinsn (destructuring-bind-inner) .SPdestructuring-bind-inner)3255 3256 (define-ppc -subprim-call-vinsn (destructuring-bind) .SPdestructuring-bind)3257 3258 (define-ppc -subprim-call-vinsn (simple-keywords) .SPsimple-keywords)3259 3260 (define-ppc -subprim-call-vinsn (keyword-args) .SPkeyword-args)3261 3262 (define-ppc -subprim-call-vinsn (keyword-bind) .SPkeyword-bind)3263 3264 (define-ppc -subprim-call-vinsn (stack-rest-arg) .SPstack-rest-arg)3265 3266 (define-ppc -subprim-call-vinsn (req-stack-rest-arg) .SPreq-stack-rest-arg)3267 3268 (define-ppc -subprim-call-vinsn (stack-cons-rest-arg) .SPstack-cons-rest-arg)3269 3270 (define-ppc -subprim-call-vinsn (heap-rest-arg) .SPheap-rest-arg)3271 3272 (define-ppc -subprim-call-vinsn (req-heap-rest-arg) .SPreq-heap-rest-arg)3273 3274 (define-ppc -subprim-call-vinsn (heap-cons-rest-arg) .SPheap-cons-rest-arg)3275 3276 (define-ppc -subprim-call-vinsn (opt-supplied-p) .SPopt-supplied-p)3277 3278 (define-ppc -subprim-call-vinsn (gvector) .SPgvector)3279 3280 (define-ppc -vinsn (nth-value :call :subprim-call) (((result :lisp))3136 (define-ppc32-subprim-jump-vinsn (restore-interrupt-level) .SPrestoreintlevel) 3137 3138 (define-ppc32-subprim-call-vinsn (save-values) .SPsave-values) 3139 3140 (define-ppc32-subprim-call-vinsn (recover-values) .SPrecover-values) 3141 3142 (define-ppc32-subprim-call-vinsn (add-values) .SPadd-values) 3143 3144 (define-ppc32-subprim-jump-vinsn (jump-known-symbol-ool) .SPjmpsym) 3145 3146 (define-ppc32-subprim-call-vinsn (call-known-symbol-ool) .SPjmpsym) 3147 3148 (define-ppc32-subprim-call-vinsn (pass-multiple-values) .SPmvpass) 3149 3150 (define-ppc32-subprim-call-vinsn (pass-multiple-values-symbol) .SPmvpasssym) 3151 3152 (define-ppc32-subprim-jump-vinsn (tail-call-sym-gen) .SPtcallsymgen) 3153 3154 (define-ppc32-subprim-jump-vinsn (tail-call-fn-gen) .SPtcallnfngen) 3155 3156 (define-ppc32-subprim-jump-vinsn (tail-call-sym-slide) .SPtcallsymslide) 3157 3158 (define-ppc32-subprim-jump-vinsn (tail-call-fn-slide) .SPtcallnfnslide) 3159 3160 (define-ppc32-subprim-jump-vinsn (tail-call-sym-vsp) .SPtcallsymvsp) 3161 3162 (define-ppc32-subprim-jump-vinsn (tail-call-fn-vsp) .SPtcallnfnvsp) 3163 3164 (define-ppc32-subprim-call-vinsn (funcall) .SPfuncall) 3165 3166 (define-ppc32-subprim-jump-vinsn (tail-funcall-gen) .SPtfuncallgen) 3167 3168 (define-ppc32-subprim-jump-vinsn (tail-funcall-slide) .SPtfuncallslide) 3169 3170 (define-ppc32-subprim-jump-vinsn (tail-funcall-vsp) .SPtfuncallvsp) 3171 3172 (define-ppc32-subprim-call-vinsn (spread-lexpr) .SPspread-lexpr-z) 3173 3174 (define-ppc32-subprim-call-vinsn (spread-list) .SPspreadargz) 3175 3176 (define-ppc32-subprim-call-vinsn (pop-argument-registers) .SPvpopargregs) 3177 3178 (define-ppc32-subprim-call-vinsn (getxlong) .SPgetXlong) 3179 3180 (define-ppc32-subprim-call-vinsn (stack-cons-list) .SPstkconslist) 3181 3182 (define-ppc32-subprim-call-vinsn (list) .SPconslist) 3183 3184 (define-ppc32-subprim-call-vinsn (stack-cons-list*) .SPstkconslist-star) 3185 3186 (define-ppc32-subprim-call-vinsn (list*) .SPconslist-star) 3187 3188 (define-ppc32-subprim-call-vinsn (make-stack-block) .SPmakestackblock) 3189 3190 (define-ppc32-subprim-call-vinsn (make-stack-block0) .Spmakestackblock0) 3191 3192 (define-ppc32-subprim-call-vinsn (make-stack-list) .Spmakestacklist) 3193 3194 (define-ppc32-subprim-call-vinsn (make-stack-vector) .SPmkstackv) 3195 3196 (define-ppc32-subprim-call-vinsn (make-stack-gvector) .SPstkgvector) 3197 3198 (define-ppc32-subprim-call-vinsn (stack-misc-alloc) .SPstack-misc-alloc) 3199 3200 (define-ppc32-subprim-call-vinsn (stack-misc-alloc-init) .SPstack-misc-alloc-init) 3201 3202 (define-ppc32-subprim-call-vinsn (svar-bind-nil) .SPsvar-bind-nil) 3203 3204 (define-ppc32-subprim-call-vinsn (svar-bind-self) .SPsvar-bind-self) 3205 3206 (define-ppc32-subprim-call-vinsn (svar-bind-self-boundp-check) .SPsvar-bind-self-boundp-check) 3207 3208 (define-ppc32-subprim-call-vinsn (svar-bind) .SPsvar-bind) 3209 3210 (define-ppc32-subprim-jump-vinsn (nvalret :jumpLR) .SPnvalret) 3211 3212 (define-ppc32-subprim-call-vinsn (nthrowvalues) .SPnthrowvalues) 3213 3214 (define-ppc32-subprim-call-vinsn (nthrow1value) .SPnthrow1value) 3215 3216 (define-ppc32-subprim-call-vinsn (slide-values) .SPmvslide) 3217 3218 (define-ppc32-subprim-call-vinsn (macro-bind) .SPmacro-bind) 3219 3220 (define-ppc32-subprim-call-vinsn (destructuring-bind-inner) .SPdestructuring-bind-inner) 3221 3222 (define-ppc32-subprim-call-vinsn (destructuring-bind) .SPdestructuring-bind) 3223 3224 (define-ppc32-subprim-call-vinsn (simple-keywords) .SPsimple-keywords) 3225 3226 (define-ppc32-subprim-call-vinsn (keyword-args) .SPkeyword-args) 3227 3228 (define-ppc32-subprim-call-vinsn (keyword-bind) .SPkeyword-bind) 3229 3230 (define-ppc32-subprim-call-vinsn (stack-rest-arg) .SPstack-rest-arg) 3231 3232 (define-ppc32-subprim-call-vinsn (req-stack-rest-arg) .SPreq-stack-rest-arg) 3233 3234 (define-ppc32-subprim-call-vinsn (stack-cons-rest-arg) .SPstack-cons-rest-arg) 3235 3236 (define-ppc32-subprim-call-vinsn (heap-rest-arg) .SPheap-rest-arg) 3237 3238 (define-ppc32-subprim-call-vinsn (req-heap-rest-arg) .SPreq-heap-rest-arg) 3239 3240 (define-ppc32-subprim-call-vinsn (heap-cons-rest-arg) .SPheap-cons-rest-arg) 3241 3242 (define-ppc32-subprim-call-vinsn (opt-supplied-p) .SPopt-supplied-p) 3243 3244 (define-ppc32-subprim-call-vinsn (gvector) .SPgvector) 3245 3246 (define-ppc32-vinsn (nth-value :call :subprim-call) (((result :lisp)) 3281 3247 ()) 3282 3248 (bla .SPnthvalue)) 3283 3249 3284 (define-ppc -subprim-call-vinsn (fitvals) .SPfitvals)3285 3286 (define-ppc -subprim-call-vinsn (misc-alloc) .SPmisc-alloc)3287 3288 (define-ppc -subprim-call-vinsn (misc-alloc-init) .SPmisc-alloc-init)3289 3290 (define-ppc -subprim-call-vinsn (integer-sign) .SPinteger-sign)3250 (define-ppc32-subprim-call-vinsn (fitvals) .SPfitvals) 3251 3252 (define-ppc32-subprim-call-vinsn (misc-alloc) .SPmisc-alloc) 3253 3254 (define-ppc32-subprim-call-vinsn (misc-alloc-init) .SPmisc-alloc-init) 3255 3256 (define-ppc32-subprim-call-vinsn (integer-sign) .SPinteger-sign) 3291 3257 3292 3258 ;;; Even though it's implemented by calling a subprim, THROW is really … … 3294 3260 ;;; really known, it should probably be inlined (stack-cleanup, value 3295 3261 ;;; transfer & jump ...) 3296 (define-ppc -vinsn (throw :jump :jump-unknown) (()3262 (define-ppc32-vinsn (throw :jump :jump-unknown) (() 3297 3263 ()) 3298 3264 (bla .SPthrow)) 3299 3265 3300 (define-ppc -subprim-call-vinsn (mkcatchmv) .SPmkcatchmv)3301 3302 (define-ppc -subprim-call-vinsn (mkcatch1v) .SPmkcatch1v)3303 3304 (define-ppc -subprim-call-vinsn (setqsym) .SPsvar-setqsym)3305 3306 (define-ppc -subprim-call-vinsn (ksignalerr) .SPksignalerr)3307 3308 (define-ppc -subprim-call-vinsn (subtag-misc-ref) .SPsubtag-misc-ref)3309 3310 (define-ppc -subprim-call-vinsn (subtag-misc-set) .SPsubtag-misc-set)3311 3312 (define-ppc -subprim-call-vinsn (mkunwind) .SPmkunwind)3313 3314 (define-ppc -subprim-call-vinsn (progvsave) .SPsvar-progvsave)3315 3316 (define-ppc -subprim-jump-vinsn (progvrestore) .SPsvar-progvrestore)3317 3318 (define-ppc -subprim-call-vinsn (syscall) .SPsyscall)3319 3320 (define-ppc -subprim-call-vinsn (newblocktag) .SPnewblocktag)3321 3322 (define-ppc -subprim-call-vinsn (newgotag) .SPnewgotag)3323 3324 (define-ppc -subprim-call-vinsn (misc-ref) .SPmisc-ref)3325 3326 (define-ppc -subprim-call-vinsn (misc-set) .SPmisc-set)3327 3328 (define-ppc -subprim-call-vinsn (gets64) .SPgets64)3329 3330 (define-ppc -subprim-call-vinsn (getu64) .SPgetu64)3331 3332 (define-ppc -subprim-call-vinsn (makeu64) .SPmakeu64)3333 3334 (define-ppc -subprim-call-vinsn (makes64) .SPmakes64)3335 3336 (define-ppc -vinsn (darwin-syscall :call :subprim-call) (()3266 (define-ppc32-subprim-call-vinsn (mkcatchmv) .SPmkcatchmv) 3267 3268 (define-ppc32-subprim-call-vinsn (mkcatch1v) .SPmkcatch1v) 3269 3270 (define-ppc32-subprim-call-vinsn (setqsym) .SPsvar-setqsym) 3271 3272 (define-ppc32-subprim-call-vinsn (ksignalerr) .SPksignalerr) 3273 3274 (define-ppc32-subprim-call-vinsn (subtag-misc-ref) .SPsubtag-misc-ref) 3275 3276 (define-ppc32-subprim-call-vinsn (subtag-misc-set) .SPsubtag-misc-set) 3277 3278 (define-ppc32-subprim-call-vinsn (mkunwind) .SPmkunwind) 3279 3280 (define-ppc32-subprim-call-vinsn (progvsave) .SPsvar-progvsave) 3281 3282 (define-ppc32-subprim-jump-vinsn (progvrestore) .SPsvar-progvrestore) 3283 3284 (define-ppc32-subprim-call-vinsn (syscall) .SPsyscall) 3285 3286 (define-ppc32-subprim-call-vinsn (newblocktag) .SPnewblocktag) 3287 3288 (define-ppc32-subprim-call-vinsn (newgotag) .SPnewgotag) 3289 3290 (define-ppc32-subprim-call-vinsn (misc-ref) .SPmisc-ref) 3291 3292 (define-ppc32-subprim-call-vinsn (misc-set) .SPmisc-set) 3293 3294 (define-ppc32-subprim-call-vinsn (gets64) .SPgets64) 3295 3296 (define-ppc32-subprim-call-vinsn (getu64) .SPgetu64) 3297 3298 (define-ppc32-subprim-call-vinsn (makeu64) .SPmakeu64) 3299 3300 (define-ppc32-subprim-call-vinsn (makes64) .SPmakes64) 3301 3302 (define-ppc32-vinsn (darwin-syscall :call :subprim-call) (() 3337 3303 ()) 3338 3304 (stw ppc::rzero ppc32::c-frame.crsave ppc::sp) 3339 3305 (bla .SPdarwin-syscall)) 3340 3306 3341 (define-ppc -vinsn (darwin-syscall-s64 :call :subprim-call) (()3307 (define-ppc32-vinsn (darwin-syscall-s64 :call :subprim-call) (() 3342 3308 ()) 3343 3309 (stw ppc::sp ppc32::c-frame.crsave ppc::sp) 3344 3310 (bla .SPdarwin-syscall)) 3345 3311 3346 (define-ppc -subprim-call-vinsn (eabi-ff-call) .SPeabi-ff-call)3347 3348 (define-ppc -subprim-call-vinsn (poweropen-ff-call) .SPffcall)3349 3350 (define-ppc -subprim-call-vinsn (poweropen-ff-callX) .SPffcallX)3312 (define-ppc32-subprim-call-vinsn (eabi-ff-call) .SPeabi-ff-call) 3313 3314 (define-ppc32-subprim-call-vinsn (poweropen-ff-call) .SPffcall) 3315 3316 (define-ppc32-subprim-call-vinsn (poweropen-ff-callX) .SPffcallX) 3351 3317 3352 3318
Note:
See TracChangeset
for help on using the changeset viewer.
