145 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -mtriple=aarch64-- -verify-machineinstrs -global-isel -stop-after=irtranslator -o - %s | FileCheck %s3 4define float @test_minnum(float %x, float %y) {5 ; CHECK-LABEL: name: test_minnum6 ; CHECK: bb.1 (%ir-block.0):7 ; CHECK: liveins: $s0, $s18 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $s09 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $s110 ; CHECK: [[FMINNUM:%[0-9]+]]:_(s32) = G_FMINNUM [[COPY]], [[COPY1]]11 ; CHECK: $s0 = COPY [[FMINNUM]](s32)12 ; CHECK: RET_ReallyLR implicit $s013 %val = call float @llvm.minnum.f32(float %x, float %y)14 ret float %val15}16 17define float @test_minnum_nnan(float %x, float %y) {18 ; CHECK-LABEL: name: test_minnum_nnan19 ; CHECK: bb.1 (%ir-block.0):20 ; CHECK: liveins: $s0, $s121 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $s022 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $s123 ; CHECK: %2:_(s32) = nnan G_FMINNUM [[COPY]], [[COPY1]]24 ; CHECK: $s0 = COPY %2(s32)25 ; CHECK: RET_ReallyLR implicit $s026 %val = call nnan float @llvm.minnum.f32(float %x, float %y)27 ret float %val28}29 30define float @test_maxnum(float %x, float %y) {31 ; CHECK-LABEL: name: test_maxnum32 ; CHECK: bb.1 (%ir-block.0):33 ; CHECK: liveins: $s0, $s134 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $s035 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $s136 ; CHECK: [[FMAXNUM:%[0-9]+]]:_(s32) = G_FMAXNUM [[COPY]], [[COPY1]]37 ; CHECK: $s0 = COPY [[FMAXNUM]](s32)38 ; CHECK: RET_ReallyLR implicit $s039 %val = call float @llvm.maxnum.f32(float %x, float %y)40 ret float %val41}42 43define float @test_minimum(float %x, float %y) {44 ; CHECK-LABEL: name: test_minimum45 ; CHECK: bb.1 (%ir-block.0):46 ; CHECK: liveins: $s0, $s147 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $s048 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $s149 ; CHECK: [[FMINIMUM:%[0-9]+]]:_(s32) = G_FMINIMUM [[COPY]], [[COPY1]]50 ; CHECK: $s0 = COPY [[FMINIMUM]](s32)51 ; CHECK: RET_ReallyLR implicit $s052 %val = call float @llvm.minimum.f32(float %x, float %y)53 ret float %val54}55 56define float @test_minimum_nnan(float %x, float %y) {57 ; CHECK-LABEL: name: test_minimum_nnan58 ; CHECK: bb.1 (%ir-block.0):59 ; CHECK: liveins: $s0, $s160 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $s061 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $s162 ; CHECK: %2:_(s32) = nnan G_FMINIMUM [[COPY]], [[COPY1]]63 ; CHECK: $s0 = COPY %2(s32)64 ; CHECK: RET_ReallyLR implicit $s065 %val = call nnan float @llvm.minimum.f32(float %x, float %y)66 ret float %val67}68 69define float @test_maximum(float %x, float %y) {70 ; CHECK-LABEL: name: test_maximum71 ; CHECK: bb.1 (%ir-block.0):72 ; CHECK: liveins: $s0, $s173 ; CHECK: [[COPY:%[0-9]+]]:_(s32) = COPY $s074 ; CHECK: [[COPY1:%[0-9]+]]:_(s32) = COPY $s175 ; CHECK: [[FMAXIMUM:%[0-9]+]]:_(s32) = G_FMAXIMUM [[COPY]], [[COPY1]]76 ; CHECK: $s0 = COPY [[FMAXIMUM]](s32)77 ; CHECK: RET_ReallyLR implicit $s078 %val = call float @llvm.maximum.f32(float %x, float %y)79 ret float %val80}81 82define float @test_minimumnum(float %x, float %y) {83 ; CHECK-LABEL: name: test_minimumnum84 ; CHECK: bb.1 (%ir-block.0):85 ; CHECK-NEXT: liveins: $s0, $s186 ; CHECK-NEXT: {{ $}}87 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s088 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $s189 ; CHECK-NEXT: [[FMINIMUMNUM:%[0-9]+]]:_(s32) = G_FMINIMUMNUM [[COPY]], [[COPY1]]90 ; CHECK-NEXT: $s0 = COPY [[FMINIMUMNUM]](s32)91 ; CHECK-NEXT: RET_ReallyLR implicit $s092 %val = call float @llvm.minimumnum.f32(float %x, float %y)93 ret float %val94}95 96define float @test_minimumnum_nnan(float %x, float %y) {97 ; CHECK-LABEL: name: test_minimumnum_nnan98 ; CHECK: bb.1 (%ir-block.0):99 ; CHECK-NEXT: liveins: $s0, $s1100 ; CHECK-NEXT: {{ $}}101 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0102 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $s1103 ; CHECK-NEXT: [[FMINIMUMNUM:%[0-9]+]]:_(s32) = nnan G_FMINIMUMNUM [[COPY]], [[COPY1]]104 ; CHECK-NEXT: $s0 = COPY [[FMINIMUMNUM]](s32)105 ; CHECK-NEXT: RET_ReallyLR implicit $s0106 %val = call nnan float @llvm.minimumnum.f32(float %x, float %y)107 ret float %val108}109 110define float @test_maximumnum(float %x, float %y) {111 ; CHECK-LABEL: name: test_maximumnum112 ; CHECK: bb.1 (%ir-block.0):113 ; CHECK-NEXT: liveins: $s0, $s1114 ; CHECK-NEXT: {{ $}}115 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0116 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $s1117 ; CHECK-NEXT: [[FMAXIMUMNUM:%[0-9]+]]:_(s32) = G_FMAXIMUMNUM [[COPY]], [[COPY1]]118 ; CHECK-NEXT: $s0 = COPY [[FMAXIMUMNUM]](s32)119 ; CHECK-NEXT: RET_ReallyLR implicit $s0120 %val = call float @llvm.maximumnum.f32(float %x, float %y)121 ret float %val122}123 124define float @test_maximumnum_nnan(float %x, float %y) {125 ; CHECK-LABEL: name: test_maximumnum_nnan126 ; CHECK: bb.1 (%ir-block.0):127 ; CHECK-NEXT: liveins: $s0, $s1128 ; CHECK-NEXT: {{ $}}129 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $s0130 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $s1131 ; CHECK-NEXT: [[FMAXIMUMNUM:%[0-9]+]]:_(s32) = nnan G_FMAXIMUMNUM [[COPY]], [[COPY1]]132 ; CHECK-NEXT: $s0 = COPY [[FMAXIMUMNUM]](s32)133 ; CHECK-NEXT: RET_ReallyLR implicit $s0134 %val = call nnan float @llvm.maximumnum.f32(float %x, float %y)135 ret float %val136}137 138declare float @llvm.minnum.f32(float, float) #0139declare float @llvm.maxnum.f32(float, float) #0140 141declare float @llvm.minimum.f32(float, float) #0142declare float @llvm.maximum.f32(float, float) #0143 144attributes #0 = { nounwind readnone speculatable }145