• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2; RUN: llc -mtriple=aarch64-- -verify-machineinstrs -global-isel -stop-after=irtranslator -o - %s | FileCheck %s
3
4define float @test_minnum(float %x, float %y) {
5  ; CHECK-LABEL: name: test_minnum
6  ; CHECK: bb.1 (%ir-block.0):
7  ; CHECK:   liveins: $s0, $s1
8  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $s0
9  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $s1
10  ; CHECK:   [[FMINNUM:%[0-9]+]]:_(s32) = G_FMINNUM [[COPY]], [[COPY1]]
11  ; CHECK:   $s0 = COPY [[FMINNUM]](s32)
12  ; CHECK:   RET_ReallyLR implicit $s0
13  %val = call float @llvm.minnum.f32(float %x, float %y)
14  ret float %val
15}
16
17define float @test_minnum_nnan(float %x, float %y) {
18  ; CHECK-LABEL: name: test_minnum_nnan
19  ; CHECK: bb.1 (%ir-block.0):
20  ; CHECK:   liveins: $s0, $s1
21  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $s0
22  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $s1
23  ; CHECK:   %2:_(s32) = nnan G_FMINNUM [[COPY]], [[COPY1]]
24  ; CHECK:   $s0 = COPY %2(s32)
25  ; CHECK:   RET_ReallyLR implicit $s0
26  %val = call nnan float @llvm.minnum.f32(float %x, float %y)
27  ret float %val
28}
29
30define float @test_maxnum(float %x, float %y) {
31  ; CHECK-LABEL: name: test_maxnum
32  ; CHECK: bb.1 (%ir-block.0):
33  ; CHECK:   liveins: $s0, $s1
34  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $s0
35  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $s1
36  ; CHECK:   [[FMAXNUM:%[0-9]+]]:_(s32) = G_FMAXNUM [[COPY]], [[COPY1]]
37  ; CHECK:   $s0 = COPY [[FMAXNUM]](s32)
38  ; CHECK:   RET_ReallyLR implicit $s0
39  %val = call float @llvm.maxnum.f32(float %x, float %y)
40  ret float %val
41}
42
43define float @test_minimum(float %x, float %y) {
44  ; CHECK-LABEL: name: test_minimum
45  ; CHECK: bb.1 (%ir-block.0):
46  ; CHECK:   liveins: $s0, $s1
47  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $s0
48  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $s1
49  ; CHECK:   [[FMINIMUM:%[0-9]+]]:_(s32) = G_FMINIMUM [[COPY]], [[COPY1]]
50  ; CHECK:   $s0 = COPY [[FMINIMUM]](s32)
51  ; CHECK:   RET_ReallyLR implicit $s0
52  %val = call float @llvm.minimum.f32(float %x, float %y)
53  ret float %val
54}
55
56define float @test_minimum_nnan(float %x, float %y) {
57  ; CHECK-LABEL: name: test_minimum_nnan
58  ; CHECK: bb.1 (%ir-block.0):
59  ; CHECK:   liveins: $s0, $s1
60  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $s0
61  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $s1
62  ; CHECK:   %2:_(s32) = nnan G_FMINIMUM [[COPY]], [[COPY1]]
63  ; CHECK:   $s0 = COPY %2(s32)
64  ; CHECK:   RET_ReallyLR implicit $s0
65  %val = call nnan float @llvm.minimum.f32(float %x, float %y)
66  ret float %val
67}
68
69define float @test_maximum(float %x, float %y) {
70  ; CHECK-LABEL: name: test_maximum
71  ; CHECK: bb.1 (%ir-block.0):
72  ; CHECK:   liveins: $s0, $s1
73  ; CHECK:   [[COPY:%[0-9]+]]:_(s32) = COPY $s0
74  ; CHECK:   [[COPY1:%[0-9]+]]:_(s32) = COPY $s1
75  ; CHECK:   [[FMAXIMUM:%[0-9]+]]:_(s32) = G_FMAXIMUM [[COPY]], [[COPY1]]
76  ; CHECK:   $s0 = COPY [[FMAXIMUM]](s32)
77  ; CHECK:   RET_ReallyLR implicit $s0
78  %val = call float @llvm.maximum.f32(float %x, float %y)
79  ret float %val
80}
81
82declare float @llvm.minnum.f32(float, float) #0
83declare float @llvm.maxnum.f32(float, float) #0
84
85declare float @llvm.minimum.f32(float, float) #0
86declare float @llvm.maximum.f32(float, float) #0
87
88attributes #0 = { nounwind readnone speculatable }
89