Home | History | Annotate | Download | only in arm32
      1 ; Show that we know how to translate mov (shifted register), which
      2 ; are pseudo instructions for ASR, LSR, ROR, and RRX.
      3 
      4 ; NOTE: We use -O2 to get rid of memory stores.
      5 
      6 ; REQUIRES: allow_dump
      7 
      8 ; Compile using standalone assembler.
      9 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --args -O2 \
     10 ; RUN:   | FileCheck %s --check-prefix=ASM
     11 
     12 ; Show bytes in assembled standalone code.
     13 ; RUN: %p2i --filetype=asm -i %s --target=arm32 --assemble --disassemble \
     14 ; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
     15 
     16 ; Compile using integrated assembler.
     17 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --args -O2 \
     18 ; RUN:   | FileCheck %s --check-prefix=IASM
     19 
     20 ; Show bytes in assembled integrated code.
     21 ; RUN: %p2i --filetype=iasm -i %s --target=arm32 --assemble --disassemble \
     22 ; RUN:   --args -O2 | FileCheck %s --check-prefix=DIS
     23 
     24 define internal i64 @testMovWithAsr(i32 %a) {
     25 ; ASM-LABEL:testMovWithAsr:
     26 ; DIS-LABEL:00000000 <testMovWithAsr>:
     27 ; IASM-LABEL:testMovWithAsr:
     28 
     29 entry:
     30 ; ASM-NEXT:.LtestMovWithAsr$entry:
     31 ; IASM-NEXT:.LtestMovWithAsr$entry:
     32 
     33   %a.arg_trunc = trunc i32 %a to i8
     34   %conv = sext i8 %a.arg_trunc to i64
     35   ret i64 %conv
     36 
     37 ; ASM-NEXT:     sxtb    r0, r0
     38 ; DIS-NEXT:   0:        e6af0070
     39 ; IASM-NEXT:    .byte 0x70
     40 ; IASM-NEXT:    .byte 0x0
     41 ; IASM-NEXT:    .byte 0xaf
     42 ; IASM-NEXT:    .byte 0xe6
     43 
     44 ; ***** Example of mov pseudo instruction.
     45 ; ASM-NEXT:     mov     r1, r0, asr #31
     46 ; DIS-NEXT:   4:        e1a01fc0
     47 ; IASM-NEXT:    .byte 0xc0
     48 ; IASM-NEXT:    .byte 0x1f
     49 ; IASM-NEXT:    .byte 0xa0
     50 ; IASM-NEXT:    .byte 0xe1
     51 
     52 ; ASM-NEXT:     bx      lr
     53 
     54 }
     55