github.com/bir3/gocompiler@v0.9.2202/src/cmd/compile/internal/ssa/rewritePPC64latelower.go (about) 1 // Code generated from _gen/PPC64latelower.rules using 'go generate'; DO NOT EDIT. 2 3 package ssa 4 5 import "github.com/bir3/gocompiler/src/internal/buildcfg" 6 import "github.com/bir3/gocompiler/src/cmd/compile/internal/types" 7 8 func rewriteValuePPC64latelower(v *Value) bool { 9 switch v.Op { 10 case OpPPC64ADD: 11 return rewriteValuePPC64latelower_OpPPC64ADD(v) 12 case OpPPC64AND: 13 return rewriteValuePPC64latelower_OpPPC64AND(v) 14 case OpPPC64CMPconst: 15 return rewriteValuePPC64latelower_OpPPC64CMPconst(v) 16 case OpPPC64ISEL: 17 return rewriteValuePPC64latelower_OpPPC64ISEL(v) 18 case OpPPC64RLDICL: 19 return rewriteValuePPC64latelower_OpPPC64RLDICL(v) 20 case OpPPC64SETBC: 21 return rewriteValuePPC64latelower_OpPPC64SETBC(v) 22 case OpPPC64SETBCR: 23 return rewriteValuePPC64latelower_OpPPC64SETBCR(v) 24 case OpSelect0: 25 return rewriteValuePPC64latelower_OpSelect0(v) 26 } 27 return false 28 } 29 func rewriteValuePPC64latelower_OpPPC64ADD(v *Value) bool { 30 v_1 := v.Args[1] 31 v_0 := v.Args[0] 32 // match: (ADD (MOVDconst [m]) x) 33 // cond: supportsPPC64PCRel() && (m<<30)>>30 == m 34 // result: (ADDconst [m] x) 35 for { 36 for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { 37 if v_0.Op != OpPPC64MOVDconst { 38 continue 39 } 40 m := auxIntToInt64(v_0.AuxInt) 41 x := v_1 42 if !(supportsPPC64PCRel() && (m<<30)>>30 == m) { 43 continue 44 } 45 v.reset(OpPPC64ADDconst) 46 v.AuxInt = int64ToAuxInt(m) 47 v.AddArg(x) 48 return true 49 } 50 break 51 } 52 return false 53 } 54 func rewriteValuePPC64latelower_OpPPC64AND(v *Value) bool { 55 v_1 := v.Args[1] 56 v_0 := v.Args[0] 57 b := v.Block 58 typ := &b.Func.Config.Types 59 // match: (AND <t> x:(MOVDconst [m]) n) 60 // cond: t.Size() <= 2 61 // result: (Select0 (ANDCCconst [int64(int16(m))] n)) 62 for { 63 t := v.Type 64 for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { 65 x := v_0 66 if x.Op != OpPPC64MOVDconst { 67 continue 68 } 69 m := auxIntToInt64(x.AuxInt) 70 n := v_1 71 if !(t.Size() <= 2) { 72 continue 73 } 74 v.reset(OpSelect0) 75 v0 := b.NewValue0(v.Pos, OpPPC64ANDCCconst, types.NewTuple(typ.Int, types.TypeFlags)) 76 v0.AuxInt = int64ToAuxInt(int64(int16(m))) 77 v0.AddArg(n) 78 v.AddArg(v0) 79 return true 80 } 81 break 82 } 83 // match: (AND x:(MOVDconst [m]) n) 84 // cond: isPPC64ValidShiftMask(m) 85 // result: (RLDICL [encodePPC64RotateMask(0,m,64)] n) 86 for { 87 for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { 88 x := v_0 89 if x.Op != OpPPC64MOVDconst { 90 continue 91 } 92 m := auxIntToInt64(x.AuxInt) 93 n := v_1 94 if !(isPPC64ValidShiftMask(m)) { 95 continue 96 } 97 v.reset(OpPPC64RLDICL) 98 v.AuxInt = int64ToAuxInt(encodePPC64RotateMask(0, m, 64)) 99 v.AddArg(n) 100 return true 101 } 102 break 103 } 104 // match: (AND x:(MOVDconst [m]) n) 105 // cond: m != 0 && isPPC64ValidShiftMask(^m) 106 // result: (RLDICR [encodePPC64RotateMask(0,m,64)] n) 107 for { 108 for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { 109 x := v_0 110 if x.Op != OpPPC64MOVDconst { 111 continue 112 } 113 m := auxIntToInt64(x.AuxInt) 114 n := v_1 115 if !(m != 0 && isPPC64ValidShiftMask(^m)) { 116 continue 117 } 118 v.reset(OpPPC64RLDICR) 119 v.AuxInt = int64ToAuxInt(encodePPC64RotateMask(0, m, 64)) 120 v.AddArg(n) 121 return true 122 } 123 break 124 } 125 // match: (AND <t> x:(MOVDconst [m]) n) 126 // cond: t.Size() == 4 && isPPC64WordRotateMask(m) 127 // result: (RLWINM [encodePPC64RotateMask(0,m,32)] n) 128 for { 129 t := v.Type 130 for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 { 131 x := v_0 132 if x.Op != OpPPC64MOVDconst { 133 continue 134 } 135 m := auxIntToInt64(x.AuxInt) 136 n := v_1 137 if !(t.Size() == 4 && isPPC64WordRotateMask(m)) { 138 continue 139 } 140 v.reset(OpPPC64RLWINM) 141 v.AuxInt = int64ToAuxInt(encodePPC64RotateMask(0, m, 32)) 142 v.AddArg(n) 143 return true 144 } 145 break 146 } 147 return false 148 } 149 func rewriteValuePPC64latelower_OpPPC64CMPconst(v *Value) bool { 150 v_0 := v.Args[0] 151 // match: (CMPconst [0] z:(ADD x y)) 152 // cond: v.Block == z.Block 153 // result: (CMPconst [0] convertPPC64OpToOpCC(z)) 154 for { 155 if auxIntToInt64(v.AuxInt) != 0 { 156 break 157 } 158 z := v_0 159 if z.Op != OpPPC64ADD { 160 break 161 } 162 if !(v.Block == z.Block) { 163 break 164 } 165 v.reset(OpPPC64CMPconst) 166 v.AuxInt = int64ToAuxInt(0) 167 v.AddArg(convertPPC64OpToOpCC(z)) 168 return true 169 } 170 // match: (CMPconst [0] z:(AND x y)) 171 // cond: v.Block == z.Block 172 // result: (CMPconst [0] convertPPC64OpToOpCC(z)) 173 for { 174 if auxIntToInt64(v.AuxInt) != 0 { 175 break 176 } 177 z := v_0 178 if z.Op != OpPPC64AND { 179 break 180 } 181 if !(v.Block == z.Block) { 182 break 183 } 184 v.reset(OpPPC64CMPconst) 185 v.AuxInt = int64ToAuxInt(0) 186 v.AddArg(convertPPC64OpToOpCC(z)) 187 return true 188 } 189 // match: (CMPconst [0] z:(ANDN x y)) 190 // cond: v.Block == z.Block 191 // result: (CMPconst [0] convertPPC64OpToOpCC(z)) 192 for { 193 if auxIntToInt64(v.AuxInt) != 0 { 194 break 195 } 196 z := v_0 197 if z.Op != OpPPC64ANDN { 198 break 199 } 200 if !(v.Block == z.Block) { 201 break 202 } 203 v.reset(OpPPC64CMPconst) 204 v.AuxInt = int64ToAuxInt(0) 205 v.AddArg(convertPPC64OpToOpCC(z)) 206 return true 207 } 208 // match: (CMPconst [0] z:(OR x y)) 209 // cond: v.Block == z.Block 210 // result: (CMPconst [0] convertPPC64OpToOpCC(z)) 211 for { 212 if auxIntToInt64(v.AuxInt) != 0 { 213 break 214 } 215 z := v_0 216 if z.Op != OpPPC64OR { 217 break 218 } 219 if !(v.Block == z.Block) { 220 break 221 } 222 v.reset(OpPPC64CMPconst) 223 v.AuxInt = int64ToAuxInt(0) 224 v.AddArg(convertPPC64OpToOpCC(z)) 225 return true 226 } 227 // match: (CMPconst [0] z:(SUB x y)) 228 // cond: v.Block == z.Block 229 // result: (CMPconst [0] convertPPC64OpToOpCC(z)) 230 for { 231 if auxIntToInt64(v.AuxInt) != 0 { 232 break 233 } 234 z := v_0 235 if z.Op != OpPPC64SUB { 236 break 237 } 238 if !(v.Block == z.Block) { 239 break 240 } 241 v.reset(OpPPC64CMPconst) 242 v.AuxInt = int64ToAuxInt(0) 243 v.AddArg(convertPPC64OpToOpCC(z)) 244 return true 245 } 246 // match: (CMPconst [0] z:(NOR x y)) 247 // cond: v.Block == z.Block 248 // result: (CMPconst [0] convertPPC64OpToOpCC(z)) 249 for { 250 if auxIntToInt64(v.AuxInt) != 0 { 251 break 252 } 253 z := v_0 254 if z.Op != OpPPC64NOR { 255 break 256 } 257 if !(v.Block == z.Block) { 258 break 259 } 260 v.reset(OpPPC64CMPconst) 261 v.AuxInt = int64ToAuxInt(0) 262 v.AddArg(convertPPC64OpToOpCC(z)) 263 return true 264 } 265 // match: (CMPconst [0] z:(XOR x y)) 266 // cond: v.Block == z.Block 267 // result: (CMPconst [0] convertPPC64OpToOpCC(z)) 268 for { 269 if auxIntToInt64(v.AuxInt) != 0 { 270 break 271 } 272 z := v_0 273 if z.Op != OpPPC64XOR { 274 break 275 } 276 if !(v.Block == z.Block) { 277 break 278 } 279 v.reset(OpPPC64CMPconst) 280 v.AuxInt = int64ToAuxInt(0) 281 v.AddArg(convertPPC64OpToOpCC(z)) 282 return true 283 } 284 // match: (CMPconst [0] z:(NEG x)) 285 // cond: v.Block == z.Block 286 // result: (CMPconst [0] convertPPC64OpToOpCC(z)) 287 for { 288 if auxIntToInt64(v.AuxInt) != 0 { 289 break 290 } 291 z := v_0 292 if z.Op != OpPPC64NEG { 293 break 294 } 295 if !(v.Block == z.Block) { 296 break 297 } 298 v.reset(OpPPC64CMPconst) 299 v.AuxInt = int64ToAuxInt(0) 300 v.AddArg(convertPPC64OpToOpCC(z)) 301 return true 302 } 303 // match: (CMPconst [0] z:(CNTLZD x)) 304 // cond: v.Block == z.Block 305 // result: (CMPconst [0] convertPPC64OpToOpCC(z)) 306 for { 307 if auxIntToInt64(v.AuxInt) != 0 { 308 break 309 } 310 z := v_0 311 if z.Op != OpPPC64CNTLZD { 312 break 313 } 314 if !(v.Block == z.Block) { 315 break 316 } 317 v.reset(OpPPC64CMPconst) 318 v.AuxInt = int64ToAuxInt(0) 319 v.AddArg(convertPPC64OpToOpCC(z)) 320 return true 321 } 322 // match: (CMPconst [0] z:(ADDconst [c] x)) 323 // cond: int64(int16(c)) == c && v.Block == z.Block 324 // result: (CMPconst [0] convertPPC64OpToOpCC(z)) 325 for { 326 if auxIntToInt64(v.AuxInt) != 0 { 327 break 328 } 329 z := v_0 330 if z.Op != OpPPC64ADDconst { 331 break 332 } 333 c := auxIntToInt64(z.AuxInt) 334 if !(int64(int16(c)) == c && v.Block == z.Block) { 335 break 336 } 337 v.reset(OpPPC64CMPconst) 338 v.AuxInt = int64ToAuxInt(0) 339 v.AddArg(convertPPC64OpToOpCC(z)) 340 return true 341 } 342 // match: (CMPconst <t> [0] (Select0 z:(ADDCC x y))) 343 // result: (Select1 <t> z) 344 for { 345 t := v.Type 346 if auxIntToInt64(v.AuxInt) != 0 || v_0.Op != OpSelect0 { 347 break 348 } 349 z := v_0.Args[0] 350 if z.Op != OpPPC64ADDCC { 351 break 352 } 353 v.reset(OpSelect1) 354 v.Type = t 355 v.AddArg(z) 356 return true 357 } 358 // match: (CMPconst <t> [0] (Select0 z:(ANDCC x y))) 359 // result: (Select1 <t> z) 360 for { 361 t := v.Type 362 if auxIntToInt64(v.AuxInt) != 0 || v_0.Op != OpSelect0 { 363 break 364 } 365 z := v_0.Args[0] 366 if z.Op != OpPPC64ANDCC { 367 break 368 } 369 v.reset(OpSelect1) 370 v.Type = t 371 v.AddArg(z) 372 return true 373 } 374 // match: (CMPconst <t> [0] (Select0 z:(ANDNCC x y))) 375 // result: (Select1 <t> z) 376 for { 377 t := v.Type 378 if auxIntToInt64(v.AuxInt) != 0 || v_0.Op != OpSelect0 { 379 break 380 } 381 z := v_0.Args[0] 382 if z.Op != OpPPC64ANDNCC { 383 break 384 } 385 v.reset(OpSelect1) 386 v.Type = t 387 v.AddArg(z) 388 return true 389 } 390 // match: (CMPconst <t> [0] (Select0 z:(ORCC x y))) 391 // result: (Select1 <t> z) 392 for { 393 t := v.Type 394 if auxIntToInt64(v.AuxInt) != 0 || v_0.Op != OpSelect0 { 395 break 396 } 397 z := v_0.Args[0] 398 if z.Op != OpPPC64ORCC { 399 break 400 } 401 v.reset(OpSelect1) 402 v.Type = t 403 v.AddArg(z) 404 return true 405 } 406 // match: (CMPconst <t> [0] (Select0 z:(SUBCC x y))) 407 // result: (Select1 <t> z) 408 for { 409 t := v.Type 410 if auxIntToInt64(v.AuxInt) != 0 || v_0.Op != OpSelect0 { 411 break 412 } 413 z := v_0.Args[0] 414 if z.Op != OpPPC64SUBCC { 415 break 416 } 417 v.reset(OpSelect1) 418 v.Type = t 419 v.AddArg(z) 420 return true 421 } 422 // match: (CMPconst <t> [0] (Select0 z:(NORCC x y))) 423 // result: (Select1 <t> z) 424 for { 425 t := v.Type 426 if auxIntToInt64(v.AuxInt) != 0 || v_0.Op != OpSelect0 { 427 break 428 } 429 z := v_0.Args[0] 430 if z.Op != OpPPC64NORCC { 431 break 432 } 433 v.reset(OpSelect1) 434 v.Type = t 435 v.AddArg(z) 436 return true 437 } 438 // match: (CMPconst <t> [0] (Select0 z:(XORCC x y))) 439 // result: (Select1 <t> z) 440 for { 441 t := v.Type 442 if auxIntToInt64(v.AuxInt) != 0 || v_0.Op != OpSelect0 { 443 break 444 } 445 z := v_0.Args[0] 446 if z.Op != OpPPC64XORCC { 447 break 448 } 449 v.reset(OpSelect1) 450 v.Type = t 451 v.AddArg(z) 452 return true 453 } 454 // match: (CMPconst <t> [0] (Select0 z:(ADDCCconst y))) 455 // result: (Select1 <t> z) 456 for { 457 t := v.Type 458 if auxIntToInt64(v.AuxInt) != 0 || v_0.Op != OpSelect0 { 459 break 460 } 461 z := v_0.Args[0] 462 if z.Op != OpPPC64ADDCCconst { 463 break 464 } 465 v.reset(OpSelect1) 466 v.Type = t 467 v.AddArg(z) 468 return true 469 } 470 // match: (CMPconst <t> [0] (Select0 z:(NEGCC y))) 471 // result: (Select1 <t> z) 472 for { 473 t := v.Type 474 if auxIntToInt64(v.AuxInt) != 0 || v_0.Op != OpSelect0 { 475 break 476 } 477 z := v_0.Args[0] 478 if z.Op != OpPPC64NEGCC { 479 break 480 } 481 v.reset(OpSelect1) 482 v.Type = t 483 v.AddArg(z) 484 return true 485 } 486 // match: (CMPconst <t> [0] (Select0 z:(CNTLZDCC y))) 487 // result: (Select1 <t> z) 488 for { 489 t := v.Type 490 if auxIntToInt64(v.AuxInt) != 0 || v_0.Op != OpSelect0 { 491 break 492 } 493 z := v_0.Args[0] 494 if z.Op != OpPPC64CNTLZDCC { 495 break 496 } 497 v.reset(OpSelect1) 498 v.Type = t 499 v.AddArg(z) 500 return true 501 } 502 return false 503 } 504 func rewriteValuePPC64latelower_OpPPC64ISEL(v *Value) bool { 505 v_2 := v.Args[2] 506 v_1 := v.Args[1] 507 v_0 := v.Args[0] 508 // match: (ISEL [a] x (MOVDconst [0]) z) 509 // result: (ISELZ [a] x z) 510 for { 511 a := auxIntToInt32(v.AuxInt) 512 x := v_0 513 if v_1.Op != OpPPC64MOVDconst || auxIntToInt64(v_1.AuxInt) != 0 { 514 break 515 } 516 z := v_2 517 v.reset(OpPPC64ISELZ) 518 v.AuxInt = int32ToAuxInt(a) 519 v.AddArg2(x, z) 520 return true 521 } 522 // match: (ISEL [a] (MOVDconst [0]) y z) 523 // result: (ISELZ [a^0x4] y z) 524 for { 525 a := auxIntToInt32(v.AuxInt) 526 if v_0.Op != OpPPC64MOVDconst || auxIntToInt64(v_0.AuxInt) != 0 { 527 break 528 } 529 y := v_1 530 z := v_2 531 v.reset(OpPPC64ISELZ) 532 v.AuxInt = int32ToAuxInt(a ^ 0x4) 533 v.AddArg2(y, z) 534 return true 535 } 536 return false 537 } 538 func rewriteValuePPC64latelower_OpPPC64RLDICL(v *Value) bool { 539 v_0 := v.Args[0] 540 // match: (RLDICL [em] x:(SRDconst [s] a)) 541 // cond: (em&0xFF0000) == 0 542 // result: (RLDICL [mergePPC64RLDICLandSRDconst(em, s)] a) 543 for { 544 em := auxIntToInt64(v.AuxInt) 545 x := v_0 546 if x.Op != OpPPC64SRDconst { 547 break 548 } 549 s := auxIntToInt64(x.AuxInt) 550 a := x.Args[0] 551 if !((em & 0xFF0000) == 0) { 552 break 553 } 554 v.reset(OpPPC64RLDICL) 555 v.AuxInt = int64ToAuxInt(mergePPC64RLDICLandSRDconst(em, s)) 556 v.AddArg(a) 557 return true 558 } 559 return false 560 } 561 func rewriteValuePPC64latelower_OpPPC64SETBC(v *Value) bool { 562 v_0 := v.Args[0] 563 b := v.Block 564 typ := &b.Func.Config.Types 565 // match: (SETBC [2] cmp) 566 // cond: buildcfg.GOPPC64 <= 9 567 // result: (ISELZ [2] (MOVDconst [1]) cmp) 568 for { 569 if auxIntToInt32(v.AuxInt) != 2 { 570 break 571 } 572 cmp := v_0 573 if !(buildcfg.GOPPC64 <= 9) { 574 break 575 } 576 v.reset(OpPPC64ISELZ) 577 v.AuxInt = int32ToAuxInt(2) 578 v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64) 579 v0.AuxInt = int64ToAuxInt(1) 580 v.AddArg2(v0, cmp) 581 return true 582 } 583 // match: (SETBC [0] cmp) 584 // cond: buildcfg.GOPPC64 <= 9 585 // result: (ISELZ [0] (MOVDconst [1]) cmp) 586 for { 587 if auxIntToInt32(v.AuxInt) != 0 { 588 break 589 } 590 cmp := v_0 591 if !(buildcfg.GOPPC64 <= 9) { 592 break 593 } 594 v.reset(OpPPC64ISELZ) 595 v.AuxInt = int32ToAuxInt(0) 596 v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64) 597 v0.AuxInt = int64ToAuxInt(1) 598 v.AddArg2(v0, cmp) 599 return true 600 } 601 // match: (SETBC [1] cmp) 602 // cond: buildcfg.GOPPC64 <= 9 603 // result: (ISELZ [1] (MOVDconst [1]) cmp) 604 for { 605 if auxIntToInt32(v.AuxInt) != 1 { 606 break 607 } 608 cmp := v_0 609 if !(buildcfg.GOPPC64 <= 9) { 610 break 611 } 612 v.reset(OpPPC64ISELZ) 613 v.AuxInt = int32ToAuxInt(1) 614 v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64) 615 v0.AuxInt = int64ToAuxInt(1) 616 v.AddArg2(v0, cmp) 617 return true 618 } 619 return false 620 } 621 func rewriteValuePPC64latelower_OpPPC64SETBCR(v *Value) bool { 622 v_0 := v.Args[0] 623 b := v.Block 624 typ := &b.Func.Config.Types 625 // match: (SETBCR [2] cmp) 626 // cond: buildcfg.GOPPC64 <= 9 627 // result: (ISELZ [6] (MOVDconst [1]) cmp) 628 for { 629 if auxIntToInt32(v.AuxInt) != 2 { 630 break 631 } 632 cmp := v_0 633 if !(buildcfg.GOPPC64 <= 9) { 634 break 635 } 636 v.reset(OpPPC64ISELZ) 637 v.AuxInt = int32ToAuxInt(6) 638 v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64) 639 v0.AuxInt = int64ToAuxInt(1) 640 v.AddArg2(v0, cmp) 641 return true 642 } 643 // match: (SETBCR [0] cmp) 644 // cond: buildcfg.GOPPC64 <= 9 645 // result: (ISELZ [4] (MOVDconst [1]) cmp) 646 for { 647 if auxIntToInt32(v.AuxInt) != 0 { 648 break 649 } 650 cmp := v_0 651 if !(buildcfg.GOPPC64 <= 9) { 652 break 653 } 654 v.reset(OpPPC64ISELZ) 655 v.AuxInt = int32ToAuxInt(4) 656 v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64) 657 v0.AuxInt = int64ToAuxInt(1) 658 v.AddArg2(v0, cmp) 659 return true 660 } 661 // match: (SETBCR [1] cmp) 662 // cond: buildcfg.GOPPC64 <= 9 663 // result: (ISELZ [5] (MOVDconst [1]) cmp) 664 for { 665 if auxIntToInt32(v.AuxInt) != 1 { 666 break 667 } 668 cmp := v_0 669 if !(buildcfg.GOPPC64 <= 9) { 670 break 671 } 672 v.reset(OpPPC64ISELZ) 673 v.AuxInt = int32ToAuxInt(5) 674 v0 := b.NewValue0(v.Pos, OpPPC64MOVDconst, typ.Int64) 675 v0.AuxInt = int64ToAuxInt(1) 676 v.AddArg2(v0, cmp) 677 return true 678 } 679 return false 680 } 681 func rewriteValuePPC64latelower_OpSelect0(v *Value) bool { 682 v_0 := v.Args[0] 683 // match: (Select0 z:(ANDCCconst [m] x)) 684 // cond: z.Uses == 1 && isPPC64ValidShiftMask(m) 685 // result: (RLDICL [encodePPC64RotateMask(0,m,64)] x) 686 for { 687 z := v_0 688 if z.Op != OpPPC64ANDCCconst { 689 break 690 } 691 m := auxIntToInt64(z.AuxInt) 692 x := z.Args[0] 693 if !(z.Uses == 1 && isPPC64ValidShiftMask(m)) { 694 break 695 } 696 v.reset(OpPPC64RLDICL) 697 v.AuxInt = int64ToAuxInt(encodePPC64RotateMask(0, m, 64)) 698 v.AddArg(x) 699 return true 700 } 701 return false 702 } 703 func rewriteBlockPPC64latelower(b *Block) bool { 704 return false 705 }