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