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