• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; Show that we know how to translate vmul.
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
23define internal float @testVmulFloat(float %a, float %b) {
24; ASM-LABEL: testVmulFloat:
25; DIS-LABEL: 00000000 <testVmulFloat>:
26; IASM-LABEL: testVmulFloat:
27
28entry:
29; ASM-NEXT: .LtestVmulFloat$entry:
30; IASM-NEXT: .LtestVmulFloat$entry:
31
32  %mul = fmul float %a, %b
33
34; ASM-NEXT:    vmul.f32        s0, s0, s1
35; DIS-NEXT:    0:       ee200a20
36; IASM-NEXT:    .byte 0x20
37; IASM-NEXT:    .byte 0xa
38; IASM-NEXT:    .byte 0x20
39; IASM-NEXT:    .byte 0xee
40
41  ret float %mul
42}
43
44define internal double @testVmulDouble(double %a, double %b) {
45; ASM-LABEL: testVmulDouble:
46; DIS-LABEL: 00000010 <testVmulDouble>:
47; IASM-LABEL: testVmulDouble:
48
49entry:
50; ASM-NEXT: .LtestVmulDouble$entry:
51; IASM-NEXT: .LtestVmulDouble$entry:
52
53  %mul = fmul double %a, %b
54
55; ASM-NEXT:    vmul.f64        d0, d0, d1
56; DIS-NEXT:   10:       ee200b01
57; IASM-NEXT:    .byte 0x1
58; IASM-NEXT:    .byte 0xb
59; IASM-NEXT:    .byte 0x20
60; IASM-NEXT:    .byte 0xee
61
62  ret double %mul
63}
64