xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/arm64-fast-isel-materialize.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O0 -fast-isel-abort=1 -verify-machineinstrs -mtriple=arm64-apple-darwin < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; Materialize using fmov
4*9880d681SAndroid Build Coastguard Workerdefine float @fmov_float1() {
5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fmov_float1
6*9880d681SAndroid Build Coastguard Worker; CHECK:       fmov s0, #1.25000000
7*9880d681SAndroid Build Coastguard Worker  ret float 1.250000e+00
8*9880d681SAndroid Build Coastguard Worker}
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Workerdefine float @fmov_float2() {
11*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fmov_float2
12*9880d681SAndroid Build Coastguard Worker; CHECK:       fmov s0, wzr
13*9880d681SAndroid Build Coastguard Worker  ret float 0.0e+00
14*9880d681SAndroid Build Coastguard Worker}
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Workerdefine double @fmov_double1() {
17*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fmov_double1
18*9880d681SAndroid Build Coastguard Worker; CHECK:       fmov d0, #1.25000000
19*9880d681SAndroid Build Coastguard Worker  ret double 1.250000e+00
20*9880d681SAndroid Build Coastguard Worker}
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workerdefine double @fmov_double2() {
23*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: fmov_double2
24*9880d681SAndroid Build Coastguard Worker; CHECK:       fmov d0, xzr
25*9880d681SAndroid Build Coastguard Worker  ret double 0.0e+00
26*9880d681SAndroid Build Coastguard Worker}
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Worker; Materialize from constant pool
29*9880d681SAndroid Build Coastguard Workerdefine float @cp_float() {
30*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cp_float
31*9880d681SAndroid Build Coastguard Worker; CHECK:       adrp [[REG:x[0-9]+]], {{lCPI[0-9]+_0}}@PAGE
32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ldr s0, {{\[}}[[REG]], {{lCPI[0-9]+_0}}@PAGEOFF{{\]}}
33*9880d681SAndroid Build Coastguard Worker  ret float 0x400921FB60000000
34*9880d681SAndroid Build Coastguard Worker}
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Workerdefine double @cp_double() {
37*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: cp_double
38*9880d681SAndroid Build Coastguard Worker; CHECK:       adrp [[REG:x[0-9]+]], {{lCPI[0-9]+_0}}@PAGE
39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:  ldr d0, {{\[}}[[REG]], {{lCPI[0-9]+_0}}@PAGEOFF{{\]}}
40*9880d681SAndroid Build Coastguard Worker  ret double 0x400921FB54442D18
41*9880d681SAndroid Build Coastguard Worker}
42