# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6 # RUN: llc -verify-machineinstrs -mtriple aarch64-unknown-unknown -run-pass=instruction-select %s -o - | FileCheck %s --- name: test_modf_fp128 alignment: 4 legalized: true regBankSelected: true tracksRegLiveness: true liveins: - { reg: '$q0' } frameInfo: maxAlignment: 16 stack: - { id: 0, size: 16, alignment: 16 } body: | bb.1: liveins: $q0 ; CHECK-LABEL: name: test_modf_fp128 ; CHECK: liveins: $q0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr128 = COPY $q0 ; CHECK-NEXT: [[ADDXri:%[0-9]+]]:gpr64sp = ADDXri %stack.0, 0, 0 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp ; CHECK-NEXT: $q0 = COPY [[COPY]] ; CHECK-NEXT: $x0 = COPY [[ADDXri]] ; CHECK-NEXT: BL &modfl, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $q0, implicit $x0, implicit-def $q0 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr128 = COPY $q0 ; CHECK-NEXT: [[LDRQui:%[0-9]+]]:fpr128 = LDRQui %stack.0, 0 :: (load (s128) from %stack.0) ; CHECK-NEXT: $q0 = COPY [[COPY1]] ; CHECK-NEXT: $q1 = COPY [[LDRQui]] ; CHECK-NEXT: RET_ReallyLR implicit $q0, implicit $q1 %0:fpr(s128) = COPY $q0 %3:gpr(p0) = G_FRAME_INDEX %stack.0 ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp $q0 = COPY %0(s128) $x0 = COPY %3(p0) BL &modfl, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $q0, implicit $x0, implicit-def $q0 ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp %1:fpr(s128) = COPY $q0 %2:fpr(s128) = G_LOAD %3(p0) :: (load (s128) from %stack.0) $q0 = COPY %1(s128) $q1 = COPY %2(s128) RET_ReallyLR implicit $q0, implicit $q1 ... --- name: test_modf_double alignment: 4 legalized: true regBankSelected: true tracksRegLiveness: true liveins: - { reg: '$d0' } frameInfo: maxAlignment: 8 stack: - { id: 0, size: 8, alignment: 8 } machineFunctionInfo: {} body: | bb.1: liveins: $d0 ; CHECK-LABEL: name: test_modf_double ; CHECK: liveins: $d0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 ; CHECK-NEXT: [[ADDXri:%[0-9]+]]:gpr64sp = ADDXri %stack.0, 0, 0 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp ; CHECK-NEXT: $d0 = COPY [[COPY]] ; CHECK-NEXT: $x0 = COPY [[ADDXri]] ; CHECK-NEXT: BL &modf, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $d0, implicit $x0, implicit-def $d0 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0 ; CHECK-NEXT: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui %stack.0, 0 :: (load (s64) from %stack.0) ; CHECK-NEXT: $d0 = COPY [[COPY1]] ; CHECK-NEXT: $d1 = COPY [[LDRDui]] ; CHECK-NEXT: RET_ReallyLR implicit $d0, implicit $d1 %0:fpr(s64) = COPY $d0 %3:gpr(p0) = G_FRAME_INDEX %stack.0 ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp $d0 = COPY %0(s64) $x0 = COPY %3(p0) BL &modf, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $d0, implicit $x0, implicit-def $d0 ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp %1:fpr(s64) = COPY $d0 %2:fpr(s64) = G_LOAD %3(p0) :: (load (s64) from %stack.0) $d0 = COPY %1(s64) $d1 = COPY %2(s64) RET_ReallyLR implicit $d0, implicit $d1 ... --- name: test_modf_double_vec alignment: 4 legalized: true regBankSelected: true tracksRegLiveness: true liveins: - { reg: '$d0' } frameInfo: maxAlignment: 8 stack: - { id: 0, size: 8, alignment: 8 } machineFunctionInfo: {} body: | bb.1: liveins: $d0 ; CHECK-LABEL: name: test_modf_double_vec ; CHECK: liveins: $d0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: [[COPY:%[0-9]+]]:fpr64 = COPY $d0 ; CHECK-NEXT: [[ADDXri:%[0-9]+]]:gpr64sp = ADDXri %stack.0, 0, 0 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp ; CHECK-NEXT: $d0 = COPY [[COPY]] ; CHECK-NEXT: $x0 = COPY [[ADDXri]] ; CHECK-NEXT: BL &modf, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $d0, implicit $x0, implicit-def $d0 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp ; CHECK-NEXT: [[COPY1:%[0-9]+]]:fpr64 = COPY $d0 ; CHECK-NEXT: [[LDRDui:%[0-9]+]]:fpr64 = LDRDui %stack.0, 0 :: (load (s64) from %stack.0) ; CHECK-NEXT: $d0 = COPY [[COPY1]] ; CHECK-NEXT: $d1 = COPY [[LDRDui]] ; CHECK-NEXT: RET_ReallyLR implicit $d0, implicit $d1 %0:fpr(s64) = COPY $d0 %3:gpr(p0) = G_FRAME_INDEX %stack.0 ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp $d0 = COPY %0(s64) $x0 = COPY %3(p0) BL &modf, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $d0, implicit $x0, implicit-def $d0 ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp %1:fpr(s64) = COPY $d0 %2:fpr(s64) = G_LOAD %3(p0) :: (load (s64) from %stack.0) $d0 = COPY %1(s64) $d1 = COPY %2(s64) RET_ReallyLR implicit $d0, implicit $d1 ...