184 lines · plain
1# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve -show-encoding < %s \2# RUN: | FileCheck --check-prefix=CHECK %s3# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -mattr=+mve.fp,+fp64 -show-encoding < %s 2>%t \4# RUN: | FileCheck --check-prefix=CHECK %s5# RUN: FileCheck --check-prefix=ERROR < %t %s6# RUN: not llvm-mc -triple=thumbv8.1m.main-none-eabi -show-encoding < %s 2>%t7# RUN: FileCheck --check-prefix=ERROR-NOMVE < %t %s8 9# CHECK: vpsel q0, q5, q2 @ encoding: [0x3b,0xfe,0x05,0x0f]10# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve11vpsel q0, q5, q212 13# CHECK: vpnot @ encoding: [0x31,0xfe,0x4d,0x0f]14# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve15vpnot16 17# CHECK: wlstp.8 lr, r0, #1668 @ encoding: [0x00,0xf0,0x43,0xc3]18# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve19wlstp.8 lr, r0, #166820 21# CHECK: wlstp.16 lr, r0, #1668 @ encoding: [0x10,0xf0,0x43,0xc3]22# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve23wlstp.16 lr, r0, #166824 25# CHECK: wlstp.32 lr, r4, #2706 @ encoding: [0x24,0xf0,0x49,0xcd]26# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve27wlstp.32 lr, r4, #270628 29# CHECK: wlstp.64 lr, lr, #3026 @ encoding: [0x3e,0xf0,0xe9,0xcd]30# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve31wlstp.64 lr, lr, #302632 33# CHECK: wlstp.8 lr, r5, #3436 @ encoding: [0x05,0xf0,0xb7,0xc6]34# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve35wlstp.8 lr, r5, #343636 37# CHECK: wlstp.16 lr, r1, #1060 @ encoding: [0x11,0xf0,0x13,0xc2]38# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve39wlstp.16 lr, r1, #106040 41# CHECK: wlstp.32 lr, r7, #4036 @ encoding: [0x27,0xf0,0xe3,0xc7]42# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve43wlstp.32 lr, r7, #403644 45# CHECK: wlstp.8 lr, r1, #538 @ encoding: [0x01,0xf0,0x0d,0xc9]46# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve47wlstp.8 lr, r1, #53848 49# CHECK: wlstp.8 lr, r10, #1404 @ encoding: [0x0a,0xf0,0xbf,0xc2]50# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve51wlstp.8 lr, r10, #140452 53# CHECK: wlstp.8 lr, r10, #1408 @ encoding: [0x0a,0xf0,0xc1,0xc2]54# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve55wlstp.8 lr, r10, #140856 57# CHECK: wlstp.8 lr, r10, #2358 @ encoding: [0x0a,0xf0,0x9b,0xcc]58# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve59wlstp.8 lr, r10, #235860 61# CHECK: wlstp.8 lr, r10, #4086 @ encoding: [0x0a,0xf0,0xfb,0xcf]62# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve63wlstp.8 lr, r10, #408664 65# CHECK: wlstp.8 lr, r11, #1442 @ encoding: [0x0b,0xf0,0xd1,0xca]66# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve67wlstp.8 lr, r11, #144268 69# ERROR: [[@LINE+2]]:{{[0-9]+}}: {{error|note}}: loop end is out of range or not a positive multiple of 270# ERROR-NOMVE: [[@LINE+1]]:1: error: invalid instruction71wlstp.8 lr, r10, #144372 73# ERROR: [[@LINE+2]]:{{[0-9]+}}: {{error|note}}: loop end is out of range or not a positive multiple of 274# ERROR-NOMVE: [[@LINE+1]]:1: error: invalid instruction75wlstp.8 lr, r10, #409676 77# ERROR: [[@LINE+2]]:{{[0-9]+}}: {{error|note}}: operand must be a register in range [r0, r12] or r1478# ERROR-NOMVE: [[@LINE+1]]:1: error: invalid instruction79wlstp.8 lr, sp, #144280 81# ERROR: [[@LINE+2]]:{{[0-9]+}}: {{error|note}}: operand must be a register in range [r0, r12] or r1482# ERROR-NOMVE: [[@LINE+1]]:1: error: invalid instruction83wlstp.16 lr, sp, #144284 85# ERROR: [[@LINE+2]]:{{[0-9]+}}: {{error|note}}: invalid operand for instruction86# ERROR-NOMVE: [[@LINE+1]]:1: error: invalid instruction87wlstp.32 r10, r11, #144288 89# CHECK: wlstp.8 lr, r1, .Lendloop @ encoding: [0x01'A',0xf0'A',0x01'A',0xc0'A']90# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve91wlstp.8 lr, r1, .Lendloop92 93# CHECK: wlstp.16 lr, r2, .Lendloop @ encoding: [0x12'A',0xf0'A',0x01'A',0xc0'A']94# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve95wlstp.16 lr, r2, .Lendloop96 97# CHECK: wlstp.32 lr, r3, .Lendloop @ encoding: [0x23'A',0xf0'A',0x01'A',0xc0'A']98# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve99wlstp.32 lr, r3, .Lendloop100 101# CHECK: wlstp.64 lr, r5, .Lendloop @ encoding: [0x35'A',0xf0'A',0x01'A',0xc0'A']102# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve103wlstp.64 lr, r5, .Lendloop104 105# CHECK: wlstp.64 lr, r5, #0 @ encoding: [0x35,0xf0,0x01,0xc0]106# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve107wlstp.64 lr, r5, #0108 109# CHECK: dlstp.8 lr, r5 @ encoding: [0x05,0xf0,0x01,0xe0]110# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve111dlstp.8 lr, r5112 113# CHECK: dlstp.16 lr, r5 @ encoding: [0x15,0xf0,0x01,0xe0]114# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve115dlstp.16 lr, r5116 117# CHECK: dlstp.32 lr, r7 @ encoding: [0x27,0xf0,0x01,0xe0]118# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve119dlstp.32 lr, r7120 121# CHECK: dlstp.64 lr, r2 @ encoding: [0x32,0xf0,0x01,0xe0]122# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve123dlstp.64 lr, r2124 125# ERROR: [[@LINE+2]]:{{[0-9]+}}: {{error|note}}: operand must be a register in range [r0, r12] or r14126# ERROR-NOMVE: [[@LINE+1]]:1: error: invalid instruction127dlstp.64 lr, sp128 129# ERROR: [[@LINE+2]]:{{[0-9]+}}: {{error|note}}: invalid operand for instruction130# ERROR-NOMVE: [[@LINE+1]]:1: error: invalid instruction131dlstp.64 r10, r0132 133# ERROR: [[@LINE+2]]:{{[0-9]+}}: {{error|note}}: operand must be a register in range [r0, r12] or r14134# ERROR-NOMVE: [[@LINE+1]]:1: error: invalid instruction135dlstp.64 lr, pc136 137# CHECK: letp lr, #-2 @ encoding: [0x1f,0xf0,0x01,0xc8]138# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve139letp lr, #-2140 141# CHECK: letp lr, #-8 @ encoding: [0x1f,0xf0,0x05,0xc0]142# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve143letp lr, #-8144 145# CHECK: letp lr, #-4094 @ encoding: [0x1f,0xf0,0xff,0xcf]146# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve147letp lr, #-4094148 149# ERROR: [[@LINE+2]]:{{[0-9]+}}: {{error|note}}: invalid operand for instruction150# ERROR-NOMVE: [[@LINE+1]]:1: error: invalid instruction151letp r0, #-8152 153# ERROR: [[@LINE+2]]:{{[0-9]+}}: {{error|note}}: loop start is out of range or not a negative multiple of 2154# ERROR-NOMVE: [[@LINE+1]]:1: error: invalid instruction155letp lr, #8156 157# ERROR: [[@LINE+2]]:{{[0-9]+}}: {{error|note}}: loop start is out of range or not a negative multiple of 2158# ERROR-NOMVE: [[@LINE+1]]:1: error: invalid instruction159letp lr, #-4096160 161# CHECK: letp lr, .Lstartloop @ encoding: [0x1f'A',0xf0'A',0x01'A',0xc0'A']162# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve163letp lr, .Lstartloop164 165# CHECK: lctp @ encoding: [0x0f,0xf0,0x01,0xe0]166# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve167lctp168 169# CHECK: it eq @ encoding: [0x08,0xbf]170it eq171# CHECK: lctpeq @ encoding: [0x0f,0xf0,0x01,0xe0]172# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve173lctpeq174 175# ERROR-NOMVE: [[@LINE+1]]:1: error: instruction requires: mve176vpste177# ERROR-NOMVE: [[@LINE+1]]:1: error: invalid instruction178vpselt.s16 q0, q1, q2179# ERROR-NOMVE: [[@LINE+1]]:1: error: invalid instruction180vpsele.i32 q0, q1, q2181# CHECK: vpste @ encoding: [0x71,0xfe,0x4d,0x8f]182# CHECK: vpselt q0, q1, q2 @ encoding: [0x33,0xfe,0x05,0x0f]183# CHECK: vpsele q0, q1, q2 @ encoding: [0x33,0xfe,0x05,0x0f]184