# 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
aE "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)
aE "beq 0x10" 41820010
aE "bne 0x10" 40820010
aE "bgt 0x10" 41810010
aE "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
aE "bge 0x10" 40800010
aE "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

# Capstone 5 disassembly
REQUIRE=cs5
dE "dcbt r9, r10, 8" 7d09522c
dE "subf r5, r3, r4" 7ca32050
dE "beq 0x10" 41820010
dE "bne 0x10" 40820010
dE "bgt 0x10" 41810010
dE "blt 0x10" 41800010
dE "bge 0x10" 40800010
dE "ble 0x10" 40810010

# Capstone 6 disassembly
REQUIRE=cs6
dE "dcbt 8, r9, r10" 7d09522c
dE "sub r5, r4, r3" 7ca32050
dE "bt eq, 0x10" 41820010
dE "bf eq, 0x10" 40820010
dE "bt gt, 0x10" 41810010
dE "bt lt, 0x10" 41800010
dE "bf lt, 0x10" 40800010
dE "bf gt, 0x10" 40810010
dE "rfi" 4c000064
dE "rfci" 4c000066
dE "wrteei 1" 7c008146
dE "tlbwe" 7c0007a4
