xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/postlegalizer-combiner-fcanonicalize.mir (revision 712d35b417dd1beb373c51a9076db18811433d59)
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs -o - %s | FileCheck %s
3
4---
5name: test_fcanonicalize_fcanonicalize_s32
6tracksRegLiveness: true
7legalized: true
8body: |
9  bb.0:
10    liveins: $vgpr0
11    ; CHECK-LABEL: name: test_fcanonicalize_fcanonicalize_s32
12    ; CHECK: liveins: $vgpr0
13    ; CHECK-NEXT: {{  $}}
14    ; CHECK-NEXT: %src0:_(s32) = COPY $vgpr0
15    ; CHECK-NEXT: %fcanonicalize0:_(s32) = G_FCANONICALIZE %src0
16    ; CHECK-NEXT: %ptr:_(p1) = G_IMPLICIT_DEF
17    ; CHECK-NEXT: G_STORE %fcanonicalize0(s32), %ptr(p1) :: (store (s32), addrspace 1)
18    %src0:_(s32) = COPY $vgpr0
19    %fcanonicalize0:_(s32) = G_FCANONICALIZE %src0
20    %fcanonicalize1:_(s32) = G_FCANONICALIZE %fcanonicalize0
21    %ptr:_(p1) = G_IMPLICIT_DEF
22    G_STORE %fcanonicalize1, %ptr :: (store (s32), addrspace 1, align 4)
23...
24
25---
26name: test_fcanonicalize_fcanonicalize_fcanonicalize_s32
27tracksRegLiveness: true
28legalized: true
29body: |
30  bb.0:
31    liveins: $vgpr0
32    ; CHECK-LABEL: name: test_fcanonicalize_fcanonicalize_fcanonicalize_s32
33    ; CHECK: liveins: $vgpr0
34    ; CHECK-NEXT: {{  $}}
35    ; CHECK-NEXT: %src0:_(s32) = COPY $vgpr0
36    ; CHECK-NEXT: %fcanonicalize0:_(s32) = G_FCANONICALIZE %src0
37    ; CHECK-NEXT: %ptr:_(p1) = G_IMPLICIT_DEF
38    ; CHECK-NEXT: G_STORE %fcanonicalize0(s32), %ptr(p1) :: (store (s32), addrspace 1)
39    %src0:_(s32) = COPY $vgpr0
40    %fcanonicalize0:_(s32) = G_FCANONICALIZE %src0
41    %fcanonicalize1:_(s32) = G_FCANONICALIZE %fcanonicalize0
42    %fcanonicalize2:_(s32) = G_FCANONICALIZE %fcanonicalize1
43    %ptr:_(p1) = G_IMPLICIT_DEF
44    G_STORE %fcanonicalize2, %ptr :: (store (s32), addrspace 1, align 4)
45...
46
47---
48name: test_fcanonicalize_fcanonicalize_s32_multi_use
49tracksRegLiveness: true
50legalized: true
51body: |
52  bb.0:
53    liveins: $vgpr0
54
55    ; CHECK-LABEL: name: test_fcanonicalize_fcanonicalize_s32_multi_use
56    ; CHECK: liveins: $vgpr0
57    ; CHECK-NEXT: {{  $}}
58    ; CHECK-NEXT: %src0:_(s32) = COPY $vgpr0
59    ; CHECK-NEXT: %ptr:_(p1) = G_IMPLICIT_DEF
60    ; CHECK-NEXT: %fcanonicalize0:_(s32) = G_FCANONICALIZE %src0
61    ; CHECK-NEXT: G_STORE %fcanonicalize0(s32), %ptr(p1) :: (volatile store (s32), addrspace 1)
62    ; CHECK-NEXT: G_STORE %fcanonicalize0(s32), %ptr(p1) :: (volatile store (s32), addrspace 1)
63    ; CHECK-NEXT: G_STORE %fcanonicalize0(s32), %ptr(p1) :: (volatile store (s32), addrspace 1)
64    %src0:_(s32) = COPY $vgpr0
65    %ptr:_(p1) = G_IMPLICIT_DEF
66
67    %fcanonicalize0:_(s32) = G_FCANONICALIZE %src0
68    G_STORE %fcanonicalize0, %ptr :: (volatile store (s32), addrspace 1, align 4)
69
70    %fcanonicalize1:_(s32) = G_FCANONICALIZE %fcanonicalize0
71    G_STORE %fcanonicalize1, %ptr :: (volatile store (s32), addrspace 1, align 4)
72
73    G_STORE %fcanonicalize1, %ptr :: (volatile store (s32), addrspace 1, align 4)
74...
75
76---
77name: test_fcanonicalize_copy_fcanonicalize_s32
78tracksRegLiveness: true
79legalized: true
80body: |
81  bb.0:
82    liveins: $vgpr0
83    ; CHECK-LABEL: name: test_fcanonicalize_copy_fcanonicalize_s32
84    ; CHECK: liveins: $vgpr0
85    ; CHECK-NEXT: {{  $}}
86    ; CHECK-NEXT: %src0:_(s32) = COPY $vgpr0
87    ; CHECK-NEXT: %fcanonicalize0:_(s32) = G_FCANONICALIZE %src0
88    ; CHECK-NEXT: %ptr:_(p1) = G_IMPLICIT_DEF
89    ; CHECK-NEXT: G_STORE %fcanonicalize0(s32), %ptr(p1) :: (store (s32), addrspace 1)
90    %src0:_(s32) = COPY $vgpr0
91    %fcanonicalize0:_(s32) = G_FCANONICALIZE %src0
92    %copy:_(s32) = COPY %fcanonicalize0
93    %fcanonicalize1:_(s32) = G_FCANONICALIZE %copy
94    %ptr:_(p1) = G_IMPLICIT_DEF
95    G_STORE %fcanonicalize1, %ptr :: (store (s32), addrspace 1, align 4)
96...
97