brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.1 KiB · f426871 Raw
233 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -global-isel -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs -o - %s | FileCheck %s3 4# Post-legalizer should not generate divrem instruction.5---6name: test_sdiv_srem7tracksRegLiveness: true8legalized: true9body: |10  bb.0:11    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr512    ; CHECK-LABEL: name: test_sdiv_srem13    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr514    ; CHECK-NEXT: {{  $}}15    ; CHECK-NEXT: %src1:_(s32) = COPY $vgpr016    ; CHECK-NEXT: %src2:_(s32) = COPY $vgpr117    ; CHECK-NEXT: %ptr1:_(p1) = COPY $vgpr2_vgpr318    ; CHECK-NEXT: %ptr2:_(p1) = COPY $vgpr4_vgpr519    ; CHECK-NEXT: %div:_(s32) = G_SDIV %src1, %src220    ; CHECK-NEXT: G_STORE %div(s32), %ptr1(p1) :: (store (s32), addrspace 1)21    ; CHECK-NEXT: %rem:_(s32) = G_SREM %src1, %src222    ; CHECK-NEXT: G_STORE %rem(s32), %ptr2(p1) :: (store (s32), addrspace 1)23    %src1:_(s32) = COPY $vgpr024    %src2:_(s32) = COPY $vgpr125    %ptr1:_(p1) = COPY $vgpr2_vgpr326    %ptr2:_(p1) = COPY $vgpr4_vgpr527    %div:_(s32) = G_SDIV %src1:_(s32), %src2:_(s32)28    G_STORE %div:_(s32), %ptr1:_(p1) :: (store (s32), addrspace 1, align 4)29    %rem:_(s32) = G_SREM %src1:_(s32), %src2:_(s32)30    G_STORE %rem:_(s32), %ptr2:_(p1) :: (store (s32), addrspace 1, align 4)31...32---33name: test_srem_sdiv34tracksRegLiveness: true35legalized: true36body: |37  bb.0:38    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr539    ; CHECK-LABEL: name: test_srem_sdiv40    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr541    ; CHECK-NEXT: {{  $}}42    ; CHECK-NEXT: %src1:_(s32) = COPY $vgpr043    ; CHECK-NEXT: %src2:_(s32) = COPY $vgpr144    ; CHECK-NEXT: %ptr1:_(p1) = COPY $vgpr2_vgpr345    ; CHECK-NEXT: %ptr2:_(p1) = COPY $vgpr4_vgpr546    ; CHECK-NEXT: %rem:_(s32) = G_SREM %src1, %src247    ; CHECK-NEXT: G_STORE %rem(s32), %ptr1(p1) :: (store (s32), addrspace 1)48    ; CHECK-NEXT: %div:_(s32) = G_SDIV %src1, %src249    ; CHECK-NEXT: G_STORE %div(s32), %ptr2(p1) :: (store (s32), addrspace 1)50    %src1:_(s32) = COPY $vgpr051    %src2:_(s32) = COPY $vgpr152    %ptr1:_(p1) = COPY $vgpr2_vgpr353    %ptr2:_(p1) = COPY $vgpr4_vgpr554    %rem:_(s32) = G_SREM %src1:_(s32), %src2:_(s32)55    G_STORE %rem:_(s32), %ptr1:_(p1) :: (store (s32), addrspace 1, align 4)56    %div:_(s32) = G_SDIV %src1:_(s32), %src2:_(s32)57    G_STORE %div:_(s32), %ptr2:_(p1) :: (store (s32), addrspace 1, align 4)58...59---60name: test_udiv_urem61tracksRegLiveness: true62legalized: true63body: |64  bb.0:65    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr566    ; CHECK-LABEL: name: test_udiv_urem67    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr568    ; CHECK-NEXT: {{  $}}69    ; CHECK-NEXT: %src1:_(s32) = COPY $vgpr070    ; CHECK-NEXT: %src2:_(s32) = COPY $vgpr171    ; CHECK-NEXT: %ptr1:_(p1) = COPY $vgpr2_vgpr372    ; CHECK-NEXT: %ptr2:_(p1) = COPY $vgpr4_vgpr573    ; CHECK-NEXT: %div:_(s32) = G_UDIV %src1, %src274    ; CHECK-NEXT: G_STORE %div(s32), %ptr1(p1) :: (store (s32), addrspace 1)75    ; CHECK-NEXT: %rem:_(s32) = G_UREM %src1, %src276    ; CHECK-NEXT: G_STORE %rem(s32), %ptr2(p1) :: (store (s32), addrspace 1)77    %src1:_(s32) = COPY $vgpr078    %src2:_(s32) = COPY $vgpr179    %ptr1:_(p1) = COPY $vgpr2_vgpr380    %ptr2:_(p1) = COPY $vgpr4_vgpr581    %div:_(s32) = G_UDIV %src1:_(s32), %src2:_(s32)82    G_STORE %div:_(s32), %ptr1:_(p1) :: (store (s32), addrspace 1, align 4)83    %rem:_(s32) = G_UREM %src1:_(s32), %src2:_(s32)84    G_STORE %rem:_(s32), %ptr2:_(p1) :: (store (s32), addrspace 1, align 4)85...86---87name: test_urem_udiv88tracksRegLiveness: true89legalized: true90body: |91  bb.0:92    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr593    ; CHECK-LABEL: name: test_urem_udiv94    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr595    ; CHECK-NEXT: {{  $}}96    ; CHECK-NEXT: %src1:_(s32) = COPY $vgpr097    ; CHECK-NEXT: %src2:_(s32) = COPY $vgpr198    ; CHECK-NEXT: %ptr1:_(p1) = COPY $vgpr2_vgpr399    ; CHECK-NEXT: %ptr2:_(p1) = COPY $vgpr4_vgpr5100    ; CHECK-NEXT: %rem:_(s32) = G_UREM %src1, %src2101    ; CHECK-NEXT: G_STORE %rem(s32), %ptr1(p1) :: (store (s32), addrspace 1)102    ; CHECK-NEXT: %div:_(s32) = G_UDIV %src1, %src2103    ; CHECK-NEXT: G_STORE %div(s32), %ptr2(p1) :: (store (s32), addrspace 1)104    %src1:_(s32) = COPY $vgpr0105    %src2:_(s32) = COPY $vgpr1106    %ptr1:_(p1) = COPY $vgpr2_vgpr3107    %ptr2:_(p1) = COPY $vgpr4_vgpr5108    %rem:_(s32) = G_UREM %src1:_(s32), %src2:_(s32)109    G_STORE %rem:_(s32), %ptr1:_(p1) :: (store (s32), addrspace 1, align 4)110    %div:_(s32) = G_UDIV %src1:_(s32), %src2:_(s32)111    G_STORE %div:_(s32), %ptr2:_(p1) :: (store (s32), addrspace 1, align 4)112...113---114name: test_sdiv_srem_v2115tracksRegLiveness: true116legalized: true117body: |118  bb.0:119    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7120    ; CHECK-LABEL: name: test_sdiv_srem_v2121    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7122    ; CHECK-NEXT: {{  $}}123    ; CHECK-NEXT: %src1:_(<2 x s32>) = COPY $vgpr0_vgpr1124    ; CHECK-NEXT: %src2:_(<2 x s32>) = COPY $vgpr2_vgpr3125    ; CHECK-NEXT: %ptr1:_(p1) = COPY $vgpr4_vgpr5126    ; CHECK-NEXT: %ptr2:_(p1) = COPY $vgpr6_vgpr7127    ; CHECK-NEXT: %div:_(<2 x s32>) = G_SDIV %src1, %src2128    ; CHECK-NEXT: G_STORE %div(<2 x s32>), %ptr1(p1) :: (store (<2 x s32>), align 4, addrspace 1)129    ; CHECK-NEXT: %rem:_(<2 x s32>) = G_SREM %src1, %src2130    ; CHECK-NEXT: G_STORE %rem(<2 x s32>), %ptr2(p1) :: (store (<2 x s32>), align 4, addrspace 1)131    %src1:_(<2 x s32>) = COPY $vgpr0_vgpr1132    %src2:_(<2 x s32>) = COPY $vgpr2_vgpr3133    %ptr1:_(p1) = COPY $vgpr4_vgpr5134    %ptr2:_(p1) = COPY $vgpr6_vgpr7135    %div:_(<2 x s32>) = G_SDIV %src1:_(<2 x s32>), %src2:_(<2 x s32>)136    G_STORE %div:_(<2 x s32>), %ptr1:_(p1) :: (store (<2 x s32>), addrspace 1, align 4)137    %rem:_(<2 x s32>) = G_SREM %src1:_(<2 x s32>), %src2:_(<2 x s32>)138    G_STORE %rem:_(<2 x s32>), %ptr2:_(p1) :: (store (<2 x s32>), addrspace 1, align 4)139...140---141name: test_udiv_urem_v2142tracksRegLiveness: true143legalized: true144body: |145  bb.0:146    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7147    ; CHECK-LABEL: name: test_udiv_urem_v2148    ; CHECK: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7149    ; CHECK-NEXT: {{  $}}150    ; CHECK-NEXT: %src1:_(<2 x s32>) = COPY $vgpr0_vgpr1151    ; CHECK-NEXT: %src2:_(<2 x s32>) = COPY $vgpr2_vgpr3152    ; CHECK-NEXT: %ptr1:_(p1) = COPY $vgpr4_vgpr5153    ; CHECK-NEXT: %ptr2:_(p1) = COPY $vgpr6_vgpr7154    ; CHECK-NEXT: %div:_(<2 x s32>) = G_UDIV %src1, %src2155    ; CHECK-NEXT: G_STORE %div(<2 x s32>), %ptr1(p1) :: (store (<2 x s32>), align 4, addrspace 1)156    ; CHECK-NEXT: %rem:_(<2 x s32>) = G_UREM %src1, %src2157    ; CHECK-NEXT: G_STORE %rem(<2 x s32>), %ptr2(p1) :: (store (<2 x s32>), align 4, addrspace 1)158    %src1:_(<2 x s32>) = COPY $vgpr0_vgpr1159    %src2:_(<2 x s32>) = COPY $vgpr2_vgpr3160    %ptr1:_(p1) = COPY $vgpr4_vgpr5161    %ptr2:_(p1) = COPY $vgpr6_vgpr7162    %div:_(<2 x s32>) = G_UDIV %src1:_(<2 x s32>), %src2:_(<2 x s32>)163    G_STORE %div:_(<2 x s32>), %ptr1:_(p1) :: (store (<2 x s32>), addrspace 1, align 4)164    %rem:_(<2 x s32>) = G_UREM %src1:_(<2 x s32>), %src2:_(<2 x s32>)165    G_STORE %rem:_(<2 x s32>), %ptr2:_(p1) :: (store (<2 x s32>), addrspace 1, align 4)166...167---168name: test_sdiv_srem_extra_sdiv169tracksRegLiveness: true170legalized: true171body: |172  bb.0:173    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7174    ; CHECK-LABEL: name: test_sdiv_srem_extra_sdiv175    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7176    ; CHECK-NEXT: {{  $}}177    ; CHECK-NEXT: %src1:_(s32) = COPY $vgpr0178    ; CHECK-NEXT: %src2:_(s32) = COPY $vgpr1179    ; CHECK-NEXT: %ptr1:_(p1) = COPY $vgpr2_vgpr3180    ; CHECK-NEXT: %ptr2:_(p1) = COPY $vgpr4_vgpr5181    ; CHECK-NEXT: %ptr3:_(p1) = COPY $vgpr6_vgpr7182    ; CHECK-NEXT: %div:_(s32) = G_SDIV %src1, %src2183    ; CHECK-NEXT: G_STORE %div(s32), %ptr1(p1) :: (store (s32), addrspace 1)184    ; CHECK-NEXT: %rem:_(s32) = G_SREM %src1, %src2185    ; CHECK-NEXT: G_STORE %rem(s32), %ptr2(p1) :: (store (s32), addrspace 1)186    ; CHECK-NEXT: %div2:_(s32) = G_SDIV %src1, %src2187    ; CHECK-NEXT: G_STORE %div2(s32), %ptr3(p1) :: (store (s32), addrspace 1)188    %src1:_(s32) = COPY $vgpr0189    %src2:_(s32) = COPY $vgpr1190    %ptr1:_(p1) = COPY $vgpr2_vgpr3191    %ptr2:_(p1) = COPY $vgpr4_vgpr5192    %ptr3:_(p1) = COPY $vgpr6_vgpr7193    %div:_(s32) = G_SDIV %src1:_(s32), %src2:_(s32)194    G_STORE %div:_(s32), %ptr1:_(p1) :: (store (s32), addrspace 1, align 4)195    %rem:_(s32) = G_SREM %src1:_(s32), %src2:_(s32)196    G_STORE %rem:_(s32), %ptr2:_(p1) :: (store (s32), addrspace 1, align 4)197    %div2:_(s32) = G_SDIV %src1:_(s32), %src2:_(s32)198    G_STORE %div2:_(s32), %ptr3:_(p1) :: (store (s32), addrspace 1, align 4)199...200---201name: test_sdiv_srem_extra_srem202tracksRegLiveness: true203legalized: true204body: |205  bb.0:206    liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7207    ; CHECK-LABEL: name: test_sdiv_srem_extra_srem208    ; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5, $vgpr6_vgpr7209    ; CHECK-NEXT: {{  $}}210    ; CHECK-NEXT: %src1:_(s32) = COPY $vgpr0211    ; CHECK-NEXT: %src2:_(s32) = COPY $vgpr1212    ; CHECK-NEXT: %ptr1:_(p1) = COPY $vgpr2_vgpr3213    ; CHECK-NEXT: %ptr2:_(p1) = COPY $vgpr4_vgpr5214    ; CHECK-NEXT: %ptr3:_(p1) = COPY $vgpr6_vgpr7215    ; CHECK-NEXT: %div:_(s32) = G_SDIV %src1, %src2216    ; CHECK-NEXT: G_STORE %div(s32), %ptr1(p1) :: (store (s32), addrspace 1)217    ; CHECK-NEXT: %rem:_(s32) = G_SREM %src1, %src2218    ; CHECK-NEXT: G_STORE %rem(s32), %ptr2(p1) :: (store (s32), addrspace 1)219    ; CHECK-NEXT: %rem2:_(s32) = G_SREM %src1, %src2220    ; CHECK-NEXT: G_STORE %rem2(s32), %ptr3(p1) :: (store (s32), addrspace 1)221    %src1:_(s32) = COPY $vgpr0222    %src2:_(s32) = COPY $vgpr1223    %ptr1:_(p1) = COPY $vgpr2_vgpr3224    %ptr2:_(p1) = COPY $vgpr4_vgpr5225    %ptr3:_(p1) = COPY $vgpr6_vgpr7226    %div:_(s32) = G_SDIV %src1:_(s32), %src2:_(s32)227    G_STORE %div:_(s32), %ptr1:_(p1) :: (store (s32), addrspace 1, align 4)228    %rem:_(s32) = G_SREM %src1:_(s32), %src2:_(s32)229    G_STORE %rem:_(s32), %ptr2:_(p1) :: (store (s32), addrspace 1, align 4)230    %rem2:_(s32) = G_SREM %src1:_(s32), %src2:_(s32)231    G_STORE %rem2:_(s32), %ptr3:_(p1) :: (store (s32), addrspace 1, align 4)232...233