xref: /llvm-project/llvm/test/CodeGen/ARM/float-ops-xo.ll (revision f0ae3c23b5852cb021d1c779f8884e2c94aea7a5)
1*f0ae3c23STies Stuij; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2*f0ae3c23STies Stuij; RUN: llc < %s -mtriple=thumbv8.1m.main-none-eabihf -mattr=+mve,+execute-only | FileCheck %s
3*f0ae3c23STies Stuij; RUN: llc < %s -mtriple=thumbv6m -mattr=+execute-only | FileCheck %s --check-prefix=V6M
4*f0ae3c23STies Stuij
5*f0ae3c23STies Stuijdeclare void @ext_fn(float)
6*f0ae3c23STies Stuij
7*f0ae3c23STies Stuijdefine void @test1() {
8*f0ae3c23STies Stuij; CHECK-LABEL: test1:
9*f0ae3c23STies Stuij; CHECK:       @ %bb.0: @ %entry
10*f0ae3c23STies Stuij; CHECK-NEXT:    .save {r7, lr}
11*f0ae3c23STies Stuij; CHECK-NEXT:    push {r7, lr}
12*f0ae3c23STies Stuij; CHECK-NEXT:    movs r0, #0
13*f0ae3c23STies Stuij; CHECK-NEXT:    vmov s0, r0
14*f0ae3c23STies Stuij; CHECK-NEXT:    bl ext_fn
15*f0ae3c23STies Stuij; CHECK-NEXT:    pop {r7, pc}
16*f0ae3c23STies Stuij;
17*f0ae3c23STies Stuij; V6M-LABEL: test1:
18*f0ae3c23STies Stuij; V6M:       @ %bb.0: @ %entry
19*f0ae3c23STies Stuij; V6M-NEXT:    push {r7, lr}
20*f0ae3c23STies Stuij; V6M-NEXT:    movs r0, #0
21*f0ae3c23STies Stuij; V6M-NEXT:    bl ext_fn
22*f0ae3c23STies Stuij; V6M-NEXT:    pop {r7, pc}
23*f0ae3c23STies Stuijentry:
24*f0ae3c23STies Stuij  call void @ext_fn(float 0.000000e+00)
25*f0ae3c23STies Stuij  ret void
26*f0ae3c23STies Stuij}
27*f0ae3c23STies Stuij
28*f0ae3c23STies Stuijdefine float @test2() {
29*f0ae3c23STies Stuij; CHECK-LABEL: test2:
30*f0ae3c23STies Stuij; CHECK:       @ %bb.0: @ %entry
31*f0ae3c23STies Stuij; CHECK-NEXT:    movw r0, #63911
32*f0ae3c23STies Stuij; CHECK-NEXT:    movt r0, #16673
33*f0ae3c23STies Stuij; CHECK-NEXT:    vmov s0, r0
34*f0ae3c23STies Stuij; CHECK-NEXT:    bx lr
35*f0ae3c23STies Stuij;
36*f0ae3c23STies Stuij; V6M-LABEL: test2:
37*f0ae3c23STies Stuij; V6M:       @ %bb.0: @ %entry
38*f0ae3c23STies Stuij; V6M-NEXT:    movs r0, #65
39*f0ae3c23STies Stuij; V6M-NEXT:    lsls r0, r0, #8
40*f0ae3c23STies Stuij; V6M-NEXT:    adds r0, #33
41*f0ae3c23STies Stuij; V6M-NEXT:    lsls r0, r0, #8
42*f0ae3c23STies Stuij; V6M-NEXT:    adds r0, #249
43*f0ae3c23STies Stuij; V6M-NEXT:    lsls r0, r0, #8
44*f0ae3c23STies Stuij; V6M-NEXT:    adds r0, #167
45*f0ae3c23STies Stuij; V6M-NEXT:    bx lr
46*f0ae3c23STies Stuijentry:
47*f0ae3c23STies Stuij  ret float 0x40243F34E0000000
48*f0ae3c23STies Stuij}
49*f0ae3c23STies Stuij
50