Home | History | Annotate | Download | only in arm32
      1 ; Show that we know how to translate rbit.
      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 declare i32 @llvm.cttz.i32(i32, i1)
     24 
     25 define internal i32 @testRbit(i32 %a) {
     26 ; ASM-LABEL: testRbit:
     27 ; DIS-LABEL: 00000000 <testRbit>:
     28 ; IASM-LABEL: testRbit:
     29 
     30 entry:
     31 ; ASM-NEXT: .LtestRbit$entry:
     32 ; IASM-NEXT: .LtestRbit$entry:
     33 
     34   %x = call i32 @llvm.cttz.i32(i32 %a, i1 0)
     35 
     36 ; ASM-NEXT:     rbit    r0, r0
     37 ; DIS-NEXT:    0:       e6ff0f30
     38 ; IASM-NEXT:    .byte 0x30
     39 ; IASM-NEXT:    .byte 0xf
     40 ; IASM-NEXT:    .byte 0xff
     41 ; IASM-NEXT:    .byte 0xe6
     42 
     43   ret i32 %x
     44 }
     45