1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer -o - %s | FileCheck %s -check-prefix=SI 3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer -o - %s | FileCheck %s -check-prefix=VI 4--- 5name: test_sextload_flat_i32_i8 6body: | 7 bb.0: 8 liveins: $vgpr0_vgpr1 9 10 ; SI-LABEL: name: test_sextload_flat_i32_i8 11 ; SI: liveins: $vgpr0_vgpr1 12 ; SI-NEXT: {{ $}} 13 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 14 ; SI-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8)) 15 ; SI-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32) 16 ; VI-LABEL: name: test_sextload_flat_i32_i8 17 ; VI: liveins: $vgpr0_vgpr1 18 ; VI-NEXT: {{ $}} 19 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 20 ; VI-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8)) 21 ; VI-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32) 22 %0:_(p0) = COPY $vgpr0_vgpr1 23 %1:_(s32) = G_SEXTLOAD %0 :: (load (s8), addrspace 0) 24 $vgpr0 = COPY %1 25... 26--- 27name: test_sextload_flat_i32_i16 28body: | 29 bb.0: 30 liveins: $vgpr0_vgpr1 31 32 ; SI-LABEL: name: test_sextload_flat_i32_i16 33 ; SI: liveins: $vgpr0_vgpr1 34 ; SI-NEXT: {{ $}} 35 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 36 ; SI-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s16)) 37 ; SI-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32) 38 ; VI-LABEL: name: test_sextload_flat_i32_i16 39 ; VI: liveins: $vgpr0_vgpr1 40 ; VI-NEXT: {{ $}} 41 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 42 ; VI-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s16)) 43 ; VI-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32) 44 %0:_(p0) = COPY $vgpr0_vgpr1 45 %1:_(s32) = G_SEXTLOAD %0 :: (load (s16), addrspace 0) 46 $vgpr0 = COPY %1 47... 48--- 49name: test_sextload_flat_i31_i8 50body: | 51 bb.0: 52 liveins: $vgpr0_vgpr1 53 54 ; SI-LABEL: name: test_sextload_flat_i31_i8 55 ; SI: liveins: $vgpr0_vgpr1 56 ; SI-NEXT: {{ $}} 57 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 58 ; SI-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8)) 59 ; SI-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32) 60 ; VI-LABEL: name: test_sextload_flat_i31_i8 61 ; VI: liveins: $vgpr0_vgpr1 62 ; VI-NEXT: {{ $}} 63 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 64 ; VI-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8)) 65 ; VI-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32) 66 %0:_(p0) = COPY $vgpr0_vgpr1 67 %1:_(s31) = G_SEXTLOAD %0 :: (load (s8), addrspace 0) 68 %2:_(s32) = G_ANYEXT %1 69 $vgpr0 = COPY %2 70... 71--- 72name: test_sextload_flat_i64_i8 73body: | 74 bb.0: 75 liveins: $vgpr0_vgpr1 76 77 ; SI-LABEL: name: test_sextload_flat_i64_i8 78 ; SI: liveins: $vgpr0_vgpr1 79 ; SI-NEXT: {{ $}} 80 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 81 ; SI-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8)) 82 ; SI-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[SEXTLOAD]](s32) 83 ; SI-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64) 84 ; VI-LABEL: name: test_sextload_flat_i64_i8 85 ; VI: liveins: $vgpr0_vgpr1 86 ; VI-NEXT: {{ $}} 87 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 88 ; VI-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s8)) 89 ; VI-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[SEXTLOAD]](s32) 90 ; VI-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64) 91 %0:_(p0) = COPY $vgpr0_vgpr1 92 %1:_(s64) = G_SEXTLOAD %0 :: (load (s8), addrspace 0) 93 $vgpr0_vgpr1 = COPY %1 94... 95--- 96name: test_sextload_flat_i64_i16 97body: | 98 bb.0: 99 liveins: $vgpr0_vgpr1 100 101 ; SI-LABEL: name: test_sextload_flat_i64_i16 102 ; SI: liveins: $vgpr0_vgpr1 103 ; SI-NEXT: {{ $}} 104 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 105 ; SI-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s16)) 106 ; SI-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[SEXTLOAD]](s32) 107 ; SI-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64) 108 ; VI-LABEL: name: test_sextload_flat_i64_i16 109 ; VI: liveins: $vgpr0_vgpr1 110 ; VI-NEXT: {{ $}} 111 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 112 ; VI-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p0) :: (load (s16)) 113 ; VI-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[SEXTLOAD]](s32) 114 ; VI-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64) 115 %0:_(p0) = COPY $vgpr0_vgpr1 116 %1:_(s64) = G_SEXTLOAD %0 :: (load (s16), addrspace 0) 117 $vgpr0_vgpr1 = COPY %1 118... 119--- 120name: test_sextload_flat_i64_i32 121body: | 122 bb.0: 123 liveins: $vgpr0_vgpr1 124 125 ; SI-LABEL: name: test_sextload_flat_i64_i32 126 ; SI: liveins: $vgpr0_vgpr1 127 ; SI-NEXT: {{ $}} 128 ; SI-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 129 ; SI-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32)) 130 ; SI-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[LOAD]](s32) 131 ; SI-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64) 132 ; VI-LABEL: name: test_sextload_flat_i64_i32 133 ; VI: liveins: $vgpr0_vgpr1 134 ; VI-NEXT: {{ $}} 135 ; VI-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $vgpr0_vgpr1 136 ; VI-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p0) :: (load (s32)) 137 ; VI-NEXT: [[SEXT:%[0-9]+]]:_(s64) = G_SEXT [[LOAD]](s32) 138 ; VI-NEXT: $vgpr0_vgpr1 = COPY [[SEXT]](s64) 139 %0:_(p0) = COPY $vgpr0_vgpr1 140 %1:_(s64) = G_SEXTLOAD %0 :: (load (s32), addrspace 0) 141 $vgpr0_vgpr1 = COPY %1 142... 143