1; Test error message for mul insns at locations likely to trig
2; a hardware bug.
3
4;  { dg-do assemble { target cris-*-* } }
5;  { dg-options "--em=criself" }
6
7 ; First, .text isn't dword-aligned by default.
8 .text
9 muls.w $r1,$r4 ; { dg-error "align" }
10 nop
11 muls.b $r1,$r4 ; { dg-error "align" }
12 mulu.d $r1,$r4 ; { dg-error "align" }
13
14; Neither are other code sections, aligned to word.
15 .section .text.1,"ax",@progbits
16 .p2align 1
17 muls.w $r1,$r4 ; { dg-error "align" }
18 nop
19 mulu.b $r1,$r4 ; { dg-error "align" }
20 muls.d $r1,$r4 ; { dg-error "align" }
21
22; Now, a section aligned to dword.  Errors for certain relative
23; positions only.
24 .section .text.2,"ax",@progbits
25 .p2align 2
26 mulu.w $r1,$r4
27 nop
28 muls.d $r1,$r4
29 mulu.w $r1,$r4 ; { dg-error "align" }
30
31; For good measure, a cache-line-aligned section.
32 .section .text.3,"ax",@progbits
33 .p2align 5
34 muls.w $r1,$r4
35 mulu.d $r4,$r1
36 mulu.b $r1,$r4
37 .rept 12
38 nop
39 .endr
40 mulu.b $r1,$r4 ; { dg-error "align" }
41 mulu.b $r1,$r4
42
43; Last, make sure typical alignment use by a fixed gcc passes.
44 .section .text.4,"ax",@progbits
45 .align 1
46 moveq 0,$r13
47 moveq 1,$r13
48 .p2alignw 5,0x050f,2
49 muls.d $r1,$r4
50 .rept 12
51 moveq 2,$r13
52 .endr
53 .p2alignw 5,0x050f,2
54 muls.w $r1,$r4
55 .p2alignw 5,0x050f,2
56 muls.b $r4,$r1
57