brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · 63ecd9f Raw
81 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple=thumbv8m.main-none-eabi %s -o - | FileCheck %s --check-prefix=CHECK-SOFT3; RUN: llc -mtriple=thumbv8m.main-none-eabi -mattr=+fp-armv8 %s -o - | FileCheck %s --check-prefix=CHECK-FP4; RUN: llc -mtriple=thumbv8m.main-none-eabi -mattr=+fp-armv8,+slowfpvfmx %s -o - | FileCheck %s --check-prefix=CHECK-M335 6define float @frem4(float %x) {7; CHECK-SOFT-LABEL: frem4:8; CHECK-SOFT:       @ %bb.0: @ %entry9; CHECK-SOFT-NEXT:    .save {r7, lr}10; CHECK-SOFT-NEXT:    push {r7, lr}11; CHECK-SOFT-NEXT:    mov.w r1, #108213043212; CHECK-SOFT-NEXT:    bl fmodf13; CHECK-SOFT-NEXT:    pop {r7, pc}14;15; CHECK-FP-LABEL: frem4:16; CHECK-FP:       @ %bb.0: @ %entry17; CHECK-FP-NEXT:    vmov.f32 s0, #2.500000e-0118; CHECK-FP-NEXT:    vmov.f32 s2, #-4.000000e+0019; CHECK-FP-NEXT:    vmov s4, r020; CHECK-FP-NEXT:    lsrs r0, r0, #3121; CHECK-FP-NEXT:    vmul.f32 s0, s4, s022; CHECK-FP-NEXT:    vrintz.f32 s0, s023; CHECK-FP-NEXT:    vfma.f32 s4, s0, s224; CHECK-FP-NEXT:    vmov r1, s425; CHECK-FP-NEXT:    bfi r1, r0, #31, #126; CHECK-FP-NEXT:    mov r0, r127; CHECK-FP-NEXT:    bx lr28;29; CHECK-M33-LABEL: frem4:30; CHECK-M33:       @ %bb.0: @ %entry31; CHECK-M33-NEXT:    vmov.f32 s0, #2.500000e-0132; CHECK-M33-NEXT:    vmov.f32 s2, #-4.000000e+0033; CHECK-M33-NEXT:    vmov s4, r034; CHECK-M33-NEXT:    lsrs r0, r0, #3135; CHECK-M33-NEXT:    vmul.f32 s0, s4, s036; CHECK-M33-NEXT:    vrintz.f32 s0, s037; CHECK-M33-NEXT:    vmla.f32 s4, s0, s238; CHECK-M33-NEXT:    vmov r1, s439; CHECK-M33-NEXT:    bfi r1, r0, #31, #140; CHECK-M33-NEXT:    mov r0, r141; CHECK-M33-NEXT:    bx lr42entry:43  %fmod = frem float %x, 4.044  ret float %fmod45}46 47define float @frem4_nsz(float %x) {48; CHECK-SOFT-LABEL: frem4_nsz:49; CHECK-SOFT:       @ %bb.0: @ %entry50; CHECK-SOFT-NEXT:    .save {r7, lr}51; CHECK-SOFT-NEXT:    push {r7, lr}52; CHECK-SOFT-NEXT:    mov.w r1, #108213043253; CHECK-SOFT-NEXT:    bl fmodf54; CHECK-SOFT-NEXT:    pop {r7, pc}55;56; CHECK-FP-LABEL: frem4_nsz:57; CHECK-FP:       @ %bb.0: @ %entry58; CHECK-FP-NEXT:    vmov.f32 s0, #2.500000e-0159; CHECK-FP-NEXT:    vmov.f32 s2, #-4.000000e+0060; CHECK-FP-NEXT:    vmov s4, r061; CHECK-FP-NEXT:    vmul.f32 s0, s4, s062; CHECK-FP-NEXT:    vrintz.f32 s0, s063; CHECK-FP-NEXT:    vfma.f32 s4, s0, s264; CHECK-FP-NEXT:    vmov r0, s465; CHECK-FP-NEXT:    bx lr66;67; CHECK-M33-LABEL: frem4_nsz:68; CHECK-M33:       @ %bb.0: @ %entry69; CHECK-M33-NEXT:    vmov.f32 s0, #2.500000e-0170; CHECK-M33-NEXT:    vmov.f32 s2, #-4.000000e+0071; CHECK-M33-NEXT:    vmov s4, r072; CHECK-M33-NEXT:    vmul.f32 s0, s4, s073; CHECK-M33-NEXT:    vrintz.f32 s0, s074; CHECK-M33-NEXT:    vmla.f32 s4, s0, s275; CHECK-M33-NEXT:    vmov r0, s476; CHECK-M33-NEXT:    bx lr77entry:78  %fmod = frem nsz float %x, 4.079  ret float %fmod80}81