1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck %s 3# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck %s 4 5--- 6name: fma_sss 7legalized: true 8 9body: | 10 bb.0: 11 liveins: $sgpr0, $sgpr1, $sgpr2 12 ; CHECK-LABEL: name: fma_sss 13 ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 14 ; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 15 ; CHECK: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 16 ; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 17 ; CHECK: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 18 ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY3]], [[COPY4]] 19 %0:_(s32) = COPY $sgpr0 20 %1:_(s32) = COPY $sgpr1 21 %2:_(s32) = COPY $sgpr2 22 %3:_(s32) = G_FMA %0, %1, %2 23... 24--- 25name: fma_vss 26legalized: true 27 28body: | 29 bb.0: 30 liveins: $vgpr0, $sgpr0, $sgpr1 31 ; CHECK-LABEL: name: fma_vss 32 ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 33 ; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 34 ; CHECK: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 35 ; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 36 ; CHECK: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 37 ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY3]], [[COPY4]] 38 %0:_(s32) = COPY $vgpr0 39 %1:_(s32) = COPY $sgpr0 40 %2:_(s32) = COPY $sgpr1 41 %3:_(s32) = G_FMA %0, %1, %2 42... 43--- 44name: fma_svs 45legalized: true 46 47body: | 48 bb.0: 49 liveins: $sgpr0, $vgpr0, $sgpr1 50 ; CHECK-LABEL: name: fma_svs 51 ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 52 ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 53 ; CHECK: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 54 ; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 55 ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY3]] 56 %0:_(s32) = COPY $sgpr0 57 %1:_(s32) = COPY $vgpr0 58 %2:_(s32) = COPY $sgpr1 59 %3:_(s32) = G_FMA %0, %1, %2 60... 61--- 62name: fma_ssv 63legalized: true 64 65body: | 66 bb.0: 67 liveins: $sgpr0, $sgpr1, $vgpr0 68 ; CHECK-LABEL: name: fma_ssv 69 ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 70 ; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 71 ; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 72 ; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 73 ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY3]], [[COPY2]] 74 %0:_(s32) = COPY $sgpr0 75 %1:_(s32) = COPY $sgpr1 76 %2:_(s32) = COPY $vgpr0 77 %3:_(s32) = G_FMA %0, %1, %2 78... 79--- 80name: fma_vvs 81legalized: true 82 83body: | 84 bb.0: 85 liveins: $vgpr0, $vgpr1, $sgpr0 86 ; CHECK-LABEL: name: fma_vvs 87 ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 88 ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 89 ; CHECK: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 90 ; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 91 ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY3]] 92 %0:_(s32) = COPY $vgpr0 93 %1:_(s32) = COPY $vgpr1 94 %2:_(s32) = COPY $sgpr0 95 %3:_(s32) = G_FMA %0, %1, %2 96... 97--- 98name: fma_vsv 99legalized: true 100 101body: | 102 bb.0: 103 liveins: $vgpr0, $sgpr0, $vgpr1 104 ; CHECK-LABEL: name: fma_vsv 105 ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 106 ; CHECK: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 107 ; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 108 ; CHECK: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 109 ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY3]], [[COPY2]] 110 %0:_(s32) = COPY $vgpr0 111 %1:_(s32) = COPY $sgpr1 112 %2:_(s32) = COPY $vgpr1 113 %3:_(s32) = G_FMA %0, %1, %2 114... 115--- 116name: fma_svv 117legalized: true 118 119body: | 120 bb.0: 121 liveins: $sgpr0, $vgpr0, $vgpr1 122 ; CHECK-LABEL: name: fma_svv 123 ; CHECK: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 124 ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 125 ; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 126 ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY2]] 127 %0:_(s32) = COPY $sgpr0 128 %1:_(s32) = COPY $vgpr0 129 %2:_(s32) = COPY $vgpr1 130 %3:_(s32) = G_FMA %0, %1, %2 131... 132--- 133name: fma_vvv 134legalized: true 135 136body: | 137 bb.0: 138 liveins: $vgpr0, $vgpr1, $vgpr2 139 ; CHECK-LABEL: name: fma_vvv 140 ; CHECK: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 141 ; CHECK: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 142 ; CHECK: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 143 ; CHECK: [[FMA:%[0-9]+]]:vgpr(s32) = G_FMA [[COPY]], [[COPY1]], [[COPY2]] 144 %0:_(s32) = COPY $vgpr0 145 %1:_(s32) = COPY $vgpr1 146 %2:_(s32) = COPY $vgpr2 147 %3:_(s32) = G_FMA %0, %1, %2 148... 149