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