1# RUN: llc -mtriple=s390x-linux-gnu -mcpu=z10 -start-before=greedy %s -o - \ 2# RUN: | FileCheck %s 3--- | 4 define void @f0(double* %ptr1, float* %ptr2) { 5 %val0 = load volatile float, float* %ptr2 6 %val1 = load volatile float, float* %ptr2 7 %val2 = load volatile float, float* %ptr2 8 %val3 = load volatile float, float* %ptr2 9 %val4 = load volatile float, float* %ptr2 10 %val5 = load volatile float, float* %ptr2 11 %val6 = load volatile float, float* %ptr2 12 %val7 = load volatile float, float* %ptr2 13 %val8 = load volatile float, float* %ptr2 14 %val9 = load volatile float, float* %ptr2 15 %val10 = load volatile float, float* %ptr2 16 %val11 = load volatile float, float* %ptr2 17 %val12 = load volatile float, float* %ptr2 18 %val13 = load volatile float, float* %ptr2 19 %val14 = load volatile float, float* %ptr2 20 %val15 = load volatile float, float* %ptr2 21 %val16 = load volatile float, float* %ptr2 22 %ext0 = fpext float %val0 to double 23 %ext1 = fpext float %val1 to double 24 %ext2 = fpext float %val2 to double 25 %ext3 = fpext float %val3 to double 26 %ext4 = fpext float %val4 to double 27 %ext5 = fpext float %val5 to double 28 %ext6 = fpext float %val6 to double 29 %ext7 = fpext float %val7 to double 30 %ext8 = fpext float %val8 to double 31 %ext9 = fpext float %val9 to double 32 %ext10 = fpext float %val10 to double 33 %ext11 = fpext float %val11 to double 34 %ext12 = fpext float %val12 to double 35 %ext13 = fpext float %val13 to double 36 %ext14 = fpext float %val14 to double 37 %ext15 = fpext float %val15 to double 38 %ext16 = fpext float %val16 to double 39 store volatile float %val0, float* %ptr2 40 store volatile float %val1, float* %ptr2 41 store volatile float %val2, float* %ptr2 42 store volatile float %val3, float* %ptr2 43 store volatile float %val4, float* %ptr2 44 store volatile float %val5, float* %ptr2 45 store volatile float %val6, float* %ptr2 46 store volatile float %val7, float* %ptr2 47 store volatile float %val8, float* %ptr2 48 store volatile float %val9, float* %ptr2 49 store volatile float %val10, float* %ptr2 50 store volatile float %val11, float* %ptr2 51 store volatile float %val12, float* %ptr2 52 store volatile float %val13, float* %ptr2 53 store volatile float %val14, float* %ptr2 54 store volatile float %val15, float* %ptr2 55 store volatile float %val16, float* %ptr2 56 store volatile double %ext0, double* %ptr1 57 store volatile double %ext1, double* %ptr1 58 store volatile double %ext2, double* %ptr1 59 store volatile double %ext3, double* %ptr1 60 store volatile double %ext4, double* %ptr1 61 store volatile double %ext5, double* %ptr1 62 store volatile double %ext6, double* %ptr1 63 store volatile double %ext7, double* %ptr1 64 store volatile double %ext8, double* %ptr1 65 store volatile double %ext9, double* %ptr1 66 store volatile double %ext10, double* %ptr1 67 store volatile double %ext11, double* %ptr1 68 store volatile double %ext12, double* %ptr1 69 store volatile double %ext13, double* %ptr1 70 store volatile double %ext14, double* %ptr1 71 store volatile double %ext15, double* %ptr1 72 store volatile double %ext16, double* %ptr1 73 ret void 74 } 75 76... 77 78# CHECK-LABEL: f0: 79# CHECK: ldeb {{%f[0-9]+}}, 16{{[04]}}(%r15) 80# CHECK: br %r14 81 82--- 83name: f0 84alignment: 4 85tracksRegLiveness: true 86registers: 87 - { id: 0, class: addr64bit } 88 - { id: 1, class: addr64bit } 89 - { id: 2, class: fp32bit } 90 - { id: 3, class: fp32bit } 91 - { id: 4, class: fp32bit } 92 - { id: 5, class: fp32bit } 93 - { id: 6, class: fp32bit } 94 - { id: 7, class: fp32bit } 95 - { id: 8, class: fp32bit } 96 - { id: 9, class: fp32bit } 97 - { id: 10, class: fp32bit } 98 - { id: 11, class: fp32bit } 99 - { id: 12, class: fp32bit } 100 - { id: 13, class: fp32bit } 101 - { id: 14, class: fp32bit } 102 - { id: 15, class: fp32bit } 103 - { id: 16, class: fp32bit } 104 - { id: 17, class: fp32bit } 105 - { id: 18, class: fp32bit } 106 - { id: 19, class: fp64bit } 107 - { id: 20, class: fp64bit } 108 - { id: 21, class: fp64bit } 109 - { id: 22, class: fp64bit } 110 - { id: 23, class: fp64bit } 111 - { id: 24, class: fp64bit } 112 - { id: 25, class: fp64bit } 113 - { id: 26, class: fp64bit } 114 - { id: 27, class: fp64bit } 115 - { id: 28, class: fp64bit } 116 - { id: 29, class: fp64bit } 117 - { id: 30, class: fp64bit } 118 - { id: 31, class: fp64bit } 119 - { id: 32, class: fp64bit } 120 - { id: 33, class: fp64bit } 121 - { id: 34, class: fp64bit } 122 - { id: 35, class: fp64bit } 123liveins: 124 - { reg: '$r2d', virtual-reg: '%0' } 125 - { reg: '$r3d', virtual-reg: '%1' } 126body: | 127 bb.0 (%ir-block.0): 128 liveins: $r2d, $r3d 129 130 %1 = COPY $r3d 131 %0 = COPY $r2d 132 %2 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 133 %3 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 134 %4 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 135 %5 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 136 %6 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 137 %7 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 138 %8 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 139 %9 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 140 %10 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 141 %11 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 142 %12 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 143 %13 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 144 %14 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 145 %15 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 146 %16 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 147 %17 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 148 %18 = LE %1, 0, $noreg :: (volatile load 4 from %ir.ptr2) 149 STE %2, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 150 STE %3, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 151 STE %4, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 152 STE %5, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 153 STE %6, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 154 STE %7, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 155 STE %8, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 156 STE %9, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 157 STE %10, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 158 STE %11, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 159 STE %12, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 160 STE %13, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 161 STE %14, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 162 STE %15, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 163 STE %16, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 164 STE %17, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 165 STE %18, %1, 0, $noreg :: (volatile store 4 into %ir.ptr2) 166 %19 = LDEBR %2, implicit $fpc 167 STD %19, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 168 %20 = LDEBR %3, implicit $fpc 169 STD %20, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 170 %21 = LDEBR %4, implicit $fpc 171 STD %21, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 172 %22 = LDEBR %5, implicit $fpc 173 STD %22, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 174 %23 = LDEBR %6, implicit $fpc 175 STD %23, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 176 %24 = LDEBR %7, implicit $fpc 177 STD %24, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 178 %25 = LDEBR %8, implicit $fpc 179 STD %25, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 180 %26 = LDEBR %9, implicit $fpc 181 STD %26, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 182 %27 = LDEBR %10, implicit $fpc 183 STD %27, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 184 %28 = LDEBR %11, implicit $fpc 185 STD %28, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 186 %29 = LDEBR %12, implicit $fpc 187 STD %29, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 188 %30 = LDEBR %13, implicit $fpc 189 STD %30, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 190 %31 = LDEBR %14, implicit $fpc 191 STD %31, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 192 %32 = LDEBR %15, implicit $fpc 193 STD %32, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 194 %33 = LDEBR %16, implicit $fpc 195 STD %33, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 196 %34 = LDEBR %17, implicit $fpc 197 STD %34, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 198 %35 = LDEBR %18, implicit $fpc 199 STD %35, %0, 0, $noreg :: (volatile store 8 into %ir.ptr1) 200 Return 201 202... 203