[TTI] getTypeBasedIntrinsicInstrCost - add basic handling for strided load/store...
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / legalize-fmaxnum.mir
blob01b60f5584062c2e5da8c6e3be9d3a57c61910ce
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=aarch64-unknown-unknown -run-pass=legalizer -mattr=+fullfp16 -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=FP16
3 # RUN: llc -mtriple=aarch64-unknown-unknown -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=NO-FP16
4 ...
5 ---
6 name:            s16_legal_with_full_fp16
7 alignment:       4
8 body:             |
9   bb.0:
10     liveins: $h0, $h1
11     ; FP16-LABEL: name: s16_legal_with_full_fp16
12     ; FP16: liveins: $h0, $h1
13     ; FP16-NEXT: {{  $}}
14     ; FP16-NEXT: %a:_(s16) = COPY $h0
15     ; FP16-NEXT: %b:_(s16) = COPY $h1
16     ; FP16-NEXT: %maxnum:_(s16) = G_FMAXNUM %a, %b
17     ; FP16-NEXT: $h0 = COPY %maxnum(s16)
18     ; FP16-NEXT: RET_ReallyLR implicit $h0
19     ;
20     ; NO-FP16-LABEL: name: s16_legal_with_full_fp16
21     ; NO-FP16: liveins: $h0, $h1
22     ; NO-FP16-NEXT: {{  $}}
23     ; NO-FP16-NEXT: %a:_(s16) = COPY $h0
24     ; NO-FP16-NEXT: %b:_(s16) = COPY $h1
25     ; NO-FP16-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT %a(s16)
26     ; NO-FP16-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = G_FPEXT %b(s16)
27     ; NO-FP16-NEXT: [[FMAXNUM:%[0-9]+]]:_(s32) = G_FMAXNUM [[FPEXT]], [[FPEXT1]]
28     ; NO-FP16-NEXT: %maxnum:_(s16) = G_FPTRUNC [[FMAXNUM]](s32)
29     ; NO-FP16-NEXT: $h0 = COPY %maxnum(s16)
30     ; NO-FP16-NEXT: RET_ReallyLR implicit $h0
31     %a:_(s16) = COPY $h0
32     %b:_(s16) = COPY $h1
33     %maxnum:_(s16) = G_FMAXNUM %a, %b
34     $h0 = COPY %maxnum(s16)
35     RET_ReallyLR implicit $h0
37 ...
38 ---
39 name:            s32_legal
40 alignment:       4
41 body:             |
42   bb.0:
43     liveins: $s0, $s1
44     ; FP16-LABEL: name: s32_legal
45     ; FP16: liveins: $s0, $s1
46     ; FP16-NEXT: {{  $}}
47     ; FP16-NEXT: %a:_(s32) = COPY $s0
48     ; FP16-NEXT: %b:_(s32) = COPY $s1
49     ; FP16-NEXT: %maxnum:_(s32) = G_FMAXNUM %a, %b
50     ; FP16-NEXT: $s0 = COPY %maxnum(s32)
51     ; FP16-NEXT: RET_ReallyLR implicit $s0
52     ;
53     ; NO-FP16-LABEL: name: s32_legal
54     ; NO-FP16: liveins: $s0, $s1
55     ; NO-FP16-NEXT: {{  $}}
56     ; NO-FP16-NEXT: %a:_(s32) = COPY $s0
57     ; NO-FP16-NEXT: %b:_(s32) = COPY $s1
58     ; NO-FP16-NEXT: %maxnum:_(s32) = G_FMAXNUM %a, %b
59     ; NO-FP16-NEXT: $s0 = COPY %maxnum(s32)
60     ; NO-FP16-NEXT: RET_ReallyLR implicit $s0
61     %a:_(s32) = COPY $s0
62     %b:_(s32) = COPY $s1
63     %maxnum:_(s32) = G_FMAXNUM %a, %b
64     $s0 = COPY %maxnum(s32)
65     RET_ReallyLR implicit $s0
67 ...
68 ---
69 name:            s64_legal
70 alignment:       4
71 body:             |
72   bb.0:
73     liveins: $d0, $d1
74     ; FP16-LABEL: name: s64_legal
75     ; FP16: liveins: $d0, $d1
76     ; FP16-NEXT: {{  $}}
77     ; FP16-NEXT: %a:_(s64) = COPY $d0
78     ; FP16-NEXT: %b:_(s64) = COPY $d1
79     ; FP16-NEXT: %maxnum:_(s64) = G_FMAXNUM %a, %b
80     ; FP16-NEXT: $d0 = COPY %maxnum(s64)
81     ; FP16-NEXT: RET_ReallyLR implicit $d0
82     ;
83     ; NO-FP16-LABEL: name: s64_legal
84     ; NO-FP16: liveins: $d0, $d1
85     ; NO-FP16-NEXT: {{  $}}
86     ; NO-FP16-NEXT: %a:_(s64) = COPY $d0
87     ; NO-FP16-NEXT: %b:_(s64) = COPY $d1
88     ; NO-FP16-NEXT: %maxnum:_(s64) = G_FMAXNUM %a, %b
89     ; NO-FP16-NEXT: $d0 = COPY %maxnum(s64)
90     ; NO-FP16-NEXT: RET_ReallyLR implicit $d0
91     %a:_(s64) = COPY $d0
92     %b:_(s64) = COPY $d1
93     %maxnum:_(s64) = G_FMAXNUM %a, %b
94     $d0 = COPY %maxnum(s64)
95     RET_ReallyLR implicit $d0
97 ...
98 ---
99 name:            s128_libcall
100 alignment:       4
101 body:             |
102   bb.0:
103     liveins: $q0, $q1
104     ; FP16-LABEL: name: s128_libcall
105     ; FP16: liveins: $q0, $q1
106     ; FP16-NEXT: {{  $}}
107     ; FP16-NEXT: %a:_(s128) = COPY $q0
108     ; FP16-NEXT: %b:_(s128) = COPY $q1
109     ; FP16-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
110     ; FP16-NEXT: $q0 = COPY %a(s128)
111     ; FP16-NEXT: $q1 = COPY %b(s128)
112     ; FP16-NEXT: BL &fmaxl, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $q0, implicit $q1, implicit-def $q0
113     ; FP16-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
114     ; FP16-NEXT: %maxnum:_(s128) = COPY $q0
115     ; FP16-NEXT: $q0 = COPY %maxnum(s128)
116     ; FP16-NEXT: RET_ReallyLR implicit $q0
117     ;
118     ; NO-FP16-LABEL: name: s128_libcall
119     ; NO-FP16: liveins: $q0, $q1
120     ; NO-FP16-NEXT: {{  $}}
121     ; NO-FP16-NEXT: %a:_(s128) = COPY $q0
122     ; NO-FP16-NEXT: %b:_(s128) = COPY $q1
123     ; NO-FP16-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def $sp, implicit $sp
124     ; NO-FP16-NEXT: $q0 = COPY %a(s128)
125     ; NO-FP16-NEXT: $q1 = COPY %b(s128)
126     ; NO-FP16-NEXT: BL &fmaxl, csr_aarch64_aapcs, implicit-def $lr, implicit $sp, implicit $q0, implicit $q1, implicit-def $q0
127     ; NO-FP16-NEXT: ADJCALLSTACKUP 0, 0, implicit-def $sp, implicit $sp
128     ; NO-FP16-NEXT: %maxnum:_(s128) = COPY $q0
129     ; NO-FP16-NEXT: $q0 = COPY %maxnum(s128)
130     ; NO-FP16-NEXT: RET_ReallyLR implicit $q0
131     %a:_(s128) = COPY $q0
132     %b:_(s128) = COPY $q1
133     %maxnum:_(s128) = G_FMAXNUM %a, %b
134     $q0 = COPY %maxnum(s128)
135     RET_ReallyLR implicit $q0