1*9880d681SAndroid Build Coastguard Worker 2*9880d681SAndroid Build Coastguard Worker# RUN: llvm-mc -triple powerpc64-unknown-unknown --show-encoding %s | FileCheck -check-prefix=CHECK-BE %s 3*9880d681SAndroid Build Coastguard Worker# RUN: llvm-mc -triple powerpc64le-unknown-unknown --show-encoding %s | FileCheck -check-prefix=CHECK-LE %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker# Register operands 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker# CHECK-BE: add 1, 2, 3 # encoding: [0x7c,0x22,0x1a,0x14] 8*9880d681SAndroid Build Coastguard Worker# CHECK-LE: add 1, 2, 3 # encoding: [0x14,0x1a,0x22,0x7c] 9*9880d681SAndroid Build Coastguard Worker add 1, 2, 3 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker# CHECK-BE: add 1, 2, 3 # encoding: [0x7c,0x22,0x1a,0x14] 12*9880d681SAndroid Build Coastguard Worker# CHECK-LE: add 1, 2, 3 # encoding: [0x14,0x1a,0x22,0x7c] 13*9880d681SAndroid Build Coastguard Worker add %r1, %r2, %r3 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker# CHECK-BE: add 0, 0, 0 # encoding: [0x7c,0x00,0x02,0x14] 16*9880d681SAndroid Build Coastguard Worker# CHECK-LE: add 0, 0, 0 # encoding: [0x14,0x02,0x00,0x7c] 17*9880d681SAndroid Build Coastguard Worker add 0, 0, 0 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker# CHECK-BE: add 31, 31, 31 # encoding: [0x7f,0xff,0xfa,0x14] 20*9880d681SAndroid Build Coastguard Worker# CHECK-LE: add 31, 31, 31 # encoding: [0x14,0xfa,0xff,0x7f] 21*9880d681SAndroid Build Coastguard Worker add 31, 31, 31 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addi 1, 0, 0 # encoding: [0x38,0x20,0x00,0x00] 24*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addi 1, 0, 0 # encoding: [0x00,0x00,0x20,0x38] 25*9880d681SAndroid Build Coastguard Worker addi 1, 0, 0 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addi 1, 0, 0 # encoding: [0x38,0x20,0x00,0x00] 28*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addi 1, 0, 0 # encoding: [0x00,0x00,0x20,0x38] 29*9880d681SAndroid Build Coastguard Worker addi 1, %r0, 0 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker# Signed 16-bit immediate operands 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addi 1, 2, 0 # encoding: [0x38,0x22,0x00,0x00] 34*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addi 1, 2, 0 # encoding: [0x00,0x00,0x22,0x38] 35*9880d681SAndroid Build Coastguard Worker addi 1, 2, 0 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addi 1, 0, -32768 # encoding: [0x38,0x20,0x80,0x00] 38*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addi 1, 0, -32768 # encoding: [0x00,0x80,0x20,0x38] 39*9880d681SAndroid Build Coastguard Worker addi 1, 0, -32768 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addi 1, 0, 32767 # encoding: [0x38,0x20,0x7f,0xff] 42*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addi 1, 0, 32767 # encoding: [0xff,0x7f,0x20,0x38] 43*9880d681SAndroid Build Coastguard Worker addi 1, 0, 32767 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker# Unsigned 16-bit immediate operands 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ori 1, 2, 0 # encoding: [0x60,0x41,0x00,0x00] 48*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ori 1, 2, 0 # encoding: [0x00,0x00,0x41,0x60] 49*9880d681SAndroid Build Coastguard Worker ori 1, 2, 0 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ori 1, 2, 65535 # encoding: [0x60,0x41,0xff,0xff] 52*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ori 1, 2, 65535 # encoding: [0xff,0xff,0x41,0x60] 53*9880d681SAndroid Build Coastguard Worker ori 1, 2, 65535 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Worker# Signed 16-bit immediate operands (extended range for addis) 56*9880d681SAndroid Build Coastguard Worker 57*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addis 1, 0, 0 # encoding: [0x3c,0x20,0x00,0x00] 58*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addis 1, 0, 0 # encoding: [0x00,0x00,0x20,0x3c] 59*9880d681SAndroid Build Coastguard Worker addis 1, 0, -65536 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker# CHECK-BE: addis 1, 0, -1 # encoding: [0x3c,0x20,0xff,0xff] 62*9880d681SAndroid Build Coastguard Worker# CHECK-LE: addis 1, 0, -1 # encoding: [0xff,0xff,0x20,0x3c] 63*9880d681SAndroid Build Coastguard Worker addis 1, 0, 65535 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Worker# D-Form memory operands 66*9880d681SAndroid Build Coastguard Worker 67*9880d681SAndroid Build Coastguard Worker# CHECK-BE: lwz 1, 0(0) # encoding: [0x80,0x20,0x00,0x00] 68*9880d681SAndroid Build Coastguard Worker# CHECK-LE: lwz 1, 0(0) # encoding: [0x00,0x00,0x20,0x80] 69*9880d681SAndroid Build Coastguard Worker lwz 1, 0(0) 70*9880d681SAndroid Build Coastguard Worker 71*9880d681SAndroid Build Coastguard Worker# CHECK-BE: lwz 1, 0(0) # encoding: [0x80,0x20,0x00,0x00] 72*9880d681SAndroid Build Coastguard Worker# CHECK-LE: lwz 1, 0(0) # encoding: [0x00,0x00,0x20,0x80] 73*9880d681SAndroid Build Coastguard Worker lwz 1, 0(%r0) 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker# CHECK-BE: lwz 1, 0(31) # encoding: [0x80,0x3f,0x00,0x00] 76*9880d681SAndroid Build Coastguard Worker# CHECK-LE: lwz 1, 0(31) # encoding: [0x00,0x00,0x3f,0x80] 77*9880d681SAndroid Build Coastguard Worker lwz 1, 0(31) 78*9880d681SAndroid Build Coastguard Worker 79*9880d681SAndroid Build Coastguard Worker# CHECK-BE: lwz 1, 0(31) # encoding: [0x80,0x3f,0x00,0x00] 80*9880d681SAndroid Build Coastguard Worker# CHECK-LE: lwz 1, 0(31) # encoding: [0x00,0x00,0x3f,0x80] 81*9880d681SAndroid Build Coastguard Worker lwz 1, 0(%r31) 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Worker# CHECK-BE: lwz 1, -32768(2) # encoding: [0x80,0x22,0x80,0x00] 84*9880d681SAndroid Build Coastguard Worker# CHECK-LE: lwz 1, -32768(2) # encoding: [0x00,0x80,0x22,0x80] 85*9880d681SAndroid Build Coastguard Worker lwz 1, -32768(2) 86*9880d681SAndroid Build Coastguard Worker 87*9880d681SAndroid Build Coastguard Worker# CHECK-BE: lwz 1, 32767(2) # encoding: [0x80,0x22,0x7f,0xff] 88*9880d681SAndroid Build Coastguard Worker# CHECK-LE: lwz 1, 32767(2) # encoding: [0xff,0x7f,0x22,0x80] 89*9880d681SAndroid Build Coastguard Worker lwz 1, 32767(2) 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, 0(0) # encoding: [0xe8,0x20,0x00,0x00] 93*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, 0(0) # encoding: [0x00,0x00,0x20,0xe8] 94*9880d681SAndroid Build Coastguard Worker ld 1, 0(0) 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, 0(0) # encoding: [0xe8,0x20,0x00,0x00] 97*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, 0(0) # encoding: [0x00,0x00,0x20,0xe8] 98*9880d681SAndroid Build Coastguard Worker ld 1, 0(%r0) 99*9880d681SAndroid Build Coastguard Worker 100*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, 0(31) # encoding: [0xe8,0x3f,0x00,0x00] 101*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, 0(31) # encoding: [0x00,0x00,0x3f,0xe8] 102*9880d681SAndroid Build Coastguard Worker ld 1, 0(31) 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, 0(31) # encoding: [0xe8,0x3f,0x00,0x00] 105*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, 0(31) # encoding: [0x00,0x00,0x3f,0xe8] 106*9880d681SAndroid Build Coastguard Worker ld 1, 0(%r31) 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, -32768(2) # encoding: [0xe8,0x22,0x80,0x00] 109*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, -32768(2) # encoding: [0x00,0x80,0x22,0xe8] 110*9880d681SAndroid Build Coastguard Worker ld 1, -32768(2) 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, 32764(2) # encoding: [0xe8,0x22,0x7f,0xfc] 113*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, 32764(2) # encoding: [0xfc,0x7f,0x22,0xe8] 114*9880d681SAndroid Build Coastguard Worker ld 1, 32764(2) 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, 4(2) # encoding: [0xe8,0x22,0x00,0x04] 117*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, 4(2) # encoding: [0x04,0x00,0x22,0xe8] 118*9880d681SAndroid Build Coastguard Worker ld 1, 4(2) 119*9880d681SAndroid Build Coastguard Worker 120*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ld 1, -4(2) # encoding: [0xe8,0x22,0xff,0xfc] 121*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ld 1, -4(2) # encoding: [0xfc,0xff,0x22,0xe8] 122*9880d681SAndroid Build Coastguard Worker ld 1, -4(2) 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Worker# Immediate branch operands 126*9880d681SAndroid Build Coastguard Worker 127*9880d681SAndroid Build Coastguard Worker# CHECK-BE: b .+1024 # encoding: [0x48,0x00,0x04,0x00] 128*9880d681SAndroid Build Coastguard Worker# CHECK-LE: b .+1024 # encoding: [0x00,0x04,0x00,0x48] 129*9880d681SAndroid Build Coastguard Worker b 1024 130*9880d681SAndroid Build Coastguard Worker 131*9880d681SAndroid Build Coastguard Worker# CHECK-BE: ba 1024 # encoding: [0x48,0x00,0x04,0x02] 132*9880d681SAndroid Build Coastguard Worker# CHECK-LE: ba 1024 # encoding: [0x02,0x04,0x00,0x48] 133*9880d681SAndroid Build Coastguard Worker ba 1024 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Worker# CHECK-BE: beq 0, .+1024 # encoding: [0x41,0x82,0x04,0x00] 136*9880d681SAndroid Build Coastguard Worker# CHECK-LE: beq 0, .+1024 # encoding: [0x00,0x04,0x82,0x41] 137*9880d681SAndroid Build Coastguard Worker beq 1024 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Worker# CHECK-BE: beqa 0, 1024 # encoding: [0x41,0x82,0x04,0x02] 140*9880d681SAndroid Build Coastguard Worker# CHECK-LE: beqa 0, 1024 # encoding: [0x02,0x04,0x82,0x41] 141*9880d681SAndroid Build Coastguard Worker beqa 1024 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Worker# CHECK-BE: # encoding: [0x42,0x9f,A,0bAAAAAA01] 144*9880d681SAndroid Build Coastguard Worker# CHECK-LE: # encoding: [0bAAAAAA01,A,0x9f,0x42] 145*9880d681SAndroid Build Coastguard Worker bcl 20, 31, $+4 146*9880d681SAndroid Build Coastguard Worker 147*9880d681SAndroid Build Coastguard Worker# CHECK-BE: # encoding: [0x42,0x00,A,0bAAAAAA00] 148*9880d681SAndroid Build Coastguard Worker# CHECK-LE: # encoding: [0bAAAAAA00,A,0x00,0x42] 149*9880d681SAndroid Build Coastguard Worker bdnz $-8 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Worker# CHECK-BE: andi. 0, 3, 32767 # encoding: [0x70,0x60,0x7f,0xff] 152*9880d681SAndroid Build Coastguard Worker# CHECK-LE: andi. 0, 3, 32767 # encoding: [0xff,0x7f,0x60,0x70] 153*9880d681SAndroid Build Coastguard Worker andi. %r0,%r3,~0x8000@l 154*9880d681SAndroid Build Coastguard Worker 155*9880d681SAndroid Build Coastguard Worker# CHECK-BE: andi. 0, 3, 0 # encoding: [0x70,0x60,0x00,0x00] 156*9880d681SAndroid Build Coastguard Worker# CHECK-LE: andi. 0, 3, 0 # encoding: [0x00,0x00,0x60,0x70] 157*9880d681SAndroid Build Coastguard Worker andi. %r0,%r3,!0x8000@l 158*9880d681SAndroid Build Coastguard Worker 159