1 2# RUN: not llvm-mc -triple powerpc64-unknown-unknown < %s 2> %t 3# RUN: FileCheck < %t %s 4# RUN: not llvm-mc -triple powerpc64le-unknown-unknown < %s 2> %t 5# RUN: FileCheck < %t %s 6 7# Register operands 8 9# CHECK: error: invalid operand for instruction 10# CHECK-NEXT: add 32, 32, 32 11 add 32, 32, 32 12 13# CHECK: error: invalid register name 14# CHECK-NEXT: add %r32, %r32, %r32 15 add %r32, %r32, %r32 16 17# TLS register operands 18 19# CHECK: error: invalid operand for instruction 20# CHECK-NEXT: add 3, symbol@tls, 4 21 add 3, symbol@tls, 4 22 23# CHECK: error: invalid operand for instruction 24# CHECK-NEXT: subf 3, 4, symbol@tls 25 subf 3, 4, symbol@tls 26 27# Unsigned 1-bit immediate operands 28 29# CHECK: error: invalid operand for instruction 30# CHECK-NEXT: mtmsr 1, 2 31 mtmsr 1, 2 32 33# CHECK: error: invalid operand for instruction 34# CHECK-NEXT: mtmsrd 1, 2 35 mtmsrd 1, 2 36 37# CHECK: error: invalid operand for instruction 38# CHECK-NEXT: mtfsf 1, 2, 2, 1 39 mtfsf 1, 2, 2, 1 40 41# CHECK: error: invalid operand for instruction 42# CHECK-NEXT: mtfsf. 1, 2, 2, 1 43 mtfsf. 1, 2, 2, 1 44 45# Unsigned 2-bit immediate operands 46 47# CHECK: error: invalid operand for instruction 48# CHECK-NEXT: darn 1, 4 49 darn 1, 4 50 51# CHECK: error: invalid operand for instruction 52# CHECK-NEXT: wait 4 53 wait 4 54 55# CHECK: error: invalid operand for instruction 56# CHECK-NEXT: sync 8 57 sync 8 58 59# Unsigned 3-bit immediate operands 60 61# CHECK: error: invalid operand for instruction 62# CHECK-NEXT: dcbf 0, 1, 8 63 dcbf 0, 1, 8 64 65# Signed 16-bit immediate operands 66 67# CHECK: error: invalid operand for instruction 68# CHECK-NEXT: addi 1, 0, -32769 69 addi 1, 0, -32769 70 71# CHECK: error: invalid operand for instruction 72# CHECK-NEXT: addi 1, 0, 32768 73 addi 1, 0, 32768 74 75# Unsigned 16-bit immediate operands 76 77# CHECK: error: invalid operand for instruction 78# CHECK-NEXT: ori 1, 2, -1 79 ori 1, 2, -1 80 81# CHECK: error: invalid operand for instruction 82# CHECK-NEXT: ori 1, 2, 65536 83 ori 1, 2, 65536 84 85# Signed 16-bit immediate operands (extended range for addis) 86 87# CHECK: error: invalid operand for instruction 88 addis 1, 0, -65537 89 90# CHECK: error: invalid operand for instruction 91 addis 1, 0, 65536 92 93# D-Form memory operands 94 95# CHECK: error: invalid register number 96# CHECK-NEXT: lwz 1, 0(32) 97 lwz 1, 0(32) 98 99# CHECK: error: invalid register name 100# CHECK-NEXT: lwz 1, 0(%r32) 101 lwz 1, 0(%r32) 102 103# CHECK: error: invalid operand for instruction 104# CHECK-NEXT: lwz 1, -32769(2) 105 lwz 1, -32769(2) 106 107# CHECK: error: invalid operand for instruction 108# CHECK-NEXT: lwz 1, 32768(2) 109 lwz 1, 32768(2) 110 111# CHECK: error: invalid register number 112# CHECK-NEXT: ld 1, 0(32) 113 ld 1, 0(32) 114 115# CHECK: error: invalid register name 116# CHECK-NEXT: ld 1, 0(%r32) 117 ld 1, 0(%r32) 118 119# CHECK: error: invalid operand for instruction 120# CHECK-NEXT: ld 1, 1(2) 121 ld 1, 1(2) 122 123# CHECK: error: invalid operand for instruction 124# CHECK-NEXT: ld 1, 2(2) 125 ld 1, 2(2) 126 127# CHECK: error: invalid operand for instruction 128# CHECK-NEXT: ld 1, 3(2) 129 ld 1, 3(2) 130 131# CHECK: error: invalid operand for instruction 132# CHECK-NEXT: ld 1, -32772(2) 133 ld 1, -32772(2) 134 135# CHECK: error: invalid operand for instruction 136# CHECK-NEXT: ld 1, 32768(2) 137 ld 1, 32768(2) 138 139# CHECK: error: invalid modifier 'got' (no symbols present) 140 addi 4, 3, 123@got 141# CHECK-NEXT: addi 4, 3, 123@got 142 143# CHECK: error: invalid operand for instruction 144# CHECK-NEXT: lwarx 1, 2, 3, a 145 lwarx 1, 2, 3, a 146 147# Instruction requires memory operand 148# CHECK: error: invalid operand for instruction 149# CHECK-NEXT: la 3, 3, 10 150 la 3, 3, 10 151 152# Instruction doesn't support memory operands 153# CHECK: error: invalid operand for instruction 154# CHECK-NEXT: addi 3, 10(3) 155 addi 3, 10(3) 156 157# Invalid memory operand position 158# CHECK: error: invalid operand for instruction 159# CHECK-NEXT: la 0(3), 3 160 la 0(3), 3 161