// Copyright 2017 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. TEXT errors(SB),$0 MOVW (F0), R1 // ERROR "illegal base register" MOVB (F0), R1 // ERROR "illegal base register" MOVH (F0), R1 // ERROR "illegal base register" MOVF (F0), F1 // ERROR "illegal base register" MOVD (F0), F1 // ERROR "illegal base register" MOVW R1, (F0) // ERROR "illegal base register" MOVB R2, (F0) // ERROR "illegal base register" MOVH R3, (F0) // ERROR "illegal base register" MOVF F4, (F0) // ERROR "illegal base register" MOVD F5, (F0) // ERROR "illegal base register" MOVM.IA (F1), [R0-R4] // ERROR "illegal base register" MOVM.DA (F1), [R0-R4] // ERROR "illegal base register" MOVM.IB (F1), [R0-R4] // ERROR "illegal base register" MOVM.DB (F1), [R0-R4] // ERROR "illegal base register" MOVM.IA [R0-R4], (F1) // ERROR "illegal base register" MOVM.DA [R0-R4], (F1) // ERROR "illegal base register" MOVM.IB [R0-R4], (F1) // ERROR "illegal base register" MOVM.DB [R0-R4], (F1) // ERROR "illegal base register" MOVW R0<<0(F1), R1 // ERROR "illegal base register" MOVB R0<<0(F1), R1 // ERROR "illegal base register" MOVW R1, R0<<0(F1) // ERROR "illegal base register" MOVB R2, R0<<0(F1) // ERROR "illegal base register" MOVF 0x00ffffff(F2), F1 // ERROR "illegal base register" MOVD 0x00ffffff(F2), F1 // ERROR "illegal base register" MOVF F2, 0x00ffffff(F2) // ERROR "illegal base register" MOVD F2, 0x00ffffff(F2) // ERROR "illegal base register" MULS.S R1, R2, R3, R4 // ERROR "invalid .S suffix" ADD.P R1, R2, R3 // ERROR "invalid .P suffix" SUB.W R2, R3 // ERROR "invalid .W suffix" BL 4(R4) // ERROR "non-zero offset" ADDF F0, R1, F2 // ERROR "illegal combination" SWI (R0) // ERROR "illegal combination" MULAD F0, F1 // ERROR "illegal combination" MULAF F0, F1 // ERROR "illegal combination" MULSD F0, F1 // ERROR "illegal combination" MULSF F0, F1 // ERROR "illegal combination" NMULAD F0, F1 // ERROR "illegal combination" NMULAF F0, F1 // ERROR "illegal combination" NMULSD F0, F1 // ERROR "illegal combination" NMULSF F0, F1 // ERROR "illegal combination" FMULAD F0, F1 // ERROR "illegal combination" FMULAF F0, F1 // ERROR "illegal combination" FMULSD F0, F1 // ERROR "illegal combination" FMULSF F0, F1 // ERROR "illegal combination" FNMULAD F0, F1 // ERROR "illegal combination" FNMULAF F0, F1 // ERROR "illegal combination" FNMULSD F0, F1 // ERROR "illegal combination" FNMULSF F0, F1 // ERROR "illegal combination" NEGF F0, F1, F2 // ERROR "illegal combination" NEGD F0, F1, F2 // ERROR "illegal combination" ABSF F0, F1, F2 // ERROR "illegal combination" ABSD F0, F1, F2 // ERROR "illegal combination" SQRTF F0, F1, F2 // ERROR "illegal combination" SQRTD F0, F1, F2 // ERROR "illegal combination" MOVF F0, F1, F2 // ERROR "illegal combination" MOVD F0, F1, F2 // ERROR "illegal combination" MOVDF F0, F1, F2 // ERROR "illegal combination" MOVFD F0, F1, F2 // ERROR "illegal combination" MOVM.IA 4(R1), [R0-R4] // ERROR "offset must be zero" MOVM.DA 4(R1), [R0-R4] // ERROR "offset must be zero" MOVM.IB 4(R1), [R0-R4] // ERROR "offset must be zero" MOVM.DB 4(R1), [R0-R4] // ERROR "offset must be zero" MOVM.IA [R0-R4], 4(R1) // ERROR "offset must be zero" MOVM.DA [R0-R4], 4(R1) // ERROR "offset must be zero" MOVM.IB [R0-R4], 4(R1) // ERROR "offset must be zero" MOVM.DB [R0-R4], 4(R1) // ERROR "offset must be zero" MOVW CPSR, FPSR // ERROR "illegal combination" MOVW FPSR, CPSR // ERROR "illegal combination" MOVW CPSR, errors(SB) // ERROR "illegal combination" MOVW errors(SB), CPSR // ERROR "illegal combination" MOVW FPSR, errors(SB) // ERROR "illegal combination" MOVW errors(SB), FPSR // ERROR "illegal combination" MOVW F0, errors(SB) // ERROR "illegal combination" MOVW errors(SB), F0 // ERROR "illegal combination" MOVW $20, errors(SB) // ERROR "illegal combination" MOVW errors(SB), $20 // ERROR "illegal combination" MOVW (R1), [R0-R4] // ERROR "illegal combination" MOVW [R0-R4], (R1) // ERROR "illegal combination" MOVB $245, R1 // ERROR "illegal combination" MOVH $245, R1 // ERROR "illegal combination" MOVB $0xff000000, R1 // ERROR "illegal combination" MOVH $0xff000000, R1 // ERROR "illegal combination" MOVB $0x00ffffff, R1 // ERROR "illegal combination" MOVH $0x00ffffff, R1 // ERROR "illegal combination" MOVB FPSR, g // ERROR "illegal combination" MOVH FPSR, g // ERROR "illegal combination" MOVB g, FPSR // ERROR "illegal combination" MOVH g, FPSR // ERROR "illegal combination" MOVB CPSR, g // ERROR "illegal combination" MOVH CPSR, g // ERROR "illegal combination" MOVB g, CPSR // ERROR "illegal combination" MOVH g, CPSR // ERROR "illegal combination" MOVB $0xff000000, CPSR // ERROR "illegal combination" MOVH $0xff000000, CPSR // ERROR "illegal combination" MOVB $0xff000000, FPSR // ERROR "illegal combination" MOVH $0xff000000, FPSR // ERROR "illegal combination" MOVB $0xffffff00, CPSR // ERROR "illegal combination" MOVH $0xffffff00, CPSR // ERROR "illegal combination" MOVB $0xfffffff0, FPSR // ERROR "illegal combination" MOVH $0xfffffff0, FPSR // ERROR "illegal combination" MOVB (R1), [R0-R4] // ERROR "illegal combination" MOVB [R0-R4], (R1) // ERROR "illegal combination" MOVH (R1), [R0-R4] // ERROR "illegal combination" MOVH [R0-R4], (R1) // ERROR "illegal combination" MOVB $0xff(R0), R1 // ERROR "illegal combination" MOVH $0xff(R0), R1 // ERROR "illegal combination" MOVB $errors(SB), R2 // ERROR "illegal combination" MOVH $errors(SB), R2 // ERROR "illegal combination" MOVB F0, R0 // ERROR "illegal combination" MOVH F0, R0 // ERROR "illegal combination" MOVB R0, F0 // ERROR "illegal combination" MOVH R0, F0 // ERROR "illegal combination" MOVB R0>>0(R1), R2 // ERROR "bad shift" MOVB R0->0(R1), R2 // ERROR "bad shift" MOVB R0@>0(R1), R2 // ERROR "bad shift" MOVBS R0>>0(R1), R2 // ERROR "bad shift" MOVBS R0->0(R1), R2 // ERROR "bad shift" MOVBS R0@>0(R1), R2 // ERROR "bad shift" MOVF CPSR, F1 // ERROR "illegal combination" MOVD R1, CPSR // ERROR "illegal combination" MOVW F1, F2 // ERROR "illegal combination" MOVB F1, F2 // ERROR "illegal combination" MOVH F1, F2 // ERROR "illegal combination" MOVF R1, F2 // ERROR "illegal combination" MOVD R1, F2 // ERROR "illegal combination" MOVF R1, R1 // ERROR "illegal combination" MOVD R1, R2 // ERROR "illegal combination" MOVFW R1, R2 // ERROR "illegal combination" MOVDW R1, R2 // ERROR "illegal combination" MOVWF R1, R2 // ERROR "illegal combination" MOVWD R1, R2 // ERROR "illegal combination" MOVWD CPSR, R2 // ERROR "illegal combination" MOVWF CPSR, R2 // ERROR "illegal combination" MOVWD R1, CPSR // ERROR "illegal combination" MOVWF R1, CPSR // ERROR "illegal combination" MOVDW CPSR, R2 // ERROR "illegal combination" MOVFW CPSR, R2 // ERROR "illegal combination" MOVDW R1, CPSR // ERROR "illegal combination" MOVFW R1, CPSR // ERROR "illegal combination" BFX $12, $41, R2, R3 // ERROR "wrong width or LSB" BFX $12, $-2, R2 // ERROR "wrong width or LSB" BFXU $40, $4, R2, R3 // ERROR "wrong width or LSB" BFXU $-40, $4, R2 // ERROR "wrong width or LSB" BFX $-2, $4, R2, R3 // ERROR "wrong width or LSB" BFXU $4, R2, R5, R2 // ERROR "missing or wrong LSB" BFXU $4, R2, R5 // ERROR "missing or wrong LSB" BFC $12, $8, R2, R3 // ERROR "illegal combination" MOVB R0>>8, R2 // ERROR "illegal shift" MOVH R0<<16, R2 // ERROR "illegal shift" MOVBS R0->8, R2 // ERROR "illegal shift" MOVHS R0<<24, R2 // ERROR "illegal shift" MOVBU R0->24, R2 // ERROR "illegal shift" MOVHU R0@>1, R2 // ERROR "illegal shift" XTAB R0>>8, R2 // ERROR "illegal shift" XTAH R0<<16, R2 // ERROR "illegal shift" XTABU R0->24, R2 // ERROR "illegal shift" XTAHU R0@>1, R2 // ERROR "illegal shift" XTAB R0>>8, R5, R2 // ERROR "illegal shift" XTAH R0<<16, R5, R2 // ERROR "illegal shift" XTABU R0->24, R5, R2 // ERROR "illegal shift" XTAHU R0@>1, R5, R2 // ERROR "illegal shift" AND.W R0, R1 // ERROR "invalid .W suffix" ORR.P R2, R3, R4 // ERROR "invalid .P suffix" CMP.S R1, R2 // ERROR "invalid .S suffix" BIC.P $124, R1, R2 // ERROR "invalid .P suffix" MOVW.S $124, R1 // ERROR "invalid .S suffix" MVN.S $123, g // ERROR "invalid .S suffix" RSB.U $0, R9 // ERROR "invalid .U suffix" CMP.S $29, g // ERROR "invalid .S suffix" ADD.W R1<R2, R1 // ERROR "invalid .S suffix" SLL.P R1, R2, R3 // ERROR "invalid .P suffix" SRA.U R2, R8 // ERROR "invalid .U suffix" SWI.S // ERROR "invalid .S suffix" SWI.P $0 // ERROR "invalid .P suffix" MOVW.S $0xaaaaaaaa, R7 // ERROR "invalid .S suffix" MOVW.P $0xffffff44, R1 // ERROR "invalid .P suffix" MOVW.S $0xffffff77, R1 // ERROR "invalid .S suffix" MVN.S $0xffffffaa, R8 // ERROR "invalid .S suffix" MVN.S $0xaaaaaaaa, R8 // ERROR "invalid .S suffix" ADD.U $0xaaaaaaaa, R4 // ERROR "invalid .U suffix" ORR.P $0x555555, R7, R3 // ERROR "invalid .P suffix" TST.S $0xabcd1234, R2 // ERROR "invalid .S suffix" MOVB.S R1, R2 // ERROR "invalid .S suffix" MOVBU.P R1, R2 // ERROR "invalid .P suffix" MOVBS.U R1, R2 // ERROR "invalid .U suffix" MOVH.S R1, R2 // ERROR "invalid .S suffix" MOVHU.P R1, R2 // ERROR "invalid .P suffix" MOVHS.U R1, R2 // ERROR "invalid .U suffix" MUL.P R0, R1, R2 // ERROR "invalid .P suffix" MULU.W R1, R2 // ERROR "invalid .W suffix" DIVHW.S R0, R1, R2 // ERROR "invalid .S suffix" DIVHW.W R1, R2 // ERROR "invalid .W suffix" MULL.W R2, R0, (R5, R8) // ERROR "invalid .W suffix" MULLU.U R2, R0, (R5, R8) // ERROR "invalid .U suffix" BFX.S $2, $4, R3 // ERROR "invalid .S suffix" BFXU.W $2, $4, R3, R0 // ERROR "invalid .W suffix" MOVB.S R1, 4(R2) // ERROR "invalid .S suffix" MOVHU.S R1, 4(R2) // ERROR "invalid .S suffix" MOVW.S R1, 4(R2) // ERROR "invalid .S suffix" MOVBU.S 4(R2), R3 // ERROR "invalid .S suffix" MOVH.S 4(R2), R3 // ERROR "invalid .S suffix" MOVW.S 4(R2), R3 // ERROR "invalid .S suffix" XTAB.S R0@>0, R2 // ERROR "invalid .S suffix" XTAB.W R0@>8, R2, R9 // ERROR "invalid .W suffix" MOVBU.S R0@>24, R1 // ERROR "invalid .S suffix" MOVHS.S R0@>16, R1 // ERROR "invalid .S suffix" MOVB.S R1, 0xaaaa(R2) // ERROR "invalid .S suffix" MOVHU.S R1, 0xaaaa(R2) // ERROR "invalid .S suffix" MOVW.S R1, 0xaaaa(R2) // ERROR "invalid .S suffix" MOVBU.S 0xaaaa(R2), R3 // ERROR "invalid .S suffix" MOVH.S 0xaaaa(R2), R3 // ERROR "invalid .S suffix" MOVW.S 0xaaaa(R2), R3 // ERROR "invalid .S suffix" MOVW.S CPSR, R1 // ERROR "invalid .S suffix" MOVW.S R3, CPSR // ERROR "invalid .S suffix" MOVW.S $0, CPSR // ERROR "invalid .S suffix" MOVM.S (R0), [R2-R4] // ERROR "invalid .S suffix" MOVM.S [R1-R6], (R9) // ERROR "invalid .S suffix" SWPW.S R1, (R2), R3 // ERROR "invalid .S suffix" MOVF.S (R0), F1 // ERROR "invalid .S suffix" MOVF.S F9, (R4) // ERROR "invalid .S suffix" MOVF.S 0xfff0(R0), F1 // ERROR "invalid .S suffix" MOVF.S F9, 0xfff0(R4) // ERROR "invalid .S suffix" ADDF.S F1, F2, F3 // ERROR "invalid .S suffix" SUBD.U F1, F2 // ERROR "invalid .U suffix" NEGF.W F9, F10 // ERROR "invalid .W suffix" ABSD.P F9, F10 // ERROR "invalid .P suffix" MOVW.S FPSR, R0 // ERROR "invalid .S suffix" MOVW.P g, FPSR // ERROR "invalid .P suffix" MOVW.S R1->4(R6), R2 // ERROR "invalid .S suffix" MOVB.S R9, R2<<8(R4) // ERROR "invalid .S suffix" MOVHU.S R9, R2<<0(R4) // ERROR "invalid .S suffix" STREX.S R0, (R1), R2 // ERROR "invalid .S suffix" LDREX.S (R2), R8 // ERROR "invalid .S suffix" MOVF.S $0.0, F3 // ERROR "invalid .S suffix" CMPF.S F1, F2 // ERROR "invalid .S suffix" MOVFW.S F0, F9 // ERROR "invalid .S suffix" MOVWF.W F3, F1 // ERROR "invalid .W suffix" MOVFW.P F0, R9 // ERROR "invalid .P suffix" MOVWF.W R3, F1 // ERROR "invalid .W suffix" MOVW.S F0, R9 // ERROR "invalid .S suffix" MOVW.U R3, F1 // ERROR "invalid .U suffix" PLD.S 4(R1) // ERROR "invalid .S suffix" CLZ.S R1, R2 // ERROR "invalid .S suffix" MULBB.S R0, R1, R2 // ERROR "invalid .S suffix" MULA.W R9, R6, R1, g // ERROR "invalid .W suffix" MULS.S R2, R3, R4, g // ERROR "invalid .S suffix" STREX R1, (R0) // ERROR "illegal combination" STREX (R1), R0 // ERROR "illegal combination" STREX R1, (R0), R1 // ERROR "cannot use same register as both source and destination" STREX R1, (R0), R0 // ERROR "cannot use same register as both source and destination" STREXD R0, (R2), R0 // ERROR "cannot use same register as both source and destination" STREXD R0, (R2), R1 // ERROR "cannot use same register as both source and destination" STREXD R0, (R2), R2 // ERROR "cannot use same register as both source and destination" STREXD R1, (R4), R7 // ERROR "must be even" END