Text file src/cmd/asm/internal/asm/testdata/armerror.s

     1  // Copyright 2017 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  TEXT errors(SB),$0
     6  	MOVW	(F0), R1           // ERROR "illegal base register"
     7  	MOVB	(F0), R1           // ERROR "illegal base register"
     8  	MOVH	(F0), R1           // ERROR "illegal base register"
     9  	MOVF	(F0), F1           // ERROR "illegal base register"
    10  	MOVD	(F0), F1           // ERROR "illegal base register"
    11  	MOVW	R1, (F0)           // ERROR "illegal base register"
    12  	MOVB	R2, (F0)           // ERROR "illegal base register"
    13  	MOVH	R3, (F0)           // ERROR "illegal base register"
    14  	MOVF	F4, (F0)           // ERROR "illegal base register"
    15  	MOVD	F5, (F0)           // ERROR "illegal base register"
    16  	MOVM.IA	(F1), [R0-R4]      // ERROR "illegal base register"
    17  	MOVM.DA	(F1), [R0-R4]      // ERROR "illegal base register"
    18  	MOVM.IB	(F1), [R0-R4]      // ERROR "illegal base register"
    19  	MOVM.DB	(F1), [R0-R4]      // ERROR "illegal base register"
    20  	MOVM.IA	[R0-R4], (F1)      // ERROR "illegal base register"
    21  	MOVM.DA	[R0-R4], (F1)      // ERROR "illegal base register"
    22  	MOVM.IB	[R0-R4], (F1)      // ERROR "illegal base register"
    23  	MOVM.DB	[R0-R4], (F1)      // ERROR "illegal base register"
    24  	MOVW	R0<<0(F1), R1      // ERROR "illegal base register"
    25  	MOVB	R0<<0(F1), R1      // ERROR "illegal base register"
    26  	MOVW	R1, R0<<0(F1)      // ERROR "illegal base register"
    27  	MOVB	R2, R0<<0(F1)      // ERROR "illegal base register"
    28  	MOVF	0x00ffffff(F2), F1 // ERROR "illegal base register"
    29  	MOVD	0x00ffffff(F2), F1 // ERROR "illegal base register"
    30  	MOVF	F2, 0x00ffffff(F2) // ERROR "illegal base register"
    31  	MOVD	F2, 0x00ffffff(F2) // ERROR "illegal base register"
    32  	MULS.S	R1, R2, R3, R4     // ERROR "invalid .S suffix"
    33  	ADD.P	R1, R2, R3         // ERROR "invalid .P suffix"
    34  	SUB.W	R2, R3             // ERROR "invalid .W suffix"
    35  	BL	4(R4)              // ERROR "non-zero offset"
    36  	ADDF	F0, R1, F2         // ERROR "illegal combination"
    37  	SWI	(R0)               // ERROR "illegal combination"
    38  	MULAD	F0, F1             // ERROR "illegal combination"
    39  	MULAF	F0, F1             // ERROR "illegal combination"
    40  	MULSD	F0, F1             // ERROR "illegal combination"
    41  	MULSF	F0, F1             // ERROR "illegal combination"
    42  	NMULAD	F0, F1             // ERROR "illegal combination"
    43  	NMULAF	F0, F1             // ERROR "illegal combination"
    44  	NMULSD	F0, F1             // ERROR "illegal combination"
    45  	NMULSF	F0, F1             // ERROR "illegal combination"
    46  	FMULAD	F0, F1             // ERROR "illegal combination"
    47  	FMULAF	F0, F1             // ERROR "illegal combination"
    48  	FMULSD	F0, F1             // ERROR "illegal combination"
    49  	FMULSF	F0, F1             // ERROR "illegal combination"
    50  	FNMULAD	F0, F1             // ERROR "illegal combination"
    51  	FNMULAF	F0, F1             // ERROR "illegal combination"
    52  	FNMULSD	F0, F1             // ERROR "illegal combination"
    53  	FNMULSF	F0, F1             // ERROR "illegal combination"
    54  	NEGF	F0, F1, F2         // ERROR "illegal combination"
    55  	NEGD	F0, F1, F2         // ERROR "illegal combination"
    56  	ABSF	F0, F1, F2         // ERROR "illegal combination"
    57  	ABSD	F0, F1, F2         // ERROR "illegal combination"
    58  	SQRTF	F0, F1, F2         // ERROR "illegal combination"
    59  	SQRTD	F0, F1, F2         // ERROR "illegal combination"
    60  	MOVF	F0, F1, F2         // ERROR "illegal combination"
    61  	MOVD	F0, F1, F2         // ERROR "illegal combination"
    62  	MOVDF	F0, F1, F2         // ERROR "illegal combination"
    63  	MOVFD	F0, F1, F2         // ERROR "illegal combination"
    64  	MOVM.IA	4(R1), [R0-R4]     // ERROR "offset must be zero"
    65  	MOVM.DA	4(R1), [R0-R4]     // ERROR "offset must be zero"
    66  	MOVM.IB	4(R1), [R0-R4]     // ERROR "offset must be zero"
    67  	MOVM.DB	4(R1), [R0-R4]     // ERROR "offset must be zero"
    68  	MOVM.IA	[R0-R4], 4(R1)     // ERROR "offset must be zero"
    69  	MOVM.DA	[R0-R4], 4(R1)     // ERROR "offset must be zero"
    70  	MOVM.IB	[R0-R4], 4(R1)     // ERROR "offset must be zero"
    71  	MOVM.DB	[R0-R4], 4(R1)     // ERROR "offset must be zero"
    72  	MOVW	CPSR, FPSR         // ERROR "illegal combination"
    73  	MOVW	FPSR, CPSR         // ERROR "illegal combination"
    74  	MOVW	CPSR, errors(SB)   // ERROR "illegal combination"
    75  	MOVW	errors(SB), CPSR   // ERROR "illegal combination"
    76  	MOVW	FPSR, errors(SB)   // ERROR "illegal combination"
    77  	MOVW	errors(SB), FPSR   // ERROR "illegal combination"
    78  	MOVW	F0, errors(SB)     // ERROR "illegal combination"
    79  	MOVW	errors(SB), F0     // ERROR "illegal combination"
    80  	MOVW	$20, errors(SB)    // ERROR "illegal combination"
    81  	MOVW	errors(SB), $20    // ERROR "illegal combination"
    82  	MOVW	(R1), [R0-R4]      // ERROR "illegal combination"
    83  	MOVW	[R0-R4], (R1)      // ERROR "illegal combination"
    84  	MOVB	$245, R1           // ERROR "illegal combination"
    85  	MOVH	$245, R1           // ERROR "illegal combination"
    86  	MOVB	$0xff000000, R1    // ERROR "illegal combination"
    87  	MOVH	$0xff000000, R1    // ERROR "illegal combination"
    88  	MOVB	$0x00ffffff, R1    // ERROR "illegal combination"
    89  	MOVH	$0x00ffffff, R1    // ERROR "illegal combination"
    90  	MOVB	FPSR, g            // ERROR "illegal combination"
    91  	MOVH	FPSR, g            // ERROR "illegal combination"
    92  	MOVB	g, FPSR            // ERROR "illegal combination"
    93  	MOVH	g, FPSR            // ERROR "illegal combination"
    94  	MOVB	CPSR, g            // ERROR "illegal combination"
    95  	MOVH	CPSR, g            // ERROR "illegal combination"
    96  	MOVB	g, CPSR            // ERROR "illegal combination"
    97  	MOVH	g, CPSR            // ERROR "illegal combination"
    98  	MOVB	$0xff000000, CPSR  // ERROR "illegal combination"
    99  	MOVH	$0xff000000, CPSR  // ERROR "illegal combination"
   100  	MOVB	$0xff000000, FPSR  // ERROR "illegal combination"
   101  	MOVH	$0xff000000, FPSR  // ERROR "illegal combination"
   102  	MOVB	$0xffffff00, CPSR  // ERROR "illegal combination"
   103  	MOVH	$0xffffff00, CPSR  // ERROR "illegal combination"
   104  	MOVB	$0xfffffff0, FPSR  // ERROR "illegal combination"
   105  	MOVH	$0xfffffff0, FPSR  // ERROR "illegal combination"
   106  	MOVB	(R1), [R0-R4]      // ERROR "illegal combination"
   107  	MOVB	[R0-R4], (R1)      // ERROR "illegal combination"
   108  	MOVH	(R1), [R0-R4]      // ERROR "illegal combination"
   109  	MOVH	[R0-R4], (R1)      // ERROR "illegal combination"
   110  	MOVB	$0xff(R0), R1      // ERROR "illegal combination"
   111  	MOVH	$0xff(R0), R1      // ERROR "illegal combination"
   112  	MOVB	$errors(SB), R2    // ERROR "illegal combination"
   113  	MOVH	$errors(SB), R2    // ERROR "illegal combination"
   114  	MOVB	F0, R0             // ERROR "illegal combination"
   115  	MOVH	F0, R0             // ERROR "illegal combination"
   116  	MOVB	R0, F0             // ERROR "illegal combination"
   117  	MOVH	R0, F0             // ERROR "illegal combination"
   118  	MOVB	R0>>0(R1), R2      // ERROR "bad shift"
   119  	MOVB	R0->0(R1), R2      // ERROR "bad shift"
   120  	MOVB	R0@>0(R1), R2      // ERROR "bad shift"
   121  	MOVBS	R0>>0(R1), R2      // ERROR "bad shift"
   122  	MOVBS	R0->0(R1), R2      // ERROR "bad shift"
   123  	MOVBS	R0@>0(R1), R2      // ERROR "bad shift"
   124  	MOVF	CPSR, F1           // ERROR "illegal combination"
   125  	MOVD	R1, CPSR           // ERROR "illegal combination"
   126  	MOVW	F1, F2             // ERROR "illegal combination"
   127  	MOVB	F1, F2             // ERROR "illegal combination"
   128  	MOVH	F1, F2             // ERROR "illegal combination"
   129  	MOVF	R1, F2             // ERROR "illegal combination"
   130  	MOVD	R1, F2             // ERROR "illegal combination"
   131  	MOVF	R1, R1             // ERROR "illegal combination"
   132  	MOVD	R1, R2             // ERROR "illegal combination"
   133  	MOVFW	R1, R2             // ERROR "illegal combination"
   134  	MOVDW	R1, R2             // ERROR "illegal combination"
   135  	MOVWF	R1, R2             // ERROR "illegal combination"
   136  	MOVWD	R1, R2             // ERROR "illegal combination"
   137  	MOVWD	CPSR, R2           // ERROR "illegal combination"
   138  	MOVWF	CPSR, R2           // ERROR "illegal combination"
   139  	MOVWD	R1, CPSR           // ERROR "illegal combination"
   140  	MOVWF	R1, CPSR           // ERROR "illegal combination"
   141  	MOVDW	CPSR, R2           // ERROR "illegal combination"
   142  	MOVFW	CPSR, R2           // ERROR "illegal combination"
   143  	MOVDW	R1, CPSR           // ERROR "illegal combination"
   144  	MOVFW	R1, CPSR           // ERROR "illegal combination"
   145  	BFX	$12, $41, R2, R3   // ERROR "wrong width or LSB"
   146  	BFX	$12, $-2, R2       // ERROR "wrong width or LSB"
   147  	BFXU	$40, $4, R2, R3    // ERROR "wrong width or LSB"
   148  	BFXU	$-40, $4, R2       // ERROR "wrong width or LSB"
   149  	BFX	$-2, $4, R2, R3    // ERROR "wrong width or LSB"
   150  	BFXU	$4, R2, R5, R2     // ERROR "missing or wrong LSB"
   151  	BFXU	$4, R2, R5         // ERROR "missing or wrong LSB"
   152  	BFC	$12, $8, R2, R3    // ERROR "illegal combination"
   153  	MOVB	R0>>8, R2          // ERROR "illegal shift"
   154  	MOVH	R0<<16, R2         // ERROR "illegal shift"
   155  	MOVBS	R0->8, R2          // ERROR "illegal shift"
   156  	MOVHS	R0<<24, R2         // ERROR "illegal shift"
   157  	MOVBU	R0->24, R2         // ERROR "illegal shift"
   158  	MOVHU	R0@>1, R2          // ERROR "illegal shift"
   159  	XTAB	R0>>8, R2          // ERROR "illegal shift"
   160  	XTAH	R0<<16, R2         // ERROR "illegal shift"
   161  	XTABU	R0->24, R2         // ERROR "illegal shift"
   162  	XTAHU	R0@>1, R2          // ERROR "illegal shift"
   163  	XTAB	R0>>8, R5, R2      // ERROR "illegal shift"
   164  	XTAH	R0<<16, R5, R2     // ERROR "illegal shift"
   165  	XTABU	R0->24, R5, R2     // ERROR "illegal shift"
   166  	XTAHU	R0@>1, R5, R2      // ERROR "illegal shift"
   167  	AND.W	R0, R1             // ERROR "invalid .W suffix"
   168  	ORR.P	R2, R3, R4         // ERROR "invalid .P suffix"
   169  	CMP.S	R1, R2	           // ERROR "invalid .S suffix"
   170  	BIC.P	$124, R1, R2       // ERROR "invalid .P suffix"
   171  	MOVW.S	$124, R1           // ERROR "invalid .S suffix"
   172  	MVN.S	$123, g            // ERROR "invalid .S suffix"
   173  	RSB.U	$0, R9             // ERROR "invalid .U suffix"
   174  	CMP.S	$29, g             // ERROR "invalid .S suffix"
   175  	ADD.W	R1<<R2, R3         // ERROR "invalid .W suffix"
   176  	SUB.U	R1<<R2, R3, R9     // ERROR "invalid .U suffix"
   177  	CMN.S	R5->R2, R1         // ERROR "invalid .S suffix"
   178  	SLL.P	R1, R2, R3         // ERROR "invalid .P suffix"
   179  	SRA.U	R2, R8             // ERROR "invalid .U suffix"
   180  	SWI.S                      // ERROR "invalid .S suffix"
   181  	SWI.P	$0                 // ERROR "invalid .P suffix"
   182  	MOVW.S	$0xaaaaaaaa, R7    // ERROR "invalid .S suffix"
   183  	MOVW.P	$0xffffff44, R1    // ERROR "invalid .P suffix"
   184  	MOVW.S	$0xffffff77, R1    // ERROR "invalid .S suffix"
   185  	MVN.S	$0xffffffaa, R8    // ERROR "invalid .S suffix"
   186  	MVN.S	$0xaaaaaaaa, R8    // ERROR "invalid .S suffix"
   187  	ADD.U	$0xaaaaaaaa, R4    // ERROR "invalid .U suffix"
   188  	ORR.P	$0x555555, R7, R3  // ERROR "invalid .P suffix"
   189  	TST.S	$0xabcd1234, R2    // ERROR "invalid .S suffix"
   190  	MOVB.S	R1, R2             // ERROR "invalid .S suffix"
   191  	MOVBU.P	R1, R2             // ERROR "invalid .P suffix"
   192  	MOVBS.U	R1, R2             // ERROR "invalid .U suffix"
   193  	MOVH.S	R1, R2             // ERROR "invalid .S suffix"
   194  	MOVHU.P	R1, R2             // ERROR "invalid .P suffix"
   195  	MOVHS.U	R1, R2             // ERROR "invalid .U suffix"
   196  	MUL.P	R0, R1, R2         // ERROR "invalid .P suffix"
   197  	MULU.W	R1, R2             // ERROR "invalid .W suffix"
   198  	DIVHW.S	R0, R1, R2         // ERROR "invalid .S suffix"
   199  	DIVHW.W	R1, R2             // ERROR "invalid .W suffix"
   200  	MULL.W	R2, R0, (R5, R8)   // ERROR "invalid .W suffix"
   201  	MULLU.U	R2, R0, (R5, R8)   // ERROR "invalid .U suffix"
   202  	BFX.S	$2, $4, R3         // ERROR "invalid .S suffix"
   203  	BFXU.W	$2, $4, R3, R0     // ERROR "invalid .W suffix"
   204  	MOVB.S	R1, 4(R2)          // ERROR "invalid .S suffix"
   205  	MOVHU.S	R1, 4(R2)          // ERROR "invalid .S suffix"
   206  	MOVW.S	R1, 4(R2)          // ERROR "invalid .S suffix"
   207  	MOVBU.S	4(R2), R3          // ERROR "invalid .S suffix"
   208  	MOVH.S	4(R2), R3          // ERROR "invalid .S suffix"
   209  	MOVW.S	4(R2), R3          // ERROR "invalid .S suffix"
   210  	XTAB.S	R0@>0, R2          // ERROR "invalid .S suffix"
   211  	XTAB.W	R0@>8, R2, R9      // ERROR "invalid .W suffix"
   212  	MOVBU.S	R0@>24, R1         // ERROR "invalid .S suffix"
   213  	MOVHS.S	R0@>16, R1         // ERROR "invalid .S suffix"
   214  	MOVB.S	R1, 0xaaaa(R2)     // ERROR "invalid .S suffix"
   215  	MOVHU.S	R1, 0xaaaa(R2)     // ERROR "invalid .S suffix"
   216  	MOVW.S	R1, 0xaaaa(R2)     // ERROR "invalid .S suffix"
   217  	MOVBU.S	0xaaaa(R2), R3     // ERROR "invalid .S suffix"
   218  	MOVH.S	0xaaaa(R2), R3     // ERROR "invalid .S suffix"
   219  	MOVW.S	0xaaaa(R2), R3     // ERROR "invalid .S suffix"
   220  	MOVW.S	CPSR, R1           // ERROR "invalid .S suffix"
   221  	MOVW.S	R3, CPSR           // ERROR "invalid .S suffix"
   222  	MOVW.S	$0, CPSR           // ERROR "invalid .S suffix"
   223  	MOVM.S	(R0), [R2-R4]      // ERROR "invalid .S suffix"
   224  	MOVM.S	[R1-R6], (R9)      // ERROR "invalid .S suffix"
   225  	SWPW.S	R1, (R2), R3       // ERROR "invalid .S suffix"
   226  	MOVF.S	(R0), F1           // ERROR "invalid .S suffix"
   227  	MOVF.S	F9, (R4)           // ERROR "invalid .S suffix"
   228  	MOVF.S	0xfff0(R0), F1     // ERROR "invalid .S suffix"
   229  	MOVF.S	F9, 0xfff0(R4)     // ERROR "invalid .S suffix"
   230  	ADDF.S	F1, F2, F3         // ERROR "invalid .S suffix"
   231  	SUBD.U	F1, F2             // ERROR "invalid .U suffix"
   232  	NEGF.W	F9, F10            // ERROR "invalid .W suffix"
   233  	ABSD.P	F9, F10            // ERROR "invalid .P suffix"
   234  	MOVW.S	FPSR, R0           // ERROR "invalid .S suffix"
   235  	MOVW.P	g, FPSR            // ERROR "invalid .P suffix"
   236  	MOVW.S	R1->4(R6), R2      // ERROR "invalid .S suffix"
   237  	MOVB.S	R9, R2<<8(R4)      // ERROR "invalid .S suffix"
   238  	MOVHU.S	R9, R2<<0(R4)      // ERROR "invalid .S suffix"
   239  	STREX.S R0, (R1), R2       // ERROR "invalid .S suffix"
   240  	LDREX.S	(R2), R8           // ERROR "invalid .S suffix"
   241  	MOVF.S	$0.0, F3           // ERROR "invalid .S suffix"
   242  	CMPF.S	F1, F2             // ERROR "invalid .S suffix"
   243  	MOVFW.S	F0, F9             // ERROR "invalid .S suffix"
   244  	MOVWF.W	F3, F1             // ERROR "invalid .W suffix"
   245  	MOVFW.P	F0, R9             // ERROR "invalid .P suffix"
   246  	MOVWF.W	R3, F1             // ERROR "invalid .W suffix"
   247  	MOVW.S	F0, R9             // ERROR "invalid .S suffix"
   248  	MOVW.U	R3, F1             // ERROR "invalid .U suffix"
   249  	PLD.S	4(R1)              // ERROR "invalid .S suffix"
   250  	CLZ.S	R1, R2             // ERROR "invalid .S suffix"
   251  	MULBB.S	R0, R1, R2         // ERROR "invalid .S suffix"
   252  	MULA.W	R9, R6, R1, g      // ERROR "invalid .W suffix"
   253  	MULS.S	R2, R3, R4, g      // ERROR "invalid .S suffix"
   254  
   255  	STREX	R1, (R0)           // ERROR "illegal combination"
   256  	STREX	(R1), R0           // ERROR "illegal combination"
   257  	STREX	R1, (R0), R1       // ERROR "cannot use same register as both source and destination"
   258  	STREX	R1, (R0), R0       // ERROR "cannot use same register as both source and destination"
   259  	STREXD	R0, (R2), R0       // ERROR "cannot use same register as both source and destination"
   260  	STREXD	R0, (R2), R1       // ERROR "cannot use same register as both source and destination"
   261  	STREXD	R0, (R2), R2       // ERROR "cannot use same register as both source and destination"
   262  	STREXD	R1, (R4), R7       // ERROR "must be even"
   263  
   264  	END
   265  

View as plain text