# PowerPC 64-bit assembler tests for ppc.nz (big-endian round-trip)

# Misc fixed-encoding instructions
adE "nop" 60000000
adE "sc" 44000002
adE "trap" 7fe00008

# D-form: li / lis / addi / addis / ori
adE "li r3, 0" 38600000
adE "li r0, 1" 38000001
adE "lis r3, 0x1234" 3c601234
adE "addi r1, r1, -0x20" 3821ffe0
adE "addis r2, r12, 1" 3c4c0001
adE "ori r3, r4, 0xff" 608300ff

# X-form arithmetic / logical
adE "mr r3, r4" 7c832378
adE "and r3, r4, r5" 7c832838
adE "or r3, r4, r5" 7c832b78
adE "xor r3, r4, r5" 7c832a78

# XO-form arithmetic
adE "add r5, r3, r4" 7ca32214
adE "subf r5, r3, r4" 7ca32050
adE "mullw r3, r4, r5" 7c6429d6

# Loads and stores (32-bit and 64-bit)
adE "lwz r3, 8(r4)" 80640008
adE "stw r3, 8(r4)" 90640008
adE "lbz r3, 0(r4)" 88640000
adE "stb r3, 0(r4)" 98640000
adE "ld r3, 0x10(r1)" e8610010
adE "std r0, 0x10(r1)" f8010010
adE "stdu r1, -0x20(r1)" f821ffe1

# Comparisons
adE "cmpwi r3, 0" 2c030000
adE "cmpw r3, r4" 7c032000

# Conditional branches (BD = target - 0)
adE "beq 0x10" 41820010
adE "bne 0x10" 40820010
adE "bgt 0x10" 41810010
adE "blt 0x10" 41800010

# Unconditional branches
adE "b 0x100" 48000100
adE "bl 0x100" 48000101

# XL-form (LR/CTR-relative)
adE "blr" 4e800020
adE "bctr" 4e800420
adE "bctrl" 4e800421

# SPR moves
adE "mtctr r12" 7d8903a6
adE "mtlr r0" 7c0803a6
adE "mfctr r0" 7c0902a6
adE "mflr r0" 7c0802a6

# Coverage: mnemonics implemented but previously untested
adE "ldu r3, 0x10(r1)" e8610011
adE "divw r3, r4, r5" 7c642bd6
adE "bge 0x10" 40800010
adE "ble 0x10" 40810010
adE "mtctr r12" 7d8903a6

# Coverage: sub alias and mr alias (assemble-only — ppc_cs canonicalises).
aE "sub r5, r3, r4" 7ca41850
aE "or r3, r4, r4" 7c832378

# Coverage: 3-operand cmpwi / cmpw with explicit CR field.
aE "cmpwi 0, r3, 0" 2c030000
aE "cmpw 0, r3, r4" 7c032000

# Coverage: sign extension and immediate boundaries.
adE "li r3, -1" 3860ffff
adE "addi r1, r1, 0x7fff" 38217fff
adE "addi r1, r1, -0x8000" 38218000

# Little-endian variants (byte-reversed within each word)
ad "nop" 00000060
ad "sc" 02000044
ad "li r3, 0" 00006038
ad "blr" 2000804e
