Home | History | Annotate | Download | only in arm32
      1 ; Show that we know how to translate bic.
      2 
      3 ; NOTE: We use -O2 to get rid of memory stores.
      4 
      5 ; REQUIRES: allow_dump
      6 
      7 ; Compile using standalone assembler.
      8 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
      9 ; RUN:   | FileCheck %s --check-prefix=ASM
     10 
     11 ; Show bytes in assembled standalone code.
     12 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
     13 ; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
     14 
     15 ; Compile using integrated assembler.
     16 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
     17 ; RUN:   | FileCheck %s --check-prefix=IASM
     18 
     19 ; Show bytes in assembled integrated code.
     20 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
     21 ; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
     22 
     23 define internal i32 @AllocBigAlign() {
     24   %addr = alloca i8, align 32
     25   %v = ptrtoint i8* %addr to i32
     26   ret i32 %v
     27 }
     28 
     29 ; ASM-LABEL:AllocBigAlign:
     30 ; ASM-NEXT:.LAllocBigAlign$__0:
     31 ; DIS-LABEL:00000000 <AllocBigAlign>:
     32 ; IASM-LABEL:AllocBigAlign:
     33 ; IASM-NEXT:.LAllocBigAlign$__0:
     34 
     35 ; ASM-NEXT:  push    {fp}
     36 ; DIS-NEXT:   0:        e52db004
     37 ; IASM-NEXT:    .byte 0x4
     38 ; IASM-NEXT:    .byte 0xb0
     39 ; IASM-NEXT:    .byte 0x2d
     40 ; IASM-NEXT:    .byte 0xe5
     41 
     42 ; ASM-NEXT:  mov     fp, sp
     43 ; DIS-NEXT:   4:        e1a0b00d
     44 ; IASM:         .byte 0xd
     45 ; IASM-NEXT:    .byte 0xb0
     46 ; IASM-NEXT:    .byte 0xa0
     47 ; IASM-NEXT:    .byte 0xe1
     48 
     49 ; ASM-NEXT:  sub     sp, sp, #32
     50 ; DIS-NEXT:   8:        e24dd020
     51 ; IASM:         .byte 0x20
     52 ; IASM-NEXT:    .byte 0xd0
     53 ; IASM-NEXT:    .byte 0x4d
     54 ; IASM-NEXT:    .byte 0xe2
     55 
     56 ; ASM-NEXT:  bic     sp, sp, #31
     57 ; DIS-NEXT:   c:        e3cdd01f
     58 ; IASM:         .byte 0x1f
     59 ; IASM-NEXT:    .byte 0xd0
     60 ; IASM-NEXT:    .byte 0xcd
     61 ; IASM-NEXT:    .byte 0xe3
     62 
     63 ; ASM-NEXT:  # sp = def.pseudo
     64 
     65 ; ASM-NEXT:  add     r0, sp, #0
     66 ; DIS-NEXT:  10:        e28d0000
     67 ; IASM:         .byte 0x0
     68 ; IASM-NEXT:    .byte 0x0
     69 ; IASM-NEXT:    .byte 0x8d
     70 ; IASM-NEXT:    .byte 0xe2
     71 
     72 ; ASM-NEXT:  mov     sp, fp
     73 ; DIS-NEXT:  14:        e1a0d00b
     74 ; IASM:         .byte 0xb
     75 ; IASM-NEXT:    .byte 0xd0
     76 ; IASM-NEXT:    .byte 0xa0
     77 ; IASM-NEXT:    .byte 0xe1
     78 
     79 ; ASM-NEXT:  pop     {fp}
     80 ; DIS-NEXT:  18:        e49db004
     81 ; IASM-NEXT:    .byte 0x4
     82 ; IASM-NEXT:    .byte 0xb0
     83 ; IASM-NEXT:    .byte 0x9d
     84 ; IASM-NEXT:    .byte 0xe4
     85 
     86 ; ASM-NEXT:  # fp = def.pseudo
     87 
     88 ; ASM-NEXT:  bx      lr
     89 ; DIS-NEXT:  1c:        e12fff1e
     90 ; IASM:         .byte 0x1e
     91 ; IASM-NEXT:    .byte 0xff
     92 ; IASM-NEXT:    .byte 0x2f
     93 ; IASM-NEXT:    .byte 0xe1
     94