Home | History | Annotate | Download | only in arm32
      1 ; Show that we know how to translate vsub.
      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 float @testVsubFloat(float %v1, float %v2) {
     24 ; ASM-LABEL: testVsubFloat:
     25 ; DIS-LABEL: 00000000 <testVsubFloat>:
     26 ; IASM-LABEL: testVsubFloat:
     27 
     28 entry:
     29 ; ASM-NEXT: .LtestVsubFloat$entry:
     30 ; IASM-NEXT: .LtestVsubFloat$entry:
     31 
     32   %res = fsub float %v1, %v2
     33 
     34 ; ASM-NEXT:     vsub.f32        s0, s0, s1
     35 ; DIS-NEXT:    0:       ee300a60
     36 ; IASM-NEXT: 	.byte 0x60
     37 ; IASM-NEXT: 	.byte 0xa
     38 ; IASM-NEXT: 	.byte 0x30
     39 ; IASM-NEXT: 	.byte 0xee
     40 
     41   ret float %res
     42 }
     43 
     44 define internal double @testVsubDouble(double %v1, double %v2) {
     45 ; ASM-LABEL: testVsubDouble:
     46 ; DIS-LABEL: 00000010 <testVsubDouble>:
     47 ; IASM-LABEL: testVsubDouble:
     48 
     49 entry:
     50 ; ASM-NEXT: .LtestVsubDouble$entry:
     51 ; IASM-NEXT: .LtestVsubDouble$entry:
     52 
     53   %res = fsub double %v1, %v2
     54 
     55 ; ASM-NEXT:     vsub.f64        d0, d0, d1
     56 ; DIS-NEXT:   10:       ee300b41
     57 ; IASM-NEXT: 	.byte 0x41
     58 ; IASM-NEXT: 	.byte 0xb
     59 ; IASM-NEXT: 	.byte 0x30
     60 ; IASM-NEXT: 	.byte 0xee
     61 
     62   ret double %res
     63 }
     64