Home | History | Annotate | Download | only in cris
      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