blob: 2ea9bcb7b4456c34401c363c0a6bce6040e148a2 [file]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=loop-vectorize -mtriple=wasm32 -mattr=+simd128 -S -o - %s | FileCheck %s
; RUN: opt -passes=loop-vectorize -mtriple=wasm32 -mattr=+simd128 -S -o - %s --vectorizer-maximize-bandwidth | FileCheck %s --check-prefix=MAXIMIZE
define void @dequantize_row_q4_0(ptr noalias %arg, ptr %arg1, i64 %arg2) {
; CHECK-LABEL: define void @dequantize_row_q4_0(
; CHECK-SAME: ptr noalias [[ARG:%.*]], ptr [[ARG1:%.*]], i64 [[ARG2:%.*]]) #[[ATTR0:[0-9]+]] {
; CHECK-NEXT: [[BB:.*]]:
; CHECK-NEXT: [[I:%.*]] = and i64 [[ARG2]], 31
; CHECK-NEXT: [[I3:%.*]] = icmp eq i64 [[I]], 0
; CHECK-NEXT: [[I4:%.*]] = lshr i64 [[ARG2]], 5
; CHECK-NEXT: [[I5:%.*]] = trunc i64 [[I4]] to i32
; CHECK-NEXT: [[I6:%.*]] = icmp sgt i32 [[I5]], 0
; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i32 [[I5]], 4
; CHECK-NEXT: br i1 [[MIN_ITERS_CHECK]], label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
; CHECK: [[VECTOR_PH]]:
; CHECK-NEXT: [[TMP0:%.*]] = and i32 [[I5]], 3
; CHECK-NEXT: [[N_VEC:%.*]] = sub i32 [[I5]], [[TMP0]]
; CHECK-NEXT: br label %[[BB8:.*]]
; CHECK: [[BB8]]:
; CHECK-NEXT: [[INDEX:%.*]] = phi i32 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[BB8]] ]
; CHECK-NEXT: [[VEC_IND:%.*]] = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %[[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], %[[BB8]] ]
; CHECK-NEXT: [[TMP1:%.*]] = add i32 [[INDEX]], 1
; CHECK-NEXT: [[TMP2:%.*]] = add i32 [[INDEX]], 2
; CHECK-NEXT: [[TMP3:%.*]] = add i32 [[INDEX]], 3
; CHECK-NEXT: [[TMP4:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[INDEX]]
; CHECK-NEXT: [[TMP5:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP1]]
; CHECK-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP2]]
; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP3]]
; CHECK-NEXT: [[TMP8:%.*]] = load i16, ptr [[TMP4]], align 2
; CHECK-NEXT: [[TMP9:%.*]] = load i16, ptr [[TMP5]], align 2
; CHECK-NEXT: [[TMP10:%.*]] = load i16, ptr [[TMP6]], align 2
; CHECK-NEXT: [[TMP11:%.*]] = load i16, ptr [[TMP7]], align 2
; CHECK-NEXT: [[TMP12:%.*]] = insertelement <4 x i16> poison, i16 [[TMP8]], i64 0
; CHECK-NEXT: [[TMP13:%.*]] = insertelement <4 x i16> [[TMP12]], i16 [[TMP9]], i64 1
; CHECK-NEXT: [[TMP14:%.*]] = insertelement <4 x i16> [[TMP13]], i16 [[TMP10]], i64 2
; CHECK-NEXT: [[TMP15:%.*]] = insertelement <4 x i16> [[TMP14]], i16 [[TMP11]], i64 3
; CHECK-NEXT: [[TMP16:%.*]] = zext <4 x i16> [[TMP15]] to <4 x i32>
; CHECK-NEXT: [[TMP17:%.*]] = shl <4 x i32> [[TMP16]], splat (i32 17)
; CHECK-NEXT: [[TMP18:%.*]] = lshr exact <4 x i32> [[TMP17]], splat (i32 4)
; CHECK-NEXT: [[TMP19:%.*]] = or disjoint <4 x i32> [[TMP18]], splat (i32 1879048192)
; CHECK-NEXT: [[TMP20:%.*]] = bitcast <4 x i32> [[TMP19]] to <4 x float>
; CHECK-NEXT: [[TMP21:%.*]] = and <4 x i32> [[TMP16]], splat (i32 32767)
; CHECK-NEXT: [[TMP22:%.*]] = or disjoint <4 x i32> [[TMP21]], splat (i32 1056964608)
; CHECK-NEXT: [[TMP23:%.*]] = bitcast <4 x i32> [[TMP22]] to <4 x float>
; CHECK-NEXT: [[TMP24:%.*]] = icmp ult <4 x i32> [[TMP17]], splat (i32 134217728)
; CHECK-NEXT: [[TMP25:%.*]] = fadd <4 x float> [[TMP23]], splat (float -5.000000e-01)
; CHECK-NEXT: [[TMP26:%.*]] = fmul <4 x float> [[TMP20]], splat (float 1.925930e-34)
; CHECK-NEXT: [[TMP27:%.*]] = select <4 x i1> [[TMP24]], <4 x float> [[TMP25]], <4 x float> [[TMP26]]
; CHECK-NEXT: [[TMP28:%.*]] = bitcast <4 x float> [[TMP27]] to <4 x i32>
; CHECK-NEXT: [[TMP29:%.*]] = sext <4 x i16> [[TMP15]] to <4 x i32>
; CHECK-NEXT: [[TMP30:%.*]] = and <4 x i32> [[TMP29]], splat (i32 -2147483648)
; CHECK-NEXT: [[TMP31:%.*]] = or <4 x i32> [[TMP30]], [[TMP28]]
; CHECK-NEXT: [[TMP32:%.*]] = bitcast <4 x i32> [[TMP31]] to <4 x float>
; CHECK-NEXT: [[TMP33:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 2
; CHECK-NEXT: [[TMP34:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 2
; CHECK-NEXT: [[TMP35:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 2
; CHECK-NEXT: [[TMP36:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 2
; CHECK-NEXT: [[TMP37:%.*]] = shl nsw <4 x i32> [[VEC_IND]], splat (i32 7)
; CHECK-NEXT: [[TMP38:%.*]] = extractelement <4 x i32> [[TMP37]], i64 0
; CHECK-NEXT: [[TMP39:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP38]]
; CHECK-NEXT: [[TMP40:%.*]] = extractelement <4 x i32> [[TMP37]], i64 1
; CHECK-NEXT: [[TMP41:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP40]]
; CHECK-NEXT: [[TMP42:%.*]] = extractelement <4 x i32> [[TMP37]], i64 2
; CHECK-NEXT: [[TMP43:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP42]]
; CHECK-NEXT: [[TMP44:%.*]] = extractelement <4 x i32> [[TMP37]], i64 3
; CHECK-NEXT: [[TMP45:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP44]]
; CHECK-NEXT: [[TMP46:%.*]] = load i8, ptr [[TMP33]], align 1
; CHECK-NEXT: [[TMP47:%.*]] = load i8, ptr [[TMP34]], align 1
; CHECK-NEXT: [[TMP48:%.*]] = load i8, ptr [[TMP35]], align 1
; CHECK-NEXT: [[TMP49:%.*]] = load i8, ptr [[TMP36]], align 1
; CHECK-NEXT: [[TMP50:%.*]] = insertelement <4 x i8> poison, i8 [[TMP46]], i64 0
; CHECK-NEXT: [[TMP51:%.*]] = insertelement <4 x i8> [[TMP50]], i8 [[TMP47]], i64 1
; CHECK-NEXT: [[TMP52:%.*]] = insertelement <4 x i8> [[TMP51]], i8 [[TMP48]], i64 2
; CHECK-NEXT: [[TMP53:%.*]] = insertelement <4 x i8> [[TMP52]], i8 [[TMP49]], i64 3
; CHECK-NEXT: [[TMP54:%.*]] = zext <4 x i8> [[TMP53]] to <4 x i32>
; CHECK-NEXT: [[TMP55:%.*]] = and <4 x i32> [[TMP54]], splat (i32 15)
; CHECK-NEXT: [[TMP56:%.*]] = add nsw <4 x i32> [[TMP55]], splat (i32 -8)
; CHECK-NEXT: [[TMP57:%.*]] = lshr <4 x i32> [[TMP54]], splat (i32 4)
; CHECK-NEXT: [[TMP58:%.*]] = add nsw <4 x i32> [[TMP57]], splat (i32 -8)
; CHECK-NEXT: [[TMP59:%.*]] = sitofp <4 x i32> [[TMP56]] to <4 x float>
; CHECK-NEXT: [[TMP60:%.*]] = fmul <4 x float> [[TMP32]], [[TMP59]]
; CHECK-NEXT: [[TMP61:%.*]] = extractelement <4 x float> [[TMP60]], i64 0
; CHECK-NEXT: store float [[TMP61]], ptr [[TMP39]], align 4
; CHECK-NEXT: [[TMP62:%.*]] = extractelement <4 x float> [[TMP60]], i64 1
; CHECK-NEXT: store float [[TMP62]], ptr [[TMP41]], align 4
; CHECK-NEXT: [[TMP63:%.*]] = extractelement <4 x float> [[TMP60]], i64 2
; CHECK-NEXT: store float [[TMP63]], ptr [[TMP43]], align 4
; CHECK-NEXT: [[TMP64:%.*]] = extractelement <4 x float> [[TMP60]], i64 3
; CHECK-NEXT: store float [[TMP64]], ptr [[TMP45]], align 4
; CHECK-NEXT: [[TMP65:%.*]] = sitofp <4 x i32> [[TMP58]] to <4 x float>
; CHECK-NEXT: [[TMP66:%.*]] = fmul <4 x float> [[TMP32]], [[TMP65]]
; CHECK-NEXT: [[TMP67:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 64
; CHECK-NEXT: [[TMP68:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 64
; CHECK-NEXT: [[TMP69:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 64
; CHECK-NEXT: [[TMP70:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 64
; CHECK-NEXT: [[TMP71:%.*]] = extractelement <4 x float> [[TMP66]], i64 0
; CHECK-NEXT: store float [[TMP71]], ptr [[TMP67]], align 4
; CHECK-NEXT: [[TMP72:%.*]] = extractelement <4 x float> [[TMP66]], i64 1
; CHECK-NEXT: store float [[TMP72]], ptr [[TMP68]], align 4
; CHECK-NEXT: [[TMP73:%.*]] = extractelement <4 x float> [[TMP66]], i64 2
; CHECK-NEXT: store float [[TMP73]], ptr [[TMP69]], align 4
; CHECK-NEXT: [[TMP74:%.*]] = extractelement <4 x float> [[TMP66]], i64 3
; CHECK-NEXT: store float [[TMP74]], ptr [[TMP70]], align 4
; CHECK-NEXT: [[TMP75:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 3
; CHECK-NEXT: [[TMP76:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 3
; CHECK-NEXT: [[TMP77:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 3
; CHECK-NEXT: [[TMP78:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 3
; CHECK-NEXT: [[TMP79:%.*]] = load i8, ptr [[TMP75]], align 1
; CHECK-NEXT: [[TMP80:%.*]] = load i8, ptr [[TMP76]], align 1
; CHECK-NEXT: [[TMP81:%.*]] = load i8, ptr [[TMP77]], align 1
; CHECK-NEXT: [[TMP82:%.*]] = load i8, ptr [[TMP78]], align 1
; CHECK-NEXT: [[TMP83:%.*]] = insertelement <4 x i8> poison, i8 [[TMP79]], i64 0
; CHECK-NEXT: [[TMP84:%.*]] = insertelement <4 x i8> [[TMP83]], i8 [[TMP80]], i64 1
; CHECK-NEXT: [[TMP85:%.*]] = insertelement <4 x i8> [[TMP84]], i8 [[TMP81]], i64 2
; CHECK-NEXT: [[TMP86:%.*]] = insertelement <4 x i8> [[TMP85]], i8 [[TMP82]], i64 3
; CHECK-NEXT: [[TMP87:%.*]] = zext <4 x i8> [[TMP86]] to <4 x i32>
; CHECK-NEXT: [[TMP88:%.*]] = and <4 x i32> [[TMP87]], splat (i32 15)
; CHECK-NEXT: [[TMP89:%.*]] = add nsw <4 x i32> [[TMP88]], splat (i32 -8)
; CHECK-NEXT: [[TMP90:%.*]] = lshr <4 x i32> [[TMP87]], splat (i32 4)
; CHECK-NEXT: [[TMP91:%.*]] = add nsw <4 x i32> [[TMP90]], splat (i32 -8)
; CHECK-NEXT: [[TMP92:%.*]] = sitofp <4 x i32> [[TMP89]] to <4 x float>
; CHECK-NEXT: [[TMP93:%.*]] = fmul <4 x float> [[TMP32]], [[TMP92]]
; CHECK-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 4
; CHECK-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 4
; CHECK-NEXT: [[TMP96:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 4
; CHECK-NEXT: [[TMP97:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 4
; CHECK-NEXT: [[TMP98:%.*]] = extractelement <4 x float> [[TMP93]], i64 0
; CHECK-NEXT: store float [[TMP98]], ptr [[TMP94]], align 4
; CHECK-NEXT: [[TMP99:%.*]] = extractelement <4 x float> [[TMP93]], i64 1
; CHECK-NEXT: store float [[TMP99]], ptr [[TMP95]], align 4
; CHECK-NEXT: [[TMP100:%.*]] = extractelement <4 x float> [[TMP93]], i64 2
; CHECK-NEXT: store float [[TMP100]], ptr [[TMP96]], align 4
; CHECK-NEXT: [[TMP101:%.*]] = extractelement <4 x float> [[TMP93]], i64 3
; CHECK-NEXT: store float [[TMP101]], ptr [[TMP97]], align 4
; CHECK-NEXT: [[TMP102:%.*]] = sitofp <4 x i32> [[TMP91]] to <4 x float>
; CHECK-NEXT: [[TMP103:%.*]] = fmul <4 x float> [[TMP32]], [[TMP102]]
; CHECK-NEXT: [[TMP104:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 68
; CHECK-NEXT: [[TMP105:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 68
; CHECK-NEXT: [[TMP106:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 68
; CHECK-NEXT: [[TMP107:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 68
; CHECK-NEXT: [[TMP108:%.*]] = extractelement <4 x float> [[TMP103]], i64 0
; CHECK-NEXT: store float [[TMP108]], ptr [[TMP104]], align 4
; CHECK-NEXT: [[TMP109:%.*]] = extractelement <4 x float> [[TMP103]], i64 1
; CHECK-NEXT: store float [[TMP109]], ptr [[TMP105]], align 4
; CHECK-NEXT: [[TMP110:%.*]] = extractelement <4 x float> [[TMP103]], i64 2
; CHECK-NEXT: store float [[TMP110]], ptr [[TMP106]], align 4
; CHECK-NEXT: [[TMP111:%.*]] = extractelement <4 x float> [[TMP103]], i64 3
; CHECK-NEXT: store float [[TMP111]], ptr [[TMP107]], align 4
; CHECK-NEXT: [[TMP112:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 4
; CHECK-NEXT: [[TMP113:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 4
; CHECK-NEXT: [[TMP114:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 4
; CHECK-NEXT: [[TMP115:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 4
; CHECK-NEXT: [[TMP116:%.*]] = load i8, ptr [[TMP112]], align 1
; CHECK-NEXT: [[TMP117:%.*]] = load i8, ptr [[TMP113]], align 1
; CHECK-NEXT: [[TMP118:%.*]] = load i8, ptr [[TMP114]], align 1
; CHECK-NEXT: [[TMP119:%.*]] = load i8, ptr [[TMP115]], align 1
; CHECK-NEXT: [[TMP120:%.*]] = insertelement <4 x i8> poison, i8 [[TMP116]], i64 0
; CHECK-NEXT: [[TMP121:%.*]] = insertelement <4 x i8> [[TMP120]], i8 [[TMP117]], i64 1
; CHECK-NEXT: [[TMP122:%.*]] = insertelement <4 x i8> [[TMP121]], i8 [[TMP118]], i64 2
; CHECK-NEXT: [[TMP123:%.*]] = insertelement <4 x i8> [[TMP122]], i8 [[TMP119]], i64 3
; CHECK-NEXT: [[TMP124:%.*]] = zext <4 x i8> [[TMP123]] to <4 x i32>
; CHECK-NEXT: [[TMP125:%.*]] = and <4 x i32> [[TMP124]], splat (i32 15)
; CHECK-NEXT: [[TMP126:%.*]] = add nsw <4 x i32> [[TMP125]], splat (i32 -8)
; CHECK-NEXT: [[TMP127:%.*]] = lshr <4 x i32> [[TMP124]], splat (i32 4)
; CHECK-NEXT: [[TMP128:%.*]] = add nsw <4 x i32> [[TMP127]], splat (i32 -8)
; CHECK-NEXT: [[TMP129:%.*]] = sitofp <4 x i32> [[TMP126]] to <4 x float>
; CHECK-NEXT: [[TMP130:%.*]] = fmul <4 x float> [[TMP32]], [[TMP129]]
; CHECK-NEXT: [[TMP131:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 8
; CHECK-NEXT: [[TMP132:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 8
; CHECK-NEXT: [[TMP133:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 8
; CHECK-NEXT: [[TMP134:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 8
; CHECK-NEXT: [[TMP135:%.*]] = extractelement <4 x float> [[TMP130]], i64 0
; CHECK-NEXT: store float [[TMP135]], ptr [[TMP131]], align 4
; CHECK-NEXT: [[TMP136:%.*]] = extractelement <4 x float> [[TMP130]], i64 1
; CHECK-NEXT: store float [[TMP136]], ptr [[TMP132]], align 4
; CHECK-NEXT: [[TMP137:%.*]] = extractelement <4 x float> [[TMP130]], i64 2
; CHECK-NEXT: store float [[TMP137]], ptr [[TMP133]], align 4
; CHECK-NEXT: [[TMP138:%.*]] = extractelement <4 x float> [[TMP130]], i64 3
; CHECK-NEXT: store float [[TMP138]], ptr [[TMP134]], align 4
; CHECK-NEXT: [[TMP139:%.*]] = sitofp <4 x i32> [[TMP128]] to <4 x float>
; CHECK-NEXT: [[TMP140:%.*]] = fmul <4 x float> [[TMP32]], [[TMP139]]
; CHECK-NEXT: [[TMP141:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 72
; CHECK-NEXT: [[TMP142:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 72
; CHECK-NEXT: [[TMP143:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 72
; CHECK-NEXT: [[TMP144:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 72
; CHECK-NEXT: [[TMP145:%.*]] = extractelement <4 x float> [[TMP140]], i64 0
; CHECK-NEXT: store float [[TMP145]], ptr [[TMP141]], align 4
; CHECK-NEXT: [[TMP146:%.*]] = extractelement <4 x float> [[TMP140]], i64 1
; CHECK-NEXT: store float [[TMP146]], ptr [[TMP142]], align 4
; CHECK-NEXT: [[TMP147:%.*]] = extractelement <4 x float> [[TMP140]], i64 2
; CHECK-NEXT: store float [[TMP147]], ptr [[TMP143]], align 4
; CHECK-NEXT: [[TMP148:%.*]] = extractelement <4 x float> [[TMP140]], i64 3
; CHECK-NEXT: store float [[TMP148]], ptr [[TMP144]], align 4
; CHECK-NEXT: [[TMP149:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 5
; CHECK-NEXT: [[TMP150:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 5
; CHECK-NEXT: [[TMP151:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 5
; CHECK-NEXT: [[TMP152:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 5
; CHECK-NEXT: [[TMP153:%.*]] = load i8, ptr [[TMP149]], align 1
; CHECK-NEXT: [[TMP154:%.*]] = load i8, ptr [[TMP150]], align 1
; CHECK-NEXT: [[TMP155:%.*]] = load i8, ptr [[TMP151]], align 1
; CHECK-NEXT: [[TMP156:%.*]] = load i8, ptr [[TMP152]], align 1
; CHECK-NEXT: [[TMP157:%.*]] = insertelement <4 x i8> poison, i8 [[TMP153]], i64 0
; CHECK-NEXT: [[TMP158:%.*]] = insertelement <4 x i8> [[TMP157]], i8 [[TMP154]], i64 1
; CHECK-NEXT: [[TMP159:%.*]] = insertelement <4 x i8> [[TMP158]], i8 [[TMP155]], i64 2
; CHECK-NEXT: [[TMP160:%.*]] = insertelement <4 x i8> [[TMP159]], i8 [[TMP156]], i64 3
; CHECK-NEXT: [[TMP161:%.*]] = zext <4 x i8> [[TMP160]] to <4 x i32>
; CHECK-NEXT: [[TMP162:%.*]] = and <4 x i32> [[TMP161]], splat (i32 15)
; CHECK-NEXT: [[TMP163:%.*]] = add nsw <4 x i32> [[TMP162]], splat (i32 -8)
; CHECK-NEXT: [[TMP164:%.*]] = lshr <4 x i32> [[TMP161]], splat (i32 4)
; CHECK-NEXT: [[TMP165:%.*]] = add nsw <4 x i32> [[TMP164]], splat (i32 -8)
; CHECK-NEXT: [[TMP166:%.*]] = sitofp <4 x i32> [[TMP163]] to <4 x float>
; CHECK-NEXT: [[TMP167:%.*]] = fmul <4 x float> [[TMP32]], [[TMP166]]
; CHECK-NEXT: [[TMP168:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 12
; CHECK-NEXT: [[TMP169:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 12
; CHECK-NEXT: [[TMP170:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 12
; CHECK-NEXT: [[TMP171:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 12
; CHECK-NEXT: [[TMP172:%.*]] = extractelement <4 x float> [[TMP167]], i64 0
; CHECK-NEXT: store float [[TMP172]], ptr [[TMP168]], align 4
; CHECK-NEXT: [[TMP173:%.*]] = extractelement <4 x float> [[TMP167]], i64 1
; CHECK-NEXT: store float [[TMP173]], ptr [[TMP169]], align 4
; CHECK-NEXT: [[TMP174:%.*]] = extractelement <4 x float> [[TMP167]], i64 2
; CHECK-NEXT: store float [[TMP174]], ptr [[TMP170]], align 4
; CHECK-NEXT: [[TMP175:%.*]] = extractelement <4 x float> [[TMP167]], i64 3
; CHECK-NEXT: store float [[TMP175]], ptr [[TMP171]], align 4
; CHECK-NEXT: [[TMP176:%.*]] = sitofp <4 x i32> [[TMP165]] to <4 x float>
; CHECK-NEXT: [[TMP177:%.*]] = fmul <4 x float> [[TMP32]], [[TMP176]]
; CHECK-NEXT: [[TMP178:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 76
; CHECK-NEXT: [[TMP179:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 76
; CHECK-NEXT: [[TMP180:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 76
; CHECK-NEXT: [[TMP181:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 76
; CHECK-NEXT: [[TMP182:%.*]] = extractelement <4 x float> [[TMP177]], i64 0
; CHECK-NEXT: store float [[TMP182]], ptr [[TMP178]], align 4
; CHECK-NEXT: [[TMP183:%.*]] = extractelement <4 x float> [[TMP177]], i64 1
; CHECK-NEXT: store float [[TMP183]], ptr [[TMP179]], align 4
; CHECK-NEXT: [[TMP184:%.*]] = extractelement <4 x float> [[TMP177]], i64 2
; CHECK-NEXT: store float [[TMP184]], ptr [[TMP180]], align 4
; CHECK-NEXT: [[TMP185:%.*]] = extractelement <4 x float> [[TMP177]], i64 3
; CHECK-NEXT: store float [[TMP185]], ptr [[TMP181]], align 4
; CHECK-NEXT: [[TMP186:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 6
; CHECK-NEXT: [[TMP187:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 6
; CHECK-NEXT: [[TMP188:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 6
; CHECK-NEXT: [[TMP189:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 6
; CHECK-NEXT: [[TMP190:%.*]] = load i8, ptr [[TMP186]], align 1
; CHECK-NEXT: [[TMP191:%.*]] = load i8, ptr [[TMP187]], align 1
; CHECK-NEXT: [[TMP192:%.*]] = load i8, ptr [[TMP188]], align 1
; CHECK-NEXT: [[TMP193:%.*]] = load i8, ptr [[TMP189]], align 1
; CHECK-NEXT: [[TMP194:%.*]] = insertelement <4 x i8> poison, i8 [[TMP190]], i64 0
; CHECK-NEXT: [[TMP195:%.*]] = insertelement <4 x i8> [[TMP194]], i8 [[TMP191]], i64 1
; CHECK-NEXT: [[TMP196:%.*]] = insertelement <4 x i8> [[TMP195]], i8 [[TMP192]], i64 2
; CHECK-NEXT: [[TMP197:%.*]] = insertelement <4 x i8> [[TMP196]], i8 [[TMP193]], i64 3
; CHECK-NEXT: [[TMP198:%.*]] = zext <4 x i8> [[TMP197]] to <4 x i32>
; CHECK-NEXT: [[TMP199:%.*]] = and <4 x i32> [[TMP198]], splat (i32 15)
; CHECK-NEXT: [[TMP200:%.*]] = add nsw <4 x i32> [[TMP199]], splat (i32 -8)
; CHECK-NEXT: [[TMP201:%.*]] = lshr <4 x i32> [[TMP198]], splat (i32 4)
; CHECK-NEXT: [[TMP202:%.*]] = add nsw <4 x i32> [[TMP201]], splat (i32 -8)
; CHECK-NEXT: [[TMP203:%.*]] = sitofp <4 x i32> [[TMP200]] to <4 x float>
; CHECK-NEXT: [[TMP204:%.*]] = fmul <4 x float> [[TMP32]], [[TMP203]]
; CHECK-NEXT: [[TMP205:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 16
; CHECK-NEXT: [[TMP206:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 16
; CHECK-NEXT: [[TMP207:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 16
; CHECK-NEXT: [[TMP208:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 16
; CHECK-NEXT: [[TMP209:%.*]] = extractelement <4 x float> [[TMP204]], i64 0
; CHECK-NEXT: store float [[TMP209]], ptr [[TMP205]], align 4
; CHECK-NEXT: [[TMP210:%.*]] = extractelement <4 x float> [[TMP204]], i64 1
; CHECK-NEXT: store float [[TMP210]], ptr [[TMP206]], align 4
; CHECK-NEXT: [[TMP211:%.*]] = extractelement <4 x float> [[TMP204]], i64 2
; CHECK-NEXT: store float [[TMP211]], ptr [[TMP207]], align 4
; CHECK-NEXT: [[TMP212:%.*]] = extractelement <4 x float> [[TMP204]], i64 3
; CHECK-NEXT: store float [[TMP212]], ptr [[TMP208]], align 4
; CHECK-NEXT: [[TMP213:%.*]] = sitofp <4 x i32> [[TMP202]] to <4 x float>
; CHECK-NEXT: [[TMP214:%.*]] = fmul <4 x float> [[TMP32]], [[TMP213]]
; CHECK-NEXT: [[TMP215:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 80
; CHECK-NEXT: [[TMP216:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 80
; CHECK-NEXT: [[TMP217:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 80
; CHECK-NEXT: [[TMP218:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 80
; CHECK-NEXT: [[TMP219:%.*]] = extractelement <4 x float> [[TMP214]], i64 0
; CHECK-NEXT: store float [[TMP219]], ptr [[TMP215]], align 4
; CHECK-NEXT: [[TMP220:%.*]] = extractelement <4 x float> [[TMP214]], i64 1
; CHECK-NEXT: store float [[TMP220]], ptr [[TMP216]], align 4
; CHECK-NEXT: [[TMP221:%.*]] = extractelement <4 x float> [[TMP214]], i64 2
; CHECK-NEXT: store float [[TMP221]], ptr [[TMP217]], align 4
; CHECK-NEXT: [[TMP222:%.*]] = extractelement <4 x float> [[TMP214]], i64 3
; CHECK-NEXT: store float [[TMP222]], ptr [[TMP218]], align 4
; CHECK-NEXT: [[TMP223:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 7
; CHECK-NEXT: [[TMP224:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 7
; CHECK-NEXT: [[TMP225:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 7
; CHECK-NEXT: [[TMP226:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 7
; CHECK-NEXT: [[TMP227:%.*]] = load i8, ptr [[TMP223]], align 1
; CHECK-NEXT: [[TMP228:%.*]] = load i8, ptr [[TMP224]], align 1
; CHECK-NEXT: [[TMP229:%.*]] = load i8, ptr [[TMP225]], align 1
; CHECK-NEXT: [[TMP230:%.*]] = load i8, ptr [[TMP226]], align 1
; CHECK-NEXT: [[TMP231:%.*]] = insertelement <4 x i8> poison, i8 [[TMP227]], i64 0
; CHECK-NEXT: [[TMP232:%.*]] = insertelement <4 x i8> [[TMP231]], i8 [[TMP228]], i64 1
; CHECK-NEXT: [[TMP233:%.*]] = insertelement <4 x i8> [[TMP232]], i8 [[TMP229]], i64 2
; CHECK-NEXT: [[TMP234:%.*]] = insertelement <4 x i8> [[TMP233]], i8 [[TMP230]], i64 3
; CHECK-NEXT: [[TMP235:%.*]] = zext <4 x i8> [[TMP234]] to <4 x i32>
; CHECK-NEXT: [[TMP236:%.*]] = and <4 x i32> [[TMP235]], splat (i32 15)
; CHECK-NEXT: [[TMP237:%.*]] = add nsw <4 x i32> [[TMP236]], splat (i32 -8)
; CHECK-NEXT: [[TMP238:%.*]] = lshr <4 x i32> [[TMP235]], splat (i32 4)
; CHECK-NEXT: [[TMP239:%.*]] = add nsw <4 x i32> [[TMP238]], splat (i32 -8)
; CHECK-NEXT: [[TMP240:%.*]] = sitofp <4 x i32> [[TMP237]] to <4 x float>
; CHECK-NEXT: [[TMP241:%.*]] = fmul <4 x float> [[TMP32]], [[TMP240]]
; CHECK-NEXT: [[TMP242:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 20
; CHECK-NEXT: [[TMP243:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 20
; CHECK-NEXT: [[TMP244:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 20
; CHECK-NEXT: [[TMP245:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 20
; CHECK-NEXT: [[TMP246:%.*]] = extractelement <4 x float> [[TMP241]], i64 0
; CHECK-NEXT: store float [[TMP246]], ptr [[TMP242]], align 4
; CHECK-NEXT: [[TMP247:%.*]] = extractelement <4 x float> [[TMP241]], i64 1
; CHECK-NEXT: store float [[TMP247]], ptr [[TMP243]], align 4
; CHECK-NEXT: [[TMP248:%.*]] = extractelement <4 x float> [[TMP241]], i64 2
; CHECK-NEXT: store float [[TMP248]], ptr [[TMP244]], align 4
; CHECK-NEXT: [[TMP249:%.*]] = extractelement <4 x float> [[TMP241]], i64 3
; CHECK-NEXT: store float [[TMP249]], ptr [[TMP245]], align 4
; CHECK-NEXT: [[TMP250:%.*]] = sitofp <4 x i32> [[TMP239]] to <4 x float>
; CHECK-NEXT: [[TMP251:%.*]] = fmul <4 x float> [[TMP32]], [[TMP250]]
; CHECK-NEXT: [[TMP252:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 84
; CHECK-NEXT: [[TMP253:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 84
; CHECK-NEXT: [[TMP254:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 84
; CHECK-NEXT: [[TMP255:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 84
; CHECK-NEXT: [[TMP256:%.*]] = extractelement <4 x float> [[TMP251]], i64 0
; CHECK-NEXT: store float [[TMP256]], ptr [[TMP252]], align 4
; CHECK-NEXT: [[TMP257:%.*]] = extractelement <4 x float> [[TMP251]], i64 1
; CHECK-NEXT: store float [[TMP257]], ptr [[TMP253]], align 4
; CHECK-NEXT: [[TMP258:%.*]] = extractelement <4 x float> [[TMP251]], i64 2
; CHECK-NEXT: store float [[TMP258]], ptr [[TMP254]], align 4
; CHECK-NEXT: [[TMP259:%.*]] = extractelement <4 x float> [[TMP251]], i64 3
; CHECK-NEXT: store float [[TMP259]], ptr [[TMP255]], align 4
; CHECK-NEXT: [[TMP260:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 8
; CHECK-NEXT: [[TMP261:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 8
; CHECK-NEXT: [[TMP262:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 8
; CHECK-NEXT: [[TMP263:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 8
; CHECK-NEXT: [[TMP264:%.*]] = load i8, ptr [[TMP260]], align 1
; CHECK-NEXT: [[TMP265:%.*]] = load i8, ptr [[TMP261]], align 1
; CHECK-NEXT: [[TMP266:%.*]] = load i8, ptr [[TMP262]], align 1
; CHECK-NEXT: [[TMP267:%.*]] = load i8, ptr [[TMP263]], align 1
; CHECK-NEXT: [[TMP268:%.*]] = insertelement <4 x i8> poison, i8 [[TMP264]], i64 0
; CHECK-NEXT: [[TMP269:%.*]] = insertelement <4 x i8> [[TMP268]], i8 [[TMP265]], i64 1
; CHECK-NEXT: [[TMP270:%.*]] = insertelement <4 x i8> [[TMP269]], i8 [[TMP266]], i64 2
; CHECK-NEXT: [[TMP271:%.*]] = insertelement <4 x i8> [[TMP270]], i8 [[TMP267]], i64 3
; CHECK-NEXT: [[TMP272:%.*]] = zext <4 x i8> [[TMP271]] to <4 x i32>
; CHECK-NEXT: [[TMP273:%.*]] = and <4 x i32> [[TMP272]], splat (i32 15)
; CHECK-NEXT: [[TMP274:%.*]] = add nsw <4 x i32> [[TMP273]], splat (i32 -8)
; CHECK-NEXT: [[TMP275:%.*]] = lshr <4 x i32> [[TMP272]], splat (i32 4)
; CHECK-NEXT: [[TMP276:%.*]] = add nsw <4 x i32> [[TMP275]], splat (i32 -8)
; CHECK-NEXT: [[TMP277:%.*]] = sitofp <4 x i32> [[TMP274]] to <4 x float>
; CHECK-NEXT: [[TMP278:%.*]] = fmul <4 x float> [[TMP32]], [[TMP277]]
; CHECK-NEXT: [[TMP279:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 24
; CHECK-NEXT: [[TMP280:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 24
; CHECK-NEXT: [[TMP281:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 24
; CHECK-NEXT: [[TMP282:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 24
; CHECK-NEXT: [[TMP283:%.*]] = extractelement <4 x float> [[TMP278]], i64 0
; CHECK-NEXT: store float [[TMP283]], ptr [[TMP279]], align 4
; CHECK-NEXT: [[TMP284:%.*]] = extractelement <4 x float> [[TMP278]], i64 1
; CHECK-NEXT: store float [[TMP284]], ptr [[TMP280]], align 4
; CHECK-NEXT: [[TMP285:%.*]] = extractelement <4 x float> [[TMP278]], i64 2
; CHECK-NEXT: store float [[TMP285]], ptr [[TMP281]], align 4
; CHECK-NEXT: [[TMP286:%.*]] = extractelement <4 x float> [[TMP278]], i64 3
; CHECK-NEXT: store float [[TMP286]], ptr [[TMP282]], align 4
; CHECK-NEXT: [[TMP287:%.*]] = sitofp <4 x i32> [[TMP276]] to <4 x float>
; CHECK-NEXT: [[TMP288:%.*]] = fmul <4 x float> [[TMP32]], [[TMP287]]
; CHECK-NEXT: [[TMP289:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 88
; CHECK-NEXT: [[TMP290:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 88
; CHECK-NEXT: [[TMP291:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 88
; CHECK-NEXT: [[TMP292:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 88
; CHECK-NEXT: [[TMP293:%.*]] = extractelement <4 x float> [[TMP288]], i64 0
; CHECK-NEXT: store float [[TMP293]], ptr [[TMP289]], align 4
; CHECK-NEXT: [[TMP294:%.*]] = extractelement <4 x float> [[TMP288]], i64 1
; CHECK-NEXT: store float [[TMP294]], ptr [[TMP290]], align 4
; CHECK-NEXT: [[TMP295:%.*]] = extractelement <4 x float> [[TMP288]], i64 2
; CHECK-NEXT: store float [[TMP295]], ptr [[TMP291]], align 4
; CHECK-NEXT: [[TMP296:%.*]] = extractelement <4 x float> [[TMP288]], i64 3
; CHECK-NEXT: store float [[TMP296]], ptr [[TMP292]], align 4
; CHECK-NEXT: [[TMP297:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 9
; CHECK-NEXT: [[TMP298:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 9
; CHECK-NEXT: [[TMP299:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 9
; CHECK-NEXT: [[TMP300:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 9
; CHECK-NEXT: [[TMP301:%.*]] = load i8, ptr [[TMP297]], align 1
; CHECK-NEXT: [[TMP302:%.*]] = load i8, ptr [[TMP298]], align 1
; CHECK-NEXT: [[TMP303:%.*]] = load i8, ptr [[TMP299]], align 1
; CHECK-NEXT: [[TMP304:%.*]] = load i8, ptr [[TMP300]], align 1
; CHECK-NEXT: [[TMP305:%.*]] = insertelement <4 x i8> poison, i8 [[TMP301]], i64 0
; CHECK-NEXT: [[TMP306:%.*]] = insertelement <4 x i8> [[TMP305]], i8 [[TMP302]], i64 1
; CHECK-NEXT: [[TMP307:%.*]] = insertelement <4 x i8> [[TMP306]], i8 [[TMP303]], i64 2
; CHECK-NEXT: [[TMP308:%.*]] = insertelement <4 x i8> [[TMP307]], i8 [[TMP304]], i64 3
; CHECK-NEXT: [[TMP309:%.*]] = zext <4 x i8> [[TMP308]] to <4 x i32>
; CHECK-NEXT: [[TMP310:%.*]] = and <4 x i32> [[TMP309]], splat (i32 15)
; CHECK-NEXT: [[TMP311:%.*]] = add nsw <4 x i32> [[TMP310]], splat (i32 -8)
; CHECK-NEXT: [[TMP312:%.*]] = lshr <4 x i32> [[TMP309]], splat (i32 4)
; CHECK-NEXT: [[TMP313:%.*]] = add nsw <4 x i32> [[TMP312]], splat (i32 -8)
; CHECK-NEXT: [[TMP314:%.*]] = sitofp <4 x i32> [[TMP311]] to <4 x float>
; CHECK-NEXT: [[TMP315:%.*]] = fmul <4 x float> [[TMP32]], [[TMP314]]
; CHECK-NEXT: [[TMP316:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 28
; CHECK-NEXT: [[TMP317:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 28
; CHECK-NEXT: [[TMP318:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 28
; CHECK-NEXT: [[TMP319:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 28
; CHECK-NEXT: [[TMP320:%.*]] = extractelement <4 x float> [[TMP315]], i64 0
; CHECK-NEXT: store float [[TMP320]], ptr [[TMP316]], align 4
; CHECK-NEXT: [[TMP321:%.*]] = extractelement <4 x float> [[TMP315]], i64 1
; CHECK-NEXT: store float [[TMP321]], ptr [[TMP317]], align 4
; CHECK-NEXT: [[TMP322:%.*]] = extractelement <4 x float> [[TMP315]], i64 2
; CHECK-NEXT: store float [[TMP322]], ptr [[TMP318]], align 4
; CHECK-NEXT: [[TMP323:%.*]] = extractelement <4 x float> [[TMP315]], i64 3
; CHECK-NEXT: store float [[TMP323]], ptr [[TMP319]], align 4
; CHECK-NEXT: [[TMP324:%.*]] = sitofp <4 x i32> [[TMP313]] to <4 x float>
; CHECK-NEXT: [[TMP325:%.*]] = fmul <4 x float> [[TMP32]], [[TMP324]]
; CHECK-NEXT: [[TMP326:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 92
; CHECK-NEXT: [[TMP327:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 92
; CHECK-NEXT: [[TMP328:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 92
; CHECK-NEXT: [[TMP329:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 92
; CHECK-NEXT: [[TMP330:%.*]] = extractelement <4 x float> [[TMP325]], i64 0
; CHECK-NEXT: store float [[TMP330]], ptr [[TMP326]], align 4
; CHECK-NEXT: [[TMP331:%.*]] = extractelement <4 x float> [[TMP325]], i64 1
; CHECK-NEXT: store float [[TMP331]], ptr [[TMP327]], align 4
; CHECK-NEXT: [[TMP332:%.*]] = extractelement <4 x float> [[TMP325]], i64 2
; CHECK-NEXT: store float [[TMP332]], ptr [[TMP328]], align 4
; CHECK-NEXT: [[TMP333:%.*]] = extractelement <4 x float> [[TMP325]], i64 3
; CHECK-NEXT: store float [[TMP333]], ptr [[TMP329]], align 4
; CHECK-NEXT: [[TMP334:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 10
; CHECK-NEXT: [[TMP335:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 10
; CHECK-NEXT: [[TMP336:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 10
; CHECK-NEXT: [[TMP337:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 10
; CHECK-NEXT: [[TMP338:%.*]] = load i8, ptr [[TMP334]], align 1
; CHECK-NEXT: [[TMP339:%.*]] = load i8, ptr [[TMP335]], align 1
; CHECK-NEXT: [[TMP340:%.*]] = load i8, ptr [[TMP336]], align 1
; CHECK-NEXT: [[TMP341:%.*]] = load i8, ptr [[TMP337]], align 1
; CHECK-NEXT: [[TMP342:%.*]] = insertelement <4 x i8> poison, i8 [[TMP338]], i64 0
; CHECK-NEXT: [[TMP343:%.*]] = insertelement <4 x i8> [[TMP342]], i8 [[TMP339]], i64 1
; CHECK-NEXT: [[TMP344:%.*]] = insertelement <4 x i8> [[TMP343]], i8 [[TMP340]], i64 2
; CHECK-NEXT: [[TMP345:%.*]] = insertelement <4 x i8> [[TMP344]], i8 [[TMP341]], i64 3
; CHECK-NEXT: [[TMP346:%.*]] = zext <4 x i8> [[TMP345]] to <4 x i32>
; CHECK-NEXT: [[TMP347:%.*]] = and <4 x i32> [[TMP346]], splat (i32 15)
; CHECK-NEXT: [[TMP348:%.*]] = add nsw <4 x i32> [[TMP347]], splat (i32 -8)
; CHECK-NEXT: [[TMP349:%.*]] = lshr <4 x i32> [[TMP346]], splat (i32 4)
; CHECK-NEXT: [[TMP350:%.*]] = add nsw <4 x i32> [[TMP349]], splat (i32 -8)
; CHECK-NEXT: [[TMP351:%.*]] = sitofp <4 x i32> [[TMP348]] to <4 x float>
; CHECK-NEXT: [[TMP352:%.*]] = fmul <4 x float> [[TMP32]], [[TMP351]]
; CHECK-NEXT: [[TMP353:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 32
; CHECK-NEXT: [[TMP354:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 32
; CHECK-NEXT: [[TMP355:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 32
; CHECK-NEXT: [[TMP356:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 32
; CHECK-NEXT: [[TMP357:%.*]] = extractelement <4 x float> [[TMP352]], i64 0
; CHECK-NEXT: store float [[TMP357]], ptr [[TMP353]], align 4
; CHECK-NEXT: [[TMP358:%.*]] = extractelement <4 x float> [[TMP352]], i64 1
; CHECK-NEXT: store float [[TMP358]], ptr [[TMP354]], align 4
; CHECK-NEXT: [[TMP359:%.*]] = extractelement <4 x float> [[TMP352]], i64 2
; CHECK-NEXT: store float [[TMP359]], ptr [[TMP355]], align 4
; CHECK-NEXT: [[TMP360:%.*]] = extractelement <4 x float> [[TMP352]], i64 3
; CHECK-NEXT: store float [[TMP360]], ptr [[TMP356]], align 4
; CHECK-NEXT: [[TMP361:%.*]] = sitofp <4 x i32> [[TMP350]] to <4 x float>
; CHECK-NEXT: [[TMP362:%.*]] = fmul <4 x float> [[TMP32]], [[TMP361]]
; CHECK-NEXT: [[TMP363:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 96
; CHECK-NEXT: [[TMP364:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 96
; CHECK-NEXT: [[TMP365:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 96
; CHECK-NEXT: [[TMP366:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 96
; CHECK-NEXT: [[TMP367:%.*]] = extractelement <4 x float> [[TMP362]], i64 0
; CHECK-NEXT: store float [[TMP367]], ptr [[TMP363]], align 4
; CHECK-NEXT: [[TMP368:%.*]] = extractelement <4 x float> [[TMP362]], i64 1
; CHECK-NEXT: store float [[TMP368]], ptr [[TMP364]], align 4
; CHECK-NEXT: [[TMP369:%.*]] = extractelement <4 x float> [[TMP362]], i64 2
; CHECK-NEXT: store float [[TMP369]], ptr [[TMP365]], align 4
; CHECK-NEXT: [[TMP370:%.*]] = extractelement <4 x float> [[TMP362]], i64 3
; CHECK-NEXT: store float [[TMP370]], ptr [[TMP366]], align 4
; CHECK-NEXT: [[TMP371:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 11
; CHECK-NEXT: [[TMP372:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 11
; CHECK-NEXT: [[TMP373:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 11
; CHECK-NEXT: [[TMP374:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 11
; CHECK-NEXT: [[TMP375:%.*]] = load i8, ptr [[TMP371]], align 1
; CHECK-NEXT: [[TMP376:%.*]] = load i8, ptr [[TMP372]], align 1
; CHECK-NEXT: [[TMP377:%.*]] = load i8, ptr [[TMP373]], align 1
; CHECK-NEXT: [[TMP378:%.*]] = load i8, ptr [[TMP374]], align 1
; CHECK-NEXT: [[TMP379:%.*]] = insertelement <4 x i8> poison, i8 [[TMP375]], i64 0
; CHECK-NEXT: [[TMP380:%.*]] = insertelement <4 x i8> [[TMP379]], i8 [[TMP376]], i64 1
; CHECK-NEXT: [[TMP381:%.*]] = insertelement <4 x i8> [[TMP380]], i8 [[TMP377]], i64 2
; CHECK-NEXT: [[TMP382:%.*]] = insertelement <4 x i8> [[TMP381]], i8 [[TMP378]], i64 3
; CHECK-NEXT: [[TMP383:%.*]] = zext <4 x i8> [[TMP382]] to <4 x i32>
; CHECK-NEXT: [[TMP384:%.*]] = and <4 x i32> [[TMP383]], splat (i32 15)
; CHECK-NEXT: [[TMP385:%.*]] = add nsw <4 x i32> [[TMP384]], splat (i32 -8)
; CHECK-NEXT: [[TMP386:%.*]] = lshr <4 x i32> [[TMP383]], splat (i32 4)
; CHECK-NEXT: [[TMP387:%.*]] = add nsw <4 x i32> [[TMP386]], splat (i32 -8)
; CHECK-NEXT: [[TMP388:%.*]] = sitofp <4 x i32> [[TMP385]] to <4 x float>
; CHECK-NEXT: [[TMP389:%.*]] = fmul <4 x float> [[TMP32]], [[TMP388]]
; CHECK-NEXT: [[TMP390:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 36
; CHECK-NEXT: [[TMP391:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 36
; CHECK-NEXT: [[TMP392:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 36
; CHECK-NEXT: [[TMP393:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 36
; CHECK-NEXT: [[TMP394:%.*]] = extractelement <4 x float> [[TMP389]], i64 0
; CHECK-NEXT: store float [[TMP394]], ptr [[TMP390]], align 4
; CHECK-NEXT: [[TMP395:%.*]] = extractelement <4 x float> [[TMP389]], i64 1
; CHECK-NEXT: store float [[TMP395]], ptr [[TMP391]], align 4
; CHECK-NEXT: [[TMP396:%.*]] = extractelement <4 x float> [[TMP389]], i64 2
; CHECK-NEXT: store float [[TMP396]], ptr [[TMP392]], align 4
; CHECK-NEXT: [[TMP397:%.*]] = extractelement <4 x float> [[TMP389]], i64 3
; CHECK-NEXT: store float [[TMP397]], ptr [[TMP393]], align 4
; CHECK-NEXT: [[TMP398:%.*]] = sitofp <4 x i32> [[TMP387]] to <4 x float>
; CHECK-NEXT: [[TMP399:%.*]] = fmul <4 x float> [[TMP32]], [[TMP398]]
; CHECK-NEXT: [[TMP400:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 100
; CHECK-NEXT: [[TMP401:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 100
; CHECK-NEXT: [[TMP402:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 100
; CHECK-NEXT: [[TMP403:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 100
; CHECK-NEXT: [[TMP404:%.*]] = extractelement <4 x float> [[TMP399]], i64 0
; CHECK-NEXT: store float [[TMP404]], ptr [[TMP400]], align 4
; CHECK-NEXT: [[TMP405:%.*]] = extractelement <4 x float> [[TMP399]], i64 1
; CHECK-NEXT: store float [[TMP405]], ptr [[TMP401]], align 4
; CHECK-NEXT: [[TMP406:%.*]] = extractelement <4 x float> [[TMP399]], i64 2
; CHECK-NEXT: store float [[TMP406]], ptr [[TMP402]], align 4
; CHECK-NEXT: [[TMP407:%.*]] = extractelement <4 x float> [[TMP399]], i64 3
; CHECK-NEXT: store float [[TMP407]], ptr [[TMP403]], align 4
; CHECK-NEXT: [[TMP408:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 12
; CHECK-NEXT: [[TMP409:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 12
; CHECK-NEXT: [[TMP410:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 12
; CHECK-NEXT: [[TMP411:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 12
; CHECK-NEXT: [[TMP412:%.*]] = load i8, ptr [[TMP408]], align 1
; CHECK-NEXT: [[TMP413:%.*]] = load i8, ptr [[TMP409]], align 1
; CHECK-NEXT: [[TMP414:%.*]] = load i8, ptr [[TMP410]], align 1
; CHECK-NEXT: [[TMP415:%.*]] = load i8, ptr [[TMP411]], align 1
; CHECK-NEXT: [[TMP416:%.*]] = insertelement <4 x i8> poison, i8 [[TMP412]], i64 0
; CHECK-NEXT: [[TMP417:%.*]] = insertelement <4 x i8> [[TMP416]], i8 [[TMP413]], i64 1
; CHECK-NEXT: [[TMP418:%.*]] = insertelement <4 x i8> [[TMP417]], i8 [[TMP414]], i64 2
; CHECK-NEXT: [[TMP419:%.*]] = insertelement <4 x i8> [[TMP418]], i8 [[TMP415]], i64 3
; CHECK-NEXT: [[TMP420:%.*]] = zext <4 x i8> [[TMP419]] to <4 x i32>
; CHECK-NEXT: [[TMP421:%.*]] = and <4 x i32> [[TMP420]], splat (i32 15)
; CHECK-NEXT: [[TMP422:%.*]] = add nsw <4 x i32> [[TMP421]], splat (i32 -8)
; CHECK-NEXT: [[TMP423:%.*]] = lshr <4 x i32> [[TMP420]], splat (i32 4)
; CHECK-NEXT: [[TMP424:%.*]] = add nsw <4 x i32> [[TMP423]], splat (i32 -8)
; CHECK-NEXT: [[TMP425:%.*]] = sitofp <4 x i32> [[TMP422]] to <4 x float>
; CHECK-NEXT: [[TMP426:%.*]] = fmul <4 x float> [[TMP32]], [[TMP425]]
; CHECK-NEXT: [[TMP427:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 40
; CHECK-NEXT: [[TMP428:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 40
; CHECK-NEXT: [[TMP429:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 40
; CHECK-NEXT: [[TMP430:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 40
; CHECK-NEXT: [[TMP431:%.*]] = extractelement <4 x float> [[TMP426]], i64 0
; CHECK-NEXT: store float [[TMP431]], ptr [[TMP427]], align 4
; CHECK-NEXT: [[TMP432:%.*]] = extractelement <4 x float> [[TMP426]], i64 1
; CHECK-NEXT: store float [[TMP432]], ptr [[TMP428]], align 4
; CHECK-NEXT: [[TMP433:%.*]] = extractelement <4 x float> [[TMP426]], i64 2
; CHECK-NEXT: store float [[TMP433]], ptr [[TMP429]], align 4
; CHECK-NEXT: [[TMP434:%.*]] = extractelement <4 x float> [[TMP426]], i64 3
; CHECK-NEXT: store float [[TMP434]], ptr [[TMP430]], align 4
; CHECK-NEXT: [[TMP435:%.*]] = sitofp <4 x i32> [[TMP424]] to <4 x float>
; CHECK-NEXT: [[TMP436:%.*]] = fmul <4 x float> [[TMP32]], [[TMP435]]
; CHECK-NEXT: [[TMP437:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 104
; CHECK-NEXT: [[TMP438:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 104
; CHECK-NEXT: [[TMP439:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 104
; CHECK-NEXT: [[TMP440:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 104
; CHECK-NEXT: [[TMP441:%.*]] = extractelement <4 x float> [[TMP436]], i64 0
; CHECK-NEXT: store float [[TMP441]], ptr [[TMP437]], align 4
; CHECK-NEXT: [[TMP442:%.*]] = extractelement <4 x float> [[TMP436]], i64 1
; CHECK-NEXT: store float [[TMP442]], ptr [[TMP438]], align 4
; CHECK-NEXT: [[TMP443:%.*]] = extractelement <4 x float> [[TMP436]], i64 2
; CHECK-NEXT: store float [[TMP443]], ptr [[TMP439]], align 4
; CHECK-NEXT: [[TMP444:%.*]] = extractelement <4 x float> [[TMP436]], i64 3
; CHECK-NEXT: store float [[TMP444]], ptr [[TMP440]], align 4
; CHECK-NEXT: [[TMP445:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 13
; CHECK-NEXT: [[TMP446:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 13
; CHECK-NEXT: [[TMP447:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 13
; CHECK-NEXT: [[TMP448:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 13
; CHECK-NEXT: [[TMP449:%.*]] = load i8, ptr [[TMP445]], align 1
; CHECK-NEXT: [[TMP450:%.*]] = load i8, ptr [[TMP446]], align 1
; CHECK-NEXT: [[TMP451:%.*]] = load i8, ptr [[TMP447]], align 1
; CHECK-NEXT: [[TMP452:%.*]] = load i8, ptr [[TMP448]], align 1
; CHECK-NEXT: [[TMP453:%.*]] = insertelement <4 x i8> poison, i8 [[TMP449]], i64 0
; CHECK-NEXT: [[TMP454:%.*]] = insertelement <4 x i8> [[TMP453]], i8 [[TMP450]], i64 1
; CHECK-NEXT: [[TMP455:%.*]] = insertelement <4 x i8> [[TMP454]], i8 [[TMP451]], i64 2
; CHECK-NEXT: [[TMP456:%.*]] = insertelement <4 x i8> [[TMP455]], i8 [[TMP452]], i64 3
; CHECK-NEXT: [[TMP457:%.*]] = zext <4 x i8> [[TMP456]] to <4 x i32>
; CHECK-NEXT: [[TMP458:%.*]] = and <4 x i32> [[TMP457]], splat (i32 15)
; CHECK-NEXT: [[TMP459:%.*]] = add nsw <4 x i32> [[TMP458]], splat (i32 -8)
; CHECK-NEXT: [[TMP460:%.*]] = lshr <4 x i32> [[TMP457]], splat (i32 4)
; CHECK-NEXT: [[TMP461:%.*]] = add nsw <4 x i32> [[TMP460]], splat (i32 -8)
; CHECK-NEXT: [[TMP462:%.*]] = sitofp <4 x i32> [[TMP459]] to <4 x float>
; CHECK-NEXT: [[TMP463:%.*]] = fmul <4 x float> [[TMP32]], [[TMP462]]
; CHECK-NEXT: [[TMP464:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 44
; CHECK-NEXT: [[TMP465:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 44
; CHECK-NEXT: [[TMP466:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 44
; CHECK-NEXT: [[TMP467:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 44
; CHECK-NEXT: [[TMP468:%.*]] = extractelement <4 x float> [[TMP463]], i64 0
; CHECK-NEXT: store float [[TMP468]], ptr [[TMP464]], align 4
; CHECK-NEXT: [[TMP469:%.*]] = extractelement <4 x float> [[TMP463]], i64 1
; CHECK-NEXT: store float [[TMP469]], ptr [[TMP465]], align 4
; CHECK-NEXT: [[TMP470:%.*]] = extractelement <4 x float> [[TMP463]], i64 2
; CHECK-NEXT: store float [[TMP470]], ptr [[TMP466]], align 4
; CHECK-NEXT: [[TMP471:%.*]] = extractelement <4 x float> [[TMP463]], i64 3
; CHECK-NEXT: store float [[TMP471]], ptr [[TMP467]], align 4
; CHECK-NEXT: [[TMP472:%.*]] = sitofp <4 x i32> [[TMP461]] to <4 x float>
; CHECK-NEXT: [[TMP473:%.*]] = fmul <4 x float> [[TMP32]], [[TMP472]]
; CHECK-NEXT: [[TMP474:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 108
; CHECK-NEXT: [[TMP475:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 108
; CHECK-NEXT: [[TMP476:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 108
; CHECK-NEXT: [[TMP477:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 108
; CHECK-NEXT: [[TMP478:%.*]] = extractelement <4 x float> [[TMP473]], i64 0
; CHECK-NEXT: store float [[TMP478]], ptr [[TMP474]], align 4
; CHECK-NEXT: [[TMP479:%.*]] = extractelement <4 x float> [[TMP473]], i64 1
; CHECK-NEXT: store float [[TMP479]], ptr [[TMP475]], align 4
; CHECK-NEXT: [[TMP480:%.*]] = extractelement <4 x float> [[TMP473]], i64 2
; CHECK-NEXT: store float [[TMP480]], ptr [[TMP476]], align 4
; CHECK-NEXT: [[TMP481:%.*]] = extractelement <4 x float> [[TMP473]], i64 3
; CHECK-NEXT: store float [[TMP481]], ptr [[TMP477]], align 4
; CHECK-NEXT: [[TMP482:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 14
; CHECK-NEXT: [[TMP483:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 14
; CHECK-NEXT: [[TMP484:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 14
; CHECK-NEXT: [[TMP485:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 14
; CHECK-NEXT: [[TMP486:%.*]] = load i8, ptr [[TMP482]], align 1
; CHECK-NEXT: [[TMP487:%.*]] = load i8, ptr [[TMP483]], align 1
; CHECK-NEXT: [[TMP488:%.*]] = load i8, ptr [[TMP484]], align 1
; CHECK-NEXT: [[TMP489:%.*]] = load i8, ptr [[TMP485]], align 1
; CHECK-NEXT: [[TMP490:%.*]] = insertelement <4 x i8> poison, i8 [[TMP486]], i64 0
; CHECK-NEXT: [[TMP491:%.*]] = insertelement <4 x i8> [[TMP490]], i8 [[TMP487]], i64 1
; CHECK-NEXT: [[TMP492:%.*]] = insertelement <4 x i8> [[TMP491]], i8 [[TMP488]], i64 2
; CHECK-NEXT: [[TMP493:%.*]] = insertelement <4 x i8> [[TMP492]], i8 [[TMP489]], i64 3
; CHECK-NEXT: [[TMP494:%.*]] = zext <4 x i8> [[TMP493]] to <4 x i32>
; CHECK-NEXT: [[TMP495:%.*]] = and <4 x i32> [[TMP494]], splat (i32 15)
; CHECK-NEXT: [[TMP496:%.*]] = add nsw <4 x i32> [[TMP495]], splat (i32 -8)
; CHECK-NEXT: [[TMP497:%.*]] = lshr <4 x i32> [[TMP494]], splat (i32 4)
; CHECK-NEXT: [[TMP498:%.*]] = add nsw <4 x i32> [[TMP497]], splat (i32 -8)
; CHECK-NEXT: [[TMP499:%.*]] = sitofp <4 x i32> [[TMP496]] to <4 x float>
; CHECK-NEXT: [[TMP500:%.*]] = fmul <4 x float> [[TMP32]], [[TMP499]]
; CHECK-NEXT: [[TMP501:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 48
; CHECK-NEXT: [[TMP502:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 48
; CHECK-NEXT: [[TMP503:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 48
; CHECK-NEXT: [[TMP504:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 48
; CHECK-NEXT: [[TMP505:%.*]] = extractelement <4 x float> [[TMP500]], i64 0
; CHECK-NEXT: store float [[TMP505]], ptr [[TMP501]], align 4
; CHECK-NEXT: [[TMP506:%.*]] = extractelement <4 x float> [[TMP500]], i64 1
; CHECK-NEXT: store float [[TMP506]], ptr [[TMP502]], align 4
; CHECK-NEXT: [[TMP507:%.*]] = extractelement <4 x float> [[TMP500]], i64 2
; CHECK-NEXT: store float [[TMP507]], ptr [[TMP503]], align 4
; CHECK-NEXT: [[TMP508:%.*]] = extractelement <4 x float> [[TMP500]], i64 3
; CHECK-NEXT: store float [[TMP508]], ptr [[TMP504]], align 4
; CHECK-NEXT: [[TMP509:%.*]] = sitofp <4 x i32> [[TMP498]] to <4 x float>
; CHECK-NEXT: [[TMP510:%.*]] = fmul <4 x float> [[TMP32]], [[TMP509]]
; CHECK-NEXT: [[TMP511:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 112
; CHECK-NEXT: [[TMP512:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 112
; CHECK-NEXT: [[TMP513:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 112
; CHECK-NEXT: [[TMP514:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 112
; CHECK-NEXT: [[TMP515:%.*]] = extractelement <4 x float> [[TMP510]], i64 0
; CHECK-NEXT: store float [[TMP515]], ptr [[TMP511]], align 4
; CHECK-NEXT: [[TMP516:%.*]] = extractelement <4 x float> [[TMP510]], i64 1
; CHECK-NEXT: store float [[TMP516]], ptr [[TMP512]], align 4
; CHECK-NEXT: [[TMP517:%.*]] = extractelement <4 x float> [[TMP510]], i64 2
; CHECK-NEXT: store float [[TMP517]], ptr [[TMP513]], align 4
; CHECK-NEXT: [[TMP518:%.*]] = extractelement <4 x float> [[TMP510]], i64 3
; CHECK-NEXT: store float [[TMP518]], ptr [[TMP514]], align 4
; CHECK-NEXT: [[TMP519:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 15
; CHECK-NEXT: [[TMP520:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 15
; CHECK-NEXT: [[TMP521:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 15
; CHECK-NEXT: [[TMP522:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 15
; CHECK-NEXT: [[TMP523:%.*]] = load i8, ptr [[TMP519]], align 1
; CHECK-NEXT: [[TMP524:%.*]] = load i8, ptr [[TMP520]], align 1
; CHECK-NEXT: [[TMP525:%.*]] = load i8, ptr [[TMP521]], align 1
; CHECK-NEXT: [[TMP526:%.*]] = load i8, ptr [[TMP522]], align 1
; CHECK-NEXT: [[TMP527:%.*]] = insertelement <4 x i8> poison, i8 [[TMP523]], i64 0
; CHECK-NEXT: [[TMP528:%.*]] = insertelement <4 x i8> [[TMP527]], i8 [[TMP524]], i64 1
; CHECK-NEXT: [[TMP529:%.*]] = insertelement <4 x i8> [[TMP528]], i8 [[TMP525]], i64 2
; CHECK-NEXT: [[TMP530:%.*]] = insertelement <4 x i8> [[TMP529]], i8 [[TMP526]], i64 3
; CHECK-NEXT: [[TMP531:%.*]] = zext <4 x i8> [[TMP530]] to <4 x i32>
; CHECK-NEXT: [[TMP532:%.*]] = and <4 x i32> [[TMP531]], splat (i32 15)
; CHECK-NEXT: [[TMP533:%.*]] = add nsw <4 x i32> [[TMP532]], splat (i32 -8)
; CHECK-NEXT: [[TMP534:%.*]] = lshr <4 x i32> [[TMP531]], splat (i32 4)
; CHECK-NEXT: [[TMP535:%.*]] = add nsw <4 x i32> [[TMP534]], splat (i32 -8)
; CHECK-NEXT: [[TMP536:%.*]] = sitofp <4 x i32> [[TMP533]] to <4 x float>
; CHECK-NEXT: [[TMP537:%.*]] = fmul <4 x float> [[TMP32]], [[TMP536]]
; CHECK-NEXT: [[TMP538:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 52
; CHECK-NEXT: [[TMP539:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 52
; CHECK-NEXT: [[TMP540:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 52
; CHECK-NEXT: [[TMP541:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 52
; CHECK-NEXT: [[TMP542:%.*]] = extractelement <4 x float> [[TMP537]], i64 0
; CHECK-NEXT: store float [[TMP542]], ptr [[TMP538]], align 4
; CHECK-NEXT: [[TMP543:%.*]] = extractelement <4 x float> [[TMP537]], i64 1
; CHECK-NEXT: store float [[TMP543]], ptr [[TMP539]], align 4
; CHECK-NEXT: [[TMP544:%.*]] = extractelement <4 x float> [[TMP537]], i64 2
; CHECK-NEXT: store float [[TMP544]], ptr [[TMP540]], align 4
; CHECK-NEXT: [[TMP545:%.*]] = extractelement <4 x float> [[TMP537]], i64 3
; CHECK-NEXT: store float [[TMP545]], ptr [[TMP541]], align 4
; CHECK-NEXT: [[TMP546:%.*]] = sitofp <4 x i32> [[TMP535]] to <4 x float>
; CHECK-NEXT: [[TMP547:%.*]] = fmul <4 x float> [[TMP32]], [[TMP546]]
; CHECK-NEXT: [[TMP548:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 116
; CHECK-NEXT: [[TMP549:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 116
; CHECK-NEXT: [[TMP550:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 116
; CHECK-NEXT: [[TMP551:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 116
; CHECK-NEXT: [[TMP552:%.*]] = extractelement <4 x float> [[TMP547]], i64 0
; CHECK-NEXT: store float [[TMP552]], ptr [[TMP548]], align 4
; CHECK-NEXT: [[TMP553:%.*]] = extractelement <4 x float> [[TMP547]], i64 1
; CHECK-NEXT: store float [[TMP553]], ptr [[TMP549]], align 4
; CHECK-NEXT: [[TMP554:%.*]] = extractelement <4 x float> [[TMP547]], i64 2
; CHECK-NEXT: store float [[TMP554]], ptr [[TMP550]], align 4
; CHECK-NEXT: [[TMP555:%.*]] = extractelement <4 x float> [[TMP547]], i64 3
; CHECK-NEXT: store float [[TMP555]], ptr [[TMP551]], align 4
; CHECK-NEXT: [[TMP556:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 16
; CHECK-NEXT: [[TMP557:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 16
; CHECK-NEXT: [[TMP558:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 16
; CHECK-NEXT: [[TMP559:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 16
; CHECK-NEXT: [[TMP560:%.*]] = load i8, ptr [[TMP556]], align 1
; CHECK-NEXT: [[TMP561:%.*]] = load i8, ptr [[TMP557]], align 1
; CHECK-NEXT: [[TMP562:%.*]] = load i8, ptr [[TMP558]], align 1
; CHECK-NEXT: [[TMP563:%.*]] = load i8, ptr [[TMP559]], align 1
; CHECK-NEXT: [[TMP564:%.*]] = insertelement <4 x i8> poison, i8 [[TMP560]], i64 0
; CHECK-NEXT: [[TMP565:%.*]] = insertelement <4 x i8> [[TMP564]], i8 [[TMP561]], i64 1
; CHECK-NEXT: [[TMP566:%.*]] = insertelement <4 x i8> [[TMP565]], i8 [[TMP562]], i64 2
; CHECK-NEXT: [[TMP567:%.*]] = insertelement <4 x i8> [[TMP566]], i8 [[TMP563]], i64 3
; CHECK-NEXT: [[TMP568:%.*]] = zext <4 x i8> [[TMP567]] to <4 x i32>
; CHECK-NEXT: [[TMP569:%.*]] = and <4 x i32> [[TMP568]], splat (i32 15)
; CHECK-NEXT: [[TMP570:%.*]] = add nsw <4 x i32> [[TMP569]], splat (i32 -8)
; CHECK-NEXT: [[TMP571:%.*]] = lshr <4 x i32> [[TMP568]], splat (i32 4)
; CHECK-NEXT: [[TMP572:%.*]] = add nsw <4 x i32> [[TMP571]], splat (i32 -8)
; CHECK-NEXT: [[TMP573:%.*]] = sitofp <4 x i32> [[TMP570]] to <4 x float>
; CHECK-NEXT: [[TMP574:%.*]] = fmul <4 x float> [[TMP32]], [[TMP573]]
; CHECK-NEXT: [[TMP575:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 56
; CHECK-NEXT: [[TMP576:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 56
; CHECK-NEXT: [[TMP577:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 56
; CHECK-NEXT: [[TMP578:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 56
; CHECK-NEXT: [[TMP579:%.*]] = extractelement <4 x float> [[TMP574]], i64 0
; CHECK-NEXT: store float [[TMP579]], ptr [[TMP575]], align 4
; CHECK-NEXT: [[TMP580:%.*]] = extractelement <4 x float> [[TMP574]], i64 1
; CHECK-NEXT: store float [[TMP580]], ptr [[TMP576]], align 4
; CHECK-NEXT: [[TMP581:%.*]] = extractelement <4 x float> [[TMP574]], i64 2
; CHECK-NEXT: store float [[TMP581]], ptr [[TMP577]], align 4
; CHECK-NEXT: [[TMP582:%.*]] = extractelement <4 x float> [[TMP574]], i64 3
; CHECK-NEXT: store float [[TMP582]], ptr [[TMP578]], align 4
; CHECK-NEXT: [[TMP583:%.*]] = sitofp <4 x i32> [[TMP572]] to <4 x float>
; CHECK-NEXT: [[TMP584:%.*]] = fmul <4 x float> [[TMP32]], [[TMP583]]
; CHECK-NEXT: [[TMP585:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 120
; CHECK-NEXT: [[TMP586:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 120
; CHECK-NEXT: [[TMP587:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 120
; CHECK-NEXT: [[TMP588:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 120
; CHECK-NEXT: [[TMP589:%.*]] = extractelement <4 x float> [[TMP584]], i64 0
; CHECK-NEXT: store float [[TMP589]], ptr [[TMP585]], align 4
; CHECK-NEXT: [[TMP590:%.*]] = extractelement <4 x float> [[TMP584]], i64 1
; CHECK-NEXT: store float [[TMP590]], ptr [[TMP586]], align 4
; CHECK-NEXT: [[TMP591:%.*]] = extractelement <4 x float> [[TMP584]], i64 2
; CHECK-NEXT: store float [[TMP591]], ptr [[TMP587]], align 4
; CHECK-NEXT: [[TMP592:%.*]] = extractelement <4 x float> [[TMP584]], i64 3
; CHECK-NEXT: store float [[TMP592]], ptr [[TMP588]], align 4
; CHECK-NEXT: [[TMP593:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP4]], i32 17
; CHECK-NEXT: [[TMP594:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP5]], i32 17
; CHECK-NEXT: [[TMP595:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP6]], i32 17
; CHECK-NEXT: [[TMP596:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP7]], i32 17
; CHECK-NEXT: [[TMP597:%.*]] = load i8, ptr [[TMP593]], align 1
; CHECK-NEXT: [[TMP598:%.*]] = load i8, ptr [[TMP594]], align 1
; CHECK-NEXT: [[TMP599:%.*]] = load i8, ptr [[TMP595]], align 1
; CHECK-NEXT: [[TMP600:%.*]] = load i8, ptr [[TMP596]], align 1
; CHECK-NEXT: [[TMP601:%.*]] = insertelement <4 x i8> poison, i8 [[TMP597]], i64 0
; CHECK-NEXT: [[TMP602:%.*]] = insertelement <4 x i8> [[TMP601]], i8 [[TMP598]], i64 1
; CHECK-NEXT: [[TMP603:%.*]] = insertelement <4 x i8> [[TMP602]], i8 [[TMP599]], i64 2
; CHECK-NEXT: [[TMP604:%.*]] = insertelement <4 x i8> [[TMP603]], i8 [[TMP600]], i64 3
; CHECK-NEXT: [[TMP605:%.*]] = zext <4 x i8> [[TMP604]] to <4 x i32>
; CHECK-NEXT: [[TMP606:%.*]] = and <4 x i32> [[TMP605]], splat (i32 15)
; CHECK-NEXT: [[TMP607:%.*]] = add nsw <4 x i32> [[TMP606]], splat (i32 -8)
; CHECK-NEXT: [[TMP608:%.*]] = lshr <4 x i32> [[TMP605]], splat (i32 4)
; CHECK-NEXT: [[TMP609:%.*]] = add nsw <4 x i32> [[TMP608]], splat (i32 -8)
; CHECK-NEXT: [[TMP610:%.*]] = sitofp <4 x i32> [[TMP607]] to <4 x float>
; CHECK-NEXT: [[TMP611:%.*]] = fmul <4 x float> [[TMP32]], [[TMP610]]
; CHECK-NEXT: [[TMP612:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 60
; CHECK-NEXT: [[TMP613:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 60
; CHECK-NEXT: [[TMP614:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 60
; CHECK-NEXT: [[TMP615:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 60
; CHECK-NEXT: [[TMP616:%.*]] = extractelement <4 x float> [[TMP611]], i64 0
; CHECK-NEXT: store float [[TMP616]], ptr [[TMP612]], align 4
; CHECK-NEXT: [[TMP617:%.*]] = extractelement <4 x float> [[TMP611]], i64 1
; CHECK-NEXT: store float [[TMP617]], ptr [[TMP613]], align 4
; CHECK-NEXT: [[TMP618:%.*]] = extractelement <4 x float> [[TMP611]], i64 2
; CHECK-NEXT: store float [[TMP618]], ptr [[TMP614]], align 4
; CHECK-NEXT: [[TMP619:%.*]] = extractelement <4 x float> [[TMP611]], i64 3
; CHECK-NEXT: store float [[TMP619]], ptr [[TMP615]], align 4
; CHECK-NEXT: [[TMP620:%.*]] = sitofp <4 x i32> [[TMP609]] to <4 x float>
; CHECK-NEXT: [[TMP621:%.*]] = fmul <4 x float> [[TMP32]], [[TMP620]]
; CHECK-NEXT: [[TMP622:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP39]], i32 124
; CHECK-NEXT: [[TMP623:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP41]], i32 124
; CHECK-NEXT: [[TMP624:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP43]], i32 124
; CHECK-NEXT: [[TMP625:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP45]], i32 124
; CHECK-NEXT: [[TMP626:%.*]] = extractelement <4 x float> [[TMP621]], i64 0
; CHECK-NEXT: store float [[TMP626]], ptr [[TMP622]], align 4
; CHECK-NEXT: [[TMP627:%.*]] = extractelement <4 x float> [[TMP621]], i64 1
; CHECK-NEXT: store float [[TMP627]], ptr [[TMP623]], align 4
; CHECK-NEXT: [[TMP628:%.*]] = extractelement <4 x float> [[TMP621]], i64 2
; CHECK-NEXT: store float [[TMP628]], ptr [[TMP624]], align 4
; CHECK-NEXT: [[TMP629:%.*]] = extractelement <4 x float> [[TMP621]], i64 3
; CHECK-NEXT: store float [[TMP629]], ptr [[TMP625]], align 4
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 4
; CHECK-NEXT: [[VEC_IND_NEXT]] = add nuw nsw <4 x i32> [[VEC_IND]], splat (i32 4)
; CHECK-NEXT: [[TMP630:%.*]] = icmp eq i32 [[INDEX_NEXT]], [[N_VEC]]
; CHECK-NEXT: br i1 [[TMP630]], label %[[BB7:.*]], label %[[BB8]], !llvm.loop [[LOOP0:![0-9]+]]
; CHECK: [[BB7]]:
; CHECK-NEXT: [[CMP_N:%.*]] = icmp eq i32 [[I5]], [[N_VEC]]
; CHECK-NEXT: br i1 [[CMP_N]], label %[[BB9:.*]], label %[[SCALAR_PH]]
; CHECK: [[SCALAR_PH]]:
; CHECK-NEXT: [[BC_RESUME_VAL:%.*]] = phi i32 [ [[N_VEC]], %[[BB7]] ], [ 0, %[[BB]] ]
; CHECK-NEXT: br label %[[BB10:.*]]
; CHECK: [[BB9]]:
; CHECK-NEXT: ret void
; CHECK: [[BB10]]:
; CHECK-NEXT: [[I9:%.*]] = phi i32 [ [[I238:%.*]], %[[BB10]] ], [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ]
; CHECK-NEXT: [[I10:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[I9]]
; CHECK-NEXT: [[I11:%.*]] = load i16, ptr [[I10]], align 2
; CHECK-NEXT: [[I12:%.*]] = zext i16 [[I11]] to i32
; CHECK-NEXT: [[I13:%.*]] = shl i32 [[I12]], 17
; CHECK-NEXT: [[I14:%.*]] = lshr exact i32 [[I13]], 4
; CHECK-NEXT: [[I15:%.*]] = or disjoint i32 [[I14]], 1879048192
; CHECK-NEXT: [[I16:%.*]] = bitcast i32 [[I15]] to float
; CHECK-NEXT: [[I17:%.*]] = and i32 [[I12]], 32767
; CHECK-NEXT: [[I18:%.*]] = or disjoint i32 [[I17]], 1056964608
; CHECK-NEXT: [[I19:%.*]] = bitcast i32 [[I18]] to float
; CHECK-NEXT: [[I20:%.*]] = icmp ult i32 [[I13]], 134217728
; CHECK-NEXT: [[I21:%.*]] = fadd float [[I19]], -5.000000e-01
; CHECK-NEXT: [[I22:%.*]] = fmul float [[I16]], 1.925930e-34
; CHECK-NEXT: [[I23:%.*]] = select i1 [[I20]], float [[I21]], float [[I22]]
; CHECK-NEXT: [[I24:%.*]] = bitcast float [[I23]] to i32
; CHECK-NEXT: [[I25:%.*]] = sext i16 [[I11]] to i32
; CHECK-NEXT: [[I26:%.*]] = and i32 [[I25]], -2147483648
; CHECK-NEXT: [[I27:%.*]] = or i32 [[I26]], [[I24]]
; CHECK-NEXT: [[I28:%.*]] = bitcast i32 [[I27]] to float
; CHECK-NEXT: [[I29:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 2
; CHECK-NEXT: [[I30:%.*]] = shl nsw i32 [[I9]], 7
; CHECK-NEXT: [[I31:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[I30]]
; CHECK-NEXT: [[I32:%.*]] = load i8, ptr [[I29]], align 1
; CHECK-NEXT: [[I33:%.*]] = zext i8 [[I32]] to i32
; CHECK-NEXT: [[I34:%.*]] = and i32 [[I33]], 15
; CHECK-NEXT: [[I35:%.*]] = add nsw i32 [[I34]], -8
; CHECK-NEXT: [[I36:%.*]] = lshr i32 [[I33]], 4
; CHECK-NEXT: [[I37:%.*]] = add nsw i32 [[I36]], -8
; CHECK-NEXT: [[I38:%.*]] = sitofp i32 [[I35]] to float
; CHECK-NEXT: [[I39:%.*]] = fmul float [[I28]], [[I38]]
; CHECK-NEXT: store float [[I39]], ptr [[I31]], align 4
; CHECK-NEXT: [[I40:%.*]] = sitofp i32 [[I37]] to float
; CHECK-NEXT: [[I41:%.*]] = fmul float [[I28]], [[I40]]
; CHECK-NEXT: [[I42:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 64
; CHECK-NEXT: store float [[I41]], ptr [[I42]], align 4
; CHECK-NEXT: [[I43:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 3
; CHECK-NEXT: [[I44:%.*]] = load i8, ptr [[I43]], align 1
; CHECK-NEXT: [[I45:%.*]] = zext i8 [[I44]] to i32
; CHECK-NEXT: [[I46:%.*]] = and i32 [[I45]], 15
; CHECK-NEXT: [[I47:%.*]] = add nsw i32 [[I46]], -8
; CHECK-NEXT: [[I48:%.*]] = lshr i32 [[I45]], 4
; CHECK-NEXT: [[I49:%.*]] = add nsw i32 [[I48]], -8
; CHECK-NEXT: [[I50:%.*]] = sitofp i32 [[I47]] to float
; CHECK-NEXT: [[I51:%.*]] = fmul float [[I28]], [[I50]]
; CHECK-NEXT: [[I52:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 4
; CHECK-NEXT: store float [[I51]], ptr [[I52]], align 4
; CHECK-NEXT: [[I53:%.*]] = sitofp i32 [[I49]] to float
; CHECK-NEXT: [[I54:%.*]] = fmul float [[I28]], [[I53]]
; CHECK-NEXT: [[I55:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 68
; CHECK-NEXT: store float [[I54]], ptr [[I55]], align 4
; CHECK-NEXT: [[I56:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 4
; CHECK-NEXT: [[I57:%.*]] = load i8, ptr [[I56]], align 1
; CHECK-NEXT: [[I58:%.*]] = zext i8 [[I57]] to i32
; CHECK-NEXT: [[I59:%.*]] = and i32 [[I58]], 15
; CHECK-NEXT: [[I60:%.*]] = add nsw i32 [[I59]], -8
; CHECK-NEXT: [[I61:%.*]] = lshr i32 [[I58]], 4
; CHECK-NEXT: [[I62:%.*]] = add nsw i32 [[I61]], -8
; CHECK-NEXT: [[I63:%.*]] = sitofp i32 [[I60]] to float
; CHECK-NEXT: [[I64:%.*]] = fmul float [[I28]], [[I63]]
; CHECK-NEXT: [[I65:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 8
; CHECK-NEXT: store float [[I64]], ptr [[I65]], align 4
; CHECK-NEXT: [[I66:%.*]] = sitofp i32 [[I62]] to float
; CHECK-NEXT: [[I67:%.*]] = fmul float [[I28]], [[I66]]
; CHECK-NEXT: [[I68:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 72
; CHECK-NEXT: store float [[I67]], ptr [[I68]], align 4
; CHECK-NEXT: [[I69:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 5
; CHECK-NEXT: [[I70:%.*]] = load i8, ptr [[I69]], align 1
; CHECK-NEXT: [[I71:%.*]] = zext i8 [[I70]] to i32
; CHECK-NEXT: [[I72:%.*]] = and i32 [[I71]], 15
; CHECK-NEXT: [[I73:%.*]] = add nsw i32 [[I72]], -8
; CHECK-NEXT: [[I74:%.*]] = lshr i32 [[I71]], 4
; CHECK-NEXT: [[I75:%.*]] = add nsw i32 [[I74]], -8
; CHECK-NEXT: [[I76:%.*]] = sitofp i32 [[I73]] to float
; CHECK-NEXT: [[I77:%.*]] = fmul float [[I28]], [[I76]]
; CHECK-NEXT: [[I78:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 12
; CHECK-NEXT: store float [[I77]], ptr [[I78]], align 4
; CHECK-NEXT: [[I79:%.*]] = sitofp i32 [[I75]] to float
; CHECK-NEXT: [[I80:%.*]] = fmul float [[I28]], [[I79]]
; CHECK-NEXT: [[I81:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 76
; CHECK-NEXT: store float [[I80]], ptr [[I81]], align 4
; CHECK-NEXT: [[I82:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 6
; CHECK-NEXT: [[I83:%.*]] = load i8, ptr [[I82]], align 1
; CHECK-NEXT: [[I84:%.*]] = zext i8 [[I83]] to i32
; CHECK-NEXT: [[I85:%.*]] = and i32 [[I84]], 15
; CHECK-NEXT: [[I86:%.*]] = add nsw i32 [[I85]], -8
; CHECK-NEXT: [[I87:%.*]] = lshr i32 [[I84]], 4
; CHECK-NEXT: [[I88:%.*]] = add nsw i32 [[I87]], -8
; CHECK-NEXT: [[I89:%.*]] = sitofp i32 [[I86]] to float
; CHECK-NEXT: [[I90:%.*]] = fmul float [[I28]], [[I89]]
; CHECK-NEXT: [[I91:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 16
; CHECK-NEXT: store float [[I90]], ptr [[I91]], align 4
; CHECK-NEXT: [[I92:%.*]] = sitofp i32 [[I88]] to float
; CHECK-NEXT: [[I93:%.*]] = fmul float [[I28]], [[I92]]
; CHECK-NEXT: [[I94:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 80
; CHECK-NEXT: store float [[I93]], ptr [[I94]], align 4
; CHECK-NEXT: [[I95:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 7
; CHECK-NEXT: [[I96:%.*]] = load i8, ptr [[I95]], align 1
; CHECK-NEXT: [[I97:%.*]] = zext i8 [[I96]] to i32
; CHECK-NEXT: [[I98:%.*]] = and i32 [[I97]], 15
; CHECK-NEXT: [[I99:%.*]] = add nsw i32 [[I98]], -8
; CHECK-NEXT: [[I100:%.*]] = lshr i32 [[I97]], 4
; CHECK-NEXT: [[I101:%.*]] = add nsw i32 [[I100]], -8
; CHECK-NEXT: [[I102:%.*]] = sitofp i32 [[I99]] to float
; CHECK-NEXT: [[I103:%.*]] = fmul float [[I28]], [[I102]]
; CHECK-NEXT: [[I104:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 20
; CHECK-NEXT: store float [[I103]], ptr [[I104]], align 4
; CHECK-NEXT: [[I105:%.*]] = sitofp i32 [[I101]] to float
; CHECK-NEXT: [[I106:%.*]] = fmul float [[I28]], [[I105]]
; CHECK-NEXT: [[I107:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 84
; CHECK-NEXT: store float [[I106]], ptr [[I107]], align 4
; CHECK-NEXT: [[I108:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 8
; CHECK-NEXT: [[I109:%.*]] = load i8, ptr [[I108]], align 1
; CHECK-NEXT: [[I110:%.*]] = zext i8 [[I109]] to i32
; CHECK-NEXT: [[I111:%.*]] = and i32 [[I110]], 15
; CHECK-NEXT: [[I112:%.*]] = add nsw i32 [[I111]], -8
; CHECK-NEXT: [[I113:%.*]] = lshr i32 [[I110]], 4
; CHECK-NEXT: [[I114:%.*]] = add nsw i32 [[I113]], -8
; CHECK-NEXT: [[I115:%.*]] = sitofp i32 [[I112]] to float
; CHECK-NEXT: [[I116:%.*]] = fmul float [[I28]], [[I115]]
; CHECK-NEXT: [[I117:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 24
; CHECK-NEXT: store float [[I116]], ptr [[I117]], align 4
; CHECK-NEXT: [[I118:%.*]] = sitofp i32 [[I114]] to float
; CHECK-NEXT: [[I119:%.*]] = fmul float [[I28]], [[I118]]
; CHECK-NEXT: [[I120:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 88
; CHECK-NEXT: store float [[I119]], ptr [[I120]], align 4
; CHECK-NEXT: [[I121:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 9
; CHECK-NEXT: [[I122:%.*]] = load i8, ptr [[I121]], align 1
; CHECK-NEXT: [[I123:%.*]] = zext i8 [[I122]] to i32
; CHECK-NEXT: [[I124:%.*]] = and i32 [[I123]], 15
; CHECK-NEXT: [[I125:%.*]] = add nsw i32 [[I124]], -8
; CHECK-NEXT: [[I126:%.*]] = lshr i32 [[I123]], 4
; CHECK-NEXT: [[I127:%.*]] = add nsw i32 [[I126]], -8
; CHECK-NEXT: [[I128:%.*]] = sitofp i32 [[I125]] to float
; CHECK-NEXT: [[I129:%.*]] = fmul float [[I28]], [[I128]]
; CHECK-NEXT: [[I130:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 28
; CHECK-NEXT: store float [[I129]], ptr [[I130]], align 4
; CHECK-NEXT: [[I131:%.*]] = sitofp i32 [[I127]] to float
; CHECK-NEXT: [[I132:%.*]] = fmul float [[I28]], [[I131]]
; CHECK-NEXT: [[I133:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 92
; CHECK-NEXT: store float [[I132]], ptr [[I133]], align 4
; CHECK-NEXT: [[I134:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 10
; CHECK-NEXT: [[I135:%.*]] = load i8, ptr [[I134]], align 1
; CHECK-NEXT: [[I136:%.*]] = zext i8 [[I135]] to i32
; CHECK-NEXT: [[I137:%.*]] = and i32 [[I136]], 15
; CHECK-NEXT: [[I138:%.*]] = add nsw i32 [[I137]], -8
; CHECK-NEXT: [[I139:%.*]] = lshr i32 [[I136]], 4
; CHECK-NEXT: [[I140:%.*]] = add nsw i32 [[I139]], -8
; CHECK-NEXT: [[I141:%.*]] = sitofp i32 [[I138]] to float
; CHECK-NEXT: [[I142:%.*]] = fmul float [[I28]], [[I141]]
; CHECK-NEXT: [[I143:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 32
; CHECK-NEXT: store float [[I142]], ptr [[I143]], align 4
; CHECK-NEXT: [[I144:%.*]] = sitofp i32 [[I140]] to float
; CHECK-NEXT: [[I145:%.*]] = fmul float [[I28]], [[I144]]
; CHECK-NEXT: [[I146:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 96
; CHECK-NEXT: store float [[I145]], ptr [[I146]], align 4
; CHECK-NEXT: [[I147:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 11
; CHECK-NEXT: [[I148:%.*]] = load i8, ptr [[I147]], align 1
; CHECK-NEXT: [[I149:%.*]] = zext i8 [[I148]] to i32
; CHECK-NEXT: [[I150:%.*]] = and i32 [[I149]], 15
; CHECK-NEXT: [[I151:%.*]] = add nsw i32 [[I150]], -8
; CHECK-NEXT: [[I152:%.*]] = lshr i32 [[I149]], 4
; CHECK-NEXT: [[I153:%.*]] = add nsw i32 [[I152]], -8
; CHECK-NEXT: [[I154:%.*]] = sitofp i32 [[I151]] to float
; CHECK-NEXT: [[I155:%.*]] = fmul float [[I28]], [[I154]]
; CHECK-NEXT: [[I156:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 36
; CHECK-NEXT: store float [[I155]], ptr [[I156]], align 4
; CHECK-NEXT: [[I157:%.*]] = sitofp i32 [[I153]] to float
; CHECK-NEXT: [[I158:%.*]] = fmul float [[I28]], [[I157]]
; CHECK-NEXT: [[I159:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 100
; CHECK-NEXT: store float [[I158]], ptr [[I159]], align 4
; CHECK-NEXT: [[I160:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 12
; CHECK-NEXT: [[I161:%.*]] = load i8, ptr [[I160]], align 1
; CHECK-NEXT: [[I162:%.*]] = zext i8 [[I161]] to i32
; CHECK-NEXT: [[I163:%.*]] = and i32 [[I162]], 15
; CHECK-NEXT: [[I164:%.*]] = add nsw i32 [[I163]], -8
; CHECK-NEXT: [[I165:%.*]] = lshr i32 [[I162]], 4
; CHECK-NEXT: [[I166:%.*]] = add nsw i32 [[I165]], -8
; CHECK-NEXT: [[I167:%.*]] = sitofp i32 [[I164]] to float
; CHECK-NEXT: [[I168:%.*]] = fmul float [[I28]], [[I167]]
; CHECK-NEXT: [[I169:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 40
; CHECK-NEXT: store float [[I168]], ptr [[I169]], align 4
; CHECK-NEXT: [[I170:%.*]] = sitofp i32 [[I166]] to float
; CHECK-NEXT: [[I171:%.*]] = fmul float [[I28]], [[I170]]
; CHECK-NEXT: [[I172:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 104
; CHECK-NEXT: store float [[I171]], ptr [[I172]], align 4
; CHECK-NEXT: [[I173:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 13
; CHECK-NEXT: [[I174:%.*]] = load i8, ptr [[I173]], align 1
; CHECK-NEXT: [[I175:%.*]] = zext i8 [[I174]] to i32
; CHECK-NEXT: [[I176:%.*]] = and i32 [[I175]], 15
; CHECK-NEXT: [[I177:%.*]] = add nsw i32 [[I176]], -8
; CHECK-NEXT: [[I178:%.*]] = lshr i32 [[I175]], 4
; CHECK-NEXT: [[I179:%.*]] = add nsw i32 [[I178]], -8
; CHECK-NEXT: [[I180:%.*]] = sitofp i32 [[I177]] to float
; CHECK-NEXT: [[I181:%.*]] = fmul float [[I28]], [[I180]]
; CHECK-NEXT: [[I182:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 44
; CHECK-NEXT: store float [[I181]], ptr [[I182]], align 4
; CHECK-NEXT: [[I183:%.*]] = sitofp i32 [[I179]] to float
; CHECK-NEXT: [[I184:%.*]] = fmul float [[I28]], [[I183]]
; CHECK-NEXT: [[I185:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 108
; CHECK-NEXT: store float [[I184]], ptr [[I185]], align 4
; CHECK-NEXT: [[I186:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 14
; CHECK-NEXT: [[I187:%.*]] = load i8, ptr [[I186]], align 1
; CHECK-NEXT: [[I188:%.*]] = zext i8 [[I187]] to i32
; CHECK-NEXT: [[I189:%.*]] = and i32 [[I188]], 15
; CHECK-NEXT: [[I190:%.*]] = add nsw i32 [[I189]], -8
; CHECK-NEXT: [[I191:%.*]] = lshr i32 [[I188]], 4
; CHECK-NEXT: [[I192:%.*]] = add nsw i32 [[I191]], -8
; CHECK-NEXT: [[I193:%.*]] = sitofp i32 [[I190]] to float
; CHECK-NEXT: [[I194:%.*]] = fmul float [[I28]], [[I193]]
; CHECK-NEXT: [[I195:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 48
; CHECK-NEXT: store float [[I194]], ptr [[I195]], align 4
; CHECK-NEXT: [[I196:%.*]] = sitofp i32 [[I192]] to float
; CHECK-NEXT: [[I197:%.*]] = fmul float [[I28]], [[I196]]
; CHECK-NEXT: [[I198:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 112
; CHECK-NEXT: store float [[I197]], ptr [[I198]], align 4
; CHECK-NEXT: [[I199:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 15
; CHECK-NEXT: [[I200:%.*]] = load i8, ptr [[I199]], align 1
; CHECK-NEXT: [[I201:%.*]] = zext i8 [[I200]] to i32
; CHECK-NEXT: [[I202:%.*]] = and i32 [[I201]], 15
; CHECK-NEXT: [[I203:%.*]] = add nsw i32 [[I202]], -8
; CHECK-NEXT: [[I204:%.*]] = lshr i32 [[I201]], 4
; CHECK-NEXT: [[I205:%.*]] = add nsw i32 [[I204]], -8
; CHECK-NEXT: [[I206:%.*]] = sitofp i32 [[I203]] to float
; CHECK-NEXT: [[I207:%.*]] = fmul float [[I28]], [[I206]]
; CHECK-NEXT: [[I208:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 52
; CHECK-NEXT: store float [[I207]], ptr [[I208]], align 4
; CHECK-NEXT: [[I209:%.*]] = sitofp i32 [[I205]] to float
; CHECK-NEXT: [[I210:%.*]] = fmul float [[I28]], [[I209]]
; CHECK-NEXT: [[I211:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 116
; CHECK-NEXT: store float [[I210]], ptr [[I211]], align 4
; CHECK-NEXT: [[I212:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 16
; CHECK-NEXT: [[I213:%.*]] = load i8, ptr [[I212]], align 1
; CHECK-NEXT: [[I214:%.*]] = zext i8 [[I213]] to i32
; CHECK-NEXT: [[I215:%.*]] = and i32 [[I214]], 15
; CHECK-NEXT: [[I216:%.*]] = add nsw i32 [[I215]], -8
; CHECK-NEXT: [[I217:%.*]] = lshr i32 [[I214]], 4
; CHECK-NEXT: [[I218:%.*]] = add nsw i32 [[I217]], -8
; CHECK-NEXT: [[I219:%.*]] = sitofp i32 [[I216]] to float
; CHECK-NEXT: [[I220:%.*]] = fmul float [[I28]], [[I219]]
; CHECK-NEXT: [[I221:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 56
; CHECK-NEXT: store float [[I220]], ptr [[I221]], align 4
; CHECK-NEXT: [[I222:%.*]] = sitofp i32 [[I218]] to float
; CHECK-NEXT: [[I223:%.*]] = fmul float [[I28]], [[I222]]
; CHECK-NEXT: [[I224:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 120
; CHECK-NEXT: store float [[I223]], ptr [[I224]], align 4
; CHECK-NEXT: [[I225:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 17
; CHECK-NEXT: [[I226:%.*]] = load i8, ptr [[I225]], align 1
; CHECK-NEXT: [[I227:%.*]] = zext i8 [[I226]] to i32
; CHECK-NEXT: [[I228:%.*]] = and i32 [[I227]], 15
; CHECK-NEXT: [[I229:%.*]] = add nsw i32 [[I228]], -8
; CHECK-NEXT: [[I230:%.*]] = lshr i32 [[I227]], 4
; CHECK-NEXT: [[I231:%.*]] = add nsw i32 [[I230]], -8
; CHECK-NEXT: [[I232:%.*]] = sitofp i32 [[I229]] to float
; CHECK-NEXT: [[I233:%.*]] = fmul float [[I28]], [[I232]]
; CHECK-NEXT: [[I234:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 60
; CHECK-NEXT: store float [[I233]], ptr [[I234]], align 4
; CHECK-NEXT: [[I235:%.*]] = sitofp i32 [[I231]] to float
; CHECK-NEXT: [[I236:%.*]] = fmul float [[I28]], [[I235]]
; CHECK-NEXT: [[I237:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 124
; CHECK-NEXT: store float [[I236]], ptr [[I237]], align 4
; CHECK-NEXT: [[I238]] = add nuw nsw i32 [[I9]], 1
; CHECK-NEXT: [[I239:%.*]] = icmp eq i32 [[I238]], [[I5]]
; CHECK-NEXT: br i1 [[I239]], label %[[BB9]], label %[[BB10]], !llvm.loop [[LOOP3:![0-9]+]]
;
; MAXIMIZE-LABEL: define void @dequantize_row_q4_0(
; MAXIMIZE-SAME: ptr noalias [[ARG:%.*]], ptr [[ARG1:%.*]], i64 [[ARG2:%.*]]) #[[ATTR0:[0-9]+]] {
; MAXIMIZE-NEXT: [[BB:.*]]:
; MAXIMIZE-NEXT: [[I:%.*]] = and i64 [[ARG2]], 31
; MAXIMIZE-NEXT: [[I3:%.*]] = icmp eq i64 [[I]], 0
; MAXIMIZE-NEXT: [[I4:%.*]] = lshr i64 [[ARG2]], 5
; MAXIMIZE-NEXT: [[I5:%.*]] = trunc i64 [[I4]] to i32
; MAXIMIZE-NEXT: [[I6:%.*]] = icmp sgt i32 [[I5]], 0
; MAXIMIZE-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i32 [[I5]], 16
; MAXIMIZE-NEXT: br i1 [[MIN_ITERS_CHECK]], label %[[SCALAR_PH:.*]], label %[[VECTOR_PH:.*]]
; MAXIMIZE: [[VECTOR_PH]]:
; MAXIMIZE-NEXT: [[TMP0:%.*]] = and i32 [[I5]], 15
; MAXIMIZE-NEXT: [[N_VEC:%.*]] = sub i32 [[I5]], [[TMP0]]
; MAXIMIZE-NEXT: br label %[[VECTOR_BODY:.*]]
; MAXIMIZE: [[VECTOR_BODY]]:
; MAXIMIZE-NEXT: [[INDEX:%.*]] = phi i32 [ 0, %[[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], %[[VECTOR_BODY]] ]
; MAXIMIZE-NEXT: [[VEC_IND:%.*]] = phi <16 x i32> [ <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>, %[[VECTOR_PH]] ], [ [[VEC_IND_NEXT:%.*]], %[[VECTOR_BODY]] ]
; MAXIMIZE-NEXT: [[TMP1:%.*]] = add i32 [[INDEX]], 1
; MAXIMIZE-NEXT: [[TMP2:%.*]] = add i32 [[INDEX]], 2
; MAXIMIZE-NEXT: [[TMP3:%.*]] = add i32 [[INDEX]], 3
; MAXIMIZE-NEXT: [[TMP4:%.*]] = add i32 [[INDEX]], 4
; MAXIMIZE-NEXT: [[TMP5:%.*]] = add i32 [[INDEX]], 5
; MAXIMIZE-NEXT: [[TMP6:%.*]] = add i32 [[INDEX]], 6
; MAXIMIZE-NEXT: [[TMP7:%.*]] = add i32 [[INDEX]], 7
; MAXIMIZE-NEXT: [[TMP8:%.*]] = add i32 [[INDEX]], 8
; MAXIMIZE-NEXT: [[TMP9:%.*]] = add i32 [[INDEX]], 9
; MAXIMIZE-NEXT: [[TMP10:%.*]] = add i32 [[INDEX]], 10
; MAXIMIZE-NEXT: [[TMP11:%.*]] = add i32 [[INDEX]], 11
; MAXIMIZE-NEXT: [[TMP12:%.*]] = add i32 [[INDEX]], 12
; MAXIMIZE-NEXT: [[TMP13:%.*]] = add i32 [[INDEX]], 13
; MAXIMIZE-NEXT: [[TMP14:%.*]] = add i32 [[INDEX]], 14
; MAXIMIZE-NEXT: [[TMP15:%.*]] = add i32 [[INDEX]], 15
; MAXIMIZE-NEXT: [[TMP16:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[INDEX]]
; MAXIMIZE-NEXT: [[TMP17:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP1]]
; MAXIMIZE-NEXT: [[TMP18:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP2]]
; MAXIMIZE-NEXT: [[TMP19:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP3]]
; MAXIMIZE-NEXT: [[TMP20:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP4]]
; MAXIMIZE-NEXT: [[TMP21:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP5]]
; MAXIMIZE-NEXT: [[TMP22:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP6]]
; MAXIMIZE-NEXT: [[TMP23:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP7]]
; MAXIMIZE-NEXT: [[TMP24:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP8]]
; MAXIMIZE-NEXT: [[TMP25:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP9]]
; MAXIMIZE-NEXT: [[TMP26:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP10]]
; MAXIMIZE-NEXT: [[TMP27:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP11]]
; MAXIMIZE-NEXT: [[TMP28:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP12]]
; MAXIMIZE-NEXT: [[TMP29:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP13]]
; MAXIMIZE-NEXT: [[TMP30:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP14]]
; MAXIMIZE-NEXT: [[TMP31:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[TMP15]]
; MAXIMIZE-NEXT: [[TMP32:%.*]] = load i16, ptr [[TMP16]], align 2
; MAXIMIZE-NEXT: [[TMP33:%.*]] = load i16, ptr [[TMP17]], align 2
; MAXIMIZE-NEXT: [[TMP34:%.*]] = load i16, ptr [[TMP18]], align 2
; MAXIMIZE-NEXT: [[TMP35:%.*]] = load i16, ptr [[TMP19]], align 2
; MAXIMIZE-NEXT: [[TMP36:%.*]] = load i16, ptr [[TMP20]], align 2
; MAXIMIZE-NEXT: [[TMP37:%.*]] = load i16, ptr [[TMP21]], align 2
; MAXIMIZE-NEXT: [[TMP38:%.*]] = load i16, ptr [[TMP22]], align 2
; MAXIMIZE-NEXT: [[TMP39:%.*]] = load i16, ptr [[TMP23]], align 2
; MAXIMIZE-NEXT: [[TMP40:%.*]] = load i16, ptr [[TMP24]], align 2
; MAXIMIZE-NEXT: [[TMP41:%.*]] = load i16, ptr [[TMP25]], align 2
; MAXIMIZE-NEXT: [[TMP42:%.*]] = load i16, ptr [[TMP26]], align 2
; MAXIMIZE-NEXT: [[TMP43:%.*]] = load i16, ptr [[TMP27]], align 2
; MAXIMIZE-NEXT: [[TMP44:%.*]] = load i16, ptr [[TMP28]], align 2
; MAXIMIZE-NEXT: [[TMP45:%.*]] = load i16, ptr [[TMP29]], align 2
; MAXIMIZE-NEXT: [[TMP46:%.*]] = load i16, ptr [[TMP30]], align 2
; MAXIMIZE-NEXT: [[TMP47:%.*]] = load i16, ptr [[TMP31]], align 2
; MAXIMIZE-NEXT: [[TMP48:%.*]] = insertelement <16 x i16> poison, i16 [[TMP32]], i64 0
; MAXIMIZE-NEXT: [[TMP49:%.*]] = insertelement <16 x i16> [[TMP48]], i16 [[TMP33]], i64 1
; MAXIMIZE-NEXT: [[TMP50:%.*]] = insertelement <16 x i16> [[TMP49]], i16 [[TMP34]], i64 2
; MAXIMIZE-NEXT: [[TMP51:%.*]] = insertelement <16 x i16> [[TMP50]], i16 [[TMP35]], i64 3
; MAXIMIZE-NEXT: [[TMP52:%.*]] = insertelement <16 x i16> [[TMP51]], i16 [[TMP36]], i64 4
; MAXIMIZE-NEXT: [[TMP53:%.*]] = insertelement <16 x i16> [[TMP52]], i16 [[TMP37]], i64 5
; MAXIMIZE-NEXT: [[TMP54:%.*]] = insertelement <16 x i16> [[TMP53]], i16 [[TMP38]], i64 6
; MAXIMIZE-NEXT: [[TMP55:%.*]] = insertelement <16 x i16> [[TMP54]], i16 [[TMP39]], i64 7
; MAXIMIZE-NEXT: [[TMP56:%.*]] = insertelement <16 x i16> [[TMP55]], i16 [[TMP40]], i64 8
; MAXIMIZE-NEXT: [[TMP57:%.*]] = insertelement <16 x i16> [[TMP56]], i16 [[TMP41]], i64 9
; MAXIMIZE-NEXT: [[TMP58:%.*]] = insertelement <16 x i16> [[TMP57]], i16 [[TMP42]], i64 10
; MAXIMIZE-NEXT: [[TMP59:%.*]] = insertelement <16 x i16> [[TMP58]], i16 [[TMP43]], i64 11
; MAXIMIZE-NEXT: [[TMP60:%.*]] = insertelement <16 x i16> [[TMP59]], i16 [[TMP44]], i64 12
; MAXIMIZE-NEXT: [[TMP61:%.*]] = insertelement <16 x i16> [[TMP60]], i16 [[TMP45]], i64 13
; MAXIMIZE-NEXT: [[TMP62:%.*]] = insertelement <16 x i16> [[TMP61]], i16 [[TMP46]], i64 14
; MAXIMIZE-NEXT: [[TMP63:%.*]] = insertelement <16 x i16> [[TMP62]], i16 [[TMP47]], i64 15
; MAXIMIZE-NEXT: [[TMP64:%.*]] = zext <16 x i16> [[TMP63]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP65:%.*]] = shl <16 x i32> [[TMP64]], splat (i32 17)
; MAXIMIZE-NEXT: [[TMP66:%.*]] = lshr exact <16 x i32> [[TMP65]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP67:%.*]] = or disjoint <16 x i32> [[TMP66]], splat (i32 1879048192)
; MAXIMIZE-NEXT: [[TMP68:%.*]] = bitcast <16 x i32> [[TMP67]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP69:%.*]] = and <16 x i32> [[TMP64]], splat (i32 32767)
; MAXIMIZE-NEXT: [[TMP70:%.*]] = or disjoint <16 x i32> [[TMP69]], splat (i32 1056964608)
; MAXIMIZE-NEXT: [[TMP71:%.*]] = bitcast <16 x i32> [[TMP70]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP72:%.*]] = icmp ult <16 x i32> [[TMP65]], splat (i32 134217728)
; MAXIMIZE-NEXT: [[TMP73:%.*]] = fadd <16 x float> [[TMP71]], splat (float -5.000000e-01)
; MAXIMIZE-NEXT: [[TMP74:%.*]] = fmul <16 x float> [[TMP68]], splat (float 1.925930e-34)
; MAXIMIZE-NEXT: [[TMP75:%.*]] = select <16 x i1> [[TMP72]], <16 x float> [[TMP73]], <16 x float> [[TMP74]]
; MAXIMIZE-NEXT: [[TMP76:%.*]] = bitcast <16 x float> [[TMP75]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP77:%.*]] = sext <16 x i16> [[TMP63]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP78:%.*]] = and <16 x i32> [[TMP77]], splat (i32 -2147483648)
; MAXIMIZE-NEXT: [[TMP79:%.*]] = or <16 x i32> [[TMP78]], [[TMP76]]
; MAXIMIZE-NEXT: [[TMP80:%.*]] = bitcast <16 x i32> [[TMP79]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP81:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 2
; MAXIMIZE-NEXT: [[TMP82:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 2
; MAXIMIZE-NEXT: [[TMP83:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 2
; MAXIMIZE-NEXT: [[TMP84:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 2
; MAXIMIZE-NEXT: [[TMP85:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 2
; MAXIMIZE-NEXT: [[TMP86:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 2
; MAXIMIZE-NEXT: [[TMP87:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 2
; MAXIMIZE-NEXT: [[TMP88:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 2
; MAXIMIZE-NEXT: [[TMP89:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 2
; MAXIMIZE-NEXT: [[TMP90:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 2
; MAXIMIZE-NEXT: [[TMP91:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 2
; MAXIMIZE-NEXT: [[TMP92:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 2
; MAXIMIZE-NEXT: [[TMP93:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 2
; MAXIMIZE-NEXT: [[TMP94:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 2
; MAXIMIZE-NEXT: [[TMP95:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 2
; MAXIMIZE-NEXT: [[TMP96:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 2
; MAXIMIZE-NEXT: [[TMP97:%.*]] = shl nsw <16 x i32> [[VEC_IND]], splat (i32 7)
; MAXIMIZE-NEXT: [[TMP98:%.*]] = extractelement <16 x i32> [[TMP97]], i64 0
; MAXIMIZE-NEXT: [[TMP99:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP98]]
; MAXIMIZE-NEXT: [[TMP100:%.*]] = extractelement <16 x i32> [[TMP97]], i64 1
; MAXIMIZE-NEXT: [[TMP101:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP100]]
; MAXIMIZE-NEXT: [[TMP102:%.*]] = extractelement <16 x i32> [[TMP97]], i64 2
; MAXIMIZE-NEXT: [[TMP103:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP102]]
; MAXIMIZE-NEXT: [[TMP104:%.*]] = extractelement <16 x i32> [[TMP97]], i64 3
; MAXIMIZE-NEXT: [[TMP105:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP104]]
; MAXIMIZE-NEXT: [[TMP106:%.*]] = extractelement <16 x i32> [[TMP97]], i64 4
; MAXIMIZE-NEXT: [[TMP107:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP106]]
; MAXIMIZE-NEXT: [[TMP108:%.*]] = extractelement <16 x i32> [[TMP97]], i64 5
; MAXIMIZE-NEXT: [[TMP109:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP108]]
; MAXIMIZE-NEXT: [[TMP110:%.*]] = extractelement <16 x i32> [[TMP97]], i64 6
; MAXIMIZE-NEXT: [[TMP111:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP110]]
; MAXIMIZE-NEXT: [[TMP112:%.*]] = extractelement <16 x i32> [[TMP97]], i64 7
; MAXIMIZE-NEXT: [[TMP113:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP112]]
; MAXIMIZE-NEXT: [[TMP114:%.*]] = extractelement <16 x i32> [[TMP97]], i64 8
; MAXIMIZE-NEXT: [[TMP115:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP114]]
; MAXIMIZE-NEXT: [[TMP116:%.*]] = extractelement <16 x i32> [[TMP97]], i64 9
; MAXIMIZE-NEXT: [[TMP117:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP116]]
; MAXIMIZE-NEXT: [[TMP118:%.*]] = extractelement <16 x i32> [[TMP97]], i64 10
; MAXIMIZE-NEXT: [[TMP119:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP118]]
; MAXIMIZE-NEXT: [[TMP120:%.*]] = extractelement <16 x i32> [[TMP97]], i64 11
; MAXIMIZE-NEXT: [[TMP121:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP120]]
; MAXIMIZE-NEXT: [[TMP122:%.*]] = extractelement <16 x i32> [[TMP97]], i64 12
; MAXIMIZE-NEXT: [[TMP123:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP122]]
; MAXIMIZE-NEXT: [[TMP124:%.*]] = extractelement <16 x i32> [[TMP97]], i64 13
; MAXIMIZE-NEXT: [[TMP125:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP124]]
; MAXIMIZE-NEXT: [[TMP126:%.*]] = extractelement <16 x i32> [[TMP97]], i64 14
; MAXIMIZE-NEXT: [[TMP127:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP126]]
; MAXIMIZE-NEXT: [[TMP128:%.*]] = extractelement <16 x i32> [[TMP97]], i64 15
; MAXIMIZE-NEXT: [[TMP129:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[TMP128]]
; MAXIMIZE-NEXT: [[TMP130:%.*]] = load i8, ptr [[TMP81]], align 1
; MAXIMIZE-NEXT: [[TMP131:%.*]] = load i8, ptr [[TMP82]], align 1
; MAXIMIZE-NEXT: [[TMP132:%.*]] = load i8, ptr [[TMP83]], align 1
; MAXIMIZE-NEXT: [[TMP133:%.*]] = load i8, ptr [[TMP84]], align 1
; MAXIMIZE-NEXT: [[TMP134:%.*]] = load i8, ptr [[TMP85]], align 1
; MAXIMIZE-NEXT: [[TMP135:%.*]] = load i8, ptr [[TMP86]], align 1
; MAXIMIZE-NEXT: [[TMP136:%.*]] = load i8, ptr [[TMP87]], align 1
; MAXIMIZE-NEXT: [[TMP137:%.*]] = load i8, ptr [[TMP88]], align 1
; MAXIMIZE-NEXT: [[TMP138:%.*]] = load i8, ptr [[TMP89]], align 1
; MAXIMIZE-NEXT: [[TMP139:%.*]] = load i8, ptr [[TMP90]], align 1
; MAXIMIZE-NEXT: [[TMP140:%.*]] = load i8, ptr [[TMP91]], align 1
; MAXIMIZE-NEXT: [[TMP141:%.*]] = load i8, ptr [[TMP92]], align 1
; MAXIMIZE-NEXT: [[TMP142:%.*]] = load i8, ptr [[TMP93]], align 1
; MAXIMIZE-NEXT: [[TMP143:%.*]] = load i8, ptr [[TMP94]], align 1
; MAXIMIZE-NEXT: [[TMP144:%.*]] = load i8, ptr [[TMP95]], align 1
; MAXIMIZE-NEXT: [[TMP145:%.*]] = load i8, ptr [[TMP96]], align 1
; MAXIMIZE-NEXT: [[TMP146:%.*]] = insertelement <16 x i8> poison, i8 [[TMP130]], i64 0
; MAXIMIZE-NEXT: [[TMP147:%.*]] = insertelement <16 x i8> [[TMP146]], i8 [[TMP131]], i64 1
; MAXIMIZE-NEXT: [[TMP148:%.*]] = insertelement <16 x i8> [[TMP147]], i8 [[TMP132]], i64 2
; MAXIMIZE-NEXT: [[TMP149:%.*]] = insertelement <16 x i8> [[TMP148]], i8 [[TMP133]], i64 3
; MAXIMIZE-NEXT: [[TMP150:%.*]] = insertelement <16 x i8> [[TMP149]], i8 [[TMP134]], i64 4
; MAXIMIZE-NEXT: [[TMP151:%.*]] = insertelement <16 x i8> [[TMP150]], i8 [[TMP135]], i64 5
; MAXIMIZE-NEXT: [[TMP152:%.*]] = insertelement <16 x i8> [[TMP151]], i8 [[TMP136]], i64 6
; MAXIMIZE-NEXT: [[TMP153:%.*]] = insertelement <16 x i8> [[TMP152]], i8 [[TMP137]], i64 7
; MAXIMIZE-NEXT: [[TMP154:%.*]] = insertelement <16 x i8> [[TMP153]], i8 [[TMP138]], i64 8
; MAXIMIZE-NEXT: [[TMP155:%.*]] = insertelement <16 x i8> [[TMP154]], i8 [[TMP139]], i64 9
; MAXIMIZE-NEXT: [[TMP156:%.*]] = insertelement <16 x i8> [[TMP155]], i8 [[TMP140]], i64 10
; MAXIMIZE-NEXT: [[TMP157:%.*]] = insertelement <16 x i8> [[TMP156]], i8 [[TMP141]], i64 11
; MAXIMIZE-NEXT: [[TMP158:%.*]] = insertelement <16 x i8> [[TMP157]], i8 [[TMP142]], i64 12
; MAXIMIZE-NEXT: [[TMP159:%.*]] = insertelement <16 x i8> [[TMP158]], i8 [[TMP143]], i64 13
; MAXIMIZE-NEXT: [[TMP160:%.*]] = insertelement <16 x i8> [[TMP159]], i8 [[TMP144]], i64 14
; MAXIMIZE-NEXT: [[TMP161:%.*]] = insertelement <16 x i8> [[TMP160]], i8 [[TMP145]], i64 15
; MAXIMIZE-NEXT: [[TMP162:%.*]] = zext <16 x i8> [[TMP161]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP163:%.*]] = and <16 x i32> [[TMP162]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP164:%.*]] = add nsw <16 x i32> [[TMP163]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP165:%.*]] = lshr <16 x i32> [[TMP162]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP166:%.*]] = add nsw <16 x i32> [[TMP165]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP167:%.*]] = sitofp <16 x i32> [[TMP164]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP168:%.*]] = fmul <16 x float> [[TMP80]], [[TMP167]]
; MAXIMIZE-NEXT: [[TMP169:%.*]] = extractelement <16 x float> [[TMP168]], i64 0
; MAXIMIZE-NEXT: store float [[TMP169]], ptr [[TMP99]], align 4
; MAXIMIZE-NEXT: [[TMP170:%.*]] = extractelement <16 x float> [[TMP168]], i64 1
; MAXIMIZE-NEXT: store float [[TMP170]], ptr [[TMP101]], align 4
; MAXIMIZE-NEXT: [[TMP171:%.*]] = extractelement <16 x float> [[TMP168]], i64 2
; MAXIMIZE-NEXT: store float [[TMP171]], ptr [[TMP103]], align 4
; MAXIMIZE-NEXT: [[TMP172:%.*]] = extractelement <16 x float> [[TMP168]], i64 3
; MAXIMIZE-NEXT: store float [[TMP172]], ptr [[TMP105]], align 4
; MAXIMIZE-NEXT: [[TMP173:%.*]] = extractelement <16 x float> [[TMP168]], i64 4
; MAXIMIZE-NEXT: store float [[TMP173]], ptr [[TMP107]], align 4
; MAXIMIZE-NEXT: [[TMP174:%.*]] = extractelement <16 x float> [[TMP168]], i64 5
; MAXIMIZE-NEXT: store float [[TMP174]], ptr [[TMP109]], align 4
; MAXIMIZE-NEXT: [[TMP175:%.*]] = extractelement <16 x float> [[TMP168]], i64 6
; MAXIMIZE-NEXT: store float [[TMP175]], ptr [[TMP111]], align 4
; MAXIMIZE-NEXT: [[TMP176:%.*]] = extractelement <16 x float> [[TMP168]], i64 7
; MAXIMIZE-NEXT: store float [[TMP176]], ptr [[TMP113]], align 4
; MAXIMIZE-NEXT: [[TMP177:%.*]] = extractelement <16 x float> [[TMP168]], i64 8
; MAXIMIZE-NEXT: store float [[TMP177]], ptr [[TMP115]], align 4
; MAXIMIZE-NEXT: [[TMP178:%.*]] = extractelement <16 x float> [[TMP168]], i64 9
; MAXIMIZE-NEXT: store float [[TMP178]], ptr [[TMP117]], align 4
; MAXIMIZE-NEXT: [[TMP179:%.*]] = extractelement <16 x float> [[TMP168]], i64 10
; MAXIMIZE-NEXT: store float [[TMP179]], ptr [[TMP119]], align 4
; MAXIMIZE-NEXT: [[TMP180:%.*]] = extractelement <16 x float> [[TMP168]], i64 11
; MAXIMIZE-NEXT: store float [[TMP180]], ptr [[TMP121]], align 4
; MAXIMIZE-NEXT: [[TMP181:%.*]] = extractelement <16 x float> [[TMP168]], i64 12
; MAXIMIZE-NEXT: store float [[TMP181]], ptr [[TMP123]], align 4
; MAXIMIZE-NEXT: [[TMP182:%.*]] = extractelement <16 x float> [[TMP168]], i64 13
; MAXIMIZE-NEXT: store float [[TMP182]], ptr [[TMP125]], align 4
; MAXIMIZE-NEXT: [[TMP183:%.*]] = extractelement <16 x float> [[TMP168]], i64 14
; MAXIMIZE-NEXT: store float [[TMP183]], ptr [[TMP127]], align 4
; MAXIMIZE-NEXT: [[TMP184:%.*]] = extractelement <16 x float> [[TMP168]], i64 15
; MAXIMIZE-NEXT: store float [[TMP184]], ptr [[TMP129]], align 4
; MAXIMIZE-NEXT: [[TMP185:%.*]] = sitofp <16 x i32> [[TMP166]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP186:%.*]] = fmul <16 x float> [[TMP80]], [[TMP185]]
; MAXIMIZE-NEXT: [[TMP187:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 64
; MAXIMIZE-NEXT: [[TMP188:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 64
; MAXIMIZE-NEXT: [[TMP189:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 64
; MAXIMIZE-NEXT: [[TMP190:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 64
; MAXIMIZE-NEXT: [[TMP191:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 64
; MAXIMIZE-NEXT: [[TMP192:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 64
; MAXIMIZE-NEXT: [[TMP193:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 64
; MAXIMIZE-NEXT: [[TMP194:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 64
; MAXIMIZE-NEXT: [[TMP195:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 64
; MAXIMIZE-NEXT: [[TMP196:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 64
; MAXIMIZE-NEXT: [[TMP197:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 64
; MAXIMIZE-NEXT: [[TMP198:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 64
; MAXIMIZE-NEXT: [[TMP199:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 64
; MAXIMIZE-NEXT: [[TMP200:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 64
; MAXIMIZE-NEXT: [[TMP201:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 64
; MAXIMIZE-NEXT: [[TMP202:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 64
; MAXIMIZE-NEXT: [[TMP203:%.*]] = extractelement <16 x float> [[TMP186]], i64 0
; MAXIMIZE-NEXT: store float [[TMP203]], ptr [[TMP187]], align 4
; MAXIMIZE-NEXT: [[TMP204:%.*]] = extractelement <16 x float> [[TMP186]], i64 1
; MAXIMIZE-NEXT: store float [[TMP204]], ptr [[TMP188]], align 4
; MAXIMIZE-NEXT: [[TMP205:%.*]] = extractelement <16 x float> [[TMP186]], i64 2
; MAXIMIZE-NEXT: store float [[TMP205]], ptr [[TMP189]], align 4
; MAXIMIZE-NEXT: [[TMP206:%.*]] = extractelement <16 x float> [[TMP186]], i64 3
; MAXIMIZE-NEXT: store float [[TMP206]], ptr [[TMP190]], align 4
; MAXIMIZE-NEXT: [[TMP207:%.*]] = extractelement <16 x float> [[TMP186]], i64 4
; MAXIMIZE-NEXT: store float [[TMP207]], ptr [[TMP191]], align 4
; MAXIMIZE-NEXT: [[TMP208:%.*]] = extractelement <16 x float> [[TMP186]], i64 5
; MAXIMIZE-NEXT: store float [[TMP208]], ptr [[TMP192]], align 4
; MAXIMIZE-NEXT: [[TMP209:%.*]] = extractelement <16 x float> [[TMP186]], i64 6
; MAXIMIZE-NEXT: store float [[TMP209]], ptr [[TMP193]], align 4
; MAXIMIZE-NEXT: [[TMP210:%.*]] = extractelement <16 x float> [[TMP186]], i64 7
; MAXIMIZE-NEXT: store float [[TMP210]], ptr [[TMP194]], align 4
; MAXIMIZE-NEXT: [[TMP211:%.*]] = extractelement <16 x float> [[TMP186]], i64 8
; MAXIMIZE-NEXT: store float [[TMP211]], ptr [[TMP195]], align 4
; MAXIMIZE-NEXT: [[TMP212:%.*]] = extractelement <16 x float> [[TMP186]], i64 9
; MAXIMIZE-NEXT: store float [[TMP212]], ptr [[TMP196]], align 4
; MAXIMIZE-NEXT: [[TMP213:%.*]] = extractelement <16 x float> [[TMP186]], i64 10
; MAXIMIZE-NEXT: store float [[TMP213]], ptr [[TMP197]], align 4
; MAXIMIZE-NEXT: [[TMP214:%.*]] = extractelement <16 x float> [[TMP186]], i64 11
; MAXIMIZE-NEXT: store float [[TMP214]], ptr [[TMP198]], align 4
; MAXIMIZE-NEXT: [[TMP215:%.*]] = extractelement <16 x float> [[TMP186]], i64 12
; MAXIMIZE-NEXT: store float [[TMP215]], ptr [[TMP199]], align 4
; MAXIMIZE-NEXT: [[TMP216:%.*]] = extractelement <16 x float> [[TMP186]], i64 13
; MAXIMIZE-NEXT: store float [[TMP216]], ptr [[TMP200]], align 4
; MAXIMIZE-NEXT: [[TMP217:%.*]] = extractelement <16 x float> [[TMP186]], i64 14
; MAXIMIZE-NEXT: store float [[TMP217]], ptr [[TMP201]], align 4
; MAXIMIZE-NEXT: [[TMP218:%.*]] = extractelement <16 x float> [[TMP186]], i64 15
; MAXIMIZE-NEXT: store float [[TMP218]], ptr [[TMP202]], align 4
; MAXIMIZE-NEXT: [[TMP219:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 3
; MAXIMIZE-NEXT: [[TMP220:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 3
; MAXIMIZE-NEXT: [[TMP221:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 3
; MAXIMIZE-NEXT: [[TMP222:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 3
; MAXIMIZE-NEXT: [[TMP223:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 3
; MAXIMIZE-NEXT: [[TMP224:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 3
; MAXIMIZE-NEXT: [[TMP225:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 3
; MAXIMIZE-NEXT: [[TMP226:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 3
; MAXIMIZE-NEXT: [[TMP227:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 3
; MAXIMIZE-NEXT: [[TMP228:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 3
; MAXIMIZE-NEXT: [[TMP229:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 3
; MAXIMIZE-NEXT: [[TMP230:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 3
; MAXIMIZE-NEXT: [[TMP231:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 3
; MAXIMIZE-NEXT: [[TMP232:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 3
; MAXIMIZE-NEXT: [[TMP233:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 3
; MAXIMIZE-NEXT: [[TMP234:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 3
; MAXIMIZE-NEXT: [[TMP235:%.*]] = load i8, ptr [[TMP219]], align 1
; MAXIMIZE-NEXT: [[TMP236:%.*]] = load i8, ptr [[TMP220]], align 1
; MAXIMIZE-NEXT: [[TMP237:%.*]] = load i8, ptr [[TMP221]], align 1
; MAXIMIZE-NEXT: [[TMP238:%.*]] = load i8, ptr [[TMP222]], align 1
; MAXIMIZE-NEXT: [[TMP239:%.*]] = load i8, ptr [[TMP223]], align 1
; MAXIMIZE-NEXT: [[TMP240:%.*]] = load i8, ptr [[TMP224]], align 1
; MAXIMIZE-NEXT: [[TMP241:%.*]] = load i8, ptr [[TMP225]], align 1
; MAXIMIZE-NEXT: [[TMP242:%.*]] = load i8, ptr [[TMP226]], align 1
; MAXIMIZE-NEXT: [[TMP243:%.*]] = load i8, ptr [[TMP227]], align 1
; MAXIMIZE-NEXT: [[TMP244:%.*]] = load i8, ptr [[TMP228]], align 1
; MAXIMIZE-NEXT: [[TMP245:%.*]] = load i8, ptr [[TMP229]], align 1
; MAXIMIZE-NEXT: [[TMP246:%.*]] = load i8, ptr [[TMP230]], align 1
; MAXIMIZE-NEXT: [[TMP247:%.*]] = load i8, ptr [[TMP231]], align 1
; MAXIMIZE-NEXT: [[TMP248:%.*]] = load i8, ptr [[TMP232]], align 1
; MAXIMIZE-NEXT: [[TMP249:%.*]] = load i8, ptr [[TMP233]], align 1
; MAXIMIZE-NEXT: [[TMP250:%.*]] = load i8, ptr [[TMP234]], align 1
; MAXIMIZE-NEXT: [[TMP251:%.*]] = insertelement <16 x i8> poison, i8 [[TMP235]], i64 0
; MAXIMIZE-NEXT: [[TMP252:%.*]] = insertelement <16 x i8> [[TMP251]], i8 [[TMP236]], i64 1
; MAXIMIZE-NEXT: [[TMP253:%.*]] = insertelement <16 x i8> [[TMP252]], i8 [[TMP237]], i64 2
; MAXIMIZE-NEXT: [[TMP254:%.*]] = insertelement <16 x i8> [[TMP253]], i8 [[TMP238]], i64 3
; MAXIMIZE-NEXT: [[TMP255:%.*]] = insertelement <16 x i8> [[TMP254]], i8 [[TMP239]], i64 4
; MAXIMIZE-NEXT: [[TMP256:%.*]] = insertelement <16 x i8> [[TMP255]], i8 [[TMP240]], i64 5
; MAXIMIZE-NEXT: [[TMP257:%.*]] = insertelement <16 x i8> [[TMP256]], i8 [[TMP241]], i64 6
; MAXIMIZE-NEXT: [[TMP258:%.*]] = insertelement <16 x i8> [[TMP257]], i8 [[TMP242]], i64 7
; MAXIMIZE-NEXT: [[TMP259:%.*]] = insertelement <16 x i8> [[TMP258]], i8 [[TMP243]], i64 8
; MAXIMIZE-NEXT: [[TMP260:%.*]] = insertelement <16 x i8> [[TMP259]], i8 [[TMP244]], i64 9
; MAXIMIZE-NEXT: [[TMP261:%.*]] = insertelement <16 x i8> [[TMP260]], i8 [[TMP245]], i64 10
; MAXIMIZE-NEXT: [[TMP262:%.*]] = insertelement <16 x i8> [[TMP261]], i8 [[TMP246]], i64 11
; MAXIMIZE-NEXT: [[TMP263:%.*]] = insertelement <16 x i8> [[TMP262]], i8 [[TMP247]], i64 12
; MAXIMIZE-NEXT: [[TMP264:%.*]] = insertelement <16 x i8> [[TMP263]], i8 [[TMP248]], i64 13
; MAXIMIZE-NEXT: [[TMP265:%.*]] = insertelement <16 x i8> [[TMP264]], i8 [[TMP249]], i64 14
; MAXIMIZE-NEXT: [[TMP266:%.*]] = insertelement <16 x i8> [[TMP265]], i8 [[TMP250]], i64 15
; MAXIMIZE-NEXT: [[TMP267:%.*]] = zext <16 x i8> [[TMP266]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP268:%.*]] = and <16 x i32> [[TMP267]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP269:%.*]] = add nsw <16 x i32> [[TMP268]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP270:%.*]] = lshr <16 x i32> [[TMP267]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP271:%.*]] = add nsw <16 x i32> [[TMP270]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP272:%.*]] = sitofp <16 x i32> [[TMP269]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP273:%.*]] = fmul <16 x float> [[TMP80]], [[TMP272]]
; MAXIMIZE-NEXT: [[TMP274:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 4
; MAXIMIZE-NEXT: [[TMP275:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 4
; MAXIMIZE-NEXT: [[TMP276:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 4
; MAXIMIZE-NEXT: [[TMP277:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 4
; MAXIMIZE-NEXT: [[TMP278:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 4
; MAXIMIZE-NEXT: [[TMP279:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 4
; MAXIMIZE-NEXT: [[TMP280:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 4
; MAXIMIZE-NEXT: [[TMP281:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 4
; MAXIMIZE-NEXT: [[TMP282:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 4
; MAXIMIZE-NEXT: [[TMP283:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 4
; MAXIMIZE-NEXT: [[TMP284:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 4
; MAXIMIZE-NEXT: [[TMP285:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 4
; MAXIMIZE-NEXT: [[TMP286:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 4
; MAXIMIZE-NEXT: [[TMP287:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 4
; MAXIMIZE-NEXT: [[TMP288:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 4
; MAXIMIZE-NEXT: [[TMP289:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 4
; MAXIMIZE-NEXT: [[TMP290:%.*]] = extractelement <16 x float> [[TMP273]], i64 0
; MAXIMIZE-NEXT: store float [[TMP290]], ptr [[TMP274]], align 4
; MAXIMIZE-NEXT: [[TMP291:%.*]] = extractelement <16 x float> [[TMP273]], i64 1
; MAXIMIZE-NEXT: store float [[TMP291]], ptr [[TMP275]], align 4
; MAXIMIZE-NEXT: [[TMP292:%.*]] = extractelement <16 x float> [[TMP273]], i64 2
; MAXIMIZE-NEXT: store float [[TMP292]], ptr [[TMP276]], align 4
; MAXIMIZE-NEXT: [[TMP293:%.*]] = extractelement <16 x float> [[TMP273]], i64 3
; MAXIMIZE-NEXT: store float [[TMP293]], ptr [[TMP277]], align 4
; MAXIMIZE-NEXT: [[TMP294:%.*]] = extractelement <16 x float> [[TMP273]], i64 4
; MAXIMIZE-NEXT: store float [[TMP294]], ptr [[TMP278]], align 4
; MAXIMIZE-NEXT: [[TMP295:%.*]] = extractelement <16 x float> [[TMP273]], i64 5
; MAXIMIZE-NEXT: store float [[TMP295]], ptr [[TMP279]], align 4
; MAXIMIZE-NEXT: [[TMP296:%.*]] = extractelement <16 x float> [[TMP273]], i64 6
; MAXIMIZE-NEXT: store float [[TMP296]], ptr [[TMP280]], align 4
; MAXIMIZE-NEXT: [[TMP297:%.*]] = extractelement <16 x float> [[TMP273]], i64 7
; MAXIMIZE-NEXT: store float [[TMP297]], ptr [[TMP281]], align 4
; MAXIMIZE-NEXT: [[TMP298:%.*]] = extractelement <16 x float> [[TMP273]], i64 8
; MAXIMIZE-NEXT: store float [[TMP298]], ptr [[TMP282]], align 4
; MAXIMIZE-NEXT: [[TMP299:%.*]] = extractelement <16 x float> [[TMP273]], i64 9
; MAXIMIZE-NEXT: store float [[TMP299]], ptr [[TMP283]], align 4
; MAXIMIZE-NEXT: [[TMP300:%.*]] = extractelement <16 x float> [[TMP273]], i64 10
; MAXIMIZE-NEXT: store float [[TMP300]], ptr [[TMP284]], align 4
; MAXIMIZE-NEXT: [[TMP301:%.*]] = extractelement <16 x float> [[TMP273]], i64 11
; MAXIMIZE-NEXT: store float [[TMP301]], ptr [[TMP285]], align 4
; MAXIMIZE-NEXT: [[TMP302:%.*]] = extractelement <16 x float> [[TMP273]], i64 12
; MAXIMIZE-NEXT: store float [[TMP302]], ptr [[TMP286]], align 4
; MAXIMIZE-NEXT: [[TMP303:%.*]] = extractelement <16 x float> [[TMP273]], i64 13
; MAXIMIZE-NEXT: store float [[TMP303]], ptr [[TMP287]], align 4
; MAXIMIZE-NEXT: [[TMP304:%.*]] = extractelement <16 x float> [[TMP273]], i64 14
; MAXIMIZE-NEXT: store float [[TMP304]], ptr [[TMP288]], align 4
; MAXIMIZE-NEXT: [[TMP305:%.*]] = extractelement <16 x float> [[TMP273]], i64 15
; MAXIMIZE-NEXT: store float [[TMP305]], ptr [[TMP289]], align 4
; MAXIMIZE-NEXT: [[TMP306:%.*]] = sitofp <16 x i32> [[TMP271]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP307:%.*]] = fmul <16 x float> [[TMP80]], [[TMP306]]
; MAXIMIZE-NEXT: [[TMP308:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 68
; MAXIMIZE-NEXT: [[TMP309:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 68
; MAXIMIZE-NEXT: [[TMP310:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 68
; MAXIMIZE-NEXT: [[TMP311:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 68
; MAXIMIZE-NEXT: [[TMP312:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 68
; MAXIMIZE-NEXT: [[TMP313:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 68
; MAXIMIZE-NEXT: [[TMP314:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 68
; MAXIMIZE-NEXT: [[TMP315:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 68
; MAXIMIZE-NEXT: [[TMP316:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 68
; MAXIMIZE-NEXT: [[TMP317:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 68
; MAXIMIZE-NEXT: [[TMP318:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 68
; MAXIMIZE-NEXT: [[TMP319:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 68
; MAXIMIZE-NEXT: [[TMP320:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 68
; MAXIMIZE-NEXT: [[TMP321:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 68
; MAXIMIZE-NEXT: [[TMP322:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 68
; MAXIMIZE-NEXT: [[TMP323:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 68
; MAXIMIZE-NEXT: [[TMP324:%.*]] = extractelement <16 x float> [[TMP307]], i64 0
; MAXIMIZE-NEXT: store float [[TMP324]], ptr [[TMP308]], align 4
; MAXIMIZE-NEXT: [[TMP325:%.*]] = extractelement <16 x float> [[TMP307]], i64 1
; MAXIMIZE-NEXT: store float [[TMP325]], ptr [[TMP309]], align 4
; MAXIMIZE-NEXT: [[TMP326:%.*]] = extractelement <16 x float> [[TMP307]], i64 2
; MAXIMIZE-NEXT: store float [[TMP326]], ptr [[TMP310]], align 4
; MAXIMIZE-NEXT: [[TMP327:%.*]] = extractelement <16 x float> [[TMP307]], i64 3
; MAXIMIZE-NEXT: store float [[TMP327]], ptr [[TMP311]], align 4
; MAXIMIZE-NEXT: [[TMP328:%.*]] = extractelement <16 x float> [[TMP307]], i64 4
; MAXIMIZE-NEXT: store float [[TMP328]], ptr [[TMP312]], align 4
; MAXIMIZE-NEXT: [[TMP329:%.*]] = extractelement <16 x float> [[TMP307]], i64 5
; MAXIMIZE-NEXT: store float [[TMP329]], ptr [[TMP313]], align 4
; MAXIMIZE-NEXT: [[TMP330:%.*]] = extractelement <16 x float> [[TMP307]], i64 6
; MAXIMIZE-NEXT: store float [[TMP330]], ptr [[TMP314]], align 4
; MAXIMIZE-NEXT: [[TMP331:%.*]] = extractelement <16 x float> [[TMP307]], i64 7
; MAXIMIZE-NEXT: store float [[TMP331]], ptr [[TMP315]], align 4
; MAXIMIZE-NEXT: [[TMP332:%.*]] = extractelement <16 x float> [[TMP307]], i64 8
; MAXIMIZE-NEXT: store float [[TMP332]], ptr [[TMP316]], align 4
; MAXIMIZE-NEXT: [[TMP333:%.*]] = extractelement <16 x float> [[TMP307]], i64 9
; MAXIMIZE-NEXT: store float [[TMP333]], ptr [[TMP317]], align 4
; MAXIMIZE-NEXT: [[TMP334:%.*]] = extractelement <16 x float> [[TMP307]], i64 10
; MAXIMIZE-NEXT: store float [[TMP334]], ptr [[TMP318]], align 4
; MAXIMIZE-NEXT: [[TMP335:%.*]] = extractelement <16 x float> [[TMP307]], i64 11
; MAXIMIZE-NEXT: store float [[TMP335]], ptr [[TMP319]], align 4
; MAXIMIZE-NEXT: [[TMP336:%.*]] = extractelement <16 x float> [[TMP307]], i64 12
; MAXIMIZE-NEXT: store float [[TMP336]], ptr [[TMP320]], align 4
; MAXIMIZE-NEXT: [[TMP337:%.*]] = extractelement <16 x float> [[TMP307]], i64 13
; MAXIMIZE-NEXT: store float [[TMP337]], ptr [[TMP321]], align 4
; MAXIMIZE-NEXT: [[TMP338:%.*]] = extractelement <16 x float> [[TMP307]], i64 14
; MAXIMIZE-NEXT: store float [[TMP338]], ptr [[TMP322]], align 4
; MAXIMIZE-NEXT: [[TMP339:%.*]] = extractelement <16 x float> [[TMP307]], i64 15
; MAXIMIZE-NEXT: store float [[TMP339]], ptr [[TMP323]], align 4
; MAXIMIZE-NEXT: [[TMP340:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 4
; MAXIMIZE-NEXT: [[TMP341:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 4
; MAXIMIZE-NEXT: [[TMP342:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 4
; MAXIMIZE-NEXT: [[TMP343:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 4
; MAXIMIZE-NEXT: [[TMP344:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 4
; MAXIMIZE-NEXT: [[TMP345:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 4
; MAXIMIZE-NEXT: [[TMP346:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 4
; MAXIMIZE-NEXT: [[TMP347:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 4
; MAXIMIZE-NEXT: [[TMP348:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 4
; MAXIMIZE-NEXT: [[TMP349:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 4
; MAXIMIZE-NEXT: [[TMP350:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 4
; MAXIMIZE-NEXT: [[TMP351:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 4
; MAXIMIZE-NEXT: [[TMP352:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 4
; MAXIMIZE-NEXT: [[TMP353:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 4
; MAXIMIZE-NEXT: [[TMP354:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 4
; MAXIMIZE-NEXT: [[TMP355:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 4
; MAXIMIZE-NEXT: [[TMP356:%.*]] = load i8, ptr [[TMP340]], align 1
; MAXIMIZE-NEXT: [[TMP357:%.*]] = load i8, ptr [[TMP341]], align 1
; MAXIMIZE-NEXT: [[TMP358:%.*]] = load i8, ptr [[TMP342]], align 1
; MAXIMIZE-NEXT: [[TMP359:%.*]] = load i8, ptr [[TMP343]], align 1
; MAXIMIZE-NEXT: [[TMP360:%.*]] = load i8, ptr [[TMP344]], align 1
; MAXIMIZE-NEXT: [[TMP361:%.*]] = load i8, ptr [[TMP345]], align 1
; MAXIMIZE-NEXT: [[TMP362:%.*]] = load i8, ptr [[TMP346]], align 1
; MAXIMIZE-NEXT: [[TMP363:%.*]] = load i8, ptr [[TMP347]], align 1
; MAXIMIZE-NEXT: [[TMP364:%.*]] = load i8, ptr [[TMP348]], align 1
; MAXIMIZE-NEXT: [[TMP365:%.*]] = load i8, ptr [[TMP349]], align 1
; MAXIMIZE-NEXT: [[TMP366:%.*]] = load i8, ptr [[TMP350]], align 1
; MAXIMIZE-NEXT: [[TMP367:%.*]] = load i8, ptr [[TMP351]], align 1
; MAXIMIZE-NEXT: [[TMP368:%.*]] = load i8, ptr [[TMP352]], align 1
; MAXIMIZE-NEXT: [[TMP369:%.*]] = load i8, ptr [[TMP353]], align 1
; MAXIMIZE-NEXT: [[TMP370:%.*]] = load i8, ptr [[TMP354]], align 1
; MAXIMIZE-NEXT: [[TMP371:%.*]] = load i8, ptr [[TMP355]], align 1
; MAXIMIZE-NEXT: [[TMP372:%.*]] = insertelement <16 x i8> poison, i8 [[TMP356]], i64 0
; MAXIMIZE-NEXT: [[TMP373:%.*]] = insertelement <16 x i8> [[TMP372]], i8 [[TMP357]], i64 1
; MAXIMIZE-NEXT: [[TMP374:%.*]] = insertelement <16 x i8> [[TMP373]], i8 [[TMP358]], i64 2
; MAXIMIZE-NEXT: [[TMP375:%.*]] = insertelement <16 x i8> [[TMP374]], i8 [[TMP359]], i64 3
; MAXIMIZE-NEXT: [[TMP376:%.*]] = insertelement <16 x i8> [[TMP375]], i8 [[TMP360]], i64 4
; MAXIMIZE-NEXT: [[TMP377:%.*]] = insertelement <16 x i8> [[TMP376]], i8 [[TMP361]], i64 5
; MAXIMIZE-NEXT: [[TMP378:%.*]] = insertelement <16 x i8> [[TMP377]], i8 [[TMP362]], i64 6
; MAXIMIZE-NEXT: [[TMP379:%.*]] = insertelement <16 x i8> [[TMP378]], i8 [[TMP363]], i64 7
; MAXIMIZE-NEXT: [[TMP380:%.*]] = insertelement <16 x i8> [[TMP379]], i8 [[TMP364]], i64 8
; MAXIMIZE-NEXT: [[TMP381:%.*]] = insertelement <16 x i8> [[TMP380]], i8 [[TMP365]], i64 9
; MAXIMIZE-NEXT: [[TMP382:%.*]] = insertelement <16 x i8> [[TMP381]], i8 [[TMP366]], i64 10
; MAXIMIZE-NEXT: [[TMP383:%.*]] = insertelement <16 x i8> [[TMP382]], i8 [[TMP367]], i64 11
; MAXIMIZE-NEXT: [[TMP384:%.*]] = insertelement <16 x i8> [[TMP383]], i8 [[TMP368]], i64 12
; MAXIMIZE-NEXT: [[TMP385:%.*]] = insertelement <16 x i8> [[TMP384]], i8 [[TMP369]], i64 13
; MAXIMIZE-NEXT: [[TMP386:%.*]] = insertelement <16 x i8> [[TMP385]], i8 [[TMP370]], i64 14
; MAXIMIZE-NEXT: [[TMP387:%.*]] = insertelement <16 x i8> [[TMP386]], i8 [[TMP371]], i64 15
; MAXIMIZE-NEXT: [[TMP388:%.*]] = zext <16 x i8> [[TMP387]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP389:%.*]] = and <16 x i32> [[TMP388]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP390:%.*]] = add nsw <16 x i32> [[TMP389]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP391:%.*]] = lshr <16 x i32> [[TMP388]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP392:%.*]] = add nsw <16 x i32> [[TMP391]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP393:%.*]] = sitofp <16 x i32> [[TMP390]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP394:%.*]] = fmul <16 x float> [[TMP80]], [[TMP393]]
; MAXIMIZE-NEXT: [[TMP395:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 8
; MAXIMIZE-NEXT: [[TMP396:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 8
; MAXIMIZE-NEXT: [[TMP397:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 8
; MAXIMIZE-NEXT: [[TMP398:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 8
; MAXIMIZE-NEXT: [[TMP399:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 8
; MAXIMIZE-NEXT: [[TMP400:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 8
; MAXIMIZE-NEXT: [[TMP401:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 8
; MAXIMIZE-NEXT: [[TMP402:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 8
; MAXIMIZE-NEXT: [[TMP403:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 8
; MAXIMIZE-NEXT: [[TMP404:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 8
; MAXIMIZE-NEXT: [[TMP405:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 8
; MAXIMIZE-NEXT: [[TMP406:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 8
; MAXIMIZE-NEXT: [[TMP407:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 8
; MAXIMIZE-NEXT: [[TMP408:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 8
; MAXIMIZE-NEXT: [[TMP409:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 8
; MAXIMIZE-NEXT: [[TMP410:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 8
; MAXIMIZE-NEXT: [[TMP411:%.*]] = extractelement <16 x float> [[TMP394]], i64 0
; MAXIMIZE-NEXT: store float [[TMP411]], ptr [[TMP395]], align 4
; MAXIMIZE-NEXT: [[TMP412:%.*]] = extractelement <16 x float> [[TMP394]], i64 1
; MAXIMIZE-NEXT: store float [[TMP412]], ptr [[TMP396]], align 4
; MAXIMIZE-NEXT: [[TMP413:%.*]] = extractelement <16 x float> [[TMP394]], i64 2
; MAXIMIZE-NEXT: store float [[TMP413]], ptr [[TMP397]], align 4
; MAXIMIZE-NEXT: [[TMP414:%.*]] = extractelement <16 x float> [[TMP394]], i64 3
; MAXIMIZE-NEXT: store float [[TMP414]], ptr [[TMP398]], align 4
; MAXIMIZE-NEXT: [[TMP415:%.*]] = extractelement <16 x float> [[TMP394]], i64 4
; MAXIMIZE-NEXT: store float [[TMP415]], ptr [[TMP399]], align 4
; MAXIMIZE-NEXT: [[TMP416:%.*]] = extractelement <16 x float> [[TMP394]], i64 5
; MAXIMIZE-NEXT: store float [[TMP416]], ptr [[TMP400]], align 4
; MAXIMIZE-NEXT: [[TMP417:%.*]] = extractelement <16 x float> [[TMP394]], i64 6
; MAXIMIZE-NEXT: store float [[TMP417]], ptr [[TMP401]], align 4
; MAXIMIZE-NEXT: [[TMP418:%.*]] = extractelement <16 x float> [[TMP394]], i64 7
; MAXIMIZE-NEXT: store float [[TMP418]], ptr [[TMP402]], align 4
; MAXIMIZE-NEXT: [[TMP419:%.*]] = extractelement <16 x float> [[TMP394]], i64 8
; MAXIMIZE-NEXT: store float [[TMP419]], ptr [[TMP403]], align 4
; MAXIMIZE-NEXT: [[TMP420:%.*]] = extractelement <16 x float> [[TMP394]], i64 9
; MAXIMIZE-NEXT: store float [[TMP420]], ptr [[TMP404]], align 4
; MAXIMIZE-NEXT: [[TMP421:%.*]] = extractelement <16 x float> [[TMP394]], i64 10
; MAXIMIZE-NEXT: store float [[TMP421]], ptr [[TMP405]], align 4
; MAXIMIZE-NEXT: [[TMP422:%.*]] = extractelement <16 x float> [[TMP394]], i64 11
; MAXIMIZE-NEXT: store float [[TMP422]], ptr [[TMP406]], align 4
; MAXIMIZE-NEXT: [[TMP423:%.*]] = extractelement <16 x float> [[TMP394]], i64 12
; MAXIMIZE-NEXT: store float [[TMP423]], ptr [[TMP407]], align 4
; MAXIMIZE-NEXT: [[TMP424:%.*]] = extractelement <16 x float> [[TMP394]], i64 13
; MAXIMIZE-NEXT: store float [[TMP424]], ptr [[TMP408]], align 4
; MAXIMIZE-NEXT: [[TMP425:%.*]] = extractelement <16 x float> [[TMP394]], i64 14
; MAXIMIZE-NEXT: store float [[TMP425]], ptr [[TMP409]], align 4
; MAXIMIZE-NEXT: [[TMP426:%.*]] = extractelement <16 x float> [[TMP394]], i64 15
; MAXIMIZE-NEXT: store float [[TMP426]], ptr [[TMP410]], align 4
; MAXIMIZE-NEXT: [[TMP427:%.*]] = sitofp <16 x i32> [[TMP392]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP428:%.*]] = fmul <16 x float> [[TMP80]], [[TMP427]]
; MAXIMIZE-NEXT: [[TMP429:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 72
; MAXIMIZE-NEXT: [[TMP430:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 72
; MAXIMIZE-NEXT: [[TMP431:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 72
; MAXIMIZE-NEXT: [[TMP432:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 72
; MAXIMIZE-NEXT: [[TMP433:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 72
; MAXIMIZE-NEXT: [[TMP434:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 72
; MAXIMIZE-NEXT: [[TMP435:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 72
; MAXIMIZE-NEXT: [[TMP436:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 72
; MAXIMIZE-NEXT: [[TMP437:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 72
; MAXIMIZE-NEXT: [[TMP438:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 72
; MAXIMIZE-NEXT: [[TMP439:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 72
; MAXIMIZE-NEXT: [[TMP440:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 72
; MAXIMIZE-NEXT: [[TMP441:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 72
; MAXIMIZE-NEXT: [[TMP442:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 72
; MAXIMIZE-NEXT: [[TMP443:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 72
; MAXIMIZE-NEXT: [[TMP444:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 72
; MAXIMIZE-NEXT: [[TMP445:%.*]] = extractelement <16 x float> [[TMP428]], i64 0
; MAXIMIZE-NEXT: store float [[TMP445]], ptr [[TMP429]], align 4
; MAXIMIZE-NEXT: [[TMP446:%.*]] = extractelement <16 x float> [[TMP428]], i64 1
; MAXIMIZE-NEXT: store float [[TMP446]], ptr [[TMP430]], align 4
; MAXIMIZE-NEXT: [[TMP447:%.*]] = extractelement <16 x float> [[TMP428]], i64 2
; MAXIMIZE-NEXT: store float [[TMP447]], ptr [[TMP431]], align 4
; MAXIMIZE-NEXT: [[TMP448:%.*]] = extractelement <16 x float> [[TMP428]], i64 3
; MAXIMIZE-NEXT: store float [[TMP448]], ptr [[TMP432]], align 4
; MAXIMIZE-NEXT: [[TMP449:%.*]] = extractelement <16 x float> [[TMP428]], i64 4
; MAXIMIZE-NEXT: store float [[TMP449]], ptr [[TMP433]], align 4
; MAXIMIZE-NEXT: [[TMP450:%.*]] = extractelement <16 x float> [[TMP428]], i64 5
; MAXIMIZE-NEXT: store float [[TMP450]], ptr [[TMP434]], align 4
; MAXIMIZE-NEXT: [[TMP451:%.*]] = extractelement <16 x float> [[TMP428]], i64 6
; MAXIMIZE-NEXT: store float [[TMP451]], ptr [[TMP435]], align 4
; MAXIMIZE-NEXT: [[TMP452:%.*]] = extractelement <16 x float> [[TMP428]], i64 7
; MAXIMIZE-NEXT: store float [[TMP452]], ptr [[TMP436]], align 4
; MAXIMIZE-NEXT: [[TMP453:%.*]] = extractelement <16 x float> [[TMP428]], i64 8
; MAXIMIZE-NEXT: store float [[TMP453]], ptr [[TMP437]], align 4
; MAXIMIZE-NEXT: [[TMP454:%.*]] = extractelement <16 x float> [[TMP428]], i64 9
; MAXIMIZE-NEXT: store float [[TMP454]], ptr [[TMP438]], align 4
; MAXIMIZE-NEXT: [[TMP455:%.*]] = extractelement <16 x float> [[TMP428]], i64 10
; MAXIMIZE-NEXT: store float [[TMP455]], ptr [[TMP439]], align 4
; MAXIMIZE-NEXT: [[TMP456:%.*]] = extractelement <16 x float> [[TMP428]], i64 11
; MAXIMIZE-NEXT: store float [[TMP456]], ptr [[TMP440]], align 4
; MAXIMIZE-NEXT: [[TMP457:%.*]] = extractelement <16 x float> [[TMP428]], i64 12
; MAXIMIZE-NEXT: store float [[TMP457]], ptr [[TMP441]], align 4
; MAXIMIZE-NEXT: [[TMP458:%.*]] = extractelement <16 x float> [[TMP428]], i64 13
; MAXIMIZE-NEXT: store float [[TMP458]], ptr [[TMP442]], align 4
; MAXIMIZE-NEXT: [[TMP459:%.*]] = extractelement <16 x float> [[TMP428]], i64 14
; MAXIMIZE-NEXT: store float [[TMP459]], ptr [[TMP443]], align 4
; MAXIMIZE-NEXT: [[TMP460:%.*]] = extractelement <16 x float> [[TMP428]], i64 15
; MAXIMIZE-NEXT: store float [[TMP460]], ptr [[TMP444]], align 4
; MAXIMIZE-NEXT: [[TMP461:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 5
; MAXIMIZE-NEXT: [[TMP462:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 5
; MAXIMIZE-NEXT: [[TMP463:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 5
; MAXIMIZE-NEXT: [[TMP464:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 5
; MAXIMIZE-NEXT: [[TMP465:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 5
; MAXIMIZE-NEXT: [[TMP466:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 5
; MAXIMIZE-NEXT: [[TMP467:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 5
; MAXIMIZE-NEXT: [[TMP468:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 5
; MAXIMIZE-NEXT: [[TMP469:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 5
; MAXIMIZE-NEXT: [[TMP470:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 5
; MAXIMIZE-NEXT: [[TMP471:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 5
; MAXIMIZE-NEXT: [[TMP472:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 5
; MAXIMIZE-NEXT: [[TMP473:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 5
; MAXIMIZE-NEXT: [[TMP474:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 5
; MAXIMIZE-NEXT: [[TMP475:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 5
; MAXIMIZE-NEXT: [[TMP476:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 5
; MAXIMIZE-NEXT: [[TMP477:%.*]] = load i8, ptr [[TMP461]], align 1
; MAXIMIZE-NEXT: [[TMP478:%.*]] = load i8, ptr [[TMP462]], align 1
; MAXIMIZE-NEXT: [[TMP479:%.*]] = load i8, ptr [[TMP463]], align 1
; MAXIMIZE-NEXT: [[TMP480:%.*]] = load i8, ptr [[TMP464]], align 1
; MAXIMIZE-NEXT: [[TMP481:%.*]] = load i8, ptr [[TMP465]], align 1
; MAXIMIZE-NEXT: [[TMP482:%.*]] = load i8, ptr [[TMP466]], align 1
; MAXIMIZE-NEXT: [[TMP483:%.*]] = load i8, ptr [[TMP467]], align 1
; MAXIMIZE-NEXT: [[TMP484:%.*]] = load i8, ptr [[TMP468]], align 1
; MAXIMIZE-NEXT: [[TMP485:%.*]] = load i8, ptr [[TMP469]], align 1
; MAXIMIZE-NEXT: [[TMP486:%.*]] = load i8, ptr [[TMP470]], align 1
; MAXIMIZE-NEXT: [[TMP487:%.*]] = load i8, ptr [[TMP471]], align 1
; MAXIMIZE-NEXT: [[TMP488:%.*]] = load i8, ptr [[TMP472]], align 1
; MAXIMIZE-NEXT: [[TMP489:%.*]] = load i8, ptr [[TMP473]], align 1
; MAXIMIZE-NEXT: [[TMP490:%.*]] = load i8, ptr [[TMP474]], align 1
; MAXIMIZE-NEXT: [[TMP491:%.*]] = load i8, ptr [[TMP475]], align 1
; MAXIMIZE-NEXT: [[TMP492:%.*]] = load i8, ptr [[TMP476]], align 1
; MAXIMIZE-NEXT: [[TMP493:%.*]] = insertelement <16 x i8> poison, i8 [[TMP477]], i64 0
; MAXIMIZE-NEXT: [[TMP494:%.*]] = insertelement <16 x i8> [[TMP493]], i8 [[TMP478]], i64 1
; MAXIMIZE-NEXT: [[TMP495:%.*]] = insertelement <16 x i8> [[TMP494]], i8 [[TMP479]], i64 2
; MAXIMIZE-NEXT: [[TMP496:%.*]] = insertelement <16 x i8> [[TMP495]], i8 [[TMP480]], i64 3
; MAXIMIZE-NEXT: [[TMP497:%.*]] = insertelement <16 x i8> [[TMP496]], i8 [[TMP481]], i64 4
; MAXIMIZE-NEXT: [[TMP498:%.*]] = insertelement <16 x i8> [[TMP497]], i8 [[TMP482]], i64 5
; MAXIMIZE-NEXT: [[TMP499:%.*]] = insertelement <16 x i8> [[TMP498]], i8 [[TMP483]], i64 6
; MAXIMIZE-NEXT: [[TMP500:%.*]] = insertelement <16 x i8> [[TMP499]], i8 [[TMP484]], i64 7
; MAXIMIZE-NEXT: [[TMP501:%.*]] = insertelement <16 x i8> [[TMP500]], i8 [[TMP485]], i64 8
; MAXIMIZE-NEXT: [[TMP502:%.*]] = insertelement <16 x i8> [[TMP501]], i8 [[TMP486]], i64 9
; MAXIMIZE-NEXT: [[TMP503:%.*]] = insertelement <16 x i8> [[TMP502]], i8 [[TMP487]], i64 10
; MAXIMIZE-NEXT: [[TMP504:%.*]] = insertelement <16 x i8> [[TMP503]], i8 [[TMP488]], i64 11
; MAXIMIZE-NEXT: [[TMP505:%.*]] = insertelement <16 x i8> [[TMP504]], i8 [[TMP489]], i64 12
; MAXIMIZE-NEXT: [[TMP506:%.*]] = insertelement <16 x i8> [[TMP505]], i8 [[TMP490]], i64 13
; MAXIMIZE-NEXT: [[TMP507:%.*]] = insertelement <16 x i8> [[TMP506]], i8 [[TMP491]], i64 14
; MAXIMIZE-NEXT: [[TMP508:%.*]] = insertelement <16 x i8> [[TMP507]], i8 [[TMP492]], i64 15
; MAXIMIZE-NEXT: [[TMP509:%.*]] = zext <16 x i8> [[TMP508]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP510:%.*]] = and <16 x i32> [[TMP509]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP511:%.*]] = add nsw <16 x i32> [[TMP510]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP512:%.*]] = lshr <16 x i32> [[TMP509]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP513:%.*]] = add nsw <16 x i32> [[TMP512]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP514:%.*]] = sitofp <16 x i32> [[TMP511]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP515:%.*]] = fmul <16 x float> [[TMP80]], [[TMP514]]
; MAXIMIZE-NEXT: [[TMP516:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 12
; MAXIMIZE-NEXT: [[TMP517:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 12
; MAXIMIZE-NEXT: [[TMP518:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 12
; MAXIMIZE-NEXT: [[TMP519:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 12
; MAXIMIZE-NEXT: [[TMP520:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 12
; MAXIMIZE-NEXT: [[TMP521:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 12
; MAXIMIZE-NEXT: [[TMP522:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 12
; MAXIMIZE-NEXT: [[TMP523:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 12
; MAXIMIZE-NEXT: [[TMP524:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 12
; MAXIMIZE-NEXT: [[TMP525:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 12
; MAXIMIZE-NEXT: [[TMP526:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 12
; MAXIMIZE-NEXT: [[TMP527:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 12
; MAXIMIZE-NEXT: [[TMP528:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 12
; MAXIMIZE-NEXT: [[TMP529:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 12
; MAXIMIZE-NEXT: [[TMP530:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 12
; MAXIMIZE-NEXT: [[TMP531:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 12
; MAXIMIZE-NEXT: [[TMP532:%.*]] = extractelement <16 x float> [[TMP515]], i64 0
; MAXIMIZE-NEXT: store float [[TMP532]], ptr [[TMP516]], align 4
; MAXIMIZE-NEXT: [[TMP533:%.*]] = extractelement <16 x float> [[TMP515]], i64 1
; MAXIMIZE-NEXT: store float [[TMP533]], ptr [[TMP517]], align 4
; MAXIMIZE-NEXT: [[TMP534:%.*]] = extractelement <16 x float> [[TMP515]], i64 2
; MAXIMIZE-NEXT: store float [[TMP534]], ptr [[TMP518]], align 4
; MAXIMIZE-NEXT: [[TMP535:%.*]] = extractelement <16 x float> [[TMP515]], i64 3
; MAXIMIZE-NEXT: store float [[TMP535]], ptr [[TMP519]], align 4
; MAXIMIZE-NEXT: [[TMP536:%.*]] = extractelement <16 x float> [[TMP515]], i64 4
; MAXIMIZE-NEXT: store float [[TMP536]], ptr [[TMP520]], align 4
; MAXIMIZE-NEXT: [[TMP537:%.*]] = extractelement <16 x float> [[TMP515]], i64 5
; MAXIMIZE-NEXT: store float [[TMP537]], ptr [[TMP521]], align 4
; MAXIMIZE-NEXT: [[TMP538:%.*]] = extractelement <16 x float> [[TMP515]], i64 6
; MAXIMIZE-NEXT: store float [[TMP538]], ptr [[TMP522]], align 4
; MAXIMIZE-NEXT: [[TMP539:%.*]] = extractelement <16 x float> [[TMP515]], i64 7
; MAXIMIZE-NEXT: store float [[TMP539]], ptr [[TMP523]], align 4
; MAXIMIZE-NEXT: [[TMP540:%.*]] = extractelement <16 x float> [[TMP515]], i64 8
; MAXIMIZE-NEXT: store float [[TMP540]], ptr [[TMP524]], align 4
; MAXIMIZE-NEXT: [[TMP541:%.*]] = extractelement <16 x float> [[TMP515]], i64 9
; MAXIMIZE-NEXT: store float [[TMP541]], ptr [[TMP525]], align 4
; MAXIMIZE-NEXT: [[TMP542:%.*]] = extractelement <16 x float> [[TMP515]], i64 10
; MAXIMIZE-NEXT: store float [[TMP542]], ptr [[TMP526]], align 4
; MAXIMIZE-NEXT: [[TMP543:%.*]] = extractelement <16 x float> [[TMP515]], i64 11
; MAXIMIZE-NEXT: store float [[TMP543]], ptr [[TMP527]], align 4
; MAXIMIZE-NEXT: [[TMP544:%.*]] = extractelement <16 x float> [[TMP515]], i64 12
; MAXIMIZE-NEXT: store float [[TMP544]], ptr [[TMP528]], align 4
; MAXIMIZE-NEXT: [[TMP545:%.*]] = extractelement <16 x float> [[TMP515]], i64 13
; MAXIMIZE-NEXT: store float [[TMP545]], ptr [[TMP529]], align 4
; MAXIMIZE-NEXT: [[TMP546:%.*]] = extractelement <16 x float> [[TMP515]], i64 14
; MAXIMIZE-NEXT: store float [[TMP546]], ptr [[TMP530]], align 4
; MAXIMIZE-NEXT: [[TMP547:%.*]] = extractelement <16 x float> [[TMP515]], i64 15
; MAXIMIZE-NEXT: store float [[TMP547]], ptr [[TMP531]], align 4
; MAXIMIZE-NEXT: [[TMP548:%.*]] = sitofp <16 x i32> [[TMP513]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP549:%.*]] = fmul <16 x float> [[TMP80]], [[TMP548]]
; MAXIMIZE-NEXT: [[TMP550:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 76
; MAXIMIZE-NEXT: [[TMP551:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 76
; MAXIMIZE-NEXT: [[TMP552:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 76
; MAXIMIZE-NEXT: [[TMP553:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 76
; MAXIMIZE-NEXT: [[TMP554:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 76
; MAXIMIZE-NEXT: [[TMP555:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 76
; MAXIMIZE-NEXT: [[TMP556:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 76
; MAXIMIZE-NEXT: [[TMP557:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 76
; MAXIMIZE-NEXT: [[TMP558:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 76
; MAXIMIZE-NEXT: [[TMP559:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 76
; MAXIMIZE-NEXT: [[TMP560:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 76
; MAXIMIZE-NEXT: [[TMP561:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 76
; MAXIMIZE-NEXT: [[TMP562:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 76
; MAXIMIZE-NEXT: [[TMP563:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 76
; MAXIMIZE-NEXT: [[TMP564:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 76
; MAXIMIZE-NEXT: [[TMP565:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 76
; MAXIMIZE-NEXT: [[TMP566:%.*]] = extractelement <16 x float> [[TMP549]], i64 0
; MAXIMIZE-NEXT: store float [[TMP566]], ptr [[TMP550]], align 4
; MAXIMIZE-NEXT: [[TMP567:%.*]] = extractelement <16 x float> [[TMP549]], i64 1
; MAXIMIZE-NEXT: store float [[TMP567]], ptr [[TMP551]], align 4
; MAXIMIZE-NEXT: [[TMP568:%.*]] = extractelement <16 x float> [[TMP549]], i64 2
; MAXIMIZE-NEXT: store float [[TMP568]], ptr [[TMP552]], align 4
; MAXIMIZE-NEXT: [[TMP569:%.*]] = extractelement <16 x float> [[TMP549]], i64 3
; MAXIMIZE-NEXT: store float [[TMP569]], ptr [[TMP553]], align 4
; MAXIMIZE-NEXT: [[TMP570:%.*]] = extractelement <16 x float> [[TMP549]], i64 4
; MAXIMIZE-NEXT: store float [[TMP570]], ptr [[TMP554]], align 4
; MAXIMIZE-NEXT: [[TMP571:%.*]] = extractelement <16 x float> [[TMP549]], i64 5
; MAXIMIZE-NEXT: store float [[TMP571]], ptr [[TMP555]], align 4
; MAXIMIZE-NEXT: [[TMP572:%.*]] = extractelement <16 x float> [[TMP549]], i64 6
; MAXIMIZE-NEXT: store float [[TMP572]], ptr [[TMP556]], align 4
; MAXIMIZE-NEXT: [[TMP573:%.*]] = extractelement <16 x float> [[TMP549]], i64 7
; MAXIMIZE-NEXT: store float [[TMP573]], ptr [[TMP557]], align 4
; MAXIMIZE-NEXT: [[TMP574:%.*]] = extractelement <16 x float> [[TMP549]], i64 8
; MAXIMIZE-NEXT: store float [[TMP574]], ptr [[TMP558]], align 4
; MAXIMIZE-NEXT: [[TMP575:%.*]] = extractelement <16 x float> [[TMP549]], i64 9
; MAXIMIZE-NEXT: store float [[TMP575]], ptr [[TMP559]], align 4
; MAXIMIZE-NEXT: [[TMP576:%.*]] = extractelement <16 x float> [[TMP549]], i64 10
; MAXIMIZE-NEXT: store float [[TMP576]], ptr [[TMP560]], align 4
; MAXIMIZE-NEXT: [[TMP577:%.*]] = extractelement <16 x float> [[TMP549]], i64 11
; MAXIMIZE-NEXT: store float [[TMP577]], ptr [[TMP561]], align 4
; MAXIMIZE-NEXT: [[TMP578:%.*]] = extractelement <16 x float> [[TMP549]], i64 12
; MAXIMIZE-NEXT: store float [[TMP578]], ptr [[TMP562]], align 4
; MAXIMIZE-NEXT: [[TMP579:%.*]] = extractelement <16 x float> [[TMP549]], i64 13
; MAXIMIZE-NEXT: store float [[TMP579]], ptr [[TMP563]], align 4
; MAXIMIZE-NEXT: [[TMP580:%.*]] = extractelement <16 x float> [[TMP549]], i64 14
; MAXIMIZE-NEXT: store float [[TMP580]], ptr [[TMP564]], align 4
; MAXIMIZE-NEXT: [[TMP581:%.*]] = extractelement <16 x float> [[TMP549]], i64 15
; MAXIMIZE-NEXT: store float [[TMP581]], ptr [[TMP565]], align 4
; MAXIMIZE-NEXT: [[TMP582:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 6
; MAXIMIZE-NEXT: [[TMP583:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 6
; MAXIMIZE-NEXT: [[TMP584:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 6
; MAXIMIZE-NEXT: [[TMP585:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 6
; MAXIMIZE-NEXT: [[TMP586:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 6
; MAXIMIZE-NEXT: [[TMP587:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 6
; MAXIMIZE-NEXT: [[TMP588:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 6
; MAXIMIZE-NEXT: [[TMP589:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 6
; MAXIMIZE-NEXT: [[TMP590:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 6
; MAXIMIZE-NEXT: [[TMP591:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 6
; MAXIMIZE-NEXT: [[TMP592:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 6
; MAXIMIZE-NEXT: [[TMP593:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 6
; MAXIMIZE-NEXT: [[TMP594:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 6
; MAXIMIZE-NEXT: [[TMP595:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 6
; MAXIMIZE-NEXT: [[TMP596:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 6
; MAXIMIZE-NEXT: [[TMP597:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 6
; MAXIMIZE-NEXT: [[TMP598:%.*]] = load i8, ptr [[TMP582]], align 1
; MAXIMIZE-NEXT: [[TMP599:%.*]] = load i8, ptr [[TMP583]], align 1
; MAXIMIZE-NEXT: [[TMP600:%.*]] = load i8, ptr [[TMP584]], align 1
; MAXIMIZE-NEXT: [[TMP601:%.*]] = load i8, ptr [[TMP585]], align 1
; MAXIMIZE-NEXT: [[TMP602:%.*]] = load i8, ptr [[TMP586]], align 1
; MAXIMIZE-NEXT: [[TMP603:%.*]] = load i8, ptr [[TMP587]], align 1
; MAXIMIZE-NEXT: [[TMP604:%.*]] = load i8, ptr [[TMP588]], align 1
; MAXIMIZE-NEXT: [[TMP605:%.*]] = load i8, ptr [[TMP589]], align 1
; MAXIMIZE-NEXT: [[TMP606:%.*]] = load i8, ptr [[TMP590]], align 1
; MAXIMIZE-NEXT: [[TMP607:%.*]] = load i8, ptr [[TMP591]], align 1
; MAXIMIZE-NEXT: [[TMP608:%.*]] = load i8, ptr [[TMP592]], align 1
; MAXIMIZE-NEXT: [[TMP609:%.*]] = load i8, ptr [[TMP593]], align 1
; MAXIMIZE-NEXT: [[TMP610:%.*]] = load i8, ptr [[TMP594]], align 1
; MAXIMIZE-NEXT: [[TMP611:%.*]] = load i8, ptr [[TMP595]], align 1
; MAXIMIZE-NEXT: [[TMP612:%.*]] = load i8, ptr [[TMP596]], align 1
; MAXIMIZE-NEXT: [[TMP613:%.*]] = load i8, ptr [[TMP597]], align 1
; MAXIMIZE-NEXT: [[TMP614:%.*]] = insertelement <16 x i8> poison, i8 [[TMP598]], i64 0
; MAXIMIZE-NEXT: [[TMP615:%.*]] = insertelement <16 x i8> [[TMP614]], i8 [[TMP599]], i64 1
; MAXIMIZE-NEXT: [[TMP616:%.*]] = insertelement <16 x i8> [[TMP615]], i8 [[TMP600]], i64 2
; MAXIMIZE-NEXT: [[TMP617:%.*]] = insertelement <16 x i8> [[TMP616]], i8 [[TMP601]], i64 3
; MAXIMIZE-NEXT: [[TMP618:%.*]] = insertelement <16 x i8> [[TMP617]], i8 [[TMP602]], i64 4
; MAXIMIZE-NEXT: [[TMP619:%.*]] = insertelement <16 x i8> [[TMP618]], i8 [[TMP603]], i64 5
; MAXIMIZE-NEXT: [[TMP620:%.*]] = insertelement <16 x i8> [[TMP619]], i8 [[TMP604]], i64 6
; MAXIMIZE-NEXT: [[TMP621:%.*]] = insertelement <16 x i8> [[TMP620]], i8 [[TMP605]], i64 7
; MAXIMIZE-NEXT: [[TMP622:%.*]] = insertelement <16 x i8> [[TMP621]], i8 [[TMP606]], i64 8
; MAXIMIZE-NEXT: [[TMP623:%.*]] = insertelement <16 x i8> [[TMP622]], i8 [[TMP607]], i64 9
; MAXIMIZE-NEXT: [[TMP624:%.*]] = insertelement <16 x i8> [[TMP623]], i8 [[TMP608]], i64 10
; MAXIMIZE-NEXT: [[TMP625:%.*]] = insertelement <16 x i8> [[TMP624]], i8 [[TMP609]], i64 11
; MAXIMIZE-NEXT: [[TMP626:%.*]] = insertelement <16 x i8> [[TMP625]], i8 [[TMP610]], i64 12
; MAXIMIZE-NEXT: [[TMP627:%.*]] = insertelement <16 x i8> [[TMP626]], i8 [[TMP611]], i64 13
; MAXIMIZE-NEXT: [[TMP628:%.*]] = insertelement <16 x i8> [[TMP627]], i8 [[TMP612]], i64 14
; MAXIMIZE-NEXT: [[TMP629:%.*]] = insertelement <16 x i8> [[TMP628]], i8 [[TMP613]], i64 15
; MAXIMIZE-NEXT: [[TMP630:%.*]] = zext <16 x i8> [[TMP629]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP631:%.*]] = and <16 x i32> [[TMP630]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP632:%.*]] = add nsw <16 x i32> [[TMP631]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP633:%.*]] = lshr <16 x i32> [[TMP630]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP634:%.*]] = add nsw <16 x i32> [[TMP633]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP635:%.*]] = sitofp <16 x i32> [[TMP632]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP636:%.*]] = fmul <16 x float> [[TMP80]], [[TMP635]]
; MAXIMIZE-NEXT: [[TMP637:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 16
; MAXIMIZE-NEXT: [[TMP638:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 16
; MAXIMIZE-NEXT: [[TMP639:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 16
; MAXIMIZE-NEXT: [[TMP640:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 16
; MAXIMIZE-NEXT: [[TMP641:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 16
; MAXIMIZE-NEXT: [[TMP642:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 16
; MAXIMIZE-NEXT: [[TMP643:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 16
; MAXIMIZE-NEXT: [[TMP644:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 16
; MAXIMIZE-NEXT: [[TMP645:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 16
; MAXIMIZE-NEXT: [[TMP646:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 16
; MAXIMIZE-NEXT: [[TMP647:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 16
; MAXIMIZE-NEXT: [[TMP648:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 16
; MAXIMIZE-NEXT: [[TMP649:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 16
; MAXIMIZE-NEXT: [[TMP650:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 16
; MAXIMIZE-NEXT: [[TMP651:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 16
; MAXIMIZE-NEXT: [[TMP652:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 16
; MAXIMIZE-NEXT: [[TMP653:%.*]] = extractelement <16 x float> [[TMP636]], i64 0
; MAXIMIZE-NEXT: store float [[TMP653]], ptr [[TMP637]], align 4
; MAXIMIZE-NEXT: [[TMP654:%.*]] = extractelement <16 x float> [[TMP636]], i64 1
; MAXIMIZE-NEXT: store float [[TMP654]], ptr [[TMP638]], align 4
; MAXIMIZE-NEXT: [[TMP655:%.*]] = extractelement <16 x float> [[TMP636]], i64 2
; MAXIMIZE-NEXT: store float [[TMP655]], ptr [[TMP639]], align 4
; MAXIMIZE-NEXT: [[TMP656:%.*]] = extractelement <16 x float> [[TMP636]], i64 3
; MAXIMIZE-NEXT: store float [[TMP656]], ptr [[TMP640]], align 4
; MAXIMIZE-NEXT: [[TMP657:%.*]] = extractelement <16 x float> [[TMP636]], i64 4
; MAXIMIZE-NEXT: store float [[TMP657]], ptr [[TMP641]], align 4
; MAXIMIZE-NEXT: [[TMP658:%.*]] = extractelement <16 x float> [[TMP636]], i64 5
; MAXIMIZE-NEXT: store float [[TMP658]], ptr [[TMP642]], align 4
; MAXIMIZE-NEXT: [[TMP659:%.*]] = extractelement <16 x float> [[TMP636]], i64 6
; MAXIMIZE-NEXT: store float [[TMP659]], ptr [[TMP643]], align 4
; MAXIMIZE-NEXT: [[TMP660:%.*]] = extractelement <16 x float> [[TMP636]], i64 7
; MAXIMIZE-NEXT: store float [[TMP660]], ptr [[TMP644]], align 4
; MAXIMIZE-NEXT: [[TMP661:%.*]] = extractelement <16 x float> [[TMP636]], i64 8
; MAXIMIZE-NEXT: store float [[TMP661]], ptr [[TMP645]], align 4
; MAXIMIZE-NEXT: [[TMP662:%.*]] = extractelement <16 x float> [[TMP636]], i64 9
; MAXIMIZE-NEXT: store float [[TMP662]], ptr [[TMP646]], align 4
; MAXIMIZE-NEXT: [[TMP663:%.*]] = extractelement <16 x float> [[TMP636]], i64 10
; MAXIMIZE-NEXT: store float [[TMP663]], ptr [[TMP647]], align 4
; MAXIMIZE-NEXT: [[TMP664:%.*]] = extractelement <16 x float> [[TMP636]], i64 11
; MAXIMIZE-NEXT: store float [[TMP664]], ptr [[TMP648]], align 4
; MAXIMIZE-NEXT: [[TMP665:%.*]] = extractelement <16 x float> [[TMP636]], i64 12
; MAXIMIZE-NEXT: store float [[TMP665]], ptr [[TMP649]], align 4
; MAXIMIZE-NEXT: [[TMP666:%.*]] = extractelement <16 x float> [[TMP636]], i64 13
; MAXIMIZE-NEXT: store float [[TMP666]], ptr [[TMP650]], align 4
; MAXIMIZE-NEXT: [[TMP667:%.*]] = extractelement <16 x float> [[TMP636]], i64 14
; MAXIMIZE-NEXT: store float [[TMP667]], ptr [[TMP651]], align 4
; MAXIMIZE-NEXT: [[TMP668:%.*]] = extractelement <16 x float> [[TMP636]], i64 15
; MAXIMIZE-NEXT: store float [[TMP668]], ptr [[TMP652]], align 4
; MAXIMIZE-NEXT: [[TMP669:%.*]] = sitofp <16 x i32> [[TMP634]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP670:%.*]] = fmul <16 x float> [[TMP80]], [[TMP669]]
; MAXIMIZE-NEXT: [[TMP671:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 80
; MAXIMIZE-NEXT: [[TMP672:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 80
; MAXIMIZE-NEXT: [[TMP673:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 80
; MAXIMIZE-NEXT: [[TMP674:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 80
; MAXIMIZE-NEXT: [[TMP675:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 80
; MAXIMIZE-NEXT: [[TMP676:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 80
; MAXIMIZE-NEXT: [[TMP677:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 80
; MAXIMIZE-NEXT: [[TMP678:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 80
; MAXIMIZE-NEXT: [[TMP679:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 80
; MAXIMIZE-NEXT: [[TMP680:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 80
; MAXIMIZE-NEXT: [[TMP681:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 80
; MAXIMIZE-NEXT: [[TMP682:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 80
; MAXIMIZE-NEXT: [[TMP683:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 80
; MAXIMIZE-NEXT: [[TMP684:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 80
; MAXIMIZE-NEXT: [[TMP685:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 80
; MAXIMIZE-NEXT: [[TMP686:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 80
; MAXIMIZE-NEXT: [[TMP687:%.*]] = extractelement <16 x float> [[TMP670]], i64 0
; MAXIMIZE-NEXT: store float [[TMP687]], ptr [[TMP671]], align 4
; MAXIMIZE-NEXT: [[TMP688:%.*]] = extractelement <16 x float> [[TMP670]], i64 1
; MAXIMIZE-NEXT: store float [[TMP688]], ptr [[TMP672]], align 4
; MAXIMIZE-NEXT: [[TMP689:%.*]] = extractelement <16 x float> [[TMP670]], i64 2
; MAXIMIZE-NEXT: store float [[TMP689]], ptr [[TMP673]], align 4
; MAXIMIZE-NEXT: [[TMP690:%.*]] = extractelement <16 x float> [[TMP670]], i64 3
; MAXIMIZE-NEXT: store float [[TMP690]], ptr [[TMP674]], align 4
; MAXIMIZE-NEXT: [[TMP691:%.*]] = extractelement <16 x float> [[TMP670]], i64 4
; MAXIMIZE-NEXT: store float [[TMP691]], ptr [[TMP675]], align 4
; MAXIMIZE-NEXT: [[TMP692:%.*]] = extractelement <16 x float> [[TMP670]], i64 5
; MAXIMIZE-NEXT: store float [[TMP692]], ptr [[TMP676]], align 4
; MAXIMIZE-NEXT: [[TMP693:%.*]] = extractelement <16 x float> [[TMP670]], i64 6
; MAXIMIZE-NEXT: store float [[TMP693]], ptr [[TMP677]], align 4
; MAXIMIZE-NEXT: [[TMP694:%.*]] = extractelement <16 x float> [[TMP670]], i64 7
; MAXIMIZE-NEXT: store float [[TMP694]], ptr [[TMP678]], align 4
; MAXIMIZE-NEXT: [[TMP695:%.*]] = extractelement <16 x float> [[TMP670]], i64 8
; MAXIMIZE-NEXT: store float [[TMP695]], ptr [[TMP679]], align 4
; MAXIMIZE-NEXT: [[TMP696:%.*]] = extractelement <16 x float> [[TMP670]], i64 9
; MAXIMIZE-NEXT: store float [[TMP696]], ptr [[TMP680]], align 4
; MAXIMIZE-NEXT: [[TMP697:%.*]] = extractelement <16 x float> [[TMP670]], i64 10
; MAXIMIZE-NEXT: store float [[TMP697]], ptr [[TMP681]], align 4
; MAXIMIZE-NEXT: [[TMP698:%.*]] = extractelement <16 x float> [[TMP670]], i64 11
; MAXIMIZE-NEXT: store float [[TMP698]], ptr [[TMP682]], align 4
; MAXIMIZE-NEXT: [[TMP699:%.*]] = extractelement <16 x float> [[TMP670]], i64 12
; MAXIMIZE-NEXT: store float [[TMP699]], ptr [[TMP683]], align 4
; MAXIMIZE-NEXT: [[TMP700:%.*]] = extractelement <16 x float> [[TMP670]], i64 13
; MAXIMIZE-NEXT: store float [[TMP700]], ptr [[TMP684]], align 4
; MAXIMIZE-NEXT: [[TMP701:%.*]] = extractelement <16 x float> [[TMP670]], i64 14
; MAXIMIZE-NEXT: store float [[TMP701]], ptr [[TMP685]], align 4
; MAXIMIZE-NEXT: [[TMP702:%.*]] = extractelement <16 x float> [[TMP670]], i64 15
; MAXIMIZE-NEXT: store float [[TMP702]], ptr [[TMP686]], align 4
; MAXIMIZE-NEXT: [[TMP703:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 7
; MAXIMIZE-NEXT: [[TMP704:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 7
; MAXIMIZE-NEXT: [[TMP705:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 7
; MAXIMIZE-NEXT: [[TMP706:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 7
; MAXIMIZE-NEXT: [[TMP707:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 7
; MAXIMIZE-NEXT: [[TMP708:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 7
; MAXIMIZE-NEXT: [[TMP709:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 7
; MAXIMIZE-NEXT: [[TMP710:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 7
; MAXIMIZE-NEXT: [[TMP711:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 7
; MAXIMIZE-NEXT: [[TMP712:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 7
; MAXIMIZE-NEXT: [[TMP713:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 7
; MAXIMIZE-NEXT: [[TMP714:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 7
; MAXIMIZE-NEXT: [[TMP715:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 7
; MAXIMIZE-NEXT: [[TMP716:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 7
; MAXIMIZE-NEXT: [[TMP717:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 7
; MAXIMIZE-NEXT: [[TMP718:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 7
; MAXIMIZE-NEXT: [[TMP719:%.*]] = load i8, ptr [[TMP703]], align 1
; MAXIMIZE-NEXT: [[TMP720:%.*]] = load i8, ptr [[TMP704]], align 1
; MAXIMIZE-NEXT: [[TMP721:%.*]] = load i8, ptr [[TMP705]], align 1
; MAXIMIZE-NEXT: [[TMP722:%.*]] = load i8, ptr [[TMP706]], align 1
; MAXIMIZE-NEXT: [[TMP723:%.*]] = load i8, ptr [[TMP707]], align 1
; MAXIMIZE-NEXT: [[TMP724:%.*]] = load i8, ptr [[TMP708]], align 1
; MAXIMIZE-NEXT: [[TMP725:%.*]] = load i8, ptr [[TMP709]], align 1
; MAXIMIZE-NEXT: [[TMP726:%.*]] = load i8, ptr [[TMP710]], align 1
; MAXIMIZE-NEXT: [[TMP727:%.*]] = load i8, ptr [[TMP711]], align 1
; MAXIMIZE-NEXT: [[TMP728:%.*]] = load i8, ptr [[TMP712]], align 1
; MAXIMIZE-NEXT: [[TMP729:%.*]] = load i8, ptr [[TMP713]], align 1
; MAXIMIZE-NEXT: [[TMP730:%.*]] = load i8, ptr [[TMP714]], align 1
; MAXIMIZE-NEXT: [[TMP731:%.*]] = load i8, ptr [[TMP715]], align 1
; MAXIMIZE-NEXT: [[TMP732:%.*]] = load i8, ptr [[TMP716]], align 1
; MAXIMIZE-NEXT: [[TMP733:%.*]] = load i8, ptr [[TMP717]], align 1
; MAXIMIZE-NEXT: [[TMP734:%.*]] = load i8, ptr [[TMP718]], align 1
; MAXIMIZE-NEXT: [[TMP735:%.*]] = insertelement <16 x i8> poison, i8 [[TMP719]], i64 0
; MAXIMIZE-NEXT: [[TMP736:%.*]] = insertelement <16 x i8> [[TMP735]], i8 [[TMP720]], i64 1
; MAXIMIZE-NEXT: [[TMP737:%.*]] = insertelement <16 x i8> [[TMP736]], i8 [[TMP721]], i64 2
; MAXIMIZE-NEXT: [[TMP738:%.*]] = insertelement <16 x i8> [[TMP737]], i8 [[TMP722]], i64 3
; MAXIMIZE-NEXT: [[TMP739:%.*]] = insertelement <16 x i8> [[TMP738]], i8 [[TMP723]], i64 4
; MAXIMIZE-NEXT: [[TMP740:%.*]] = insertelement <16 x i8> [[TMP739]], i8 [[TMP724]], i64 5
; MAXIMIZE-NEXT: [[TMP741:%.*]] = insertelement <16 x i8> [[TMP740]], i8 [[TMP725]], i64 6
; MAXIMIZE-NEXT: [[TMP742:%.*]] = insertelement <16 x i8> [[TMP741]], i8 [[TMP726]], i64 7
; MAXIMIZE-NEXT: [[TMP743:%.*]] = insertelement <16 x i8> [[TMP742]], i8 [[TMP727]], i64 8
; MAXIMIZE-NEXT: [[TMP744:%.*]] = insertelement <16 x i8> [[TMP743]], i8 [[TMP728]], i64 9
; MAXIMIZE-NEXT: [[TMP745:%.*]] = insertelement <16 x i8> [[TMP744]], i8 [[TMP729]], i64 10
; MAXIMIZE-NEXT: [[TMP746:%.*]] = insertelement <16 x i8> [[TMP745]], i8 [[TMP730]], i64 11
; MAXIMIZE-NEXT: [[TMP747:%.*]] = insertelement <16 x i8> [[TMP746]], i8 [[TMP731]], i64 12
; MAXIMIZE-NEXT: [[TMP748:%.*]] = insertelement <16 x i8> [[TMP747]], i8 [[TMP732]], i64 13
; MAXIMIZE-NEXT: [[TMP749:%.*]] = insertelement <16 x i8> [[TMP748]], i8 [[TMP733]], i64 14
; MAXIMIZE-NEXT: [[TMP750:%.*]] = insertelement <16 x i8> [[TMP749]], i8 [[TMP734]], i64 15
; MAXIMIZE-NEXT: [[TMP751:%.*]] = zext <16 x i8> [[TMP750]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP752:%.*]] = and <16 x i32> [[TMP751]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP753:%.*]] = add nsw <16 x i32> [[TMP752]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP754:%.*]] = lshr <16 x i32> [[TMP751]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP755:%.*]] = add nsw <16 x i32> [[TMP754]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP756:%.*]] = sitofp <16 x i32> [[TMP753]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP757:%.*]] = fmul <16 x float> [[TMP80]], [[TMP756]]
; MAXIMIZE-NEXT: [[TMP758:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 20
; MAXIMIZE-NEXT: [[TMP759:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 20
; MAXIMIZE-NEXT: [[TMP760:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 20
; MAXIMIZE-NEXT: [[TMP761:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 20
; MAXIMIZE-NEXT: [[TMP762:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 20
; MAXIMIZE-NEXT: [[TMP763:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 20
; MAXIMIZE-NEXT: [[TMP764:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 20
; MAXIMIZE-NEXT: [[TMP765:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 20
; MAXIMIZE-NEXT: [[TMP766:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 20
; MAXIMIZE-NEXT: [[TMP767:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 20
; MAXIMIZE-NEXT: [[TMP768:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 20
; MAXIMIZE-NEXT: [[TMP769:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 20
; MAXIMIZE-NEXT: [[TMP770:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 20
; MAXIMIZE-NEXT: [[TMP771:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 20
; MAXIMIZE-NEXT: [[TMP772:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 20
; MAXIMIZE-NEXT: [[TMP773:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 20
; MAXIMIZE-NEXT: [[TMP774:%.*]] = extractelement <16 x float> [[TMP757]], i64 0
; MAXIMIZE-NEXT: store float [[TMP774]], ptr [[TMP758]], align 4
; MAXIMIZE-NEXT: [[TMP775:%.*]] = extractelement <16 x float> [[TMP757]], i64 1
; MAXIMIZE-NEXT: store float [[TMP775]], ptr [[TMP759]], align 4
; MAXIMIZE-NEXT: [[TMP776:%.*]] = extractelement <16 x float> [[TMP757]], i64 2
; MAXIMIZE-NEXT: store float [[TMP776]], ptr [[TMP760]], align 4
; MAXIMIZE-NEXT: [[TMP777:%.*]] = extractelement <16 x float> [[TMP757]], i64 3
; MAXIMIZE-NEXT: store float [[TMP777]], ptr [[TMP761]], align 4
; MAXIMIZE-NEXT: [[TMP778:%.*]] = extractelement <16 x float> [[TMP757]], i64 4
; MAXIMIZE-NEXT: store float [[TMP778]], ptr [[TMP762]], align 4
; MAXIMIZE-NEXT: [[TMP779:%.*]] = extractelement <16 x float> [[TMP757]], i64 5
; MAXIMIZE-NEXT: store float [[TMP779]], ptr [[TMP763]], align 4
; MAXIMIZE-NEXT: [[TMP780:%.*]] = extractelement <16 x float> [[TMP757]], i64 6
; MAXIMIZE-NEXT: store float [[TMP780]], ptr [[TMP764]], align 4
; MAXIMIZE-NEXT: [[TMP781:%.*]] = extractelement <16 x float> [[TMP757]], i64 7
; MAXIMIZE-NEXT: store float [[TMP781]], ptr [[TMP765]], align 4
; MAXIMIZE-NEXT: [[TMP782:%.*]] = extractelement <16 x float> [[TMP757]], i64 8
; MAXIMIZE-NEXT: store float [[TMP782]], ptr [[TMP766]], align 4
; MAXIMIZE-NEXT: [[TMP783:%.*]] = extractelement <16 x float> [[TMP757]], i64 9
; MAXIMIZE-NEXT: store float [[TMP783]], ptr [[TMP767]], align 4
; MAXIMIZE-NEXT: [[TMP784:%.*]] = extractelement <16 x float> [[TMP757]], i64 10
; MAXIMIZE-NEXT: store float [[TMP784]], ptr [[TMP768]], align 4
; MAXIMIZE-NEXT: [[TMP785:%.*]] = extractelement <16 x float> [[TMP757]], i64 11
; MAXIMIZE-NEXT: store float [[TMP785]], ptr [[TMP769]], align 4
; MAXIMIZE-NEXT: [[TMP786:%.*]] = extractelement <16 x float> [[TMP757]], i64 12
; MAXIMIZE-NEXT: store float [[TMP786]], ptr [[TMP770]], align 4
; MAXIMIZE-NEXT: [[TMP787:%.*]] = extractelement <16 x float> [[TMP757]], i64 13
; MAXIMIZE-NEXT: store float [[TMP787]], ptr [[TMP771]], align 4
; MAXIMIZE-NEXT: [[TMP788:%.*]] = extractelement <16 x float> [[TMP757]], i64 14
; MAXIMIZE-NEXT: store float [[TMP788]], ptr [[TMP772]], align 4
; MAXIMIZE-NEXT: [[TMP789:%.*]] = extractelement <16 x float> [[TMP757]], i64 15
; MAXIMIZE-NEXT: store float [[TMP789]], ptr [[TMP773]], align 4
; MAXIMIZE-NEXT: [[TMP790:%.*]] = sitofp <16 x i32> [[TMP755]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP791:%.*]] = fmul <16 x float> [[TMP80]], [[TMP790]]
; MAXIMIZE-NEXT: [[TMP792:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 84
; MAXIMIZE-NEXT: [[TMP793:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 84
; MAXIMIZE-NEXT: [[TMP794:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 84
; MAXIMIZE-NEXT: [[TMP795:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 84
; MAXIMIZE-NEXT: [[TMP796:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 84
; MAXIMIZE-NEXT: [[TMP797:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 84
; MAXIMIZE-NEXT: [[TMP798:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 84
; MAXIMIZE-NEXT: [[TMP799:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 84
; MAXIMIZE-NEXT: [[TMP800:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 84
; MAXIMIZE-NEXT: [[TMP801:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 84
; MAXIMIZE-NEXT: [[TMP802:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 84
; MAXIMIZE-NEXT: [[TMP803:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 84
; MAXIMIZE-NEXT: [[TMP804:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 84
; MAXIMIZE-NEXT: [[TMP805:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 84
; MAXIMIZE-NEXT: [[TMP806:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 84
; MAXIMIZE-NEXT: [[TMP807:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 84
; MAXIMIZE-NEXT: [[TMP808:%.*]] = extractelement <16 x float> [[TMP791]], i64 0
; MAXIMIZE-NEXT: store float [[TMP808]], ptr [[TMP792]], align 4
; MAXIMIZE-NEXT: [[TMP809:%.*]] = extractelement <16 x float> [[TMP791]], i64 1
; MAXIMIZE-NEXT: store float [[TMP809]], ptr [[TMP793]], align 4
; MAXIMIZE-NEXT: [[TMP810:%.*]] = extractelement <16 x float> [[TMP791]], i64 2
; MAXIMIZE-NEXT: store float [[TMP810]], ptr [[TMP794]], align 4
; MAXIMIZE-NEXT: [[TMP811:%.*]] = extractelement <16 x float> [[TMP791]], i64 3
; MAXIMIZE-NEXT: store float [[TMP811]], ptr [[TMP795]], align 4
; MAXIMIZE-NEXT: [[TMP812:%.*]] = extractelement <16 x float> [[TMP791]], i64 4
; MAXIMIZE-NEXT: store float [[TMP812]], ptr [[TMP796]], align 4
; MAXIMIZE-NEXT: [[TMP813:%.*]] = extractelement <16 x float> [[TMP791]], i64 5
; MAXIMIZE-NEXT: store float [[TMP813]], ptr [[TMP797]], align 4
; MAXIMIZE-NEXT: [[TMP814:%.*]] = extractelement <16 x float> [[TMP791]], i64 6
; MAXIMIZE-NEXT: store float [[TMP814]], ptr [[TMP798]], align 4
; MAXIMIZE-NEXT: [[TMP815:%.*]] = extractelement <16 x float> [[TMP791]], i64 7
; MAXIMIZE-NEXT: store float [[TMP815]], ptr [[TMP799]], align 4
; MAXIMIZE-NEXT: [[TMP816:%.*]] = extractelement <16 x float> [[TMP791]], i64 8
; MAXIMIZE-NEXT: store float [[TMP816]], ptr [[TMP800]], align 4
; MAXIMIZE-NEXT: [[TMP817:%.*]] = extractelement <16 x float> [[TMP791]], i64 9
; MAXIMIZE-NEXT: store float [[TMP817]], ptr [[TMP801]], align 4
; MAXIMIZE-NEXT: [[TMP818:%.*]] = extractelement <16 x float> [[TMP791]], i64 10
; MAXIMIZE-NEXT: store float [[TMP818]], ptr [[TMP802]], align 4
; MAXIMIZE-NEXT: [[TMP819:%.*]] = extractelement <16 x float> [[TMP791]], i64 11
; MAXIMIZE-NEXT: store float [[TMP819]], ptr [[TMP803]], align 4
; MAXIMIZE-NEXT: [[TMP820:%.*]] = extractelement <16 x float> [[TMP791]], i64 12
; MAXIMIZE-NEXT: store float [[TMP820]], ptr [[TMP804]], align 4
; MAXIMIZE-NEXT: [[TMP821:%.*]] = extractelement <16 x float> [[TMP791]], i64 13
; MAXIMIZE-NEXT: store float [[TMP821]], ptr [[TMP805]], align 4
; MAXIMIZE-NEXT: [[TMP822:%.*]] = extractelement <16 x float> [[TMP791]], i64 14
; MAXIMIZE-NEXT: store float [[TMP822]], ptr [[TMP806]], align 4
; MAXIMIZE-NEXT: [[TMP823:%.*]] = extractelement <16 x float> [[TMP791]], i64 15
; MAXIMIZE-NEXT: store float [[TMP823]], ptr [[TMP807]], align 4
; MAXIMIZE-NEXT: [[TMP824:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 8
; MAXIMIZE-NEXT: [[TMP825:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 8
; MAXIMIZE-NEXT: [[TMP826:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 8
; MAXIMIZE-NEXT: [[TMP827:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 8
; MAXIMIZE-NEXT: [[TMP828:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 8
; MAXIMIZE-NEXT: [[TMP829:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 8
; MAXIMIZE-NEXT: [[TMP830:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 8
; MAXIMIZE-NEXT: [[TMP831:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 8
; MAXIMIZE-NEXT: [[TMP832:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 8
; MAXIMIZE-NEXT: [[TMP833:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 8
; MAXIMIZE-NEXT: [[TMP834:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 8
; MAXIMIZE-NEXT: [[TMP835:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 8
; MAXIMIZE-NEXT: [[TMP836:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 8
; MAXIMIZE-NEXT: [[TMP837:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 8
; MAXIMIZE-NEXT: [[TMP838:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 8
; MAXIMIZE-NEXT: [[TMP839:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 8
; MAXIMIZE-NEXT: [[TMP840:%.*]] = load i8, ptr [[TMP824]], align 1
; MAXIMIZE-NEXT: [[TMP841:%.*]] = load i8, ptr [[TMP825]], align 1
; MAXIMIZE-NEXT: [[TMP842:%.*]] = load i8, ptr [[TMP826]], align 1
; MAXIMIZE-NEXT: [[TMP843:%.*]] = load i8, ptr [[TMP827]], align 1
; MAXIMIZE-NEXT: [[TMP844:%.*]] = load i8, ptr [[TMP828]], align 1
; MAXIMIZE-NEXT: [[TMP845:%.*]] = load i8, ptr [[TMP829]], align 1
; MAXIMIZE-NEXT: [[TMP846:%.*]] = load i8, ptr [[TMP830]], align 1
; MAXIMIZE-NEXT: [[TMP847:%.*]] = load i8, ptr [[TMP831]], align 1
; MAXIMIZE-NEXT: [[TMP848:%.*]] = load i8, ptr [[TMP832]], align 1
; MAXIMIZE-NEXT: [[TMP849:%.*]] = load i8, ptr [[TMP833]], align 1
; MAXIMIZE-NEXT: [[TMP850:%.*]] = load i8, ptr [[TMP834]], align 1
; MAXIMIZE-NEXT: [[TMP851:%.*]] = load i8, ptr [[TMP835]], align 1
; MAXIMIZE-NEXT: [[TMP852:%.*]] = load i8, ptr [[TMP836]], align 1
; MAXIMIZE-NEXT: [[TMP853:%.*]] = load i8, ptr [[TMP837]], align 1
; MAXIMIZE-NEXT: [[TMP854:%.*]] = load i8, ptr [[TMP838]], align 1
; MAXIMIZE-NEXT: [[TMP855:%.*]] = load i8, ptr [[TMP839]], align 1
; MAXIMIZE-NEXT: [[TMP856:%.*]] = insertelement <16 x i8> poison, i8 [[TMP840]], i64 0
; MAXIMIZE-NEXT: [[TMP857:%.*]] = insertelement <16 x i8> [[TMP856]], i8 [[TMP841]], i64 1
; MAXIMIZE-NEXT: [[TMP858:%.*]] = insertelement <16 x i8> [[TMP857]], i8 [[TMP842]], i64 2
; MAXIMIZE-NEXT: [[TMP859:%.*]] = insertelement <16 x i8> [[TMP858]], i8 [[TMP843]], i64 3
; MAXIMIZE-NEXT: [[TMP860:%.*]] = insertelement <16 x i8> [[TMP859]], i8 [[TMP844]], i64 4
; MAXIMIZE-NEXT: [[TMP861:%.*]] = insertelement <16 x i8> [[TMP860]], i8 [[TMP845]], i64 5
; MAXIMIZE-NEXT: [[TMP862:%.*]] = insertelement <16 x i8> [[TMP861]], i8 [[TMP846]], i64 6
; MAXIMIZE-NEXT: [[TMP863:%.*]] = insertelement <16 x i8> [[TMP862]], i8 [[TMP847]], i64 7
; MAXIMIZE-NEXT: [[TMP864:%.*]] = insertelement <16 x i8> [[TMP863]], i8 [[TMP848]], i64 8
; MAXIMIZE-NEXT: [[TMP865:%.*]] = insertelement <16 x i8> [[TMP864]], i8 [[TMP849]], i64 9
; MAXIMIZE-NEXT: [[TMP866:%.*]] = insertelement <16 x i8> [[TMP865]], i8 [[TMP850]], i64 10
; MAXIMIZE-NEXT: [[TMP867:%.*]] = insertelement <16 x i8> [[TMP866]], i8 [[TMP851]], i64 11
; MAXIMIZE-NEXT: [[TMP868:%.*]] = insertelement <16 x i8> [[TMP867]], i8 [[TMP852]], i64 12
; MAXIMIZE-NEXT: [[TMP869:%.*]] = insertelement <16 x i8> [[TMP868]], i8 [[TMP853]], i64 13
; MAXIMIZE-NEXT: [[TMP870:%.*]] = insertelement <16 x i8> [[TMP869]], i8 [[TMP854]], i64 14
; MAXIMIZE-NEXT: [[TMP871:%.*]] = insertelement <16 x i8> [[TMP870]], i8 [[TMP855]], i64 15
; MAXIMIZE-NEXT: [[TMP872:%.*]] = zext <16 x i8> [[TMP871]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP873:%.*]] = and <16 x i32> [[TMP872]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP874:%.*]] = add nsw <16 x i32> [[TMP873]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP875:%.*]] = lshr <16 x i32> [[TMP872]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP876:%.*]] = add nsw <16 x i32> [[TMP875]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP877:%.*]] = sitofp <16 x i32> [[TMP874]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP878:%.*]] = fmul <16 x float> [[TMP80]], [[TMP877]]
; MAXIMIZE-NEXT: [[TMP879:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 24
; MAXIMIZE-NEXT: [[TMP880:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 24
; MAXIMIZE-NEXT: [[TMP881:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 24
; MAXIMIZE-NEXT: [[TMP882:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 24
; MAXIMIZE-NEXT: [[TMP883:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 24
; MAXIMIZE-NEXT: [[TMP884:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 24
; MAXIMIZE-NEXT: [[TMP885:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 24
; MAXIMIZE-NEXT: [[TMP886:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 24
; MAXIMIZE-NEXT: [[TMP887:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 24
; MAXIMIZE-NEXT: [[TMP888:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 24
; MAXIMIZE-NEXT: [[TMP889:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 24
; MAXIMIZE-NEXT: [[TMP890:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 24
; MAXIMIZE-NEXT: [[TMP891:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 24
; MAXIMIZE-NEXT: [[TMP892:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 24
; MAXIMIZE-NEXT: [[TMP893:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 24
; MAXIMIZE-NEXT: [[TMP894:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 24
; MAXIMIZE-NEXT: [[TMP895:%.*]] = extractelement <16 x float> [[TMP878]], i64 0
; MAXIMIZE-NEXT: store float [[TMP895]], ptr [[TMP879]], align 4
; MAXIMIZE-NEXT: [[TMP896:%.*]] = extractelement <16 x float> [[TMP878]], i64 1
; MAXIMIZE-NEXT: store float [[TMP896]], ptr [[TMP880]], align 4
; MAXIMIZE-NEXT: [[TMP897:%.*]] = extractelement <16 x float> [[TMP878]], i64 2
; MAXIMIZE-NEXT: store float [[TMP897]], ptr [[TMP881]], align 4
; MAXIMIZE-NEXT: [[TMP898:%.*]] = extractelement <16 x float> [[TMP878]], i64 3
; MAXIMIZE-NEXT: store float [[TMP898]], ptr [[TMP882]], align 4
; MAXIMIZE-NEXT: [[TMP899:%.*]] = extractelement <16 x float> [[TMP878]], i64 4
; MAXIMIZE-NEXT: store float [[TMP899]], ptr [[TMP883]], align 4
; MAXIMIZE-NEXT: [[TMP900:%.*]] = extractelement <16 x float> [[TMP878]], i64 5
; MAXIMIZE-NEXT: store float [[TMP900]], ptr [[TMP884]], align 4
; MAXIMIZE-NEXT: [[TMP901:%.*]] = extractelement <16 x float> [[TMP878]], i64 6
; MAXIMIZE-NEXT: store float [[TMP901]], ptr [[TMP885]], align 4
; MAXIMIZE-NEXT: [[TMP902:%.*]] = extractelement <16 x float> [[TMP878]], i64 7
; MAXIMIZE-NEXT: store float [[TMP902]], ptr [[TMP886]], align 4
; MAXIMIZE-NEXT: [[TMP903:%.*]] = extractelement <16 x float> [[TMP878]], i64 8
; MAXIMIZE-NEXT: store float [[TMP903]], ptr [[TMP887]], align 4
; MAXIMIZE-NEXT: [[TMP904:%.*]] = extractelement <16 x float> [[TMP878]], i64 9
; MAXIMIZE-NEXT: store float [[TMP904]], ptr [[TMP888]], align 4
; MAXIMIZE-NEXT: [[TMP905:%.*]] = extractelement <16 x float> [[TMP878]], i64 10
; MAXIMIZE-NEXT: store float [[TMP905]], ptr [[TMP889]], align 4
; MAXIMIZE-NEXT: [[TMP906:%.*]] = extractelement <16 x float> [[TMP878]], i64 11
; MAXIMIZE-NEXT: store float [[TMP906]], ptr [[TMP890]], align 4
; MAXIMIZE-NEXT: [[TMP907:%.*]] = extractelement <16 x float> [[TMP878]], i64 12
; MAXIMIZE-NEXT: store float [[TMP907]], ptr [[TMP891]], align 4
; MAXIMIZE-NEXT: [[TMP908:%.*]] = extractelement <16 x float> [[TMP878]], i64 13
; MAXIMIZE-NEXT: store float [[TMP908]], ptr [[TMP892]], align 4
; MAXIMIZE-NEXT: [[TMP909:%.*]] = extractelement <16 x float> [[TMP878]], i64 14
; MAXIMIZE-NEXT: store float [[TMP909]], ptr [[TMP893]], align 4
; MAXIMIZE-NEXT: [[TMP910:%.*]] = extractelement <16 x float> [[TMP878]], i64 15
; MAXIMIZE-NEXT: store float [[TMP910]], ptr [[TMP894]], align 4
; MAXIMIZE-NEXT: [[TMP911:%.*]] = sitofp <16 x i32> [[TMP876]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP912:%.*]] = fmul <16 x float> [[TMP80]], [[TMP911]]
; MAXIMIZE-NEXT: [[TMP913:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 88
; MAXIMIZE-NEXT: [[TMP914:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 88
; MAXIMIZE-NEXT: [[TMP915:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 88
; MAXIMIZE-NEXT: [[TMP916:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 88
; MAXIMIZE-NEXT: [[TMP917:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 88
; MAXIMIZE-NEXT: [[TMP918:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 88
; MAXIMIZE-NEXT: [[TMP919:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 88
; MAXIMIZE-NEXT: [[TMP920:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 88
; MAXIMIZE-NEXT: [[TMP921:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 88
; MAXIMIZE-NEXT: [[TMP922:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 88
; MAXIMIZE-NEXT: [[TMP923:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 88
; MAXIMIZE-NEXT: [[TMP924:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 88
; MAXIMIZE-NEXT: [[TMP925:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 88
; MAXIMIZE-NEXT: [[TMP926:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 88
; MAXIMIZE-NEXT: [[TMP927:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 88
; MAXIMIZE-NEXT: [[TMP928:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 88
; MAXIMIZE-NEXT: [[TMP929:%.*]] = extractelement <16 x float> [[TMP912]], i64 0
; MAXIMIZE-NEXT: store float [[TMP929]], ptr [[TMP913]], align 4
; MAXIMIZE-NEXT: [[TMP930:%.*]] = extractelement <16 x float> [[TMP912]], i64 1
; MAXIMIZE-NEXT: store float [[TMP930]], ptr [[TMP914]], align 4
; MAXIMIZE-NEXT: [[TMP931:%.*]] = extractelement <16 x float> [[TMP912]], i64 2
; MAXIMIZE-NEXT: store float [[TMP931]], ptr [[TMP915]], align 4
; MAXIMIZE-NEXT: [[TMP932:%.*]] = extractelement <16 x float> [[TMP912]], i64 3
; MAXIMIZE-NEXT: store float [[TMP932]], ptr [[TMP916]], align 4
; MAXIMIZE-NEXT: [[TMP933:%.*]] = extractelement <16 x float> [[TMP912]], i64 4
; MAXIMIZE-NEXT: store float [[TMP933]], ptr [[TMP917]], align 4
; MAXIMIZE-NEXT: [[TMP934:%.*]] = extractelement <16 x float> [[TMP912]], i64 5
; MAXIMIZE-NEXT: store float [[TMP934]], ptr [[TMP918]], align 4
; MAXIMIZE-NEXT: [[TMP935:%.*]] = extractelement <16 x float> [[TMP912]], i64 6
; MAXIMIZE-NEXT: store float [[TMP935]], ptr [[TMP919]], align 4
; MAXIMIZE-NEXT: [[TMP936:%.*]] = extractelement <16 x float> [[TMP912]], i64 7
; MAXIMIZE-NEXT: store float [[TMP936]], ptr [[TMP920]], align 4
; MAXIMIZE-NEXT: [[TMP937:%.*]] = extractelement <16 x float> [[TMP912]], i64 8
; MAXIMIZE-NEXT: store float [[TMP937]], ptr [[TMP921]], align 4
; MAXIMIZE-NEXT: [[TMP938:%.*]] = extractelement <16 x float> [[TMP912]], i64 9
; MAXIMIZE-NEXT: store float [[TMP938]], ptr [[TMP922]], align 4
; MAXIMIZE-NEXT: [[TMP939:%.*]] = extractelement <16 x float> [[TMP912]], i64 10
; MAXIMIZE-NEXT: store float [[TMP939]], ptr [[TMP923]], align 4
; MAXIMIZE-NEXT: [[TMP940:%.*]] = extractelement <16 x float> [[TMP912]], i64 11
; MAXIMIZE-NEXT: store float [[TMP940]], ptr [[TMP924]], align 4
; MAXIMIZE-NEXT: [[TMP941:%.*]] = extractelement <16 x float> [[TMP912]], i64 12
; MAXIMIZE-NEXT: store float [[TMP941]], ptr [[TMP925]], align 4
; MAXIMIZE-NEXT: [[TMP942:%.*]] = extractelement <16 x float> [[TMP912]], i64 13
; MAXIMIZE-NEXT: store float [[TMP942]], ptr [[TMP926]], align 4
; MAXIMIZE-NEXT: [[TMP943:%.*]] = extractelement <16 x float> [[TMP912]], i64 14
; MAXIMIZE-NEXT: store float [[TMP943]], ptr [[TMP927]], align 4
; MAXIMIZE-NEXT: [[TMP944:%.*]] = extractelement <16 x float> [[TMP912]], i64 15
; MAXIMIZE-NEXT: store float [[TMP944]], ptr [[TMP928]], align 4
; MAXIMIZE-NEXT: [[TMP945:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 9
; MAXIMIZE-NEXT: [[TMP946:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 9
; MAXIMIZE-NEXT: [[TMP947:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 9
; MAXIMIZE-NEXT: [[TMP948:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 9
; MAXIMIZE-NEXT: [[TMP949:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 9
; MAXIMIZE-NEXT: [[TMP950:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 9
; MAXIMIZE-NEXT: [[TMP951:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 9
; MAXIMIZE-NEXT: [[TMP952:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 9
; MAXIMIZE-NEXT: [[TMP953:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 9
; MAXIMIZE-NEXT: [[TMP954:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 9
; MAXIMIZE-NEXT: [[TMP955:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 9
; MAXIMIZE-NEXT: [[TMP956:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 9
; MAXIMIZE-NEXT: [[TMP957:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 9
; MAXIMIZE-NEXT: [[TMP958:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 9
; MAXIMIZE-NEXT: [[TMP959:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 9
; MAXIMIZE-NEXT: [[TMP960:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 9
; MAXIMIZE-NEXT: [[TMP961:%.*]] = load i8, ptr [[TMP945]], align 1
; MAXIMIZE-NEXT: [[TMP962:%.*]] = load i8, ptr [[TMP946]], align 1
; MAXIMIZE-NEXT: [[TMP963:%.*]] = load i8, ptr [[TMP947]], align 1
; MAXIMIZE-NEXT: [[TMP964:%.*]] = load i8, ptr [[TMP948]], align 1
; MAXIMIZE-NEXT: [[TMP965:%.*]] = load i8, ptr [[TMP949]], align 1
; MAXIMIZE-NEXT: [[TMP966:%.*]] = load i8, ptr [[TMP950]], align 1
; MAXIMIZE-NEXT: [[TMP967:%.*]] = load i8, ptr [[TMP951]], align 1
; MAXIMIZE-NEXT: [[TMP968:%.*]] = load i8, ptr [[TMP952]], align 1
; MAXIMIZE-NEXT: [[TMP969:%.*]] = load i8, ptr [[TMP953]], align 1
; MAXIMIZE-NEXT: [[TMP970:%.*]] = load i8, ptr [[TMP954]], align 1
; MAXIMIZE-NEXT: [[TMP971:%.*]] = load i8, ptr [[TMP955]], align 1
; MAXIMIZE-NEXT: [[TMP972:%.*]] = load i8, ptr [[TMP956]], align 1
; MAXIMIZE-NEXT: [[TMP973:%.*]] = load i8, ptr [[TMP957]], align 1
; MAXIMIZE-NEXT: [[TMP974:%.*]] = load i8, ptr [[TMP958]], align 1
; MAXIMIZE-NEXT: [[TMP975:%.*]] = load i8, ptr [[TMP959]], align 1
; MAXIMIZE-NEXT: [[TMP976:%.*]] = load i8, ptr [[TMP960]], align 1
; MAXIMIZE-NEXT: [[TMP977:%.*]] = insertelement <16 x i8> poison, i8 [[TMP961]], i64 0
; MAXIMIZE-NEXT: [[TMP978:%.*]] = insertelement <16 x i8> [[TMP977]], i8 [[TMP962]], i64 1
; MAXIMIZE-NEXT: [[TMP979:%.*]] = insertelement <16 x i8> [[TMP978]], i8 [[TMP963]], i64 2
; MAXIMIZE-NEXT: [[TMP980:%.*]] = insertelement <16 x i8> [[TMP979]], i8 [[TMP964]], i64 3
; MAXIMIZE-NEXT: [[TMP981:%.*]] = insertelement <16 x i8> [[TMP980]], i8 [[TMP965]], i64 4
; MAXIMIZE-NEXT: [[TMP982:%.*]] = insertelement <16 x i8> [[TMP981]], i8 [[TMP966]], i64 5
; MAXIMIZE-NEXT: [[TMP983:%.*]] = insertelement <16 x i8> [[TMP982]], i8 [[TMP967]], i64 6
; MAXIMIZE-NEXT: [[TMP984:%.*]] = insertelement <16 x i8> [[TMP983]], i8 [[TMP968]], i64 7
; MAXIMIZE-NEXT: [[TMP985:%.*]] = insertelement <16 x i8> [[TMP984]], i8 [[TMP969]], i64 8
; MAXIMIZE-NEXT: [[TMP986:%.*]] = insertelement <16 x i8> [[TMP985]], i8 [[TMP970]], i64 9
; MAXIMIZE-NEXT: [[TMP987:%.*]] = insertelement <16 x i8> [[TMP986]], i8 [[TMP971]], i64 10
; MAXIMIZE-NEXT: [[TMP988:%.*]] = insertelement <16 x i8> [[TMP987]], i8 [[TMP972]], i64 11
; MAXIMIZE-NEXT: [[TMP989:%.*]] = insertelement <16 x i8> [[TMP988]], i8 [[TMP973]], i64 12
; MAXIMIZE-NEXT: [[TMP990:%.*]] = insertelement <16 x i8> [[TMP989]], i8 [[TMP974]], i64 13
; MAXIMIZE-NEXT: [[TMP991:%.*]] = insertelement <16 x i8> [[TMP990]], i8 [[TMP975]], i64 14
; MAXIMIZE-NEXT: [[TMP992:%.*]] = insertelement <16 x i8> [[TMP991]], i8 [[TMP976]], i64 15
; MAXIMIZE-NEXT: [[TMP993:%.*]] = zext <16 x i8> [[TMP992]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP994:%.*]] = and <16 x i32> [[TMP993]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP995:%.*]] = add nsw <16 x i32> [[TMP994]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP996:%.*]] = lshr <16 x i32> [[TMP993]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP997:%.*]] = add nsw <16 x i32> [[TMP996]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP998:%.*]] = sitofp <16 x i32> [[TMP995]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP999:%.*]] = fmul <16 x float> [[TMP80]], [[TMP998]]
; MAXIMIZE-NEXT: [[TMP1000:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 28
; MAXIMIZE-NEXT: [[TMP1001:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 28
; MAXIMIZE-NEXT: [[TMP1002:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 28
; MAXIMIZE-NEXT: [[TMP1003:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 28
; MAXIMIZE-NEXT: [[TMP1004:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 28
; MAXIMIZE-NEXT: [[TMP1005:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 28
; MAXIMIZE-NEXT: [[TMP1006:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 28
; MAXIMIZE-NEXT: [[TMP1007:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 28
; MAXIMIZE-NEXT: [[TMP1008:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 28
; MAXIMIZE-NEXT: [[TMP1009:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 28
; MAXIMIZE-NEXT: [[TMP1010:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 28
; MAXIMIZE-NEXT: [[TMP1011:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 28
; MAXIMIZE-NEXT: [[TMP1012:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 28
; MAXIMIZE-NEXT: [[TMP1013:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 28
; MAXIMIZE-NEXT: [[TMP1014:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 28
; MAXIMIZE-NEXT: [[TMP1015:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 28
; MAXIMIZE-NEXT: [[TMP1016:%.*]] = extractelement <16 x float> [[TMP999]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1016]], ptr [[TMP1000]], align 4
; MAXIMIZE-NEXT: [[TMP1017:%.*]] = extractelement <16 x float> [[TMP999]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1017]], ptr [[TMP1001]], align 4
; MAXIMIZE-NEXT: [[TMP1018:%.*]] = extractelement <16 x float> [[TMP999]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1018]], ptr [[TMP1002]], align 4
; MAXIMIZE-NEXT: [[TMP1019:%.*]] = extractelement <16 x float> [[TMP999]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1019]], ptr [[TMP1003]], align 4
; MAXIMIZE-NEXT: [[TMP1020:%.*]] = extractelement <16 x float> [[TMP999]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1020]], ptr [[TMP1004]], align 4
; MAXIMIZE-NEXT: [[TMP1021:%.*]] = extractelement <16 x float> [[TMP999]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1021]], ptr [[TMP1005]], align 4
; MAXIMIZE-NEXT: [[TMP1022:%.*]] = extractelement <16 x float> [[TMP999]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1022]], ptr [[TMP1006]], align 4
; MAXIMIZE-NEXT: [[TMP1023:%.*]] = extractelement <16 x float> [[TMP999]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1023]], ptr [[TMP1007]], align 4
; MAXIMIZE-NEXT: [[TMP1024:%.*]] = extractelement <16 x float> [[TMP999]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1024]], ptr [[TMP1008]], align 4
; MAXIMIZE-NEXT: [[TMP1025:%.*]] = extractelement <16 x float> [[TMP999]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1025]], ptr [[TMP1009]], align 4
; MAXIMIZE-NEXT: [[TMP1026:%.*]] = extractelement <16 x float> [[TMP999]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1026]], ptr [[TMP1010]], align 4
; MAXIMIZE-NEXT: [[TMP1027:%.*]] = extractelement <16 x float> [[TMP999]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1027]], ptr [[TMP1011]], align 4
; MAXIMIZE-NEXT: [[TMP1028:%.*]] = extractelement <16 x float> [[TMP999]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1028]], ptr [[TMP1012]], align 4
; MAXIMIZE-NEXT: [[TMP1029:%.*]] = extractelement <16 x float> [[TMP999]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1029]], ptr [[TMP1013]], align 4
; MAXIMIZE-NEXT: [[TMP1030:%.*]] = extractelement <16 x float> [[TMP999]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1030]], ptr [[TMP1014]], align 4
; MAXIMIZE-NEXT: [[TMP1031:%.*]] = extractelement <16 x float> [[TMP999]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1031]], ptr [[TMP1015]], align 4
; MAXIMIZE-NEXT: [[TMP1032:%.*]] = sitofp <16 x i32> [[TMP997]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1033:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1032]]
; MAXIMIZE-NEXT: [[TMP1034:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 92
; MAXIMIZE-NEXT: [[TMP1035:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 92
; MAXIMIZE-NEXT: [[TMP1036:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 92
; MAXIMIZE-NEXT: [[TMP1037:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 92
; MAXIMIZE-NEXT: [[TMP1038:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 92
; MAXIMIZE-NEXT: [[TMP1039:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 92
; MAXIMIZE-NEXT: [[TMP1040:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 92
; MAXIMIZE-NEXT: [[TMP1041:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 92
; MAXIMIZE-NEXT: [[TMP1042:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 92
; MAXIMIZE-NEXT: [[TMP1043:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 92
; MAXIMIZE-NEXT: [[TMP1044:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 92
; MAXIMIZE-NEXT: [[TMP1045:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 92
; MAXIMIZE-NEXT: [[TMP1046:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 92
; MAXIMIZE-NEXT: [[TMP1047:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 92
; MAXIMIZE-NEXT: [[TMP1048:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 92
; MAXIMIZE-NEXT: [[TMP1049:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 92
; MAXIMIZE-NEXT: [[TMP1050:%.*]] = extractelement <16 x float> [[TMP1033]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1050]], ptr [[TMP1034]], align 4
; MAXIMIZE-NEXT: [[TMP1051:%.*]] = extractelement <16 x float> [[TMP1033]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1051]], ptr [[TMP1035]], align 4
; MAXIMIZE-NEXT: [[TMP1052:%.*]] = extractelement <16 x float> [[TMP1033]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1052]], ptr [[TMP1036]], align 4
; MAXIMIZE-NEXT: [[TMP1053:%.*]] = extractelement <16 x float> [[TMP1033]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1053]], ptr [[TMP1037]], align 4
; MAXIMIZE-NEXT: [[TMP1054:%.*]] = extractelement <16 x float> [[TMP1033]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1054]], ptr [[TMP1038]], align 4
; MAXIMIZE-NEXT: [[TMP1055:%.*]] = extractelement <16 x float> [[TMP1033]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1055]], ptr [[TMP1039]], align 4
; MAXIMIZE-NEXT: [[TMP1056:%.*]] = extractelement <16 x float> [[TMP1033]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1056]], ptr [[TMP1040]], align 4
; MAXIMIZE-NEXT: [[TMP1057:%.*]] = extractelement <16 x float> [[TMP1033]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1057]], ptr [[TMP1041]], align 4
; MAXIMIZE-NEXT: [[TMP1058:%.*]] = extractelement <16 x float> [[TMP1033]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1058]], ptr [[TMP1042]], align 4
; MAXIMIZE-NEXT: [[TMP1059:%.*]] = extractelement <16 x float> [[TMP1033]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1059]], ptr [[TMP1043]], align 4
; MAXIMIZE-NEXT: [[TMP1060:%.*]] = extractelement <16 x float> [[TMP1033]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1060]], ptr [[TMP1044]], align 4
; MAXIMIZE-NEXT: [[TMP1061:%.*]] = extractelement <16 x float> [[TMP1033]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1061]], ptr [[TMP1045]], align 4
; MAXIMIZE-NEXT: [[TMP1062:%.*]] = extractelement <16 x float> [[TMP1033]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1062]], ptr [[TMP1046]], align 4
; MAXIMIZE-NEXT: [[TMP1063:%.*]] = extractelement <16 x float> [[TMP1033]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1063]], ptr [[TMP1047]], align 4
; MAXIMIZE-NEXT: [[TMP1064:%.*]] = extractelement <16 x float> [[TMP1033]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1064]], ptr [[TMP1048]], align 4
; MAXIMIZE-NEXT: [[TMP1065:%.*]] = extractelement <16 x float> [[TMP1033]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1065]], ptr [[TMP1049]], align 4
; MAXIMIZE-NEXT: [[TMP1066:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 10
; MAXIMIZE-NEXT: [[TMP1067:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 10
; MAXIMIZE-NEXT: [[TMP1068:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 10
; MAXIMIZE-NEXT: [[TMP1069:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 10
; MAXIMIZE-NEXT: [[TMP1070:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 10
; MAXIMIZE-NEXT: [[TMP1071:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 10
; MAXIMIZE-NEXT: [[TMP1072:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 10
; MAXIMIZE-NEXT: [[TMP1073:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 10
; MAXIMIZE-NEXT: [[TMP1074:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 10
; MAXIMIZE-NEXT: [[TMP1075:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 10
; MAXIMIZE-NEXT: [[TMP1076:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 10
; MAXIMIZE-NEXT: [[TMP1077:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 10
; MAXIMIZE-NEXT: [[TMP1078:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 10
; MAXIMIZE-NEXT: [[TMP1079:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 10
; MAXIMIZE-NEXT: [[TMP1080:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 10
; MAXIMIZE-NEXT: [[TMP1081:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 10
; MAXIMIZE-NEXT: [[TMP1082:%.*]] = load i8, ptr [[TMP1066]], align 1
; MAXIMIZE-NEXT: [[TMP1083:%.*]] = load i8, ptr [[TMP1067]], align 1
; MAXIMIZE-NEXT: [[TMP1084:%.*]] = load i8, ptr [[TMP1068]], align 1
; MAXIMIZE-NEXT: [[TMP1085:%.*]] = load i8, ptr [[TMP1069]], align 1
; MAXIMIZE-NEXT: [[TMP1086:%.*]] = load i8, ptr [[TMP1070]], align 1
; MAXIMIZE-NEXT: [[TMP1087:%.*]] = load i8, ptr [[TMP1071]], align 1
; MAXIMIZE-NEXT: [[TMP1088:%.*]] = load i8, ptr [[TMP1072]], align 1
; MAXIMIZE-NEXT: [[TMP1089:%.*]] = load i8, ptr [[TMP1073]], align 1
; MAXIMIZE-NEXT: [[TMP1090:%.*]] = load i8, ptr [[TMP1074]], align 1
; MAXIMIZE-NEXT: [[TMP1091:%.*]] = load i8, ptr [[TMP1075]], align 1
; MAXIMIZE-NEXT: [[TMP1092:%.*]] = load i8, ptr [[TMP1076]], align 1
; MAXIMIZE-NEXT: [[TMP1093:%.*]] = load i8, ptr [[TMP1077]], align 1
; MAXIMIZE-NEXT: [[TMP1094:%.*]] = load i8, ptr [[TMP1078]], align 1
; MAXIMIZE-NEXT: [[TMP1095:%.*]] = load i8, ptr [[TMP1079]], align 1
; MAXIMIZE-NEXT: [[TMP1096:%.*]] = load i8, ptr [[TMP1080]], align 1
; MAXIMIZE-NEXT: [[TMP1097:%.*]] = load i8, ptr [[TMP1081]], align 1
; MAXIMIZE-NEXT: [[TMP1098:%.*]] = insertelement <16 x i8> poison, i8 [[TMP1082]], i64 0
; MAXIMIZE-NEXT: [[TMP1099:%.*]] = insertelement <16 x i8> [[TMP1098]], i8 [[TMP1083]], i64 1
; MAXIMIZE-NEXT: [[TMP1100:%.*]] = insertelement <16 x i8> [[TMP1099]], i8 [[TMP1084]], i64 2
; MAXIMIZE-NEXT: [[TMP1101:%.*]] = insertelement <16 x i8> [[TMP1100]], i8 [[TMP1085]], i64 3
; MAXIMIZE-NEXT: [[TMP1102:%.*]] = insertelement <16 x i8> [[TMP1101]], i8 [[TMP1086]], i64 4
; MAXIMIZE-NEXT: [[TMP1103:%.*]] = insertelement <16 x i8> [[TMP1102]], i8 [[TMP1087]], i64 5
; MAXIMIZE-NEXT: [[TMP1104:%.*]] = insertelement <16 x i8> [[TMP1103]], i8 [[TMP1088]], i64 6
; MAXIMIZE-NEXT: [[TMP1105:%.*]] = insertelement <16 x i8> [[TMP1104]], i8 [[TMP1089]], i64 7
; MAXIMIZE-NEXT: [[TMP1106:%.*]] = insertelement <16 x i8> [[TMP1105]], i8 [[TMP1090]], i64 8
; MAXIMIZE-NEXT: [[TMP1107:%.*]] = insertelement <16 x i8> [[TMP1106]], i8 [[TMP1091]], i64 9
; MAXIMIZE-NEXT: [[TMP1108:%.*]] = insertelement <16 x i8> [[TMP1107]], i8 [[TMP1092]], i64 10
; MAXIMIZE-NEXT: [[TMP1109:%.*]] = insertelement <16 x i8> [[TMP1108]], i8 [[TMP1093]], i64 11
; MAXIMIZE-NEXT: [[TMP1110:%.*]] = insertelement <16 x i8> [[TMP1109]], i8 [[TMP1094]], i64 12
; MAXIMIZE-NEXT: [[TMP1111:%.*]] = insertelement <16 x i8> [[TMP1110]], i8 [[TMP1095]], i64 13
; MAXIMIZE-NEXT: [[TMP1112:%.*]] = insertelement <16 x i8> [[TMP1111]], i8 [[TMP1096]], i64 14
; MAXIMIZE-NEXT: [[TMP1113:%.*]] = insertelement <16 x i8> [[TMP1112]], i8 [[TMP1097]], i64 15
; MAXIMIZE-NEXT: [[TMP1114:%.*]] = zext <16 x i8> [[TMP1113]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP1115:%.*]] = and <16 x i32> [[TMP1114]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP1116:%.*]] = add nsw <16 x i32> [[TMP1115]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1117:%.*]] = lshr <16 x i32> [[TMP1114]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP1118:%.*]] = add nsw <16 x i32> [[TMP1117]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1119:%.*]] = sitofp <16 x i32> [[TMP1116]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1120:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1119]]
; MAXIMIZE-NEXT: [[TMP1121:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 32
; MAXIMIZE-NEXT: [[TMP1122:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 32
; MAXIMIZE-NEXT: [[TMP1123:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 32
; MAXIMIZE-NEXT: [[TMP1124:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 32
; MAXIMIZE-NEXT: [[TMP1125:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 32
; MAXIMIZE-NEXT: [[TMP1126:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 32
; MAXIMIZE-NEXT: [[TMP1127:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 32
; MAXIMIZE-NEXT: [[TMP1128:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 32
; MAXIMIZE-NEXT: [[TMP1129:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 32
; MAXIMIZE-NEXT: [[TMP1130:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 32
; MAXIMIZE-NEXT: [[TMP1131:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 32
; MAXIMIZE-NEXT: [[TMP1132:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 32
; MAXIMIZE-NEXT: [[TMP1133:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 32
; MAXIMIZE-NEXT: [[TMP1134:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 32
; MAXIMIZE-NEXT: [[TMP1135:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 32
; MAXIMIZE-NEXT: [[TMP1136:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 32
; MAXIMIZE-NEXT: [[TMP1137:%.*]] = extractelement <16 x float> [[TMP1120]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1137]], ptr [[TMP1121]], align 4
; MAXIMIZE-NEXT: [[TMP1138:%.*]] = extractelement <16 x float> [[TMP1120]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1138]], ptr [[TMP1122]], align 4
; MAXIMIZE-NEXT: [[TMP1139:%.*]] = extractelement <16 x float> [[TMP1120]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1139]], ptr [[TMP1123]], align 4
; MAXIMIZE-NEXT: [[TMP1140:%.*]] = extractelement <16 x float> [[TMP1120]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1140]], ptr [[TMP1124]], align 4
; MAXIMIZE-NEXT: [[TMP1141:%.*]] = extractelement <16 x float> [[TMP1120]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1141]], ptr [[TMP1125]], align 4
; MAXIMIZE-NEXT: [[TMP1142:%.*]] = extractelement <16 x float> [[TMP1120]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1142]], ptr [[TMP1126]], align 4
; MAXIMIZE-NEXT: [[TMP1143:%.*]] = extractelement <16 x float> [[TMP1120]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1143]], ptr [[TMP1127]], align 4
; MAXIMIZE-NEXT: [[TMP1144:%.*]] = extractelement <16 x float> [[TMP1120]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1144]], ptr [[TMP1128]], align 4
; MAXIMIZE-NEXT: [[TMP1145:%.*]] = extractelement <16 x float> [[TMP1120]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1145]], ptr [[TMP1129]], align 4
; MAXIMIZE-NEXT: [[TMP1146:%.*]] = extractelement <16 x float> [[TMP1120]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1146]], ptr [[TMP1130]], align 4
; MAXIMIZE-NEXT: [[TMP1147:%.*]] = extractelement <16 x float> [[TMP1120]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1147]], ptr [[TMP1131]], align 4
; MAXIMIZE-NEXT: [[TMP1148:%.*]] = extractelement <16 x float> [[TMP1120]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1148]], ptr [[TMP1132]], align 4
; MAXIMIZE-NEXT: [[TMP1149:%.*]] = extractelement <16 x float> [[TMP1120]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1149]], ptr [[TMP1133]], align 4
; MAXIMIZE-NEXT: [[TMP1150:%.*]] = extractelement <16 x float> [[TMP1120]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1150]], ptr [[TMP1134]], align 4
; MAXIMIZE-NEXT: [[TMP1151:%.*]] = extractelement <16 x float> [[TMP1120]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1151]], ptr [[TMP1135]], align 4
; MAXIMIZE-NEXT: [[TMP1152:%.*]] = extractelement <16 x float> [[TMP1120]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1152]], ptr [[TMP1136]], align 4
; MAXIMIZE-NEXT: [[TMP1153:%.*]] = sitofp <16 x i32> [[TMP1118]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1154:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1153]]
; MAXIMIZE-NEXT: [[TMP1155:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 96
; MAXIMIZE-NEXT: [[TMP1156:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 96
; MAXIMIZE-NEXT: [[TMP1157:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 96
; MAXIMIZE-NEXT: [[TMP1158:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 96
; MAXIMIZE-NEXT: [[TMP1159:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 96
; MAXIMIZE-NEXT: [[TMP1160:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 96
; MAXIMIZE-NEXT: [[TMP1161:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 96
; MAXIMIZE-NEXT: [[TMP1162:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 96
; MAXIMIZE-NEXT: [[TMP1163:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 96
; MAXIMIZE-NEXT: [[TMP1164:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 96
; MAXIMIZE-NEXT: [[TMP1165:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 96
; MAXIMIZE-NEXT: [[TMP1166:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 96
; MAXIMIZE-NEXT: [[TMP1167:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 96
; MAXIMIZE-NEXT: [[TMP1168:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 96
; MAXIMIZE-NEXT: [[TMP1169:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 96
; MAXIMIZE-NEXT: [[TMP1170:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 96
; MAXIMIZE-NEXT: [[TMP1171:%.*]] = extractelement <16 x float> [[TMP1154]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1171]], ptr [[TMP1155]], align 4
; MAXIMIZE-NEXT: [[TMP1172:%.*]] = extractelement <16 x float> [[TMP1154]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1172]], ptr [[TMP1156]], align 4
; MAXIMIZE-NEXT: [[TMP1173:%.*]] = extractelement <16 x float> [[TMP1154]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1173]], ptr [[TMP1157]], align 4
; MAXIMIZE-NEXT: [[TMP1174:%.*]] = extractelement <16 x float> [[TMP1154]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1174]], ptr [[TMP1158]], align 4
; MAXIMIZE-NEXT: [[TMP1175:%.*]] = extractelement <16 x float> [[TMP1154]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1175]], ptr [[TMP1159]], align 4
; MAXIMIZE-NEXT: [[TMP1176:%.*]] = extractelement <16 x float> [[TMP1154]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1176]], ptr [[TMP1160]], align 4
; MAXIMIZE-NEXT: [[TMP1177:%.*]] = extractelement <16 x float> [[TMP1154]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1177]], ptr [[TMP1161]], align 4
; MAXIMIZE-NEXT: [[TMP1178:%.*]] = extractelement <16 x float> [[TMP1154]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1178]], ptr [[TMP1162]], align 4
; MAXIMIZE-NEXT: [[TMP1179:%.*]] = extractelement <16 x float> [[TMP1154]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1179]], ptr [[TMP1163]], align 4
; MAXIMIZE-NEXT: [[TMP1180:%.*]] = extractelement <16 x float> [[TMP1154]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1180]], ptr [[TMP1164]], align 4
; MAXIMIZE-NEXT: [[TMP1181:%.*]] = extractelement <16 x float> [[TMP1154]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1181]], ptr [[TMP1165]], align 4
; MAXIMIZE-NEXT: [[TMP1182:%.*]] = extractelement <16 x float> [[TMP1154]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1182]], ptr [[TMP1166]], align 4
; MAXIMIZE-NEXT: [[TMP1183:%.*]] = extractelement <16 x float> [[TMP1154]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1183]], ptr [[TMP1167]], align 4
; MAXIMIZE-NEXT: [[TMP1184:%.*]] = extractelement <16 x float> [[TMP1154]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1184]], ptr [[TMP1168]], align 4
; MAXIMIZE-NEXT: [[TMP1185:%.*]] = extractelement <16 x float> [[TMP1154]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1185]], ptr [[TMP1169]], align 4
; MAXIMIZE-NEXT: [[TMP1186:%.*]] = extractelement <16 x float> [[TMP1154]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1186]], ptr [[TMP1170]], align 4
; MAXIMIZE-NEXT: [[TMP1187:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 11
; MAXIMIZE-NEXT: [[TMP1188:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 11
; MAXIMIZE-NEXT: [[TMP1189:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 11
; MAXIMIZE-NEXT: [[TMP1190:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 11
; MAXIMIZE-NEXT: [[TMP1191:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 11
; MAXIMIZE-NEXT: [[TMP1192:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 11
; MAXIMIZE-NEXT: [[TMP1193:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 11
; MAXIMIZE-NEXT: [[TMP1194:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 11
; MAXIMIZE-NEXT: [[TMP1195:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 11
; MAXIMIZE-NEXT: [[TMP1196:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 11
; MAXIMIZE-NEXT: [[TMP1197:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 11
; MAXIMIZE-NEXT: [[TMP1198:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 11
; MAXIMIZE-NEXT: [[TMP1199:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 11
; MAXIMIZE-NEXT: [[TMP1200:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 11
; MAXIMIZE-NEXT: [[TMP1201:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 11
; MAXIMIZE-NEXT: [[TMP1202:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 11
; MAXIMIZE-NEXT: [[TMP1203:%.*]] = load i8, ptr [[TMP1187]], align 1
; MAXIMIZE-NEXT: [[TMP1204:%.*]] = load i8, ptr [[TMP1188]], align 1
; MAXIMIZE-NEXT: [[TMP1205:%.*]] = load i8, ptr [[TMP1189]], align 1
; MAXIMIZE-NEXT: [[TMP1206:%.*]] = load i8, ptr [[TMP1190]], align 1
; MAXIMIZE-NEXT: [[TMP1207:%.*]] = load i8, ptr [[TMP1191]], align 1
; MAXIMIZE-NEXT: [[TMP1208:%.*]] = load i8, ptr [[TMP1192]], align 1
; MAXIMIZE-NEXT: [[TMP1209:%.*]] = load i8, ptr [[TMP1193]], align 1
; MAXIMIZE-NEXT: [[TMP1210:%.*]] = load i8, ptr [[TMP1194]], align 1
; MAXIMIZE-NEXT: [[TMP1211:%.*]] = load i8, ptr [[TMP1195]], align 1
; MAXIMIZE-NEXT: [[TMP1212:%.*]] = load i8, ptr [[TMP1196]], align 1
; MAXIMIZE-NEXT: [[TMP1213:%.*]] = load i8, ptr [[TMP1197]], align 1
; MAXIMIZE-NEXT: [[TMP1214:%.*]] = load i8, ptr [[TMP1198]], align 1
; MAXIMIZE-NEXT: [[TMP1215:%.*]] = load i8, ptr [[TMP1199]], align 1
; MAXIMIZE-NEXT: [[TMP1216:%.*]] = load i8, ptr [[TMP1200]], align 1
; MAXIMIZE-NEXT: [[TMP1217:%.*]] = load i8, ptr [[TMP1201]], align 1
; MAXIMIZE-NEXT: [[TMP1218:%.*]] = load i8, ptr [[TMP1202]], align 1
; MAXIMIZE-NEXT: [[TMP1219:%.*]] = insertelement <16 x i8> poison, i8 [[TMP1203]], i64 0
; MAXIMIZE-NEXT: [[TMP1220:%.*]] = insertelement <16 x i8> [[TMP1219]], i8 [[TMP1204]], i64 1
; MAXIMIZE-NEXT: [[TMP1221:%.*]] = insertelement <16 x i8> [[TMP1220]], i8 [[TMP1205]], i64 2
; MAXIMIZE-NEXT: [[TMP1222:%.*]] = insertelement <16 x i8> [[TMP1221]], i8 [[TMP1206]], i64 3
; MAXIMIZE-NEXT: [[TMP1223:%.*]] = insertelement <16 x i8> [[TMP1222]], i8 [[TMP1207]], i64 4
; MAXIMIZE-NEXT: [[TMP1224:%.*]] = insertelement <16 x i8> [[TMP1223]], i8 [[TMP1208]], i64 5
; MAXIMIZE-NEXT: [[TMP1225:%.*]] = insertelement <16 x i8> [[TMP1224]], i8 [[TMP1209]], i64 6
; MAXIMIZE-NEXT: [[TMP1226:%.*]] = insertelement <16 x i8> [[TMP1225]], i8 [[TMP1210]], i64 7
; MAXIMIZE-NEXT: [[TMP1227:%.*]] = insertelement <16 x i8> [[TMP1226]], i8 [[TMP1211]], i64 8
; MAXIMIZE-NEXT: [[TMP1228:%.*]] = insertelement <16 x i8> [[TMP1227]], i8 [[TMP1212]], i64 9
; MAXIMIZE-NEXT: [[TMP1229:%.*]] = insertelement <16 x i8> [[TMP1228]], i8 [[TMP1213]], i64 10
; MAXIMIZE-NEXT: [[TMP1230:%.*]] = insertelement <16 x i8> [[TMP1229]], i8 [[TMP1214]], i64 11
; MAXIMIZE-NEXT: [[TMP1231:%.*]] = insertelement <16 x i8> [[TMP1230]], i8 [[TMP1215]], i64 12
; MAXIMIZE-NEXT: [[TMP1232:%.*]] = insertelement <16 x i8> [[TMP1231]], i8 [[TMP1216]], i64 13
; MAXIMIZE-NEXT: [[TMP1233:%.*]] = insertelement <16 x i8> [[TMP1232]], i8 [[TMP1217]], i64 14
; MAXIMIZE-NEXT: [[TMP1234:%.*]] = insertelement <16 x i8> [[TMP1233]], i8 [[TMP1218]], i64 15
; MAXIMIZE-NEXT: [[TMP1235:%.*]] = zext <16 x i8> [[TMP1234]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP1236:%.*]] = and <16 x i32> [[TMP1235]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP1237:%.*]] = add nsw <16 x i32> [[TMP1236]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1238:%.*]] = lshr <16 x i32> [[TMP1235]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP1239:%.*]] = add nsw <16 x i32> [[TMP1238]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1240:%.*]] = sitofp <16 x i32> [[TMP1237]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1241:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1240]]
; MAXIMIZE-NEXT: [[TMP1242:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 36
; MAXIMIZE-NEXT: [[TMP1243:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 36
; MAXIMIZE-NEXT: [[TMP1244:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 36
; MAXIMIZE-NEXT: [[TMP1245:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 36
; MAXIMIZE-NEXT: [[TMP1246:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 36
; MAXIMIZE-NEXT: [[TMP1247:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 36
; MAXIMIZE-NEXT: [[TMP1248:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 36
; MAXIMIZE-NEXT: [[TMP1249:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 36
; MAXIMIZE-NEXT: [[TMP1250:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 36
; MAXIMIZE-NEXT: [[TMP1251:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 36
; MAXIMIZE-NEXT: [[TMP1252:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 36
; MAXIMIZE-NEXT: [[TMP1253:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 36
; MAXIMIZE-NEXT: [[TMP1254:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 36
; MAXIMIZE-NEXT: [[TMP1255:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 36
; MAXIMIZE-NEXT: [[TMP1256:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 36
; MAXIMIZE-NEXT: [[TMP1257:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 36
; MAXIMIZE-NEXT: [[TMP1258:%.*]] = extractelement <16 x float> [[TMP1241]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1258]], ptr [[TMP1242]], align 4
; MAXIMIZE-NEXT: [[TMP1259:%.*]] = extractelement <16 x float> [[TMP1241]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1259]], ptr [[TMP1243]], align 4
; MAXIMIZE-NEXT: [[TMP1260:%.*]] = extractelement <16 x float> [[TMP1241]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1260]], ptr [[TMP1244]], align 4
; MAXIMIZE-NEXT: [[TMP1261:%.*]] = extractelement <16 x float> [[TMP1241]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1261]], ptr [[TMP1245]], align 4
; MAXIMIZE-NEXT: [[TMP1262:%.*]] = extractelement <16 x float> [[TMP1241]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1262]], ptr [[TMP1246]], align 4
; MAXIMIZE-NEXT: [[TMP1263:%.*]] = extractelement <16 x float> [[TMP1241]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1263]], ptr [[TMP1247]], align 4
; MAXIMIZE-NEXT: [[TMP1264:%.*]] = extractelement <16 x float> [[TMP1241]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1264]], ptr [[TMP1248]], align 4
; MAXIMIZE-NEXT: [[TMP1265:%.*]] = extractelement <16 x float> [[TMP1241]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1265]], ptr [[TMP1249]], align 4
; MAXIMIZE-NEXT: [[TMP1266:%.*]] = extractelement <16 x float> [[TMP1241]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1266]], ptr [[TMP1250]], align 4
; MAXIMIZE-NEXT: [[TMP1267:%.*]] = extractelement <16 x float> [[TMP1241]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1267]], ptr [[TMP1251]], align 4
; MAXIMIZE-NEXT: [[TMP1268:%.*]] = extractelement <16 x float> [[TMP1241]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1268]], ptr [[TMP1252]], align 4
; MAXIMIZE-NEXT: [[TMP1269:%.*]] = extractelement <16 x float> [[TMP1241]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1269]], ptr [[TMP1253]], align 4
; MAXIMIZE-NEXT: [[TMP1270:%.*]] = extractelement <16 x float> [[TMP1241]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1270]], ptr [[TMP1254]], align 4
; MAXIMIZE-NEXT: [[TMP1271:%.*]] = extractelement <16 x float> [[TMP1241]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1271]], ptr [[TMP1255]], align 4
; MAXIMIZE-NEXT: [[TMP1272:%.*]] = extractelement <16 x float> [[TMP1241]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1272]], ptr [[TMP1256]], align 4
; MAXIMIZE-NEXT: [[TMP1273:%.*]] = extractelement <16 x float> [[TMP1241]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1273]], ptr [[TMP1257]], align 4
; MAXIMIZE-NEXT: [[TMP1274:%.*]] = sitofp <16 x i32> [[TMP1239]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1275:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1274]]
; MAXIMIZE-NEXT: [[TMP1276:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 100
; MAXIMIZE-NEXT: [[TMP1277:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 100
; MAXIMIZE-NEXT: [[TMP1278:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 100
; MAXIMIZE-NEXT: [[TMP1279:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 100
; MAXIMIZE-NEXT: [[TMP1280:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 100
; MAXIMIZE-NEXT: [[TMP1281:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 100
; MAXIMIZE-NEXT: [[TMP1282:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 100
; MAXIMIZE-NEXT: [[TMP1283:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 100
; MAXIMIZE-NEXT: [[TMP1284:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 100
; MAXIMIZE-NEXT: [[TMP1285:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 100
; MAXIMIZE-NEXT: [[TMP1286:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 100
; MAXIMIZE-NEXT: [[TMP1287:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 100
; MAXIMIZE-NEXT: [[TMP1288:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 100
; MAXIMIZE-NEXT: [[TMP1289:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 100
; MAXIMIZE-NEXT: [[TMP1290:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 100
; MAXIMIZE-NEXT: [[TMP1291:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 100
; MAXIMIZE-NEXT: [[TMP1292:%.*]] = extractelement <16 x float> [[TMP1275]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1292]], ptr [[TMP1276]], align 4
; MAXIMIZE-NEXT: [[TMP1293:%.*]] = extractelement <16 x float> [[TMP1275]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1293]], ptr [[TMP1277]], align 4
; MAXIMIZE-NEXT: [[TMP1294:%.*]] = extractelement <16 x float> [[TMP1275]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1294]], ptr [[TMP1278]], align 4
; MAXIMIZE-NEXT: [[TMP1295:%.*]] = extractelement <16 x float> [[TMP1275]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1295]], ptr [[TMP1279]], align 4
; MAXIMIZE-NEXT: [[TMP1296:%.*]] = extractelement <16 x float> [[TMP1275]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1296]], ptr [[TMP1280]], align 4
; MAXIMIZE-NEXT: [[TMP1297:%.*]] = extractelement <16 x float> [[TMP1275]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1297]], ptr [[TMP1281]], align 4
; MAXIMIZE-NEXT: [[TMP1298:%.*]] = extractelement <16 x float> [[TMP1275]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1298]], ptr [[TMP1282]], align 4
; MAXIMIZE-NEXT: [[TMP1299:%.*]] = extractelement <16 x float> [[TMP1275]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1299]], ptr [[TMP1283]], align 4
; MAXIMIZE-NEXT: [[TMP1300:%.*]] = extractelement <16 x float> [[TMP1275]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1300]], ptr [[TMP1284]], align 4
; MAXIMIZE-NEXT: [[TMP1301:%.*]] = extractelement <16 x float> [[TMP1275]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1301]], ptr [[TMP1285]], align 4
; MAXIMIZE-NEXT: [[TMP1302:%.*]] = extractelement <16 x float> [[TMP1275]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1302]], ptr [[TMP1286]], align 4
; MAXIMIZE-NEXT: [[TMP1303:%.*]] = extractelement <16 x float> [[TMP1275]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1303]], ptr [[TMP1287]], align 4
; MAXIMIZE-NEXT: [[TMP1304:%.*]] = extractelement <16 x float> [[TMP1275]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1304]], ptr [[TMP1288]], align 4
; MAXIMIZE-NEXT: [[TMP1305:%.*]] = extractelement <16 x float> [[TMP1275]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1305]], ptr [[TMP1289]], align 4
; MAXIMIZE-NEXT: [[TMP1306:%.*]] = extractelement <16 x float> [[TMP1275]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1306]], ptr [[TMP1290]], align 4
; MAXIMIZE-NEXT: [[TMP1307:%.*]] = extractelement <16 x float> [[TMP1275]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1307]], ptr [[TMP1291]], align 4
; MAXIMIZE-NEXT: [[TMP1308:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 12
; MAXIMIZE-NEXT: [[TMP1309:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 12
; MAXIMIZE-NEXT: [[TMP1310:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 12
; MAXIMIZE-NEXT: [[TMP1311:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 12
; MAXIMIZE-NEXT: [[TMP1312:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 12
; MAXIMIZE-NEXT: [[TMP1313:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 12
; MAXIMIZE-NEXT: [[TMP1314:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 12
; MAXIMIZE-NEXT: [[TMP1315:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 12
; MAXIMIZE-NEXT: [[TMP1316:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 12
; MAXIMIZE-NEXT: [[TMP1317:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 12
; MAXIMIZE-NEXT: [[TMP1318:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 12
; MAXIMIZE-NEXT: [[TMP1319:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 12
; MAXIMIZE-NEXT: [[TMP1320:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 12
; MAXIMIZE-NEXT: [[TMP1321:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 12
; MAXIMIZE-NEXT: [[TMP1322:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 12
; MAXIMIZE-NEXT: [[TMP1323:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 12
; MAXIMIZE-NEXT: [[TMP1324:%.*]] = load i8, ptr [[TMP1308]], align 1
; MAXIMIZE-NEXT: [[TMP1325:%.*]] = load i8, ptr [[TMP1309]], align 1
; MAXIMIZE-NEXT: [[TMP1326:%.*]] = load i8, ptr [[TMP1310]], align 1
; MAXIMIZE-NEXT: [[TMP1327:%.*]] = load i8, ptr [[TMP1311]], align 1
; MAXIMIZE-NEXT: [[TMP1328:%.*]] = load i8, ptr [[TMP1312]], align 1
; MAXIMIZE-NEXT: [[TMP1329:%.*]] = load i8, ptr [[TMP1313]], align 1
; MAXIMIZE-NEXT: [[TMP1330:%.*]] = load i8, ptr [[TMP1314]], align 1
; MAXIMIZE-NEXT: [[TMP1331:%.*]] = load i8, ptr [[TMP1315]], align 1
; MAXIMIZE-NEXT: [[TMP1332:%.*]] = load i8, ptr [[TMP1316]], align 1
; MAXIMIZE-NEXT: [[TMP1333:%.*]] = load i8, ptr [[TMP1317]], align 1
; MAXIMIZE-NEXT: [[TMP1334:%.*]] = load i8, ptr [[TMP1318]], align 1
; MAXIMIZE-NEXT: [[TMP1335:%.*]] = load i8, ptr [[TMP1319]], align 1
; MAXIMIZE-NEXT: [[TMP1336:%.*]] = load i8, ptr [[TMP1320]], align 1
; MAXIMIZE-NEXT: [[TMP1337:%.*]] = load i8, ptr [[TMP1321]], align 1
; MAXIMIZE-NEXT: [[TMP1338:%.*]] = load i8, ptr [[TMP1322]], align 1
; MAXIMIZE-NEXT: [[TMP1339:%.*]] = load i8, ptr [[TMP1323]], align 1
; MAXIMIZE-NEXT: [[TMP1340:%.*]] = insertelement <16 x i8> poison, i8 [[TMP1324]], i64 0
; MAXIMIZE-NEXT: [[TMP1341:%.*]] = insertelement <16 x i8> [[TMP1340]], i8 [[TMP1325]], i64 1
; MAXIMIZE-NEXT: [[TMP1342:%.*]] = insertelement <16 x i8> [[TMP1341]], i8 [[TMP1326]], i64 2
; MAXIMIZE-NEXT: [[TMP1343:%.*]] = insertelement <16 x i8> [[TMP1342]], i8 [[TMP1327]], i64 3
; MAXIMIZE-NEXT: [[TMP1344:%.*]] = insertelement <16 x i8> [[TMP1343]], i8 [[TMP1328]], i64 4
; MAXIMIZE-NEXT: [[TMP1345:%.*]] = insertelement <16 x i8> [[TMP1344]], i8 [[TMP1329]], i64 5
; MAXIMIZE-NEXT: [[TMP1346:%.*]] = insertelement <16 x i8> [[TMP1345]], i8 [[TMP1330]], i64 6
; MAXIMIZE-NEXT: [[TMP1347:%.*]] = insertelement <16 x i8> [[TMP1346]], i8 [[TMP1331]], i64 7
; MAXIMIZE-NEXT: [[TMP1348:%.*]] = insertelement <16 x i8> [[TMP1347]], i8 [[TMP1332]], i64 8
; MAXIMIZE-NEXT: [[TMP1349:%.*]] = insertelement <16 x i8> [[TMP1348]], i8 [[TMP1333]], i64 9
; MAXIMIZE-NEXT: [[TMP1350:%.*]] = insertelement <16 x i8> [[TMP1349]], i8 [[TMP1334]], i64 10
; MAXIMIZE-NEXT: [[TMP1351:%.*]] = insertelement <16 x i8> [[TMP1350]], i8 [[TMP1335]], i64 11
; MAXIMIZE-NEXT: [[TMP1352:%.*]] = insertelement <16 x i8> [[TMP1351]], i8 [[TMP1336]], i64 12
; MAXIMIZE-NEXT: [[TMP1353:%.*]] = insertelement <16 x i8> [[TMP1352]], i8 [[TMP1337]], i64 13
; MAXIMIZE-NEXT: [[TMP1354:%.*]] = insertelement <16 x i8> [[TMP1353]], i8 [[TMP1338]], i64 14
; MAXIMIZE-NEXT: [[TMP1355:%.*]] = insertelement <16 x i8> [[TMP1354]], i8 [[TMP1339]], i64 15
; MAXIMIZE-NEXT: [[TMP1356:%.*]] = zext <16 x i8> [[TMP1355]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP1357:%.*]] = and <16 x i32> [[TMP1356]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP1358:%.*]] = add nsw <16 x i32> [[TMP1357]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1359:%.*]] = lshr <16 x i32> [[TMP1356]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP1360:%.*]] = add nsw <16 x i32> [[TMP1359]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1361:%.*]] = sitofp <16 x i32> [[TMP1358]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1362:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1361]]
; MAXIMIZE-NEXT: [[TMP1363:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 40
; MAXIMIZE-NEXT: [[TMP1364:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 40
; MAXIMIZE-NEXT: [[TMP1365:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 40
; MAXIMIZE-NEXT: [[TMP1366:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 40
; MAXIMIZE-NEXT: [[TMP1367:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 40
; MAXIMIZE-NEXT: [[TMP1368:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 40
; MAXIMIZE-NEXT: [[TMP1369:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 40
; MAXIMIZE-NEXT: [[TMP1370:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 40
; MAXIMIZE-NEXT: [[TMP1371:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 40
; MAXIMIZE-NEXT: [[TMP1372:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 40
; MAXIMIZE-NEXT: [[TMP1373:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 40
; MAXIMIZE-NEXT: [[TMP1374:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 40
; MAXIMIZE-NEXT: [[TMP1375:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 40
; MAXIMIZE-NEXT: [[TMP1376:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 40
; MAXIMIZE-NEXT: [[TMP1377:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 40
; MAXIMIZE-NEXT: [[TMP1378:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 40
; MAXIMIZE-NEXT: [[TMP1379:%.*]] = extractelement <16 x float> [[TMP1362]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1379]], ptr [[TMP1363]], align 4
; MAXIMIZE-NEXT: [[TMP1380:%.*]] = extractelement <16 x float> [[TMP1362]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1380]], ptr [[TMP1364]], align 4
; MAXIMIZE-NEXT: [[TMP1381:%.*]] = extractelement <16 x float> [[TMP1362]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1381]], ptr [[TMP1365]], align 4
; MAXIMIZE-NEXT: [[TMP1382:%.*]] = extractelement <16 x float> [[TMP1362]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1382]], ptr [[TMP1366]], align 4
; MAXIMIZE-NEXT: [[TMP1383:%.*]] = extractelement <16 x float> [[TMP1362]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1383]], ptr [[TMP1367]], align 4
; MAXIMIZE-NEXT: [[TMP1384:%.*]] = extractelement <16 x float> [[TMP1362]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1384]], ptr [[TMP1368]], align 4
; MAXIMIZE-NEXT: [[TMP1385:%.*]] = extractelement <16 x float> [[TMP1362]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1385]], ptr [[TMP1369]], align 4
; MAXIMIZE-NEXT: [[TMP1386:%.*]] = extractelement <16 x float> [[TMP1362]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1386]], ptr [[TMP1370]], align 4
; MAXIMIZE-NEXT: [[TMP1387:%.*]] = extractelement <16 x float> [[TMP1362]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1387]], ptr [[TMP1371]], align 4
; MAXIMIZE-NEXT: [[TMP1388:%.*]] = extractelement <16 x float> [[TMP1362]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1388]], ptr [[TMP1372]], align 4
; MAXIMIZE-NEXT: [[TMP1389:%.*]] = extractelement <16 x float> [[TMP1362]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1389]], ptr [[TMP1373]], align 4
; MAXIMIZE-NEXT: [[TMP1390:%.*]] = extractelement <16 x float> [[TMP1362]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1390]], ptr [[TMP1374]], align 4
; MAXIMIZE-NEXT: [[TMP1391:%.*]] = extractelement <16 x float> [[TMP1362]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1391]], ptr [[TMP1375]], align 4
; MAXIMIZE-NEXT: [[TMP1392:%.*]] = extractelement <16 x float> [[TMP1362]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1392]], ptr [[TMP1376]], align 4
; MAXIMIZE-NEXT: [[TMP1393:%.*]] = extractelement <16 x float> [[TMP1362]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1393]], ptr [[TMP1377]], align 4
; MAXIMIZE-NEXT: [[TMP1394:%.*]] = extractelement <16 x float> [[TMP1362]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1394]], ptr [[TMP1378]], align 4
; MAXIMIZE-NEXT: [[TMP1395:%.*]] = sitofp <16 x i32> [[TMP1360]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1396:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1395]]
; MAXIMIZE-NEXT: [[TMP1397:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 104
; MAXIMIZE-NEXT: [[TMP1398:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 104
; MAXIMIZE-NEXT: [[TMP1399:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 104
; MAXIMIZE-NEXT: [[TMP1400:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 104
; MAXIMIZE-NEXT: [[TMP1401:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 104
; MAXIMIZE-NEXT: [[TMP1402:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 104
; MAXIMIZE-NEXT: [[TMP1403:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 104
; MAXIMIZE-NEXT: [[TMP1404:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 104
; MAXIMIZE-NEXT: [[TMP1405:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 104
; MAXIMIZE-NEXT: [[TMP1406:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 104
; MAXIMIZE-NEXT: [[TMP1407:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 104
; MAXIMIZE-NEXT: [[TMP1408:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 104
; MAXIMIZE-NEXT: [[TMP1409:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 104
; MAXIMIZE-NEXT: [[TMP1410:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 104
; MAXIMIZE-NEXT: [[TMP1411:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 104
; MAXIMIZE-NEXT: [[TMP1412:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 104
; MAXIMIZE-NEXT: [[TMP1413:%.*]] = extractelement <16 x float> [[TMP1396]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1413]], ptr [[TMP1397]], align 4
; MAXIMIZE-NEXT: [[TMP1414:%.*]] = extractelement <16 x float> [[TMP1396]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1414]], ptr [[TMP1398]], align 4
; MAXIMIZE-NEXT: [[TMP1415:%.*]] = extractelement <16 x float> [[TMP1396]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1415]], ptr [[TMP1399]], align 4
; MAXIMIZE-NEXT: [[TMP1416:%.*]] = extractelement <16 x float> [[TMP1396]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1416]], ptr [[TMP1400]], align 4
; MAXIMIZE-NEXT: [[TMP1417:%.*]] = extractelement <16 x float> [[TMP1396]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1417]], ptr [[TMP1401]], align 4
; MAXIMIZE-NEXT: [[TMP1418:%.*]] = extractelement <16 x float> [[TMP1396]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1418]], ptr [[TMP1402]], align 4
; MAXIMIZE-NEXT: [[TMP1419:%.*]] = extractelement <16 x float> [[TMP1396]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1419]], ptr [[TMP1403]], align 4
; MAXIMIZE-NEXT: [[TMP1420:%.*]] = extractelement <16 x float> [[TMP1396]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1420]], ptr [[TMP1404]], align 4
; MAXIMIZE-NEXT: [[TMP1421:%.*]] = extractelement <16 x float> [[TMP1396]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1421]], ptr [[TMP1405]], align 4
; MAXIMIZE-NEXT: [[TMP1422:%.*]] = extractelement <16 x float> [[TMP1396]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1422]], ptr [[TMP1406]], align 4
; MAXIMIZE-NEXT: [[TMP1423:%.*]] = extractelement <16 x float> [[TMP1396]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1423]], ptr [[TMP1407]], align 4
; MAXIMIZE-NEXT: [[TMP1424:%.*]] = extractelement <16 x float> [[TMP1396]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1424]], ptr [[TMP1408]], align 4
; MAXIMIZE-NEXT: [[TMP1425:%.*]] = extractelement <16 x float> [[TMP1396]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1425]], ptr [[TMP1409]], align 4
; MAXIMIZE-NEXT: [[TMP1426:%.*]] = extractelement <16 x float> [[TMP1396]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1426]], ptr [[TMP1410]], align 4
; MAXIMIZE-NEXT: [[TMP1427:%.*]] = extractelement <16 x float> [[TMP1396]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1427]], ptr [[TMP1411]], align 4
; MAXIMIZE-NEXT: [[TMP1428:%.*]] = extractelement <16 x float> [[TMP1396]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1428]], ptr [[TMP1412]], align 4
; MAXIMIZE-NEXT: [[TMP1429:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 13
; MAXIMIZE-NEXT: [[TMP1430:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 13
; MAXIMIZE-NEXT: [[TMP1431:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 13
; MAXIMIZE-NEXT: [[TMP1432:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 13
; MAXIMIZE-NEXT: [[TMP1433:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 13
; MAXIMIZE-NEXT: [[TMP1434:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 13
; MAXIMIZE-NEXT: [[TMP1435:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 13
; MAXIMIZE-NEXT: [[TMP1436:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 13
; MAXIMIZE-NEXT: [[TMP1437:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 13
; MAXIMIZE-NEXT: [[TMP1438:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 13
; MAXIMIZE-NEXT: [[TMP1439:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 13
; MAXIMIZE-NEXT: [[TMP1440:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 13
; MAXIMIZE-NEXT: [[TMP1441:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 13
; MAXIMIZE-NEXT: [[TMP1442:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 13
; MAXIMIZE-NEXT: [[TMP1443:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 13
; MAXIMIZE-NEXT: [[TMP1444:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 13
; MAXIMIZE-NEXT: [[TMP1445:%.*]] = load i8, ptr [[TMP1429]], align 1
; MAXIMIZE-NEXT: [[TMP1446:%.*]] = load i8, ptr [[TMP1430]], align 1
; MAXIMIZE-NEXT: [[TMP1447:%.*]] = load i8, ptr [[TMP1431]], align 1
; MAXIMIZE-NEXT: [[TMP1448:%.*]] = load i8, ptr [[TMP1432]], align 1
; MAXIMIZE-NEXT: [[TMP1449:%.*]] = load i8, ptr [[TMP1433]], align 1
; MAXIMIZE-NEXT: [[TMP1450:%.*]] = load i8, ptr [[TMP1434]], align 1
; MAXIMIZE-NEXT: [[TMP1451:%.*]] = load i8, ptr [[TMP1435]], align 1
; MAXIMIZE-NEXT: [[TMP1452:%.*]] = load i8, ptr [[TMP1436]], align 1
; MAXIMIZE-NEXT: [[TMP1453:%.*]] = load i8, ptr [[TMP1437]], align 1
; MAXIMIZE-NEXT: [[TMP1454:%.*]] = load i8, ptr [[TMP1438]], align 1
; MAXIMIZE-NEXT: [[TMP1455:%.*]] = load i8, ptr [[TMP1439]], align 1
; MAXIMIZE-NEXT: [[TMP1456:%.*]] = load i8, ptr [[TMP1440]], align 1
; MAXIMIZE-NEXT: [[TMP1457:%.*]] = load i8, ptr [[TMP1441]], align 1
; MAXIMIZE-NEXT: [[TMP1458:%.*]] = load i8, ptr [[TMP1442]], align 1
; MAXIMIZE-NEXT: [[TMP1459:%.*]] = load i8, ptr [[TMP1443]], align 1
; MAXIMIZE-NEXT: [[TMP1460:%.*]] = load i8, ptr [[TMP1444]], align 1
; MAXIMIZE-NEXT: [[TMP1461:%.*]] = insertelement <16 x i8> poison, i8 [[TMP1445]], i64 0
; MAXIMIZE-NEXT: [[TMP1462:%.*]] = insertelement <16 x i8> [[TMP1461]], i8 [[TMP1446]], i64 1
; MAXIMIZE-NEXT: [[TMP1463:%.*]] = insertelement <16 x i8> [[TMP1462]], i8 [[TMP1447]], i64 2
; MAXIMIZE-NEXT: [[TMP1464:%.*]] = insertelement <16 x i8> [[TMP1463]], i8 [[TMP1448]], i64 3
; MAXIMIZE-NEXT: [[TMP1465:%.*]] = insertelement <16 x i8> [[TMP1464]], i8 [[TMP1449]], i64 4
; MAXIMIZE-NEXT: [[TMP1466:%.*]] = insertelement <16 x i8> [[TMP1465]], i8 [[TMP1450]], i64 5
; MAXIMIZE-NEXT: [[TMP1467:%.*]] = insertelement <16 x i8> [[TMP1466]], i8 [[TMP1451]], i64 6
; MAXIMIZE-NEXT: [[TMP1468:%.*]] = insertelement <16 x i8> [[TMP1467]], i8 [[TMP1452]], i64 7
; MAXIMIZE-NEXT: [[TMP1469:%.*]] = insertelement <16 x i8> [[TMP1468]], i8 [[TMP1453]], i64 8
; MAXIMIZE-NEXT: [[TMP1470:%.*]] = insertelement <16 x i8> [[TMP1469]], i8 [[TMP1454]], i64 9
; MAXIMIZE-NEXT: [[TMP1471:%.*]] = insertelement <16 x i8> [[TMP1470]], i8 [[TMP1455]], i64 10
; MAXIMIZE-NEXT: [[TMP1472:%.*]] = insertelement <16 x i8> [[TMP1471]], i8 [[TMP1456]], i64 11
; MAXIMIZE-NEXT: [[TMP1473:%.*]] = insertelement <16 x i8> [[TMP1472]], i8 [[TMP1457]], i64 12
; MAXIMIZE-NEXT: [[TMP1474:%.*]] = insertelement <16 x i8> [[TMP1473]], i8 [[TMP1458]], i64 13
; MAXIMIZE-NEXT: [[TMP1475:%.*]] = insertelement <16 x i8> [[TMP1474]], i8 [[TMP1459]], i64 14
; MAXIMIZE-NEXT: [[TMP1476:%.*]] = insertelement <16 x i8> [[TMP1475]], i8 [[TMP1460]], i64 15
; MAXIMIZE-NEXT: [[TMP1477:%.*]] = zext <16 x i8> [[TMP1476]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP1478:%.*]] = and <16 x i32> [[TMP1477]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP1479:%.*]] = add nsw <16 x i32> [[TMP1478]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1480:%.*]] = lshr <16 x i32> [[TMP1477]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP1481:%.*]] = add nsw <16 x i32> [[TMP1480]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1482:%.*]] = sitofp <16 x i32> [[TMP1479]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1483:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1482]]
; MAXIMIZE-NEXT: [[TMP1484:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 44
; MAXIMIZE-NEXT: [[TMP1485:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 44
; MAXIMIZE-NEXT: [[TMP1486:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 44
; MAXIMIZE-NEXT: [[TMP1487:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 44
; MAXIMIZE-NEXT: [[TMP1488:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 44
; MAXIMIZE-NEXT: [[TMP1489:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 44
; MAXIMIZE-NEXT: [[TMP1490:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 44
; MAXIMIZE-NEXT: [[TMP1491:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 44
; MAXIMIZE-NEXT: [[TMP1492:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 44
; MAXIMIZE-NEXT: [[TMP1493:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 44
; MAXIMIZE-NEXT: [[TMP1494:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 44
; MAXIMIZE-NEXT: [[TMP1495:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 44
; MAXIMIZE-NEXT: [[TMP1496:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 44
; MAXIMIZE-NEXT: [[TMP1497:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 44
; MAXIMIZE-NEXT: [[TMP1498:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 44
; MAXIMIZE-NEXT: [[TMP1499:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 44
; MAXIMIZE-NEXT: [[TMP1500:%.*]] = extractelement <16 x float> [[TMP1483]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1500]], ptr [[TMP1484]], align 4
; MAXIMIZE-NEXT: [[TMP1501:%.*]] = extractelement <16 x float> [[TMP1483]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1501]], ptr [[TMP1485]], align 4
; MAXIMIZE-NEXT: [[TMP1502:%.*]] = extractelement <16 x float> [[TMP1483]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1502]], ptr [[TMP1486]], align 4
; MAXIMIZE-NEXT: [[TMP1503:%.*]] = extractelement <16 x float> [[TMP1483]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1503]], ptr [[TMP1487]], align 4
; MAXIMIZE-NEXT: [[TMP1504:%.*]] = extractelement <16 x float> [[TMP1483]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1504]], ptr [[TMP1488]], align 4
; MAXIMIZE-NEXT: [[TMP1505:%.*]] = extractelement <16 x float> [[TMP1483]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1505]], ptr [[TMP1489]], align 4
; MAXIMIZE-NEXT: [[TMP1506:%.*]] = extractelement <16 x float> [[TMP1483]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1506]], ptr [[TMP1490]], align 4
; MAXIMIZE-NEXT: [[TMP1507:%.*]] = extractelement <16 x float> [[TMP1483]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1507]], ptr [[TMP1491]], align 4
; MAXIMIZE-NEXT: [[TMP1508:%.*]] = extractelement <16 x float> [[TMP1483]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1508]], ptr [[TMP1492]], align 4
; MAXIMIZE-NEXT: [[TMP1509:%.*]] = extractelement <16 x float> [[TMP1483]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1509]], ptr [[TMP1493]], align 4
; MAXIMIZE-NEXT: [[TMP1510:%.*]] = extractelement <16 x float> [[TMP1483]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1510]], ptr [[TMP1494]], align 4
; MAXIMIZE-NEXT: [[TMP1511:%.*]] = extractelement <16 x float> [[TMP1483]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1511]], ptr [[TMP1495]], align 4
; MAXIMIZE-NEXT: [[TMP1512:%.*]] = extractelement <16 x float> [[TMP1483]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1512]], ptr [[TMP1496]], align 4
; MAXIMIZE-NEXT: [[TMP1513:%.*]] = extractelement <16 x float> [[TMP1483]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1513]], ptr [[TMP1497]], align 4
; MAXIMIZE-NEXT: [[TMP1514:%.*]] = extractelement <16 x float> [[TMP1483]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1514]], ptr [[TMP1498]], align 4
; MAXIMIZE-NEXT: [[TMP1515:%.*]] = extractelement <16 x float> [[TMP1483]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1515]], ptr [[TMP1499]], align 4
; MAXIMIZE-NEXT: [[TMP1516:%.*]] = sitofp <16 x i32> [[TMP1481]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1517:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1516]]
; MAXIMIZE-NEXT: [[TMP1518:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 108
; MAXIMIZE-NEXT: [[TMP1519:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 108
; MAXIMIZE-NEXT: [[TMP1520:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 108
; MAXIMIZE-NEXT: [[TMP1521:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 108
; MAXIMIZE-NEXT: [[TMP1522:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 108
; MAXIMIZE-NEXT: [[TMP1523:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 108
; MAXIMIZE-NEXT: [[TMP1524:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 108
; MAXIMIZE-NEXT: [[TMP1525:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 108
; MAXIMIZE-NEXT: [[TMP1526:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 108
; MAXIMIZE-NEXT: [[TMP1527:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 108
; MAXIMIZE-NEXT: [[TMP1528:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 108
; MAXIMIZE-NEXT: [[TMP1529:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 108
; MAXIMIZE-NEXT: [[TMP1530:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 108
; MAXIMIZE-NEXT: [[TMP1531:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 108
; MAXIMIZE-NEXT: [[TMP1532:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 108
; MAXIMIZE-NEXT: [[TMP1533:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 108
; MAXIMIZE-NEXT: [[TMP1534:%.*]] = extractelement <16 x float> [[TMP1517]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1534]], ptr [[TMP1518]], align 4
; MAXIMIZE-NEXT: [[TMP1535:%.*]] = extractelement <16 x float> [[TMP1517]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1535]], ptr [[TMP1519]], align 4
; MAXIMIZE-NEXT: [[TMP1536:%.*]] = extractelement <16 x float> [[TMP1517]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1536]], ptr [[TMP1520]], align 4
; MAXIMIZE-NEXT: [[TMP1537:%.*]] = extractelement <16 x float> [[TMP1517]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1537]], ptr [[TMP1521]], align 4
; MAXIMIZE-NEXT: [[TMP1538:%.*]] = extractelement <16 x float> [[TMP1517]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1538]], ptr [[TMP1522]], align 4
; MAXIMIZE-NEXT: [[TMP1539:%.*]] = extractelement <16 x float> [[TMP1517]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1539]], ptr [[TMP1523]], align 4
; MAXIMIZE-NEXT: [[TMP1540:%.*]] = extractelement <16 x float> [[TMP1517]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1540]], ptr [[TMP1524]], align 4
; MAXIMIZE-NEXT: [[TMP1541:%.*]] = extractelement <16 x float> [[TMP1517]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1541]], ptr [[TMP1525]], align 4
; MAXIMIZE-NEXT: [[TMP1542:%.*]] = extractelement <16 x float> [[TMP1517]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1542]], ptr [[TMP1526]], align 4
; MAXIMIZE-NEXT: [[TMP1543:%.*]] = extractelement <16 x float> [[TMP1517]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1543]], ptr [[TMP1527]], align 4
; MAXIMIZE-NEXT: [[TMP1544:%.*]] = extractelement <16 x float> [[TMP1517]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1544]], ptr [[TMP1528]], align 4
; MAXIMIZE-NEXT: [[TMP1545:%.*]] = extractelement <16 x float> [[TMP1517]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1545]], ptr [[TMP1529]], align 4
; MAXIMIZE-NEXT: [[TMP1546:%.*]] = extractelement <16 x float> [[TMP1517]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1546]], ptr [[TMP1530]], align 4
; MAXIMIZE-NEXT: [[TMP1547:%.*]] = extractelement <16 x float> [[TMP1517]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1547]], ptr [[TMP1531]], align 4
; MAXIMIZE-NEXT: [[TMP1548:%.*]] = extractelement <16 x float> [[TMP1517]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1548]], ptr [[TMP1532]], align 4
; MAXIMIZE-NEXT: [[TMP1549:%.*]] = extractelement <16 x float> [[TMP1517]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1549]], ptr [[TMP1533]], align 4
; MAXIMIZE-NEXT: [[TMP1550:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 14
; MAXIMIZE-NEXT: [[TMP1551:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 14
; MAXIMIZE-NEXT: [[TMP1552:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 14
; MAXIMIZE-NEXT: [[TMP1553:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 14
; MAXIMIZE-NEXT: [[TMP1554:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 14
; MAXIMIZE-NEXT: [[TMP1555:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 14
; MAXIMIZE-NEXT: [[TMP1556:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 14
; MAXIMIZE-NEXT: [[TMP1557:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 14
; MAXIMIZE-NEXT: [[TMP1558:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 14
; MAXIMIZE-NEXT: [[TMP1559:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 14
; MAXIMIZE-NEXT: [[TMP1560:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 14
; MAXIMIZE-NEXT: [[TMP1561:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 14
; MAXIMIZE-NEXT: [[TMP1562:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 14
; MAXIMIZE-NEXT: [[TMP1563:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 14
; MAXIMIZE-NEXT: [[TMP1564:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 14
; MAXIMIZE-NEXT: [[TMP1565:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 14
; MAXIMIZE-NEXT: [[TMP1566:%.*]] = load i8, ptr [[TMP1550]], align 1
; MAXIMIZE-NEXT: [[TMP1567:%.*]] = load i8, ptr [[TMP1551]], align 1
; MAXIMIZE-NEXT: [[TMP1568:%.*]] = load i8, ptr [[TMP1552]], align 1
; MAXIMIZE-NEXT: [[TMP1569:%.*]] = load i8, ptr [[TMP1553]], align 1
; MAXIMIZE-NEXT: [[TMP1570:%.*]] = load i8, ptr [[TMP1554]], align 1
; MAXIMIZE-NEXT: [[TMP1571:%.*]] = load i8, ptr [[TMP1555]], align 1
; MAXIMIZE-NEXT: [[TMP1572:%.*]] = load i8, ptr [[TMP1556]], align 1
; MAXIMIZE-NEXT: [[TMP1573:%.*]] = load i8, ptr [[TMP1557]], align 1
; MAXIMIZE-NEXT: [[TMP1574:%.*]] = load i8, ptr [[TMP1558]], align 1
; MAXIMIZE-NEXT: [[TMP1575:%.*]] = load i8, ptr [[TMP1559]], align 1
; MAXIMIZE-NEXT: [[TMP1576:%.*]] = load i8, ptr [[TMP1560]], align 1
; MAXIMIZE-NEXT: [[TMP1577:%.*]] = load i8, ptr [[TMP1561]], align 1
; MAXIMIZE-NEXT: [[TMP1578:%.*]] = load i8, ptr [[TMP1562]], align 1
; MAXIMIZE-NEXT: [[TMP1579:%.*]] = load i8, ptr [[TMP1563]], align 1
; MAXIMIZE-NEXT: [[TMP1580:%.*]] = load i8, ptr [[TMP1564]], align 1
; MAXIMIZE-NEXT: [[TMP1581:%.*]] = load i8, ptr [[TMP1565]], align 1
; MAXIMIZE-NEXT: [[TMP1582:%.*]] = insertelement <16 x i8> poison, i8 [[TMP1566]], i64 0
; MAXIMIZE-NEXT: [[TMP1583:%.*]] = insertelement <16 x i8> [[TMP1582]], i8 [[TMP1567]], i64 1
; MAXIMIZE-NEXT: [[TMP1584:%.*]] = insertelement <16 x i8> [[TMP1583]], i8 [[TMP1568]], i64 2
; MAXIMIZE-NEXT: [[TMP1585:%.*]] = insertelement <16 x i8> [[TMP1584]], i8 [[TMP1569]], i64 3
; MAXIMIZE-NEXT: [[TMP1586:%.*]] = insertelement <16 x i8> [[TMP1585]], i8 [[TMP1570]], i64 4
; MAXIMIZE-NEXT: [[TMP1587:%.*]] = insertelement <16 x i8> [[TMP1586]], i8 [[TMP1571]], i64 5
; MAXIMIZE-NEXT: [[TMP1588:%.*]] = insertelement <16 x i8> [[TMP1587]], i8 [[TMP1572]], i64 6
; MAXIMIZE-NEXT: [[TMP1589:%.*]] = insertelement <16 x i8> [[TMP1588]], i8 [[TMP1573]], i64 7
; MAXIMIZE-NEXT: [[TMP1590:%.*]] = insertelement <16 x i8> [[TMP1589]], i8 [[TMP1574]], i64 8
; MAXIMIZE-NEXT: [[TMP1591:%.*]] = insertelement <16 x i8> [[TMP1590]], i8 [[TMP1575]], i64 9
; MAXIMIZE-NEXT: [[TMP1592:%.*]] = insertelement <16 x i8> [[TMP1591]], i8 [[TMP1576]], i64 10
; MAXIMIZE-NEXT: [[TMP1593:%.*]] = insertelement <16 x i8> [[TMP1592]], i8 [[TMP1577]], i64 11
; MAXIMIZE-NEXT: [[TMP1594:%.*]] = insertelement <16 x i8> [[TMP1593]], i8 [[TMP1578]], i64 12
; MAXIMIZE-NEXT: [[TMP1595:%.*]] = insertelement <16 x i8> [[TMP1594]], i8 [[TMP1579]], i64 13
; MAXIMIZE-NEXT: [[TMP1596:%.*]] = insertelement <16 x i8> [[TMP1595]], i8 [[TMP1580]], i64 14
; MAXIMIZE-NEXT: [[TMP1597:%.*]] = insertelement <16 x i8> [[TMP1596]], i8 [[TMP1581]], i64 15
; MAXIMIZE-NEXT: [[TMP1598:%.*]] = zext <16 x i8> [[TMP1597]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP1599:%.*]] = and <16 x i32> [[TMP1598]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP1600:%.*]] = add nsw <16 x i32> [[TMP1599]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1601:%.*]] = lshr <16 x i32> [[TMP1598]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP1602:%.*]] = add nsw <16 x i32> [[TMP1601]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1603:%.*]] = sitofp <16 x i32> [[TMP1600]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1604:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1603]]
; MAXIMIZE-NEXT: [[TMP1605:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 48
; MAXIMIZE-NEXT: [[TMP1606:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 48
; MAXIMIZE-NEXT: [[TMP1607:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 48
; MAXIMIZE-NEXT: [[TMP1608:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 48
; MAXIMIZE-NEXT: [[TMP1609:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 48
; MAXIMIZE-NEXT: [[TMP1610:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 48
; MAXIMIZE-NEXT: [[TMP1611:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 48
; MAXIMIZE-NEXT: [[TMP1612:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 48
; MAXIMIZE-NEXT: [[TMP1613:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 48
; MAXIMIZE-NEXT: [[TMP1614:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 48
; MAXIMIZE-NEXT: [[TMP1615:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 48
; MAXIMIZE-NEXT: [[TMP1616:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 48
; MAXIMIZE-NEXT: [[TMP1617:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 48
; MAXIMIZE-NEXT: [[TMP1618:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 48
; MAXIMIZE-NEXT: [[TMP1619:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 48
; MAXIMIZE-NEXT: [[TMP1620:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 48
; MAXIMIZE-NEXT: [[TMP1621:%.*]] = extractelement <16 x float> [[TMP1604]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1621]], ptr [[TMP1605]], align 4
; MAXIMIZE-NEXT: [[TMP1622:%.*]] = extractelement <16 x float> [[TMP1604]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1622]], ptr [[TMP1606]], align 4
; MAXIMIZE-NEXT: [[TMP1623:%.*]] = extractelement <16 x float> [[TMP1604]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1623]], ptr [[TMP1607]], align 4
; MAXIMIZE-NEXT: [[TMP1624:%.*]] = extractelement <16 x float> [[TMP1604]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1624]], ptr [[TMP1608]], align 4
; MAXIMIZE-NEXT: [[TMP1625:%.*]] = extractelement <16 x float> [[TMP1604]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1625]], ptr [[TMP1609]], align 4
; MAXIMIZE-NEXT: [[TMP1626:%.*]] = extractelement <16 x float> [[TMP1604]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1626]], ptr [[TMP1610]], align 4
; MAXIMIZE-NEXT: [[TMP1627:%.*]] = extractelement <16 x float> [[TMP1604]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1627]], ptr [[TMP1611]], align 4
; MAXIMIZE-NEXT: [[TMP1628:%.*]] = extractelement <16 x float> [[TMP1604]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1628]], ptr [[TMP1612]], align 4
; MAXIMIZE-NEXT: [[TMP1629:%.*]] = extractelement <16 x float> [[TMP1604]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1629]], ptr [[TMP1613]], align 4
; MAXIMIZE-NEXT: [[TMP1630:%.*]] = extractelement <16 x float> [[TMP1604]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1630]], ptr [[TMP1614]], align 4
; MAXIMIZE-NEXT: [[TMP1631:%.*]] = extractelement <16 x float> [[TMP1604]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1631]], ptr [[TMP1615]], align 4
; MAXIMIZE-NEXT: [[TMP1632:%.*]] = extractelement <16 x float> [[TMP1604]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1632]], ptr [[TMP1616]], align 4
; MAXIMIZE-NEXT: [[TMP1633:%.*]] = extractelement <16 x float> [[TMP1604]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1633]], ptr [[TMP1617]], align 4
; MAXIMIZE-NEXT: [[TMP1634:%.*]] = extractelement <16 x float> [[TMP1604]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1634]], ptr [[TMP1618]], align 4
; MAXIMIZE-NEXT: [[TMP1635:%.*]] = extractelement <16 x float> [[TMP1604]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1635]], ptr [[TMP1619]], align 4
; MAXIMIZE-NEXT: [[TMP1636:%.*]] = extractelement <16 x float> [[TMP1604]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1636]], ptr [[TMP1620]], align 4
; MAXIMIZE-NEXT: [[TMP1637:%.*]] = sitofp <16 x i32> [[TMP1602]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1638:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1637]]
; MAXIMIZE-NEXT: [[TMP1639:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 112
; MAXIMIZE-NEXT: [[TMP1640:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 112
; MAXIMIZE-NEXT: [[TMP1641:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 112
; MAXIMIZE-NEXT: [[TMP1642:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 112
; MAXIMIZE-NEXT: [[TMP1643:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 112
; MAXIMIZE-NEXT: [[TMP1644:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 112
; MAXIMIZE-NEXT: [[TMP1645:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 112
; MAXIMIZE-NEXT: [[TMP1646:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 112
; MAXIMIZE-NEXT: [[TMP1647:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 112
; MAXIMIZE-NEXT: [[TMP1648:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 112
; MAXIMIZE-NEXT: [[TMP1649:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 112
; MAXIMIZE-NEXT: [[TMP1650:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 112
; MAXIMIZE-NEXT: [[TMP1651:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 112
; MAXIMIZE-NEXT: [[TMP1652:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 112
; MAXIMIZE-NEXT: [[TMP1653:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 112
; MAXIMIZE-NEXT: [[TMP1654:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 112
; MAXIMIZE-NEXT: [[TMP1655:%.*]] = extractelement <16 x float> [[TMP1638]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1655]], ptr [[TMP1639]], align 4
; MAXIMIZE-NEXT: [[TMP1656:%.*]] = extractelement <16 x float> [[TMP1638]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1656]], ptr [[TMP1640]], align 4
; MAXIMIZE-NEXT: [[TMP1657:%.*]] = extractelement <16 x float> [[TMP1638]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1657]], ptr [[TMP1641]], align 4
; MAXIMIZE-NEXT: [[TMP1658:%.*]] = extractelement <16 x float> [[TMP1638]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1658]], ptr [[TMP1642]], align 4
; MAXIMIZE-NEXT: [[TMP1659:%.*]] = extractelement <16 x float> [[TMP1638]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1659]], ptr [[TMP1643]], align 4
; MAXIMIZE-NEXT: [[TMP1660:%.*]] = extractelement <16 x float> [[TMP1638]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1660]], ptr [[TMP1644]], align 4
; MAXIMIZE-NEXT: [[TMP1661:%.*]] = extractelement <16 x float> [[TMP1638]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1661]], ptr [[TMP1645]], align 4
; MAXIMIZE-NEXT: [[TMP1662:%.*]] = extractelement <16 x float> [[TMP1638]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1662]], ptr [[TMP1646]], align 4
; MAXIMIZE-NEXT: [[TMP1663:%.*]] = extractelement <16 x float> [[TMP1638]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1663]], ptr [[TMP1647]], align 4
; MAXIMIZE-NEXT: [[TMP1664:%.*]] = extractelement <16 x float> [[TMP1638]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1664]], ptr [[TMP1648]], align 4
; MAXIMIZE-NEXT: [[TMP1665:%.*]] = extractelement <16 x float> [[TMP1638]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1665]], ptr [[TMP1649]], align 4
; MAXIMIZE-NEXT: [[TMP1666:%.*]] = extractelement <16 x float> [[TMP1638]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1666]], ptr [[TMP1650]], align 4
; MAXIMIZE-NEXT: [[TMP1667:%.*]] = extractelement <16 x float> [[TMP1638]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1667]], ptr [[TMP1651]], align 4
; MAXIMIZE-NEXT: [[TMP1668:%.*]] = extractelement <16 x float> [[TMP1638]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1668]], ptr [[TMP1652]], align 4
; MAXIMIZE-NEXT: [[TMP1669:%.*]] = extractelement <16 x float> [[TMP1638]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1669]], ptr [[TMP1653]], align 4
; MAXIMIZE-NEXT: [[TMP1670:%.*]] = extractelement <16 x float> [[TMP1638]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1670]], ptr [[TMP1654]], align 4
; MAXIMIZE-NEXT: [[TMP1671:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 15
; MAXIMIZE-NEXT: [[TMP1672:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 15
; MAXIMIZE-NEXT: [[TMP1673:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 15
; MAXIMIZE-NEXT: [[TMP1674:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 15
; MAXIMIZE-NEXT: [[TMP1675:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 15
; MAXIMIZE-NEXT: [[TMP1676:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 15
; MAXIMIZE-NEXT: [[TMP1677:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 15
; MAXIMIZE-NEXT: [[TMP1678:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 15
; MAXIMIZE-NEXT: [[TMP1679:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 15
; MAXIMIZE-NEXT: [[TMP1680:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 15
; MAXIMIZE-NEXT: [[TMP1681:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 15
; MAXIMIZE-NEXT: [[TMP1682:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 15
; MAXIMIZE-NEXT: [[TMP1683:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 15
; MAXIMIZE-NEXT: [[TMP1684:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 15
; MAXIMIZE-NEXT: [[TMP1685:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 15
; MAXIMIZE-NEXT: [[TMP1686:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 15
; MAXIMIZE-NEXT: [[TMP1687:%.*]] = load i8, ptr [[TMP1671]], align 1
; MAXIMIZE-NEXT: [[TMP1688:%.*]] = load i8, ptr [[TMP1672]], align 1
; MAXIMIZE-NEXT: [[TMP1689:%.*]] = load i8, ptr [[TMP1673]], align 1
; MAXIMIZE-NEXT: [[TMP1690:%.*]] = load i8, ptr [[TMP1674]], align 1
; MAXIMIZE-NEXT: [[TMP1691:%.*]] = load i8, ptr [[TMP1675]], align 1
; MAXIMIZE-NEXT: [[TMP1692:%.*]] = load i8, ptr [[TMP1676]], align 1
; MAXIMIZE-NEXT: [[TMP1693:%.*]] = load i8, ptr [[TMP1677]], align 1
; MAXIMIZE-NEXT: [[TMP1694:%.*]] = load i8, ptr [[TMP1678]], align 1
; MAXIMIZE-NEXT: [[TMP1695:%.*]] = load i8, ptr [[TMP1679]], align 1
; MAXIMIZE-NEXT: [[TMP1696:%.*]] = load i8, ptr [[TMP1680]], align 1
; MAXIMIZE-NEXT: [[TMP1697:%.*]] = load i8, ptr [[TMP1681]], align 1
; MAXIMIZE-NEXT: [[TMP1698:%.*]] = load i8, ptr [[TMP1682]], align 1
; MAXIMIZE-NEXT: [[TMP1699:%.*]] = load i8, ptr [[TMP1683]], align 1
; MAXIMIZE-NEXT: [[TMP1700:%.*]] = load i8, ptr [[TMP1684]], align 1
; MAXIMIZE-NEXT: [[TMP1701:%.*]] = load i8, ptr [[TMP1685]], align 1
; MAXIMIZE-NEXT: [[TMP1702:%.*]] = load i8, ptr [[TMP1686]], align 1
; MAXIMIZE-NEXT: [[TMP1703:%.*]] = insertelement <16 x i8> poison, i8 [[TMP1687]], i64 0
; MAXIMIZE-NEXT: [[TMP1704:%.*]] = insertelement <16 x i8> [[TMP1703]], i8 [[TMP1688]], i64 1
; MAXIMIZE-NEXT: [[TMP1705:%.*]] = insertelement <16 x i8> [[TMP1704]], i8 [[TMP1689]], i64 2
; MAXIMIZE-NEXT: [[TMP1706:%.*]] = insertelement <16 x i8> [[TMP1705]], i8 [[TMP1690]], i64 3
; MAXIMIZE-NEXT: [[TMP1707:%.*]] = insertelement <16 x i8> [[TMP1706]], i8 [[TMP1691]], i64 4
; MAXIMIZE-NEXT: [[TMP1708:%.*]] = insertelement <16 x i8> [[TMP1707]], i8 [[TMP1692]], i64 5
; MAXIMIZE-NEXT: [[TMP1709:%.*]] = insertelement <16 x i8> [[TMP1708]], i8 [[TMP1693]], i64 6
; MAXIMIZE-NEXT: [[TMP1710:%.*]] = insertelement <16 x i8> [[TMP1709]], i8 [[TMP1694]], i64 7
; MAXIMIZE-NEXT: [[TMP1711:%.*]] = insertelement <16 x i8> [[TMP1710]], i8 [[TMP1695]], i64 8
; MAXIMIZE-NEXT: [[TMP1712:%.*]] = insertelement <16 x i8> [[TMP1711]], i8 [[TMP1696]], i64 9
; MAXIMIZE-NEXT: [[TMP1713:%.*]] = insertelement <16 x i8> [[TMP1712]], i8 [[TMP1697]], i64 10
; MAXIMIZE-NEXT: [[TMP1714:%.*]] = insertelement <16 x i8> [[TMP1713]], i8 [[TMP1698]], i64 11
; MAXIMIZE-NEXT: [[TMP1715:%.*]] = insertelement <16 x i8> [[TMP1714]], i8 [[TMP1699]], i64 12
; MAXIMIZE-NEXT: [[TMP1716:%.*]] = insertelement <16 x i8> [[TMP1715]], i8 [[TMP1700]], i64 13
; MAXIMIZE-NEXT: [[TMP1717:%.*]] = insertelement <16 x i8> [[TMP1716]], i8 [[TMP1701]], i64 14
; MAXIMIZE-NEXT: [[TMP1718:%.*]] = insertelement <16 x i8> [[TMP1717]], i8 [[TMP1702]], i64 15
; MAXIMIZE-NEXT: [[TMP1719:%.*]] = zext <16 x i8> [[TMP1718]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP1720:%.*]] = and <16 x i32> [[TMP1719]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP1721:%.*]] = add nsw <16 x i32> [[TMP1720]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1722:%.*]] = lshr <16 x i32> [[TMP1719]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP1723:%.*]] = add nsw <16 x i32> [[TMP1722]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1724:%.*]] = sitofp <16 x i32> [[TMP1721]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1725:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1724]]
; MAXIMIZE-NEXT: [[TMP1726:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 52
; MAXIMIZE-NEXT: [[TMP1727:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 52
; MAXIMIZE-NEXT: [[TMP1728:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 52
; MAXIMIZE-NEXT: [[TMP1729:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 52
; MAXIMIZE-NEXT: [[TMP1730:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 52
; MAXIMIZE-NEXT: [[TMP1731:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 52
; MAXIMIZE-NEXT: [[TMP1732:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 52
; MAXIMIZE-NEXT: [[TMP1733:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 52
; MAXIMIZE-NEXT: [[TMP1734:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 52
; MAXIMIZE-NEXT: [[TMP1735:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 52
; MAXIMIZE-NEXT: [[TMP1736:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 52
; MAXIMIZE-NEXT: [[TMP1737:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 52
; MAXIMIZE-NEXT: [[TMP1738:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 52
; MAXIMIZE-NEXT: [[TMP1739:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 52
; MAXIMIZE-NEXT: [[TMP1740:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 52
; MAXIMIZE-NEXT: [[TMP1741:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 52
; MAXIMIZE-NEXT: [[TMP1742:%.*]] = extractelement <16 x float> [[TMP1725]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1742]], ptr [[TMP1726]], align 4
; MAXIMIZE-NEXT: [[TMP1743:%.*]] = extractelement <16 x float> [[TMP1725]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1743]], ptr [[TMP1727]], align 4
; MAXIMIZE-NEXT: [[TMP1744:%.*]] = extractelement <16 x float> [[TMP1725]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1744]], ptr [[TMP1728]], align 4
; MAXIMIZE-NEXT: [[TMP1745:%.*]] = extractelement <16 x float> [[TMP1725]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1745]], ptr [[TMP1729]], align 4
; MAXIMIZE-NEXT: [[TMP1746:%.*]] = extractelement <16 x float> [[TMP1725]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1746]], ptr [[TMP1730]], align 4
; MAXIMIZE-NEXT: [[TMP1747:%.*]] = extractelement <16 x float> [[TMP1725]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1747]], ptr [[TMP1731]], align 4
; MAXIMIZE-NEXT: [[TMP1748:%.*]] = extractelement <16 x float> [[TMP1725]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1748]], ptr [[TMP1732]], align 4
; MAXIMIZE-NEXT: [[TMP1749:%.*]] = extractelement <16 x float> [[TMP1725]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1749]], ptr [[TMP1733]], align 4
; MAXIMIZE-NEXT: [[TMP1750:%.*]] = extractelement <16 x float> [[TMP1725]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1750]], ptr [[TMP1734]], align 4
; MAXIMIZE-NEXT: [[TMP1751:%.*]] = extractelement <16 x float> [[TMP1725]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1751]], ptr [[TMP1735]], align 4
; MAXIMIZE-NEXT: [[TMP1752:%.*]] = extractelement <16 x float> [[TMP1725]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1752]], ptr [[TMP1736]], align 4
; MAXIMIZE-NEXT: [[TMP1753:%.*]] = extractelement <16 x float> [[TMP1725]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1753]], ptr [[TMP1737]], align 4
; MAXIMIZE-NEXT: [[TMP1754:%.*]] = extractelement <16 x float> [[TMP1725]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1754]], ptr [[TMP1738]], align 4
; MAXIMIZE-NEXT: [[TMP1755:%.*]] = extractelement <16 x float> [[TMP1725]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1755]], ptr [[TMP1739]], align 4
; MAXIMIZE-NEXT: [[TMP1756:%.*]] = extractelement <16 x float> [[TMP1725]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1756]], ptr [[TMP1740]], align 4
; MAXIMIZE-NEXT: [[TMP1757:%.*]] = extractelement <16 x float> [[TMP1725]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1757]], ptr [[TMP1741]], align 4
; MAXIMIZE-NEXT: [[TMP1758:%.*]] = sitofp <16 x i32> [[TMP1723]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1759:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1758]]
; MAXIMIZE-NEXT: [[TMP1760:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 116
; MAXIMIZE-NEXT: [[TMP1761:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 116
; MAXIMIZE-NEXT: [[TMP1762:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 116
; MAXIMIZE-NEXT: [[TMP1763:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 116
; MAXIMIZE-NEXT: [[TMP1764:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 116
; MAXIMIZE-NEXT: [[TMP1765:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 116
; MAXIMIZE-NEXT: [[TMP1766:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 116
; MAXIMIZE-NEXT: [[TMP1767:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 116
; MAXIMIZE-NEXT: [[TMP1768:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 116
; MAXIMIZE-NEXT: [[TMP1769:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 116
; MAXIMIZE-NEXT: [[TMP1770:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 116
; MAXIMIZE-NEXT: [[TMP1771:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 116
; MAXIMIZE-NEXT: [[TMP1772:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 116
; MAXIMIZE-NEXT: [[TMP1773:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 116
; MAXIMIZE-NEXT: [[TMP1774:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 116
; MAXIMIZE-NEXT: [[TMP1775:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 116
; MAXIMIZE-NEXT: [[TMP1776:%.*]] = extractelement <16 x float> [[TMP1759]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1776]], ptr [[TMP1760]], align 4
; MAXIMIZE-NEXT: [[TMP1777:%.*]] = extractelement <16 x float> [[TMP1759]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1777]], ptr [[TMP1761]], align 4
; MAXIMIZE-NEXT: [[TMP1778:%.*]] = extractelement <16 x float> [[TMP1759]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1778]], ptr [[TMP1762]], align 4
; MAXIMIZE-NEXT: [[TMP1779:%.*]] = extractelement <16 x float> [[TMP1759]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1779]], ptr [[TMP1763]], align 4
; MAXIMIZE-NEXT: [[TMP1780:%.*]] = extractelement <16 x float> [[TMP1759]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1780]], ptr [[TMP1764]], align 4
; MAXIMIZE-NEXT: [[TMP1781:%.*]] = extractelement <16 x float> [[TMP1759]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1781]], ptr [[TMP1765]], align 4
; MAXIMIZE-NEXT: [[TMP1782:%.*]] = extractelement <16 x float> [[TMP1759]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1782]], ptr [[TMP1766]], align 4
; MAXIMIZE-NEXT: [[TMP1783:%.*]] = extractelement <16 x float> [[TMP1759]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1783]], ptr [[TMP1767]], align 4
; MAXIMIZE-NEXT: [[TMP1784:%.*]] = extractelement <16 x float> [[TMP1759]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1784]], ptr [[TMP1768]], align 4
; MAXIMIZE-NEXT: [[TMP1785:%.*]] = extractelement <16 x float> [[TMP1759]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1785]], ptr [[TMP1769]], align 4
; MAXIMIZE-NEXT: [[TMP1786:%.*]] = extractelement <16 x float> [[TMP1759]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1786]], ptr [[TMP1770]], align 4
; MAXIMIZE-NEXT: [[TMP1787:%.*]] = extractelement <16 x float> [[TMP1759]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1787]], ptr [[TMP1771]], align 4
; MAXIMIZE-NEXT: [[TMP1788:%.*]] = extractelement <16 x float> [[TMP1759]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1788]], ptr [[TMP1772]], align 4
; MAXIMIZE-NEXT: [[TMP1789:%.*]] = extractelement <16 x float> [[TMP1759]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1789]], ptr [[TMP1773]], align 4
; MAXIMIZE-NEXT: [[TMP1790:%.*]] = extractelement <16 x float> [[TMP1759]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1790]], ptr [[TMP1774]], align 4
; MAXIMIZE-NEXT: [[TMP1791:%.*]] = extractelement <16 x float> [[TMP1759]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1791]], ptr [[TMP1775]], align 4
; MAXIMIZE-NEXT: [[TMP1792:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 16
; MAXIMIZE-NEXT: [[TMP1793:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 16
; MAXIMIZE-NEXT: [[TMP1794:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 16
; MAXIMIZE-NEXT: [[TMP1795:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 16
; MAXIMIZE-NEXT: [[TMP1796:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 16
; MAXIMIZE-NEXT: [[TMP1797:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 16
; MAXIMIZE-NEXT: [[TMP1798:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 16
; MAXIMIZE-NEXT: [[TMP1799:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 16
; MAXIMIZE-NEXT: [[TMP1800:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 16
; MAXIMIZE-NEXT: [[TMP1801:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 16
; MAXIMIZE-NEXT: [[TMP1802:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 16
; MAXIMIZE-NEXT: [[TMP1803:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 16
; MAXIMIZE-NEXT: [[TMP1804:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 16
; MAXIMIZE-NEXT: [[TMP1805:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 16
; MAXIMIZE-NEXT: [[TMP1806:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 16
; MAXIMIZE-NEXT: [[TMP1807:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 16
; MAXIMIZE-NEXT: [[TMP1808:%.*]] = load i8, ptr [[TMP1792]], align 1
; MAXIMIZE-NEXT: [[TMP1809:%.*]] = load i8, ptr [[TMP1793]], align 1
; MAXIMIZE-NEXT: [[TMP1810:%.*]] = load i8, ptr [[TMP1794]], align 1
; MAXIMIZE-NEXT: [[TMP1811:%.*]] = load i8, ptr [[TMP1795]], align 1
; MAXIMIZE-NEXT: [[TMP1812:%.*]] = load i8, ptr [[TMP1796]], align 1
; MAXIMIZE-NEXT: [[TMP1813:%.*]] = load i8, ptr [[TMP1797]], align 1
; MAXIMIZE-NEXT: [[TMP1814:%.*]] = load i8, ptr [[TMP1798]], align 1
; MAXIMIZE-NEXT: [[TMP1815:%.*]] = load i8, ptr [[TMP1799]], align 1
; MAXIMIZE-NEXT: [[TMP1816:%.*]] = load i8, ptr [[TMP1800]], align 1
; MAXIMIZE-NEXT: [[TMP1817:%.*]] = load i8, ptr [[TMP1801]], align 1
; MAXIMIZE-NEXT: [[TMP1818:%.*]] = load i8, ptr [[TMP1802]], align 1
; MAXIMIZE-NEXT: [[TMP1819:%.*]] = load i8, ptr [[TMP1803]], align 1
; MAXIMIZE-NEXT: [[TMP1820:%.*]] = load i8, ptr [[TMP1804]], align 1
; MAXIMIZE-NEXT: [[TMP1821:%.*]] = load i8, ptr [[TMP1805]], align 1
; MAXIMIZE-NEXT: [[TMP1822:%.*]] = load i8, ptr [[TMP1806]], align 1
; MAXIMIZE-NEXT: [[TMP1823:%.*]] = load i8, ptr [[TMP1807]], align 1
; MAXIMIZE-NEXT: [[TMP1824:%.*]] = insertelement <16 x i8> poison, i8 [[TMP1808]], i64 0
; MAXIMIZE-NEXT: [[TMP1825:%.*]] = insertelement <16 x i8> [[TMP1824]], i8 [[TMP1809]], i64 1
; MAXIMIZE-NEXT: [[TMP1826:%.*]] = insertelement <16 x i8> [[TMP1825]], i8 [[TMP1810]], i64 2
; MAXIMIZE-NEXT: [[TMP1827:%.*]] = insertelement <16 x i8> [[TMP1826]], i8 [[TMP1811]], i64 3
; MAXIMIZE-NEXT: [[TMP1828:%.*]] = insertelement <16 x i8> [[TMP1827]], i8 [[TMP1812]], i64 4
; MAXIMIZE-NEXT: [[TMP1829:%.*]] = insertelement <16 x i8> [[TMP1828]], i8 [[TMP1813]], i64 5
; MAXIMIZE-NEXT: [[TMP1830:%.*]] = insertelement <16 x i8> [[TMP1829]], i8 [[TMP1814]], i64 6
; MAXIMIZE-NEXT: [[TMP1831:%.*]] = insertelement <16 x i8> [[TMP1830]], i8 [[TMP1815]], i64 7
; MAXIMIZE-NEXT: [[TMP1832:%.*]] = insertelement <16 x i8> [[TMP1831]], i8 [[TMP1816]], i64 8
; MAXIMIZE-NEXT: [[TMP1833:%.*]] = insertelement <16 x i8> [[TMP1832]], i8 [[TMP1817]], i64 9
; MAXIMIZE-NEXT: [[TMP1834:%.*]] = insertelement <16 x i8> [[TMP1833]], i8 [[TMP1818]], i64 10
; MAXIMIZE-NEXT: [[TMP1835:%.*]] = insertelement <16 x i8> [[TMP1834]], i8 [[TMP1819]], i64 11
; MAXIMIZE-NEXT: [[TMP1836:%.*]] = insertelement <16 x i8> [[TMP1835]], i8 [[TMP1820]], i64 12
; MAXIMIZE-NEXT: [[TMP1837:%.*]] = insertelement <16 x i8> [[TMP1836]], i8 [[TMP1821]], i64 13
; MAXIMIZE-NEXT: [[TMP1838:%.*]] = insertelement <16 x i8> [[TMP1837]], i8 [[TMP1822]], i64 14
; MAXIMIZE-NEXT: [[TMP1839:%.*]] = insertelement <16 x i8> [[TMP1838]], i8 [[TMP1823]], i64 15
; MAXIMIZE-NEXT: [[TMP1840:%.*]] = zext <16 x i8> [[TMP1839]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP1841:%.*]] = and <16 x i32> [[TMP1840]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP1842:%.*]] = add nsw <16 x i32> [[TMP1841]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1843:%.*]] = lshr <16 x i32> [[TMP1840]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP1844:%.*]] = add nsw <16 x i32> [[TMP1843]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1845:%.*]] = sitofp <16 x i32> [[TMP1842]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1846:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1845]]
; MAXIMIZE-NEXT: [[TMP1847:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 56
; MAXIMIZE-NEXT: [[TMP1848:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 56
; MAXIMIZE-NEXT: [[TMP1849:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 56
; MAXIMIZE-NEXT: [[TMP1850:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 56
; MAXIMIZE-NEXT: [[TMP1851:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 56
; MAXIMIZE-NEXT: [[TMP1852:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 56
; MAXIMIZE-NEXT: [[TMP1853:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 56
; MAXIMIZE-NEXT: [[TMP1854:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 56
; MAXIMIZE-NEXT: [[TMP1855:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 56
; MAXIMIZE-NEXT: [[TMP1856:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 56
; MAXIMIZE-NEXT: [[TMP1857:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 56
; MAXIMIZE-NEXT: [[TMP1858:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 56
; MAXIMIZE-NEXT: [[TMP1859:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 56
; MAXIMIZE-NEXT: [[TMP1860:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 56
; MAXIMIZE-NEXT: [[TMP1861:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 56
; MAXIMIZE-NEXT: [[TMP1862:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 56
; MAXIMIZE-NEXT: [[TMP1863:%.*]] = extractelement <16 x float> [[TMP1846]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1863]], ptr [[TMP1847]], align 4
; MAXIMIZE-NEXT: [[TMP1864:%.*]] = extractelement <16 x float> [[TMP1846]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1864]], ptr [[TMP1848]], align 4
; MAXIMIZE-NEXT: [[TMP1865:%.*]] = extractelement <16 x float> [[TMP1846]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1865]], ptr [[TMP1849]], align 4
; MAXIMIZE-NEXT: [[TMP1866:%.*]] = extractelement <16 x float> [[TMP1846]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1866]], ptr [[TMP1850]], align 4
; MAXIMIZE-NEXT: [[TMP1867:%.*]] = extractelement <16 x float> [[TMP1846]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1867]], ptr [[TMP1851]], align 4
; MAXIMIZE-NEXT: [[TMP1868:%.*]] = extractelement <16 x float> [[TMP1846]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1868]], ptr [[TMP1852]], align 4
; MAXIMIZE-NEXT: [[TMP1869:%.*]] = extractelement <16 x float> [[TMP1846]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1869]], ptr [[TMP1853]], align 4
; MAXIMIZE-NEXT: [[TMP1870:%.*]] = extractelement <16 x float> [[TMP1846]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1870]], ptr [[TMP1854]], align 4
; MAXIMIZE-NEXT: [[TMP1871:%.*]] = extractelement <16 x float> [[TMP1846]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1871]], ptr [[TMP1855]], align 4
; MAXIMIZE-NEXT: [[TMP1872:%.*]] = extractelement <16 x float> [[TMP1846]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1872]], ptr [[TMP1856]], align 4
; MAXIMIZE-NEXT: [[TMP1873:%.*]] = extractelement <16 x float> [[TMP1846]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1873]], ptr [[TMP1857]], align 4
; MAXIMIZE-NEXT: [[TMP1874:%.*]] = extractelement <16 x float> [[TMP1846]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1874]], ptr [[TMP1858]], align 4
; MAXIMIZE-NEXT: [[TMP1875:%.*]] = extractelement <16 x float> [[TMP1846]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1875]], ptr [[TMP1859]], align 4
; MAXIMIZE-NEXT: [[TMP1876:%.*]] = extractelement <16 x float> [[TMP1846]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1876]], ptr [[TMP1860]], align 4
; MAXIMIZE-NEXT: [[TMP1877:%.*]] = extractelement <16 x float> [[TMP1846]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1877]], ptr [[TMP1861]], align 4
; MAXIMIZE-NEXT: [[TMP1878:%.*]] = extractelement <16 x float> [[TMP1846]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1878]], ptr [[TMP1862]], align 4
; MAXIMIZE-NEXT: [[TMP1879:%.*]] = sitofp <16 x i32> [[TMP1844]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1880:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1879]]
; MAXIMIZE-NEXT: [[TMP1881:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 120
; MAXIMIZE-NEXT: [[TMP1882:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 120
; MAXIMIZE-NEXT: [[TMP1883:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 120
; MAXIMIZE-NEXT: [[TMP1884:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 120
; MAXIMIZE-NEXT: [[TMP1885:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 120
; MAXIMIZE-NEXT: [[TMP1886:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 120
; MAXIMIZE-NEXT: [[TMP1887:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 120
; MAXIMIZE-NEXT: [[TMP1888:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 120
; MAXIMIZE-NEXT: [[TMP1889:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 120
; MAXIMIZE-NEXT: [[TMP1890:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 120
; MAXIMIZE-NEXT: [[TMP1891:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 120
; MAXIMIZE-NEXT: [[TMP1892:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 120
; MAXIMIZE-NEXT: [[TMP1893:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 120
; MAXIMIZE-NEXT: [[TMP1894:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 120
; MAXIMIZE-NEXT: [[TMP1895:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 120
; MAXIMIZE-NEXT: [[TMP1896:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 120
; MAXIMIZE-NEXT: [[TMP1897:%.*]] = extractelement <16 x float> [[TMP1880]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1897]], ptr [[TMP1881]], align 4
; MAXIMIZE-NEXT: [[TMP1898:%.*]] = extractelement <16 x float> [[TMP1880]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1898]], ptr [[TMP1882]], align 4
; MAXIMIZE-NEXT: [[TMP1899:%.*]] = extractelement <16 x float> [[TMP1880]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1899]], ptr [[TMP1883]], align 4
; MAXIMIZE-NEXT: [[TMP1900:%.*]] = extractelement <16 x float> [[TMP1880]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1900]], ptr [[TMP1884]], align 4
; MAXIMIZE-NEXT: [[TMP1901:%.*]] = extractelement <16 x float> [[TMP1880]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1901]], ptr [[TMP1885]], align 4
; MAXIMIZE-NEXT: [[TMP1902:%.*]] = extractelement <16 x float> [[TMP1880]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1902]], ptr [[TMP1886]], align 4
; MAXIMIZE-NEXT: [[TMP1903:%.*]] = extractelement <16 x float> [[TMP1880]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1903]], ptr [[TMP1887]], align 4
; MAXIMIZE-NEXT: [[TMP1904:%.*]] = extractelement <16 x float> [[TMP1880]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1904]], ptr [[TMP1888]], align 4
; MAXIMIZE-NEXT: [[TMP1905:%.*]] = extractelement <16 x float> [[TMP1880]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1905]], ptr [[TMP1889]], align 4
; MAXIMIZE-NEXT: [[TMP1906:%.*]] = extractelement <16 x float> [[TMP1880]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1906]], ptr [[TMP1890]], align 4
; MAXIMIZE-NEXT: [[TMP1907:%.*]] = extractelement <16 x float> [[TMP1880]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1907]], ptr [[TMP1891]], align 4
; MAXIMIZE-NEXT: [[TMP1908:%.*]] = extractelement <16 x float> [[TMP1880]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1908]], ptr [[TMP1892]], align 4
; MAXIMIZE-NEXT: [[TMP1909:%.*]] = extractelement <16 x float> [[TMP1880]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1909]], ptr [[TMP1893]], align 4
; MAXIMIZE-NEXT: [[TMP1910:%.*]] = extractelement <16 x float> [[TMP1880]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1910]], ptr [[TMP1894]], align 4
; MAXIMIZE-NEXT: [[TMP1911:%.*]] = extractelement <16 x float> [[TMP1880]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1911]], ptr [[TMP1895]], align 4
; MAXIMIZE-NEXT: [[TMP1912:%.*]] = extractelement <16 x float> [[TMP1880]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1912]], ptr [[TMP1896]], align 4
; MAXIMIZE-NEXT: [[TMP1913:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP16]], i32 17
; MAXIMIZE-NEXT: [[TMP1914:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP17]], i32 17
; MAXIMIZE-NEXT: [[TMP1915:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP18]], i32 17
; MAXIMIZE-NEXT: [[TMP1916:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP19]], i32 17
; MAXIMIZE-NEXT: [[TMP1917:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP20]], i32 17
; MAXIMIZE-NEXT: [[TMP1918:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP21]], i32 17
; MAXIMIZE-NEXT: [[TMP1919:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP22]], i32 17
; MAXIMIZE-NEXT: [[TMP1920:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP23]], i32 17
; MAXIMIZE-NEXT: [[TMP1921:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP24]], i32 17
; MAXIMIZE-NEXT: [[TMP1922:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP25]], i32 17
; MAXIMIZE-NEXT: [[TMP1923:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP26]], i32 17
; MAXIMIZE-NEXT: [[TMP1924:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP27]], i32 17
; MAXIMIZE-NEXT: [[TMP1925:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP28]], i32 17
; MAXIMIZE-NEXT: [[TMP1926:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP29]], i32 17
; MAXIMIZE-NEXT: [[TMP1927:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP30]], i32 17
; MAXIMIZE-NEXT: [[TMP1928:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP31]], i32 17
; MAXIMIZE-NEXT: [[TMP1929:%.*]] = load i8, ptr [[TMP1913]], align 1
; MAXIMIZE-NEXT: [[TMP1930:%.*]] = load i8, ptr [[TMP1914]], align 1
; MAXIMIZE-NEXT: [[TMP1931:%.*]] = load i8, ptr [[TMP1915]], align 1
; MAXIMIZE-NEXT: [[TMP1932:%.*]] = load i8, ptr [[TMP1916]], align 1
; MAXIMIZE-NEXT: [[TMP1933:%.*]] = load i8, ptr [[TMP1917]], align 1
; MAXIMIZE-NEXT: [[TMP1934:%.*]] = load i8, ptr [[TMP1918]], align 1
; MAXIMIZE-NEXT: [[TMP1935:%.*]] = load i8, ptr [[TMP1919]], align 1
; MAXIMIZE-NEXT: [[TMP1936:%.*]] = load i8, ptr [[TMP1920]], align 1
; MAXIMIZE-NEXT: [[TMP1937:%.*]] = load i8, ptr [[TMP1921]], align 1
; MAXIMIZE-NEXT: [[TMP1938:%.*]] = load i8, ptr [[TMP1922]], align 1
; MAXIMIZE-NEXT: [[TMP1939:%.*]] = load i8, ptr [[TMP1923]], align 1
; MAXIMIZE-NEXT: [[TMP1940:%.*]] = load i8, ptr [[TMP1924]], align 1
; MAXIMIZE-NEXT: [[TMP1941:%.*]] = load i8, ptr [[TMP1925]], align 1
; MAXIMIZE-NEXT: [[TMP1942:%.*]] = load i8, ptr [[TMP1926]], align 1
; MAXIMIZE-NEXT: [[TMP1943:%.*]] = load i8, ptr [[TMP1927]], align 1
; MAXIMIZE-NEXT: [[TMP1944:%.*]] = load i8, ptr [[TMP1928]], align 1
; MAXIMIZE-NEXT: [[TMP1945:%.*]] = insertelement <16 x i8> poison, i8 [[TMP1929]], i64 0
; MAXIMIZE-NEXT: [[TMP1946:%.*]] = insertelement <16 x i8> [[TMP1945]], i8 [[TMP1930]], i64 1
; MAXIMIZE-NEXT: [[TMP1947:%.*]] = insertelement <16 x i8> [[TMP1946]], i8 [[TMP1931]], i64 2
; MAXIMIZE-NEXT: [[TMP1948:%.*]] = insertelement <16 x i8> [[TMP1947]], i8 [[TMP1932]], i64 3
; MAXIMIZE-NEXT: [[TMP1949:%.*]] = insertelement <16 x i8> [[TMP1948]], i8 [[TMP1933]], i64 4
; MAXIMIZE-NEXT: [[TMP1950:%.*]] = insertelement <16 x i8> [[TMP1949]], i8 [[TMP1934]], i64 5
; MAXIMIZE-NEXT: [[TMP1951:%.*]] = insertelement <16 x i8> [[TMP1950]], i8 [[TMP1935]], i64 6
; MAXIMIZE-NEXT: [[TMP1952:%.*]] = insertelement <16 x i8> [[TMP1951]], i8 [[TMP1936]], i64 7
; MAXIMIZE-NEXT: [[TMP1953:%.*]] = insertelement <16 x i8> [[TMP1952]], i8 [[TMP1937]], i64 8
; MAXIMIZE-NEXT: [[TMP1954:%.*]] = insertelement <16 x i8> [[TMP1953]], i8 [[TMP1938]], i64 9
; MAXIMIZE-NEXT: [[TMP1955:%.*]] = insertelement <16 x i8> [[TMP1954]], i8 [[TMP1939]], i64 10
; MAXIMIZE-NEXT: [[TMP1956:%.*]] = insertelement <16 x i8> [[TMP1955]], i8 [[TMP1940]], i64 11
; MAXIMIZE-NEXT: [[TMP1957:%.*]] = insertelement <16 x i8> [[TMP1956]], i8 [[TMP1941]], i64 12
; MAXIMIZE-NEXT: [[TMP1958:%.*]] = insertelement <16 x i8> [[TMP1957]], i8 [[TMP1942]], i64 13
; MAXIMIZE-NEXT: [[TMP1959:%.*]] = insertelement <16 x i8> [[TMP1958]], i8 [[TMP1943]], i64 14
; MAXIMIZE-NEXT: [[TMP1960:%.*]] = insertelement <16 x i8> [[TMP1959]], i8 [[TMP1944]], i64 15
; MAXIMIZE-NEXT: [[TMP1961:%.*]] = zext <16 x i8> [[TMP1960]] to <16 x i32>
; MAXIMIZE-NEXT: [[TMP1962:%.*]] = and <16 x i32> [[TMP1961]], splat (i32 15)
; MAXIMIZE-NEXT: [[TMP1963:%.*]] = add nsw <16 x i32> [[TMP1962]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1964:%.*]] = lshr <16 x i32> [[TMP1961]], splat (i32 4)
; MAXIMIZE-NEXT: [[TMP1965:%.*]] = add nsw <16 x i32> [[TMP1964]], splat (i32 -8)
; MAXIMIZE-NEXT: [[TMP1966:%.*]] = sitofp <16 x i32> [[TMP1963]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP1967:%.*]] = fmul <16 x float> [[TMP80]], [[TMP1966]]
; MAXIMIZE-NEXT: [[TMP1968:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 60
; MAXIMIZE-NEXT: [[TMP1969:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 60
; MAXIMIZE-NEXT: [[TMP1970:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 60
; MAXIMIZE-NEXT: [[TMP1971:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 60
; MAXIMIZE-NEXT: [[TMP1972:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 60
; MAXIMIZE-NEXT: [[TMP1973:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 60
; MAXIMIZE-NEXT: [[TMP1974:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 60
; MAXIMIZE-NEXT: [[TMP1975:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 60
; MAXIMIZE-NEXT: [[TMP1976:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 60
; MAXIMIZE-NEXT: [[TMP1977:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 60
; MAXIMIZE-NEXT: [[TMP1978:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 60
; MAXIMIZE-NEXT: [[TMP1979:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 60
; MAXIMIZE-NEXT: [[TMP1980:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 60
; MAXIMIZE-NEXT: [[TMP1981:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 60
; MAXIMIZE-NEXT: [[TMP1982:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 60
; MAXIMIZE-NEXT: [[TMP1983:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 60
; MAXIMIZE-NEXT: [[TMP1984:%.*]] = extractelement <16 x float> [[TMP1967]], i64 0
; MAXIMIZE-NEXT: store float [[TMP1984]], ptr [[TMP1968]], align 4
; MAXIMIZE-NEXT: [[TMP1985:%.*]] = extractelement <16 x float> [[TMP1967]], i64 1
; MAXIMIZE-NEXT: store float [[TMP1985]], ptr [[TMP1969]], align 4
; MAXIMIZE-NEXT: [[TMP1986:%.*]] = extractelement <16 x float> [[TMP1967]], i64 2
; MAXIMIZE-NEXT: store float [[TMP1986]], ptr [[TMP1970]], align 4
; MAXIMIZE-NEXT: [[TMP1987:%.*]] = extractelement <16 x float> [[TMP1967]], i64 3
; MAXIMIZE-NEXT: store float [[TMP1987]], ptr [[TMP1971]], align 4
; MAXIMIZE-NEXT: [[TMP1988:%.*]] = extractelement <16 x float> [[TMP1967]], i64 4
; MAXIMIZE-NEXT: store float [[TMP1988]], ptr [[TMP1972]], align 4
; MAXIMIZE-NEXT: [[TMP1989:%.*]] = extractelement <16 x float> [[TMP1967]], i64 5
; MAXIMIZE-NEXT: store float [[TMP1989]], ptr [[TMP1973]], align 4
; MAXIMIZE-NEXT: [[TMP1990:%.*]] = extractelement <16 x float> [[TMP1967]], i64 6
; MAXIMIZE-NEXT: store float [[TMP1990]], ptr [[TMP1974]], align 4
; MAXIMIZE-NEXT: [[TMP1991:%.*]] = extractelement <16 x float> [[TMP1967]], i64 7
; MAXIMIZE-NEXT: store float [[TMP1991]], ptr [[TMP1975]], align 4
; MAXIMIZE-NEXT: [[TMP1992:%.*]] = extractelement <16 x float> [[TMP1967]], i64 8
; MAXIMIZE-NEXT: store float [[TMP1992]], ptr [[TMP1976]], align 4
; MAXIMIZE-NEXT: [[TMP1993:%.*]] = extractelement <16 x float> [[TMP1967]], i64 9
; MAXIMIZE-NEXT: store float [[TMP1993]], ptr [[TMP1977]], align 4
; MAXIMIZE-NEXT: [[TMP1994:%.*]] = extractelement <16 x float> [[TMP1967]], i64 10
; MAXIMIZE-NEXT: store float [[TMP1994]], ptr [[TMP1978]], align 4
; MAXIMIZE-NEXT: [[TMP1995:%.*]] = extractelement <16 x float> [[TMP1967]], i64 11
; MAXIMIZE-NEXT: store float [[TMP1995]], ptr [[TMP1979]], align 4
; MAXIMIZE-NEXT: [[TMP1996:%.*]] = extractelement <16 x float> [[TMP1967]], i64 12
; MAXIMIZE-NEXT: store float [[TMP1996]], ptr [[TMP1980]], align 4
; MAXIMIZE-NEXT: [[TMP1997:%.*]] = extractelement <16 x float> [[TMP1967]], i64 13
; MAXIMIZE-NEXT: store float [[TMP1997]], ptr [[TMP1981]], align 4
; MAXIMIZE-NEXT: [[TMP1998:%.*]] = extractelement <16 x float> [[TMP1967]], i64 14
; MAXIMIZE-NEXT: store float [[TMP1998]], ptr [[TMP1982]], align 4
; MAXIMIZE-NEXT: [[TMP1999:%.*]] = extractelement <16 x float> [[TMP1967]], i64 15
; MAXIMIZE-NEXT: store float [[TMP1999]], ptr [[TMP1983]], align 4
; MAXIMIZE-NEXT: [[TMP2000:%.*]] = sitofp <16 x i32> [[TMP1965]] to <16 x float>
; MAXIMIZE-NEXT: [[TMP2001:%.*]] = fmul <16 x float> [[TMP80]], [[TMP2000]]
; MAXIMIZE-NEXT: [[TMP2002:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP99]], i32 124
; MAXIMIZE-NEXT: [[TMP2003:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP101]], i32 124
; MAXIMIZE-NEXT: [[TMP2004:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP103]], i32 124
; MAXIMIZE-NEXT: [[TMP2005:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP105]], i32 124
; MAXIMIZE-NEXT: [[TMP2006:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP107]], i32 124
; MAXIMIZE-NEXT: [[TMP2007:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP109]], i32 124
; MAXIMIZE-NEXT: [[TMP2008:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP111]], i32 124
; MAXIMIZE-NEXT: [[TMP2009:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP113]], i32 124
; MAXIMIZE-NEXT: [[TMP2010:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP115]], i32 124
; MAXIMIZE-NEXT: [[TMP2011:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP117]], i32 124
; MAXIMIZE-NEXT: [[TMP2012:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP119]], i32 124
; MAXIMIZE-NEXT: [[TMP2013:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP121]], i32 124
; MAXIMIZE-NEXT: [[TMP2014:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP123]], i32 124
; MAXIMIZE-NEXT: [[TMP2015:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP125]], i32 124
; MAXIMIZE-NEXT: [[TMP2016:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP127]], i32 124
; MAXIMIZE-NEXT: [[TMP2017:%.*]] = getelementptr inbounds nuw i8, ptr [[TMP129]], i32 124
; MAXIMIZE-NEXT: [[TMP2018:%.*]] = extractelement <16 x float> [[TMP2001]], i64 0
; MAXIMIZE-NEXT: store float [[TMP2018]], ptr [[TMP2002]], align 4
; MAXIMIZE-NEXT: [[TMP2019:%.*]] = extractelement <16 x float> [[TMP2001]], i64 1
; MAXIMIZE-NEXT: store float [[TMP2019]], ptr [[TMP2003]], align 4
; MAXIMIZE-NEXT: [[TMP2020:%.*]] = extractelement <16 x float> [[TMP2001]], i64 2
; MAXIMIZE-NEXT: store float [[TMP2020]], ptr [[TMP2004]], align 4
; MAXIMIZE-NEXT: [[TMP2021:%.*]] = extractelement <16 x float> [[TMP2001]], i64 3
; MAXIMIZE-NEXT: store float [[TMP2021]], ptr [[TMP2005]], align 4
; MAXIMIZE-NEXT: [[TMP2022:%.*]] = extractelement <16 x float> [[TMP2001]], i64 4
; MAXIMIZE-NEXT: store float [[TMP2022]], ptr [[TMP2006]], align 4
; MAXIMIZE-NEXT: [[TMP2023:%.*]] = extractelement <16 x float> [[TMP2001]], i64 5
; MAXIMIZE-NEXT: store float [[TMP2023]], ptr [[TMP2007]], align 4
; MAXIMIZE-NEXT: [[TMP2024:%.*]] = extractelement <16 x float> [[TMP2001]], i64 6
; MAXIMIZE-NEXT: store float [[TMP2024]], ptr [[TMP2008]], align 4
; MAXIMIZE-NEXT: [[TMP2025:%.*]] = extractelement <16 x float> [[TMP2001]], i64 7
; MAXIMIZE-NEXT: store float [[TMP2025]], ptr [[TMP2009]], align 4
; MAXIMIZE-NEXT: [[TMP2026:%.*]] = extractelement <16 x float> [[TMP2001]], i64 8
; MAXIMIZE-NEXT: store float [[TMP2026]], ptr [[TMP2010]], align 4
; MAXIMIZE-NEXT: [[TMP2027:%.*]] = extractelement <16 x float> [[TMP2001]], i64 9
; MAXIMIZE-NEXT: store float [[TMP2027]], ptr [[TMP2011]], align 4
; MAXIMIZE-NEXT: [[TMP2028:%.*]] = extractelement <16 x float> [[TMP2001]], i64 10
; MAXIMIZE-NEXT: store float [[TMP2028]], ptr [[TMP2012]], align 4
; MAXIMIZE-NEXT: [[TMP2029:%.*]] = extractelement <16 x float> [[TMP2001]], i64 11
; MAXIMIZE-NEXT: store float [[TMP2029]], ptr [[TMP2013]], align 4
; MAXIMIZE-NEXT: [[TMP2030:%.*]] = extractelement <16 x float> [[TMP2001]], i64 12
; MAXIMIZE-NEXT: store float [[TMP2030]], ptr [[TMP2014]], align 4
; MAXIMIZE-NEXT: [[TMP2031:%.*]] = extractelement <16 x float> [[TMP2001]], i64 13
; MAXIMIZE-NEXT: store float [[TMP2031]], ptr [[TMP2015]], align 4
; MAXIMIZE-NEXT: [[TMP2032:%.*]] = extractelement <16 x float> [[TMP2001]], i64 14
; MAXIMIZE-NEXT: store float [[TMP2032]], ptr [[TMP2016]], align 4
; MAXIMIZE-NEXT: [[TMP2033:%.*]] = extractelement <16 x float> [[TMP2001]], i64 15
; MAXIMIZE-NEXT: store float [[TMP2033]], ptr [[TMP2017]], align 4
; MAXIMIZE-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 16
; MAXIMIZE-NEXT: [[VEC_IND_NEXT]] = add nuw nsw <16 x i32> [[VEC_IND]], splat (i32 16)
; MAXIMIZE-NEXT: [[TMP2034:%.*]] = icmp eq i32 [[INDEX_NEXT]], [[N_VEC]]
; MAXIMIZE-NEXT: br i1 [[TMP2034]], label %[[MIDDLE_BLOCK:.*]], label %[[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
; MAXIMIZE: [[MIDDLE_BLOCK]]:
; MAXIMIZE-NEXT: [[CMP_N:%.*]] = icmp eq i32 [[I5]], [[N_VEC]]
; MAXIMIZE-NEXT: br i1 [[CMP_N]], label %[[BB7:.*]], label %[[SCALAR_PH]]
; MAXIMIZE: [[SCALAR_PH]]:
; MAXIMIZE-NEXT: [[BC_RESUME_VAL:%.*]] = phi i32 [ [[N_VEC]], %[[MIDDLE_BLOCK]] ], [ 0, %[[BB]] ]
; MAXIMIZE-NEXT: br label %[[BB8:.*]]
; MAXIMIZE: [[BB7]]:
; MAXIMIZE-NEXT: ret void
; MAXIMIZE: [[BB8]]:
; MAXIMIZE-NEXT: [[I9:%.*]] = phi i32 [ [[I238:%.*]], %[[BB8]] ], [ [[BC_RESUME_VAL]], %[[SCALAR_PH]] ]
; MAXIMIZE-NEXT: [[I10:%.*]] = getelementptr inbounds nuw [18 x i8], ptr [[ARG]], i32 [[I9]]
; MAXIMIZE-NEXT: [[I11:%.*]] = load i16, ptr [[I10]], align 2
; MAXIMIZE-NEXT: [[I12:%.*]] = zext i16 [[I11]] to i32
; MAXIMIZE-NEXT: [[I13:%.*]] = shl i32 [[I12]], 17
; MAXIMIZE-NEXT: [[I14:%.*]] = lshr exact i32 [[I13]], 4
; MAXIMIZE-NEXT: [[I15:%.*]] = or disjoint i32 [[I14]], 1879048192
; MAXIMIZE-NEXT: [[I16:%.*]] = bitcast i32 [[I15]] to float
; MAXIMIZE-NEXT: [[I17:%.*]] = and i32 [[I12]], 32767
; MAXIMIZE-NEXT: [[I18:%.*]] = or disjoint i32 [[I17]], 1056964608
; MAXIMIZE-NEXT: [[I19:%.*]] = bitcast i32 [[I18]] to float
; MAXIMIZE-NEXT: [[I20:%.*]] = icmp ult i32 [[I13]], 134217728
; MAXIMIZE-NEXT: [[I21:%.*]] = fadd float [[I19]], -5.000000e-01
; MAXIMIZE-NEXT: [[I22:%.*]] = fmul float [[I16]], 1.925930e-34
; MAXIMIZE-NEXT: [[I23:%.*]] = select i1 [[I20]], float [[I21]], float [[I22]]
; MAXIMIZE-NEXT: [[I24:%.*]] = bitcast float [[I23]] to i32
; MAXIMIZE-NEXT: [[I25:%.*]] = sext i16 [[I11]] to i32
; MAXIMIZE-NEXT: [[I26:%.*]] = and i32 [[I25]], -2147483648
; MAXIMIZE-NEXT: [[I27:%.*]] = or i32 [[I26]], [[I24]]
; MAXIMIZE-NEXT: [[I28:%.*]] = bitcast i32 [[I27]] to float
; MAXIMIZE-NEXT: [[I29:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 2
; MAXIMIZE-NEXT: [[I30:%.*]] = shl nsw i32 [[I9]], 7
; MAXIMIZE-NEXT: [[I31:%.*]] = getelementptr inbounds nuw i8, ptr [[ARG1]], i32 [[I30]]
; MAXIMIZE-NEXT: [[I32:%.*]] = load i8, ptr [[I29]], align 1
; MAXIMIZE-NEXT: [[I33:%.*]] = zext i8 [[I32]] to i32
; MAXIMIZE-NEXT: [[I34:%.*]] = and i32 [[I33]], 15
; MAXIMIZE-NEXT: [[I35:%.*]] = add nsw i32 [[I34]], -8
; MAXIMIZE-NEXT: [[I36:%.*]] = lshr i32 [[I33]], 4
; MAXIMIZE-NEXT: [[I37:%.*]] = add nsw i32 [[I36]], -8
; MAXIMIZE-NEXT: [[I38:%.*]] = sitofp i32 [[I35]] to float
; MAXIMIZE-NEXT: [[I39:%.*]] = fmul float [[I28]], [[I38]]
; MAXIMIZE-NEXT: store float [[I39]], ptr [[I31]], align 4
; MAXIMIZE-NEXT: [[I40:%.*]] = sitofp i32 [[I37]] to float
; MAXIMIZE-NEXT: [[I41:%.*]] = fmul float [[I28]], [[I40]]
; MAXIMIZE-NEXT: [[I42:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 64
; MAXIMIZE-NEXT: store float [[I41]], ptr [[I42]], align 4
; MAXIMIZE-NEXT: [[I43:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 3
; MAXIMIZE-NEXT: [[I44:%.*]] = load i8, ptr [[I43]], align 1
; MAXIMIZE-NEXT: [[I45:%.*]] = zext i8 [[I44]] to i32
; MAXIMIZE-NEXT: [[I46:%.*]] = and i32 [[I45]], 15
; MAXIMIZE-NEXT: [[I47:%.*]] = add nsw i32 [[I46]], -8
; MAXIMIZE-NEXT: [[I48:%.*]] = lshr i32 [[I45]], 4
; MAXIMIZE-NEXT: [[I49:%.*]] = add nsw i32 [[I48]], -8
; MAXIMIZE-NEXT: [[I50:%.*]] = sitofp i32 [[I47]] to float
; MAXIMIZE-NEXT: [[I51:%.*]] = fmul float [[I28]], [[I50]]
; MAXIMIZE-NEXT: [[I52:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 4
; MAXIMIZE-NEXT: store float [[I51]], ptr [[I52]], align 4
; MAXIMIZE-NEXT: [[I53:%.*]] = sitofp i32 [[I49]] to float
; MAXIMIZE-NEXT: [[I54:%.*]] = fmul float [[I28]], [[I53]]
; MAXIMIZE-NEXT: [[I55:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 68
; MAXIMIZE-NEXT: store float [[I54]], ptr [[I55]], align 4
; MAXIMIZE-NEXT: [[I56:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 4
; MAXIMIZE-NEXT: [[I57:%.*]] = load i8, ptr [[I56]], align 1
; MAXIMIZE-NEXT: [[I58:%.*]] = zext i8 [[I57]] to i32
; MAXIMIZE-NEXT: [[I59:%.*]] = and i32 [[I58]], 15
; MAXIMIZE-NEXT: [[I60:%.*]] = add nsw i32 [[I59]], -8
; MAXIMIZE-NEXT: [[I61:%.*]] = lshr i32 [[I58]], 4
; MAXIMIZE-NEXT: [[I62:%.*]] = add nsw i32 [[I61]], -8
; MAXIMIZE-NEXT: [[I63:%.*]] = sitofp i32 [[I60]] to float
; MAXIMIZE-NEXT: [[I64:%.*]] = fmul float [[I28]], [[I63]]
; MAXIMIZE-NEXT: [[I65:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 8
; MAXIMIZE-NEXT: store float [[I64]], ptr [[I65]], align 4
; MAXIMIZE-NEXT: [[I66:%.*]] = sitofp i32 [[I62]] to float
; MAXIMIZE-NEXT: [[I67:%.*]] = fmul float [[I28]], [[I66]]
; MAXIMIZE-NEXT: [[I68:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 72
; MAXIMIZE-NEXT: store float [[I67]], ptr [[I68]], align 4
; MAXIMIZE-NEXT: [[I69:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 5
; MAXIMIZE-NEXT: [[I70:%.*]] = load i8, ptr [[I69]], align 1
; MAXIMIZE-NEXT: [[I71:%.*]] = zext i8 [[I70]] to i32
; MAXIMIZE-NEXT: [[I72:%.*]] = and i32 [[I71]], 15
; MAXIMIZE-NEXT: [[I73:%.*]] = add nsw i32 [[I72]], -8
; MAXIMIZE-NEXT: [[I74:%.*]] = lshr i32 [[I71]], 4
; MAXIMIZE-NEXT: [[I75:%.*]] = add nsw i32 [[I74]], -8
; MAXIMIZE-NEXT: [[I76:%.*]] = sitofp i32 [[I73]] to float
; MAXIMIZE-NEXT: [[I77:%.*]] = fmul float [[I28]], [[I76]]
; MAXIMIZE-NEXT: [[I78:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 12
; MAXIMIZE-NEXT: store float [[I77]], ptr [[I78]], align 4
; MAXIMIZE-NEXT: [[I79:%.*]] = sitofp i32 [[I75]] to float
; MAXIMIZE-NEXT: [[I80:%.*]] = fmul float [[I28]], [[I79]]
; MAXIMIZE-NEXT: [[I81:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 76
; MAXIMIZE-NEXT: store float [[I80]], ptr [[I81]], align 4
; MAXIMIZE-NEXT: [[I82:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 6
; MAXIMIZE-NEXT: [[I83:%.*]] = load i8, ptr [[I82]], align 1
; MAXIMIZE-NEXT: [[I84:%.*]] = zext i8 [[I83]] to i32
; MAXIMIZE-NEXT: [[I85:%.*]] = and i32 [[I84]], 15
; MAXIMIZE-NEXT: [[I86:%.*]] = add nsw i32 [[I85]], -8
; MAXIMIZE-NEXT: [[I87:%.*]] = lshr i32 [[I84]], 4
; MAXIMIZE-NEXT: [[I88:%.*]] = add nsw i32 [[I87]], -8
; MAXIMIZE-NEXT: [[I89:%.*]] = sitofp i32 [[I86]] to float
; MAXIMIZE-NEXT: [[I90:%.*]] = fmul float [[I28]], [[I89]]
; MAXIMIZE-NEXT: [[I91:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 16
; MAXIMIZE-NEXT: store float [[I90]], ptr [[I91]], align 4
; MAXIMIZE-NEXT: [[I92:%.*]] = sitofp i32 [[I88]] to float
; MAXIMIZE-NEXT: [[I93:%.*]] = fmul float [[I28]], [[I92]]
; MAXIMIZE-NEXT: [[I94:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 80
; MAXIMIZE-NEXT: store float [[I93]], ptr [[I94]], align 4
; MAXIMIZE-NEXT: [[I95:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 7
; MAXIMIZE-NEXT: [[I96:%.*]] = load i8, ptr [[I95]], align 1
; MAXIMIZE-NEXT: [[I97:%.*]] = zext i8 [[I96]] to i32
; MAXIMIZE-NEXT: [[I98:%.*]] = and i32 [[I97]], 15
; MAXIMIZE-NEXT: [[I99:%.*]] = add nsw i32 [[I98]], -8
; MAXIMIZE-NEXT: [[I100:%.*]] = lshr i32 [[I97]], 4
; MAXIMIZE-NEXT: [[I101:%.*]] = add nsw i32 [[I100]], -8
; MAXIMIZE-NEXT: [[I102:%.*]] = sitofp i32 [[I99]] to float
; MAXIMIZE-NEXT: [[I103:%.*]] = fmul float [[I28]], [[I102]]
; MAXIMIZE-NEXT: [[I104:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 20
; MAXIMIZE-NEXT: store float [[I103]], ptr [[I104]], align 4
; MAXIMIZE-NEXT: [[I105:%.*]] = sitofp i32 [[I101]] to float
; MAXIMIZE-NEXT: [[I106:%.*]] = fmul float [[I28]], [[I105]]
; MAXIMIZE-NEXT: [[I107:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 84
; MAXIMIZE-NEXT: store float [[I106]], ptr [[I107]], align 4
; MAXIMIZE-NEXT: [[I108:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 8
; MAXIMIZE-NEXT: [[I109:%.*]] = load i8, ptr [[I108]], align 1
; MAXIMIZE-NEXT: [[I110:%.*]] = zext i8 [[I109]] to i32
; MAXIMIZE-NEXT: [[I111:%.*]] = and i32 [[I110]], 15
; MAXIMIZE-NEXT: [[I112:%.*]] = add nsw i32 [[I111]], -8
; MAXIMIZE-NEXT: [[I113:%.*]] = lshr i32 [[I110]], 4
; MAXIMIZE-NEXT: [[I114:%.*]] = add nsw i32 [[I113]], -8
; MAXIMIZE-NEXT: [[I115:%.*]] = sitofp i32 [[I112]] to float
; MAXIMIZE-NEXT: [[I116:%.*]] = fmul float [[I28]], [[I115]]
; MAXIMIZE-NEXT: [[I117:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 24
; MAXIMIZE-NEXT: store float [[I116]], ptr [[I117]], align 4
; MAXIMIZE-NEXT: [[I118:%.*]] = sitofp i32 [[I114]] to float
; MAXIMIZE-NEXT: [[I119:%.*]] = fmul float [[I28]], [[I118]]
; MAXIMIZE-NEXT: [[I120:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 88
; MAXIMIZE-NEXT: store float [[I119]], ptr [[I120]], align 4
; MAXIMIZE-NEXT: [[I121:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 9
; MAXIMIZE-NEXT: [[I122:%.*]] = load i8, ptr [[I121]], align 1
; MAXIMIZE-NEXT: [[I123:%.*]] = zext i8 [[I122]] to i32
; MAXIMIZE-NEXT: [[I124:%.*]] = and i32 [[I123]], 15
; MAXIMIZE-NEXT: [[I125:%.*]] = add nsw i32 [[I124]], -8
; MAXIMIZE-NEXT: [[I126:%.*]] = lshr i32 [[I123]], 4
; MAXIMIZE-NEXT: [[I127:%.*]] = add nsw i32 [[I126]], -8
; MAXIMIZE-NEXT: [[I128:%.*]] = sitofp i32 [[I125]] to float
; MAXIMIZE-NEXT: [[I129:%.*]] = fmul float [[I28]], [[I128]]
; MAXIMIZE-NEXT: [[I130:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 28
; MAXIMIZE-NEXT: store float [[I129]], ptr [[I130]], align 4
; MAXIMIZE-NEXT: [[I131:%.*]] = sitofp i32 [[I127]] to float
; MAXIMIZE-NEXT: [[I132:%.*]] = fmul float [[I28]], [[I131]]
; MAXIMIZE-NEXT: [[I133:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 92
; MAXIMIZE-NEXT: store float [[I132]], ptr [[I133]], align 4
; MAXIMIZE-NEXT: [[I134:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 10
; MAXIMIZE-NEXT: [[I135:%.*]] = load i8, ptr [[I134]], align 1
; MAXIMIZE-NEXT: [[I136:%.*]] = zext i8 [[I135]] to i32
; MAXIMIZE-NEXT: [[I137:%.*]] = and i32 [[I136]], 15
; MAXIMIZE-NEXT: [[I138:%.*]] = add nsw i32 [[I137]], -8
; MAXIMIZE-NEXT: [[I139:%.*]] = lshr i32 [[I136]], 4
; MAXIMIZE-NEXT: [[I140:%.*]] = add nsw i32 [[I139]], -8
; MAXIMIZE-NEXT: [[I141:%.*]] = sitofp i32 [[I138]] to float
; MAXIMIZE-NEXT: [[I142:%.*]] = fmul float [[I28]], [[I141]]
; MAXIMIZE-NEXT: [[I143:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 32
; MAXIMIZE-NEXT: store float [[I142]], ptr [[I143]], align 4
; MAXIMIZE-NEXT: [[I144:%.*]] = sitofp i32 [[I140]] to float
; MAXIMIZE-NEXT: [[I145:%.*]] = fmul float [[I28]], [[I144]]
; MAXIMIZE-NEXT: [[I146:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 96
; MAXIMIZE-NEXT: store float [[I145]], ptr [[I146]], align 4
; MAXIMIZE-NEXT: [[I147:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 11
; MAXIMIZE-NEXT: [[I148:%.*]] = load i8, ptr [[I147]], align 1
; MAXIMIZE-NEXT: [[I149:%.*]] = zext i8 [[I148]] to i32
; MAXIMIZE-NEXT: [[I150:%.*]] = and i32 [[I149]], 15
; MAXIMIZE-NEXT: [[I151:%.*]] = add nsw i32 [[I150]], -8
; MAXIMIZE-NEXT: [[I152:%.*]] = lshr i32 [[I149]], 4
; MAXIMIZE-NEXT: [[I153:%.*]] = add nsw i32 [[I152]], -8
; MAXIMIZE-NEXT: [[I154:%.*]] = sitofp i32 [[I151]] to float
; MAXIMIZE-NEXT: [[I155:%.*]] = fmul float [[I28]], [[I154]]
; MAXIMIZE-NEXT: [[I156:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 36
; MAXIMIZE-NEXT: store float [[I155]], ptr [[I156]], align 4
; MAXIMIZE-NEXT: [[I157:%.*]] = sitofp i32 [[I153]] to float
; MAXIMIZE-NEXT: [[I158:%.*]] = fmul float [[I28]], [[I157]]
; MAXIMIZE-NEXT: [[I159:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 100
; MAXIMIZE-NEXT: store float [[I158]], ptr [[I159]], align 4
; MAXIMIZE-NEXT: [[I160:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 12
; MAXIMIZE-NEXT: [[I161:%.*]] = load i8, ptr [[I160]], align 1
; MAXIMIZE-NEXT: [[I162:%.*]] = zext i8 [[I161]] to i32
; MAXIMIZE-NEXT: [[I163:%.*]] = and i32 [[I162]], 15
; MAXIMIZE-NEXT: [[I164:%.*]] = add nsw i32 [[I163]], -8
; MAXIMIZE-NEXT: [[I165:%.*]] = lshr i32 [[I162]], 4
; MAXIMIZE-NEXT: [[I166:%.*]] = add nsw i32 [[I165]], -8
; MAXIMIZE-NEXT: [[I167:%.*]] = sitofp i32 [[I164]] to float
; MAXIMIZE-NEXT: [[I168:%.*]] = fmul float [[I28]], [[I167]]
; MAXIMIZE-NEXT: [[I169:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 40
; MAXIMIZE-NEXT: store float [[I168]], ptr [[I169]], align 4
; MAXIMIZE-NEXT: [[I170:%.*]] = sitofp i32 [[I166]] to float
; MAXIMIZE-NEXT: [[I171:%.*]] = fmul float [[I28]], [[I170]]
; MAXIMIZE-NEXT: [[I172:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 104
; MAXIMIZE-NEXT: store float [[I171]], ptr [[I172]], align 4
; MAXIMIZE-NEXT: [[I173:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 13
; MAXIMIZE-NEXT: [[I174:%.*]] = load i8, ptr [[I173]], align 1
; MAXIMIZE-NEXT: [[I175:%.*]] = zext i8 [[I174]] to i32
; MAXIMIZE-NEXT: [[I176:%.*]] = and i32 [[I175]], 15
; MAXIMIZE-NEXT: [[I177:%.*]] = add nsw i32 [[I176]], -8
; MAXIMIZE-NEXT: [[I178:%.*]] = lshr i32 [[I175]], 4
; MAXIMIZE-NEXT: [[I179:%.*]] = add nsw i32 [[I178]], -8
; MAXIMIZE-NEXT: [[I180:%.*]] = sitofp i32 [[I177]] to float
; MAXIMIZE-NEXT: [[I181:%.*]] = fmul float [[I28]], [[I180]]
; MAXIMIZE-NEXT: [[I182:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 44
; MAXIMIZE-NEXT: store float [[I181]], ptr [[I182]], align 4
; MAXIMIZE-NEXT: [[I183:%.*]] = sitofp i32 [[I179]] to float
; MAXIMIZE-NEXT: [[I184:%.*]] = fmul float [[I28]], [[I183]]
; MAXIMIZE-NEXT: [[I185:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 108
; MAXIMIZE-NEXT: store float [[I184]], ptr [[I185]], align 4
; MAXIMIZE-NEXT: [[I186:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 14
; MAXIMIZE-NEXT: [[I187:%.*]] = load i8, ptr [[I186]], align 1
; MAXIMIZE-NEXT: [[I188:%.*]] = zext i8 [[I187]] to i32
; MAXIMIZE-NEXT: [[I189:%.*]] = and i32 [[I188]], 15
; MAXIMIZE-NEXT: [[I190:%.*]] = add nsw i32 [[I189]], -8
; MAXIMIZE-NEXT: [[I191:%.*]] = lshr i32 [[I188]], 4
; MAXIMIZE-NEXT: [[I192:%.*]] = add nsw i32 [[I191]], -8
; MAXIMIZE-NEXT: [[I193:%.*]] = sitofp i32 [[I190]] to float
; MAXIMIZE-NEXT: [[I194:%.*]] = fmul float [[I28]], [[I193]]
; MAXIMIZE-NEXT: [[I195:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 48
; MAXIMIZE-NEXT: store float [[I194]], ptr [[I195]], align 4
; MAXIMIZE-NEXT: [[I196:%.*]] = sitofp i32 [[I192]] to float
; MAXIMIZE-NEXT: [[I197:%.*]] = fmul float [[I28]], [[I196]]
; MAXIMIZE-NEXT: [[I198:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 112
; MAXIMIZE-NEXT: store float [[I197]], ptr [[I198]], align 4
; MAXIMIZE-NEXT: [[I199:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 15
; MAXIMIZE-NEXT: [[I200:%.*]] = load i8, ptr [[I199]], align 1
; MAXIMIZE-NEXT: [[I201:%.*]] = zext i8 [[I200]] to i32
; MAXIMIZE-NEXT: [[I202:%.*]] = and i32 [[I201]], 15
; MAXIMIZE-NEXT: [[I203:%.*]] = add nsw i32 [[I202]], -8
; MAXIMIZE-NEXT: [[I204:%.*]] = lshr i32 [[I201]], 4
; MAXIMIZE-NEXT: [[I205:%.*]] = add nsw i32 [[I204]], -8
; MAXIMIZE-NEXT: [[I206:%.*]] = sitofp i32 [[I203]] to float
; MAXIMIZE-NEXT: [[I207:%.*]] = fmul float [[I28]], [[I206]]
; MAXIMIZE-NEXT: [[I208:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 52
; MAXIMIZE-NEXT: store float [[I207]], ptr [[I208]], align 4
; MAXIMIZE-NEXT: [[I209:%.*]] = sitofp i32 [[I205]] to float
; MAXIMIZE-NEXT: [[I210:%.*]] = fmul float [[I28]], [[I209]]
; MAXIMIZE-NEXT: [[I211:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 116
; MAXIMIZE-NEXT: store float [[I210]], ptr [[I211]], align 4
; MAXIMIZE-NEXT: [[I212:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 16
; MAXIMIZE-NEXT: [[I213:%.*]] = load i8, ptr [[I212]], align 1
; MAXIMIZE-NEXT: [[I214:%.*]] = zext i8 [[I213]] to i32
; MAXIMIZE-NEXT: [[I215:%.*]] = and i32 [[I214]], 15
; MAXIMIZE-NEXT: [[I216:%.*]] = add nsw i32 [[I215]], -8
; MAXIMIZE-NEXT: [[I217:%.*]] = lshr i32 [[I214]], 4
; MAXIMIZE-NEXT: [[I218:%.*]] = add nsw i32 [[I217]], -8
; MAXIMIZE-NEXT: [[I219:%.*]] = sitofp i32 [[I216]] to float
; MAXIMIZE-NEXT: [[I220:%.*]] = fmul float [[I28]], [[I219]]
; MAXIMIZE-NEXT: [[I221:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 56
; MAXIMIZE-NEXT: store float [[I220]], ptr [[I221]], align 4
; MAXIMIZE-NEXT: [[I222:%.*]] = sitofp i32 [[I218]] to float
; MAXIMIZE-NEXT: [[I223:%.*]] = fmul float [[I28]], [[I222]]
; MAXIMIZE-NEXT: [[I224:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 120
; MAXIMIZE-NEXT: store float [[I223]], ptr [[I224]], align 4
; MAXIMIZE-NEXT: [[I225:%.*]] = getelementptr inbounds nuw i8, ptr [[I10]], i32 17
; MAXIMIZE-NEXT: [[I226:%.*]] = load i8, ptr [[I225]], align 1
; MAXIMIZE-NEXT: [[I227:%.*]] = zext i8 [[I226]] to i32
; MAXIMIZE-NEXT: [[I228:%.*]] = and i32 [[I227]], 15
; MAXIMIZE-NEXT: [[I229:%.*]] = add nsw i32 [[I228]], -8
; MAXIMIZE-NEXT: [[I230:%.*]] = lshr i32 [[I227]], 4
; MAXIMIZE-NEXT: [[I231:%.*]] = add nsw i32 [[I230]], -8
; MAXIMIZE-NEXT: [[I232:%.*]] = sitofp i32 [[I229]] to float
; MAXIMIZE-NEXT: [[I233:%.*]] = fmul float [[I28]], [[I232]]
; MAXIMIZE-NEXT: [[I234:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 60
; MAXIMIZE-NEXT: store float [[I233]], ptr [[I234]], align 4
; MAXIMIZE-NEXT: [[I235:%.*]] = sitofp i32 [[I231]] to float
; MAXIMIZE-NEXT: [[I236:%.*]] = fmul float [[I28]], [[I235]]
; MAXIMIZE-NEXT: [[I237:%.*]] = getelementptr inbounds nuw i8, ptr [[I31]], i32 124
; MAXIMIZE-NEXT: store float [[I236]], ptr [[I237]], align 4
; MAXIMIZE-NEXT: [[I238]] = add nuw nsw i32 [[I9]], 1
; MAXIMIZE-NEXT: [[I239:%.*]] = icmp eq i32 [[I238]], [[I5]]
; MAXIMIZE-NEXT: br i1 [[I239]], label %[[BB7]], label %[[BB8]], !llvm.loop [[LOOP3:![0-9]+]]
;
bb:
%i = and i64 %arg2, 31
%i3 = icmp eq i64 %i, 0
%i4 = lshr exact i64 %arg2, 5
%i5 = trunc i64 %i4 to i32
%i6 = icmp sgt i32 %i5, 0
br label %bb8
bb7: ; preds = %bb8
ret void
bb8: ; preds = %bb8, %bb
%i9 = phi i32 [ %i238, %bb8 ], [ 0, %bb ]
%i10 = getelementptr inbounds nuw [18 x i8], ptr %arg, i32 %i9
%i11 = load i16, ptr %i10, align 2
%i12 = zext i16 %i11 to i32
%i13 = shl i32 %i12, 17
%i14 = lshr exact i32 %i13, 4
%i15 = or disjoint i32 %i14, 1879048192
%i16 = bitcast i32 %i15 to float
%i17 = and i32 %i12, 32767
%i18 = or disjoint i32 %i17, 1056964608
%i19 = bitcast i32 %i18 to float
%i20 = icmp ult i32 %i13, 134217728
%i21 = fadd float %i19, -5.000000e-01
%i22 = fmul float %i16, 1.925930e-34
%i23 = select i1 %i20, float %i21, float %i22
%i24 = bitcast float %i23 to i32
%i25 = sext i16 %i11 to i32
%i26 = and i32 %i25, -2147483648
%i27 = or i32 %i26, %i24
%i28 = bitcast i32 %i27 to float
%i29 = getelementptr inbounds nuw i8, ptr %i10, i32 2
%i30 = shl nsw i32 %i9, 7
%i31 = getelementptr inbounds nuw i8, ptr %arg1, i32 %i30
%i32 = load i8, ptr %i29, align 1
%i33 = zext i8 %i32 to i32
%i34 = and i32 %i33, 15
%i35 = add nsw i32 %i34, -8
%i36 = lshr i32 %i33, 4
%i37 = add nsw i32 %i36, -8
%i38 = sitofp i32 %i35 to float
%i39 = fmul float %i28, %i38
store float %i39, ptr %i31, align 4
%i40 = sitofp i32 %i37 to float
%i41 = fmul float %i28, %i40
%i42 = getelementptr inbounds nuw i8, ptr %i31, i32 64
store float %i41, ptr %i42, align 4
%i43 = getelementptr inbounds nuw i8, ptr %i10, i32 3
%i44 = load i8, ptr %i43, align 1
%i45 = zext i8 %i44 to i32
%i46 = and i32 %i45, 15
%i47 = add nsw i32 %i46, -8
%i48 = lshr i32 %i45, 4
%i49 = add nsw i32 %i48, -8
%i50 = sitofp i32 %i47 to float
%i51 = fmul float %i28, %i50
%i52 = getelementptr inbounds nuw i8, ptr %i31, i32 4
store float %i51, ptr %i52, align 4
%i53 = sitofp i32 %i49 to float
%i54 = fmul float %i28, %i53
%i55 = getelementptr inbounds nuw i8, ptr %i31, i32 68
store float %i54, ptr %i55, align 4
%i56 = getelementptr inbounds nuw i8, ptr %i10, i32 4
%i57 = load i8, ptr %i56, align 1
%i58 = zext i8 %i57 to i32
%i59 = and i32 %i58, 15
%i60 = add nsw i32 %i59, -8
%i61 = lshr i32 %i58, 4
%i62 = add nsw i32 %i61, -8
%i63 = sitofp i32 %i60 to float
%i64 = fmul float %i28, %i63
%i65 = getelementptr inbounds nuw i8, ptr %i31, i32 8
store float %i64, ptr %i65, align 4
%i66 = sitofp i32 %i62 to float
%i67 = fmul float %i28, %i66
%i68 = getelementptr inbounds nuw i8, ptr %i31, i32 72
store float %i67, ptr %i68, align 4
%i69 = getelementptr inbounds nuw i8, ptr %i10, i32 5
%i70 = load i8, ptr %i69, align 1
%i71 = zext i8 %i70 to i32
%i72 = and i32 %i71, 15
%i73 = add nsw i32 %i72, -8
%i74 = lshr i32 %i71, 4
%i75 = add nsw i32 %i74, -8
%i76 = sitofp i32 %i73 to float
%i77 = fmul float %i28, %i76
%i78 = getelementptr inbounds nuw i8, ptr %i31, i32 12
store float %i77, ptr %i78, align 4
%i79 = sitofp i32 %i75 to float
%i80 = fmul float %i28, %i79
%i81 = getelementptr inbounds nuw i8, ptr %i31, i32 76
store float %i80, ptr %i81, align 4
%i82 = getelementptr inbounds nuw i8, ptr %i10, i32 6
%i83 = load i8, ptr %i82, align 1
%i84 = zext i8 %i83 to i32
%i85 = and i32 %i84, 15
%i86 = add nsw i32 %i85, -8
%i87 = lshr i32 %i84, 4
%i88 = add nsw i32 %i87, -8
%i89 = sitofp i32 %i86 to float
%i90 = fmul float %i28, %i89
%i91 = getelementptr inbounds nuw i8, ptr %i31, i32 16
store float %i90, ptr %i91, align 4
%i92 = sitofp i32 %i88 to float
%i93 = fmul float %i28, %i92
%i94 = getelementptr inbounds nuw i8, ptr %i31, i32 80
store float %i93, ptr %i94, align 4
%i95 = getelementptr inbounds nuw i8, ptr %i10, i32 7
%i96 = load i8, ptr %i95, align 1
%i97 = zext i8 %i96 to i32
%i98 = and i32 %i97, 15
%i99 = add nsw i32 %i98, -8
%i100 = lshr i32 %i97, 4
%i101 = add nsw i32 %i100, -8
%i102 = sitofp i32 %i99 to float
%i103 = fmul float %i28, %i102
%i104 = getelementptr inbounds nuw i8, ptr %i31, i32 20
store float %i103, ptr %i104, align 4
%i105 = sitofp i32 %i101 to float
%i106 = fmul float %i28, %i105
%i107 = getelementptr inbounds nuw i8, ptr %i31, i32 84
store float %i106, ptr %i107, align 4
%i108 = getelementptr inbounds nuw i8, ptr %i10, i32 8
%i109 = load i8, ptr %i108, align 1
%i110 = zext i8 %i109 to i32
%i111 = and i32 %i110, 15
%i112 = add nsw i32 %i111, -8
%i113 = lshr i32 %i110, 4
%i114 = add nsw i32 %i113, -8
%i115 = sitofp i32 %i112 to float
%i116 = fmul float %i28, %i115
%i117 = getelementptr inbounds nuw i8, ptr %i31, i32 24
store float %i116, ptr %i117, align 4
%i118 = sitofp i32 %i114 to float
%i119 = fmul float %i28, %i118
%i120 = getelementptr inbounds nuw i8, ptr %i31, i32 88
store float %i119, ptr %i120, align 4
%i121 = getelementptr inbounds nuw i8, ptr %i10, i32 9
%i122 = load i8, ptr %i121, align 1
%i123 = zext i8 %i122 to i32
%i124 = and i32 %i123, 15
%i125 = add nsw i32 %i124, -8
%i126 = lshr i32 %i123, 4
%i127 = add nsw i32 %i126, -8
%i128 = sitofp i32 %i125 to float
%i129 = fmul float %i28, %i128
%i130 = getelementptr inbounds nuw i8, ptr %i31, i32 28
store float %i129, ptr %i130, align 4
%i131 = sitofp i32 %i127 to float
%i132 = fmul float %i28, %i131
%i133 = getelementptr inbounds nuw i8, ptr %i31, i32 92
store float %i132, ptr %i133, align 4
%i134 = getelementptr inbounds nuw i8, ptr %i10, i32 10
%i135 = load i8, ptr %i134, align 1
%i136 = zext i8 %i135 to i32
%i137 = and i32 %i136, 15
%i138 = add nsw i32 %i137, -8
%i139 = lshr i32 %i136, 4
%i140 = add nsw i32 %i139, -8
%i141 = sitofp i32 %i138 to float
%i142 = fmul float %i28, %i141
%i143 = getelementptr inbounds nuw i8, ptr %i31, i32 32
store float %i142, ptr %i143, align 4
%i144 = sitofp i32 %i140 to float
%i145 = fmul float %i28, %i144
%i146 = getelementptr inbounds nuw i8, ptr %i31, i32 96
store float %i145, ptr %i146, align 4
%i147 = getelementptr inbounds nuw i8, ptr %i10, i32 11
%i148 = load i8, ptr %i147, align 1
%i149 = zext i8 %i148 to i32
%i150 = and i32 %i149, 15
%i151 = add nsw i32 %i150, -8
%i152 = lshr i32 %i149, 4
%i153 = add nsw i32 %i152, -8
%i154 = sitofp i32 %i151 to float
%i155 = fmul float %i28, %i154
%i156 = getelementptr inbounds nuw i8, ptr %i31, i32 36
store float %i155, ptr %i156, align 4
%i157 = sitofp i32 %i153 to float
%i158 = fmul float %i28, %i157
%i159 = getelementptr inbounds nuw i8, ptr %i31, i32 100
store float %i158, ptr %i159, align 4
%i160 = getelementptr inbounds nuw i8, ptr %i10, i32 12
%i161 = load i8, ptr %i160, align 1
%i162 = zext i8 %i161 to i32
%i163 = and i32 %i162, 15
%i164 = add nsw i32 %i163, -8
%i165 = lshr i32 %i162, 4
%i166 = add nsw i32 %i165, -8
%i167 = sitofp i32 %i164 to float
%i168 = fmul float %i28, %i167
%i169 = getelementptr inbounds nuw i8, ptr %i31, i32 40
store float %i168, ptr %i169, align 4
%i170 = sitofp i32 %i166 to float
%i171 = fmul float %i28, %i170
%i172 = getelementptr inbounds nuw i8, ptr %i31, i32 104
store float %i171, ptr %i172, align 4
%i173 = getelementptr inbounds nuw i8, ptr %i10, i32 13
%i174 = load i8, ptr %i173, align 1
%i175 = zext i8 %i174 to i32
%i176 = and i32 %i175, 15
%i177 = add nsw i32 %i176, -8
%i178 = lshr i32 %i175, 4
%i179 = add nsw i32 %i178, -8
%i180 = sitofp i32 %i177 to float
%i181 = fmul float %i28, %i180
%i182 = getelementptr inbounds nuw i8, ptr %i31, i32 44
store float %i181, ptr %i182, align 4
%i183 = sitofp i32 %i179 to float
%i184 = fmul float %i28, %i183
%i185 = getelementptr inbounds nuw i8, ptr %i31, i32 108
store float %i184, ptr %i185, align 4
%i186 = getelementptr inbounds nuw i8, ptr %i10, i32 14
%i187 = load i8, ptr %i186, align 1
%i188 = zext i8 %i187 to i32
%i189 = and i32 %i188, 15
%i190 = add nsw i32 %i189, -8
%i191 = lshr i32 %i188, 4
%i192 = add nsw i32 %i191, -8
%i193 = sitofp i32 %i190 to float
%i194 = fmul float %i28, %i193
%i195 = getelementptr inbounds nuw i8, ptr %i31, i32 48
store float %i194, ptr %i195, align 4
%i196 = sitofp i32 %i192 to float
%i197 = fmul float %i28, %i196
%i198 = getelementptr inbounds nuw i8, ptr %i31, i32 112
store float %i197, ptr %i198, align 4
%i199 = getelementptr inbounds nuw i8, ptr %i10, i32 15
%i200 = load i8, ptr %i199, align 1
%i201 = zext i8 %i200 to i32
%i202 = and i32 %i201, 15
%i203 = add nsw i32 %i202, -8
%i204 = lshr i32 %i201, 4
%i205 = add nsw i32 %i204, -8
%i206 = sitofp i32 %i203 to float
%i207 = fmul float %i28, %i206
%i208 = getelementptr inbounds nuw i8, ptr %i31, i32 52
store float %i207, ptr %i208, align 4
%i209 = sitofp i32 %i205 to float
%i210 = fmul float %i28, %i209
%i211 = getelementptr inbounds nuw i8, ptr %i31, i32 116
store float %i210, ptr %i211, align 4
%i212 = getelementptr inbounds nuw i8, ptr %i10, i32 16
%i213 = load i8, ptr %i212, align 1
%i214 = zext i8 %i213 to i32
%i215 = and i32 %i214, 15
%i216 = add nsw i32 %i215, -8
%i217 = lshr i32 %i214, 4
%i218 = add nsw i32 %i217, -8
%i219 = sitofp i32 %i216 to float
%i220 = fmul float %i28, %i219
%i221 = getelementptr inbounds nuw i8, ptr %i31, i32 56
store float %i220, ptr %i221, align 4
%i222 = sitofp i32 %i218 to float
%i223 = fmul float %i28, %i222
%i224 = getelementptr inbounds nuw i8, ptr %i31, i32 120
store float %i223, ptr %i224, align 4
%i225 = getelementptr inbounds nuw i8, ptr %i10, i32 17
%i226 = load i8, ptr %i225, align 1
%i227 = zext i8 %i226 to i32
%i228 = and i32 %i227, 15
%i229 = add nsw i32 %i228, -8
%i230 = lshr i32 %i227, 4
%i231 = add nsw i32 %i230, -8
%i232 = sitofp i32 %i229 to float
%i233 = fmul float %i28, %i232
%i234 = getelementptr inbounds nuw i8, ptr %i31, i32 60
store float %i233, ptr %i234, align 4
%i235 = sitofp i32 %i231 to float
%i236 = fmul float %i28, %i235
%i237 = getelementptr inbounds nuw i8, ptr %i31, i32 124
store float %i236, ptr %i237, align 4
%i238 = add nuw nsw i32 %i9, 1
%i239 = icmp eq i32 %i238, %i5
br i1 %i239, label %bb7, label %bb8
}
;.
; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}
; CHECK: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
; CHECK: [[META2]] = !{!"llvm.loop.unroll.runtime.disable"}
; CHECK: [[LOOP3]] = distinct !{[[LOOP3]], [[META2]], [[META1]]}
;.
; MAXIMIZE: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]}
; MAXIMIZE: [[META1]] = !{!"llvm.loop.isvectorized", i32 1}
; MAXIMIZE: [[META2]] = !{!"llvm.loop.unroll.runtime.disable"}
; MAXIMIZE: [[LOOP3]] = distinct !{[[LOOP3]], [[META2]], [[META1]]}
;.