void DequantizeBlock(int block[64], const float quantBlock[64]) {
  for (int c = 0; c < 64; c++) {
    block[c] = (int)(block[c] * quantBlock[c]);
  }
}


x86 assembly (clang, -O0):
<DequantizeBlock>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
cmpl   $0x40,-0x14(%rbp)
jge    1154 <DequantizeBlock+0x54>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
cvtsi2ssl (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mulss  (%rax,%rcx,4),%xmm0
cvttss2si %xmm0,%edx
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1113 <DequantizeBlock+0x13>
pop    %rbp
ret

x86 assembly (clang, -O2):
<DequantizeBlock>:
movups (%rdi),%xmm0
movups 0x10(%rdi),%xmm1
movups 0x20(%rdi),%xmm2
movups 0x30(%rdi),%xmm3
cvtdq2ps %xmm0,%xmm0
movups (%rsi),%xmm4
mulps  %xmm0,%xmm4
cvttps2dq %xmm4,%xmm0
movups %xmm0,(%rdi)
cvtdq2ps %xmm1,%xmm0
movups 0x10(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0x10(%rdi)
cvtdq2ps %xmm2,%xmm0
movups 0x20(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0x20(%rdi)
cvtdq2ps %xmm3,%xmm0
movups 0x30(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0x30(%rdi)
movups 0x40(%rdi),%xmm0
cvtdq2ps %xmm0,%xmm0
movups 0x40(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0x40(%rdi)
movups 0x50(%rdi),%xmm0
cvtdq2ps %xmm0,%xmm0
movups 0x50(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0x50(%rdi)
movups 0x60(%rdi),%xmm0
cvtdq2ps %xmm0,%xmm0
movups 0x60(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0x60(%rdi)
movups 0x70(%rdi),%xmm0
cvtdq2ps %xmm0,%xmm0
movups 0x70(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0x70(%rdi)
movups 0x80(%rdi),%xmm0
cvtdq2ps %xmm0,%xmm0
movups 0x80(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0x80(%rdi)
movups 0x90(%rdi),%xmm0
cvtdq2ps %xmm0,%xmm0
movups 0x90(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0x90(%rdi)
movups 0xa0(%rdi),%xmm0
cvtdq2ps %xmm0,%xmm0
movups 0xa0(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0xa0(%rdi)
movups 0xb0(%rdi),%xmm0
cvtdq2ps %xmm0,%xmm0
movups 0xb0(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0xb0(%rdi)
movups 0xc0(%rdi),%xmm0
cvtdq2ps %xmm0,%xmm0
movups 0xc0(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0xc0(%rdi)
movups 0xd0(%rdi),%xmm0
cvtdq2ps %xmm0,%xmm0
movups 0xd0(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0xd0(%rdi)
movups 0xe0(%rdi),%xmm0
cvtdq2ps %xmm0,%xmm0
movups 0xe0(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0xe0(%rdi)
movups 0xf0(%rdi),%xmm0
cvtdq2ps %xmm0,%xmm0
movups 0xf0(%rsi),%xmm1
mulps  %xmm0,%xmm1
cvttps2dq %xmm1,%xmm0
movups %xmm0,0xf0(%rdi)
ret

LLVM IR (-O0):
define void @DequantizeBlock(i32* %0, float* %1) {
%3 = alloca i32*
%4 = alloca float*
%5 = alloca i32
store i32* %0, i32** %3
store float* %1, float** %4
store i32 0, i32* %5
br label %6
6: ; preds = %27, %2
%7 = load i32, i32* %5
%8 = icmp slt i32 %7, 64
br i1 %8, label %9, label %30
9: ; preds = %6
%10 = load i32*, i32** %3
%11 = load i32, i32* %5
%12 = sext i32 %11 to i64
%13 = getelementptr inbounds i32, i32* %10, i64 %12
%14 = load i32, i32* %13
%15 = sitofp i32 %14 to float
%16 = load float*, float** %4
%17 = load i32, i32* %5
%18 = sext i32 %17 to i64
%19 = getelementptr inbounds float, float* %16, i64 %18
%20 = load float, float* %19
%21 = fmul float %15, %20
%22 = fptosi float %21 to i32
%23 = load i32*, i32** %3
%24 = load i32, i32* %5
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds i32, i32* %23, i64 %25
store i32 %22, i32* %26
br label %27
27: ; preds = %9
%28 = load i32, i32* %5
%29 = add nsw i32 %28, 1
store i32 %29, i32* %5
br label %6
30: ; preds = %6
ret void
}

LLVM IR (-O2):
define void @DequantizeBlock(i32* nocapture %0, float* nocapture %1) {
%3 = bitcast i32* %0 to <4 x i32>*
%4 = load <4 x i32>, <4 x i32>* %3
%5 = sitofp <4 x i32> %4 to <4 x float>
%6 = bitcast float* %1 to <4 x float>*
%7 = load <4 x float>, <4 x float>* %6
%8 = fmul <4 x float> %7, %5
%9 = fptosi <4 x float> %8 to <4 x i32>
%10 = bitcast i32* %0 to <4 x i32>*
store <4 x i32> %9, <4 x i32>* %10
%11 = getelementptr inbounds i32, i32* %0, i64 4
%12 = bitcast i32* %11 to <4 x i32>*
%13 = load <4 x i32>, <4 x i32>* %12
%14 = sitofp <4 x i32> %13 to <4 x float>
%15 = getelementptr inbounds float, float* %1, i64 4
%16 = bitcast float* %15 to <4 x float>*
%17 = load <4 x float>, <4 x float>* %16
%18 = fmul <4 x float> %17, %14
%19 = fptosi <4 x float> %18 to <4 x i32>
%20 = bitcast i32* %11 to <4 x i32>*
store <4 x i32> %19, <4 x i32>* %20
%21 = getelementptr inbounds i32, i32* %0, i64 8
%22 = bitcast i32* %21 to <4 x i32>*
%23 = load <4 x i32>, <4 x i32>* %22
%24 = sitofp <4 x i32> %23 to <4 x float>
%25 = getelementptr inbounds float, float* %1, i64 8
%26 = bitcast float* %25 to <4 x float>*
%27 = load <4 x float>, <4 x float>* %26
%28 = fmul <4 x float> %27, %24
%29 = fptosi <4 x float> %28 to <4 x i32>
%30 = bitcast i32* %21 to <4 x i32>*
store <4 x i32> %29, <4 x i32>* %30
%31 = getelementptr inbounds i32, i32* %0, i64 12
%32 = bitcast i32* %31 to <4 x i32>*
%33 = load <4 x i32>, <4 x i32>* %32
%34 = sitofp <4 x i32> %33 to <4 x float>
%35 = getelementptr inbounds float, float* %1, i64 12
%36 = bitcast float* %35 to <4 x float>*
%37 = load <4 x float>, <4 x float>* %36
%38 = fmul <4 x float> %37, %34
%39 = fptosi <4 x float> %38 to <4 x i32>
%40 = bitcast i32* %31 to <4 x i32>*
store <4 x i32> %39, <4 x i32>* %40
%41 = getelementptr inbounds i32, i32* %0, i64 16
%42 = bitcast i32* %41 to <4 x i32>*
%43 = load <4 x i32>, <4 x i32>* %42
%44 = sitofp <4 x i32> %43 to <4 x float>
%45 = getelementptr inbounds float, float* %1, i64 16
%46 = bitcast float* %45 to <4 x float>*
%47 = load <4 x float>, <4 x float>* %46
%48 = fmul <4 x float> %47, %44
%49 = fptosi <4 x float> %48 to <4 x i32>
%50 = bitcast i32* %41 to <4 x i32>*
store <4 x i32> %49, <4 x i32>* %50
%51 = getelementptr inbounds i32, i32* %0, i64 20
%52 = bitcast i32* %51 to <4 x i32>*
%53 = load <4 x i32>, <4 x i32>* %52
%54 = sitofp <4 x i32> %53 to <4 x float>
%55 = getelementptr inbounds float, float* %1, i64 20
%56 = bitcast float* %55 to <4 x float>*
%57 = load <4 x float>, <4 x float>* %56
%58 = fmul <4 x float> %57, %54
%59 = fptosi <4 x float> %58 to <4 x i32>
%60 = bitcast i32* %51 to <4 x i32>*
store <4 x i32> %59, <4 x i32>* %60
%61 = getelementptr inbounds i32, i32* %0, i64 24
%62 = bitcast i32* %61 to <4 x i32>*
%63 = load <4 x i32>, <4 x i32>* %62
%64 = sitofp <4 x i32> %63 to <4 x float>
%65 = getelementptr inbounds float, float* %1, i64 24
%66 = bitcast float* %65 to <4 x float>*
%67 = load <4 x float>, <4 x float>* %66
%68 = fmul <4 x float> %67, %64
%69 = fptosi <4 x float> %68 to <4 x i32>
%70 = bitcast i32* %61 to <4 x i32>*
store <4 x i32> %69, <4 x i32>* %70
%71 = getelementptr inbounds i32, i32* %0, i64 28
%72 = bitcast i32* %71 to <4 x i32>*
%73 = load <4 x i32>, <4 x i32>* %72
%74 = sitofp <4 x i32> %73 to <4 x float>
%75 = getelementptr inbounds float, float* %1, i64 28
%76 = bitcast float* %75 to <4 x float>*
%77 = load <4 x float>, <4 x float>* %76
%78 = fmul <4 x float> %77, %74
%79 = fptosi <4 x float> %78 to <4 x i32>
%80 = bitcast i32* %71 to <4 x i32>*
store <4 x i32> %79, <4 x i32>* %80
%81 = getelementptr inbounds i32, i32* %0, i64 32
%82 = bitcast i32* %81 to <4 x i32>*
%83 = load <4 x i32>, <4 x i32>* %82
%84 = sitofp <4 x i32> %83 to <4 x float>
%85 = getelementptr inbounds float, float* %1, i64 32
%86 = bitcast float* %85 to <4 x float>*
%87 = load <4 x float>, <4 x float>* %86
%88 = fmul <4 x float> %87, %84
%89 = fptosi <4 x float> %88 to <4 x i32>
%90 = bitcast i32* %81 to <4 x i32>*
store <4 x i32> %89, <4 x i32>* %90
%91 = getelementptr inbounds i32, i32* %0, i64 36
%92 = bitcast i32* %91 to <4 x i32>*
%93 = load <4 x i32>, <4 x i32>* %92
%94 = sitofp <4 x i32> %93 to <4 x float>
%95 = getelementptr inbounds float, float* %1, i64 36
%96 = bitcast float* %95 to <4 x float>*
%97 = load <4 x float>, <4 x float>* %96
%98 = fmul <4 x float> %97, %94
%99 = fptosi <4 x float> %98 to <4 x i32>
%100 = bitcast i32* %91 to <4 x i32>*
store <4 x i32> %99, <4 x i32>* %100
%101 = getelementptr inbounds i32, i32* %0, i64 40
%102 = bitcast i32* %101 to <4 x i32>*
%103 = load <4 x i32>, <4 x i32>* %102
%104 = sitofp <4 x i32> %103 to <4 x float>
%105 = getelementptr inbounds float, float* %1, i64 40
%106 = bitcast float* %105 to <4 x float>*
%107 = load <4 x float>, <4 x float>* %106
%108 = fmul <4 x float> %107, %104
%109 = fptosi <4 x float> %108 to <4 x i32>
%110 = bitcast i32* %101 to <4 x i32>*
store <4 x i32> %109, <4 x i32>* %110
%111 = getelementptr inbounds i32, i32* %0, i64 44
%112 = bitcast i32* %111 to <4 x i32>*
%113 = load <4 x i32>, <4 x i32>* %112
%114 = sitofp <4 x i32> %113 to <4 x float>
%115 = getelementptr inbounds float, float* %1, i64 44
%116 = bitcast float* %115 to <4 x float>*
%117 = load <4 x float>, <4 x float>* %116
%118 = fmul <4 x float> %117, %114
%119 = fptosi <4 x float> %118 to <4 x i32>
%120 = bitcast i32* %111 to <4 x i32>*
store <4 x i32> %119, <4 x i32>* %120
%121 = getelementptr inbounds i32, i32* %0, i64 48
%122 = bitcast i32* %121 to <4 x i32>*
%123 = load <4 x i32>, <4 x i32>* %122
%124 = sitofp <4 x i32> %123 to <4 x float>
%125 = getelementptr inbounds float, float* %1, i64 48
%126 = bitcast float* %125 to <4 x float>*
%127 = load <4 x float>, <4 x float>* %126
%128 = fmul <4 x float> %127, %124
%129 = fptosi <4 x float> %128 to <4 x i32>
%130 = bitcast i32* %121 to <4 x i32>*
store <4 x i32> %129, <4 x i32>* %130
%131 = getelementptr inbounds i32, i32* %0, i64 52
%132 = bitcast i32* %131 to <4 x i32>*
%133 = load <4 x i32>, <4 x i32>* %132
%134 = sitofp <4 x i32> %133 to <4 x float>
%135 = getelementptr inbounds float, float* %1, i64 52
%136 = bitcast float* %135 to <4 x float>*
%137 = load <4 x float>, <4 x float>* %136
%138 = fmul <4 x float> %137, %134
%139 = fptosi <4 x float> %138 to <4 x i32>
%140 = bitcast i32* %131 to <4 x i32>*
store <4 x i32> %139, <4 x i32>* %140
%141 = getelementptr inbounds i32, i32* %0, i64 56
%142 = bitcast i32* %141 to <4 x i32>*
%143 = load <4 x i32>, <4 x i32>* %142
%144 = sitofp <4 x i32> %143 to <4 x float>
%145 = getelementptr inbounds float, float* %1, i64 56
%146 = bitcast float* %145 to <4 x float>*
%147 = load <4 x float>, <4 x float>* %146
%148 = fmul <4 x float> %147, %144
%149 = fptosi <4 x float> %148 to <4 x i32>
%150 = bitcast i32* %141 to <4 x i32>*
store <4 x i32> %149, <4 x i32>* %150
%151 = getelementptr inbounds i32, i32* %0, i64 60
%152 = bitcast i32* %151 to <4 x i32>*
%153 = load <4 x i32>, <4 x i32>* %152
%154 = sitofp <4 x i32> %153 to <4 x float>
%155 = getelementptr inbounds float, float* %1, i64 60
%156 = bitcast float* %155 to <4 x float>*
%157 = load <4 x float>, <4 x float>* %156
%158 = fmul <4 x float> %157, %154
%159 = fptosi <4 x float> %158 to <4 x i32>
%160 = bitcast i32* %151 to <4 x i32>*
store <4 x i32> %159, <4 x i32>* %160
ret void
}