1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -mtriple=x86_64-linux-gnu < %s | FileCheck %s 3 4; Basic test coverage for FREM 5 6define void @frem_f16(half %a0, half %a1, ptr%p3) nounwind { 7; CHECK-LABEL: frem_f16: 8; CHECK: # %bb.0: 9; CHECK-NEXT: pushq %rbx 10; CHECK-NEXT: subq $16, %rsp 11; CHECK-NEXT: movq %rdi, %rbx 12; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 13; CHECK-NEXT: movaps %xmm1, %xmm0 14; CHECK-NEXT: callq __extendhfsf2@PLT 15; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 16; CHECK-NEXT: movd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Folded Reload 17; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 18; CHECK-NEXT: callq __extendhfsf2@PLT 19; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 20; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 21; CHECK-NEXT: callq fmodf@PLT 22; CHECK-NEXT: callq __truncsfhf2@PLT 23; CHECK-NEXT: pextrw $0, %xmm0, %eax 24; CHECK-NEXT: movw %ax, (%rbx) 25; CHECK-NEXT: addq $16, %rsp 26; CHECK-NEXT: popq %rbx 27; CHECK-NEXT: retq 28 %frem = frem half %a0, %a1 29 store half %frem, ptr%p3 30 ret void 31} 32 33define void @frem_f32(float %a0, float %a1, ptr%p3) nounwind { 34; CHECK-LABEL: frem_f32: 35; CHECK: # %bb.0: 36; CHECK-NEXT: pushq %rbx 37; CHECK-NEXT: movq %rdi, %rbx 38; CHECK-NEXT: callq fmodf@PLT 39; CHECK-NEXT: movss %xmm0, (%rbx) 40; CHECK-NEXT: popq %rbx 41; CHECK-NEXT: retq 42 %frem = frem float %a0, %a1 43 store float %frem, ptr%p3 44 ret void 45} 46 47define void @frem_f64(double %a0, double %a1, ptr%p3) nounwind { 48; CHECK-LABEL: frem_f64: 49; CHECK: # %bb.0: 50; CHECK-NEXT: pushq %rbx 51; CHECK-NEXT: movq %rdi, %rbx 52; CHECK-NEXT: callq fmod@PLT 53; CHECK-NEXT: movsd %xmm0, (%rbx) 54; CHECK-NEXT: popq %rbx 55; CHECK-NEXT: retq 56 %frem = frem double %a0, %a1 57 store double %frem, ptr%p3 58 ret void 59} 60 61define void @frem_f80(x86_fp80 %a0, x86_fp80 %a1, ptr%p3) nounwind { 62; CHECK-LABEL: frem_f80: 63; CHECK: # %bb.0: 64; CHECK-NEXT: pushq %rbx 65; CHECK-NEXT: subq $32, %rsp 66; CHECK-NEXT: movq %rdi, %rbx 67; CHECK-NEXT: fldt {{[0-9]+}}(%rsp) 68; CHECK-NEXT: fldt {{[0-9]+}}(%rsp) 69; CHECK-NEXT: fstpt {{[0-9]+}}(%rsp) 70; CHECK-NEXT: fstpt (%rsp) 71; CHECK-NEXT: callq fmodl@PLT 72; CHECK-NEXT: fstpt (%rbx) 73; CHECK-NEXT: addq $32, %rsp 74; CHECK-NEXT: popq %rbx 75; CHECK-NEXT: retq 76 %frem = frem x86_fp80 %a0, %a1 77 store x86_fp80 %frem, ptr%p3 78 ret void 79} 80 81define void @frem_f128(fp128 %a0, fp128 %a1, ptr%p3) nounwind { 82; CHECK-LABEL: frem_f128: 83; CHECK: # %bb.0: 84; CHECK-NEXT: pushq %rbx 85; CHECK-NEXT: movq %rdi, %rbx 86; CHECK-NEXT: callq fmodl@PLT 87; CHECK-NEXT: movaps %xmm0, (%rbx) 88; CHECK-NEXT: popq %rbx 89; CHECK-NEXT: retq 90 %frem = frem fp128 %a0, %a1 91 store fp128 %frem, ptr%p3 92 ret void 93} 94 95define void @frem_v16f32(<16 x float> %a0, <16 x float> %a1, ptr%p3) nounwind { 96; CHECK-LABEL: frem_v16f32: 97; CHECK: # %bb.0: 98; CHECK-NEXT: pushq %rbx 99; CHECK-NEXT: subq $160, %rsp 100; CHECK-NEXT: movq %rdi, %rbx 101; CHECK-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 102; CHECK-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 103; CHECK-NEXT: movaps %xmm5, (%rsp) # 16-byte Spill 104; CHECK-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 105; CHECK-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 106; CHECK-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 107; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 108; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 109; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,3,3,3] 110; CHECK-NEXT: movaps %xmm4, %xmm1 111; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,3],xmm4[3,3] 112; CHECK-NEXT: callq fmodf@PLT 113; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 114; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 115; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 116; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 117; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 118; CHECK-NEXT: callq fmodf@PLT 119; CHECK-NEXT: unpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload 120; CHECK-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1] 121; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 122; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 123; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 124; CHECK-NEXT: callq fmodf@PLT 125; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 126; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 127; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,1,1] 128; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 129; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,1,1,1] 130; CHECK-NEXT: callq fmodf@PLT 131; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 132; CHECK-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 133; CHECK-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload 134; CHECK-NEXT: # xmm1 = xmm1[0],mem[0] 135; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 136; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 137; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,3,3,3] 138; CHECK-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload 139; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,3,3,3] 140; CHECK-NEXT: callq fmodf@PLT 141; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 142; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 143; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 144; CHECK-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload 145; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 146; CHECK-NEXT: callq fmodf@PLT 147; CHECK-NEXT: unpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload 148; CHECK-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1] 149; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 150; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 151; CHECK-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload 152; CHECK-NEXT: callq fmodf@PLT 153; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 154; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 155; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,1,1] 156; CHECK-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload 157; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,1,1,1] 158; CHECK-NEXT: callq fmodf@PLT 159; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 160; CHECK-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 161; CHECK-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload 162; CHECK-NEXT: # xmm1 = xmm1[0],mem[0] 163; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 164; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 165; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,3,3,3] 166; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 167; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,3,3,3] 168; CHECK-NEXT: callq fmodf@PLT 169; CHECK-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill 170; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 171; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 172; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 173; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 174; CHECK-NEXT: callq fmodf@PLT 175; CHECK-NEXT: unpcklps (%rsp), %xmm0 # 16-byte Folded Reload 176; CHECK-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1] 177; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 178; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 179; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 180; CHECK-NEXT: callq fmodf@PLT 181; CHECK-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill 182; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 183; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,1,1] 184; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 185; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,1,1,1] 186; CHECK-NEXT: callq fmodf@PLT 187; CHECK-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload 188; CHECK-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 189; CHECK-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload 190; CHECK-NEXT: # xmm1 = xmm1[0],mem[0] 191; CHECK-NEXT: movaps %xmm1, (%rsp) # 16-byte Spill 192; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 193; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,3,3,3] 194; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 195; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,3,3,3] 196; CHECK-NEXT: callq fmodf@PLT 197; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 198; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 199; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 200; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 201; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 202; CHECK-NEXT: callq fmodf@PLT 203; CHECK-NEXT: unpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload 204; CHECK-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1] 205; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 206; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 207; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 208; CHECK-NEXT: callq fmodf@PLT 209; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 210; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 211; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,1,1] 212; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 213; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,1,1,1] 214; CHECK-NEXT: callq fmodf@PLT 215; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 216; CHECK-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 217; CHECK-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload 218; CHECK-NEXT: # xmm1 = xmm1[0],mem[0] 219; CHECK-NEXT: movaps %xmm1, 48(%rbx) 220; CHECK-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload 221; CHECK-NEXT: movaps %xmm0, 32(%rbx) 222; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 223; CHECK-NEXT: movaps %xmm0, 16(%rbx) 224; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 225; CHECK-NEXT: movaps %xmm0, (%rbx) 226; CHECK-NEXT: addq $160, %rsp 227; CHECK-NEXT: popq %rbx 228; CHECK-NEXT: retq 229 %frem = frem <16 x float> %a0, %a1 230 store <16 x float> %frem, ptr%p3 231 ret void 232} 233 234define void @frem_v8f32(<8 x float> %a0, <8 x float> %a1, ptr%p3) nounwind { 235; CHECK-LABEL: frem_v8f32: 236; CHECK: # %bb.0: 237; CHECK-NEXT: pushq %rbx 238; CHECK-NEXT: subq $96, %rsp 239; CHECK-NEXT: movq %rdi, %rbx 240; CHECK-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 241; CHECK-NEXT: movaps %xmm2, (%rsp) # 16-byte Spill 242; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 243; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 244; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,3,3,3] 245; CHECK-NEXT: movaps %xmm2, %xmm1 246; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,3],xmm2[3,3] 247; CHECK-NEXT: callq fmodf@PLT 248; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 249; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 250; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 251; CHECK-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload 252; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 253; CHECK-NEXT: callq fmodf@PLT 254; CHECK-NEXT: unpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload 255; CHECK-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1] 256; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 257; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 258; CHECK-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload 259; CHECK-NEXT: callq fmodf@PLT 260; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 261; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 262; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,1,1] 263; CHECK-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload 264; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,1,1,1] 265; CHECK-NEXT: callq fmodf@PLT 266; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 267; CHECK-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 268; CHECK-NEXT: unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload 269; CHECK-NEXT: # xmm1 = xmm1[0],mem[0] 270; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 271; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 272; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,3,3,3] 273; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 274; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,3,3,3] 275; CHECK-NEXT: callq fmodf@PLT 276; CHECK-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill 277; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 278; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 279; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 280; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 281; CHECK-NEXT: callq fmodf@PLT 282; CHECK-NEXT: unpcklps (%rsp), %xmm0 # 16-byte Folded Reload 283; CHECK-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1] 284; CHECK-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill 285; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 286; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 287; CHECK-NEXT: callq fmodf@PLT 288; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 289; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 290; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,1,1] 291; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 292; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,1,1,1] 293; CHECK-NEXT: callq fmodf@PLT 294; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 295; CHECK-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 296; CHECK-NEXT: unpcklpd (%rsp), %xmm1 # 16-byte Folded Reload 297; CHECK-NEXT: # xmm1 = xmm1[0],mem[0] 298; CHECK-NEXT: movaps %xmm1, 16(%rbx) 299; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 300; CHECK-NEXT: movaps %xmm0, (%rbx) 301; CHECK-NEXT: addq $96, %rsp 302; CHECK-NEXT: popq %rbx 303; CHECK-NEXT: retq 304 %frem = frem <8 x float> %a0, %a1 305 store <8 x float> %frem, ptr%p3 306 ret void 307} 308 309define void @frem_v4f32(<4 x float> %a0, <4 x float> %a1, ptr%p3) nounwind { 310; CHECK-LABEL: frem_v4f32: 311; CHECK: # %bb.0: 312; CHECK-NEXT: pushq %rbx 313; CHECK-NEXT: subq $64, %rsp 314; CHECK-NEXT: movq %rdi, %rbx 315; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 316; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 317; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[3,3,3,3] 318; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[3,3,3,3] 319; CHECK-NEXT: callq fmodf@PLT 320; CHECK-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill 321; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 322; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 323; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 324; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 325; CHECK-NEXT: callq fmodf@PLT 326; CHECK-NEXT: unpcklps (%rsp), %xmm0 # 16-byte Folded Reload 327; CHECK-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1] 328; CHECK-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill 329; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 330; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 331; CHECK-NEXT: callq fmodf@PLT 332; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 333; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 334; CHECK-NEXT: shufps {{.*#+}} xmm0 = xmm0[1,1,1,1] 335; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 336; CHECK-NEXT: shufps {{.*#+}} xmm1 = xmm1[1,1,1,1] 337; CHECK-NEXT: callq fmodf@PLT 338; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 339; CHECK-NEXT: unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1] 340; CHECK-NEXT: unpcklpd (%rsp), %xmm1 # 16-byte Folded Reload 341; CHECK-NEXT: # xmm1 = xmm1[0],mem[0] 342; CHECK-NEXT: movaps %xmm1, (%rbx) 343; CHECK-NEXT: addq $64, %rsp 344; CHECK-NEXT: popq %rbx 345; CHECK-NEXT: retq 346 %frem = frem <4 x float> %a0, %a1 347 store <4 x float> %frem, ptr%p3 348 ret void 349} 350 351define void @frem_v8f64(<8 x double> %a0, <8 x double> %a1, ptr%p3) nounwind { 352; CHECK-LABEL: frem_v8f64: 353; CHECK: # %bb.0: 354; CHECK-NEXT: pushq %rbx 355; CHECK-NEXT: subq $144, %rsp 356; CHECK-NEXT: movq %rdi, %rbx 357; CHECK-NEXT: movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 358; CHECK-NEXT: movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 359; CHECK-NEXT: movaps %xmm5, (%rsp) # 16-byte Spill 360; CHECK-NEXT: movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 361; CHECK-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 362; CHECK-NEXT: movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 363; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 364; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 365; CHECK-NEXT: movaps %xmm4, %xmm1 366; CHECK-NEXT: callq fmod@PLT 367; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 368; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 369; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 370; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 371; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 372; CHECK-NEXT: callq fmod@PLT 373; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 374; CHECK-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0] 375; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 376; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 377; CHECK-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload 378; CHECK-NEXT: callq fmod@PLT 379; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 380; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 381; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 382; CHECK-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload 383; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 384; CHECK-NEXT: callq fmod@PLT 385; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 386; CHECK-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0] 387; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 388; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 389; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 390; CHECK-NEXT: callq fmod@PLT 391; CHECK-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill 392; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 393; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 394; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 395; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 396; CHECK-NEXT: callq fmod@PLT 397; CHECK-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload 398; CHECK-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0] 399; CHECK-NEXT: movaps %xmm1, (%rsp) # 16-byte Spill 400; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 401; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 402; CHECK-NEXT: callq fmod@PLT 403; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 404; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 405; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 406; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 407; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 408; CHECK-NEXT: callq fmod@PLT 409; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 410; CHECK-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0] 411; CHECK-NEXT: movaps %xmm1, 48(%rbx) 412; CHECK-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload 413; CHECK-NEXT: movaps %xmm0, 32(%rbx) 414; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 415; CHECK-NEXT: movaps %xmm0, 16(%rbx) 416; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 417; CHECK-NEXT: movaps %xmm0, (%rbx) 418; CHECK-NEXT: addq $144, %rsp 419; CHECK-NEXT: popq %rbx 420; CHECK-NEXT: retq 421 %frem = frem <8 x double> %a0, %a1 422 store <8 x double> %frem, ptr%p3 423 ret void 424} 425 426define void @frem_v4f64(<4 x double> %a0, <4 x double> %a1, ptr%p3) nounwind { 427; CHECK-LABEL: frem_v4f64: 428; CHECK: # %bb.0: 429; CHECK-NEXT: pushq %rbx 430; CHECK-NEXT: subq $80, %rsp 431; CHECK-NEXT: movq %rdi, %rbx 432; CHECK-NEXT: movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 433; CHECK-NEXT: movaps %xmm2, (%rsp) # 16-byte Spill 434; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 435; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 436; CHECK-NEXT: movaps %xmm2, %xmm1 437; CHECK-NEXT: callq fmod@PLT 438; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 439; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 440; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 441; CHECK-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload 442; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 443; CHECK-NEXT: callq fmod@PLT 444; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 445; CHECK-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0] 446; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 447; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 448; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 449; CHECK-NEXT: callq fmod@PLT 450; CHECK-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill 451; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 452; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 453; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 454; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 455; CHECK-NEXT: callq fmod@PLT 456; CHECK-NEXT: movaps (%rsp), %xmm1 # 16-byte Reload 457; CHECK-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0] 458; CHECK-NEXT: movaps %xmm1, 16(%rbx) 459; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 460; CHECK-NEXT: movaps %xmm0, (%rbx) 461; CHECK-NEXT: addq $80, %rsp 462; CHECK-NEXT: popq %rbx 463; CHECK-NEXT: retq 464 %frem = frem <4 x double> %a0, %a1 465 store <4 x double> %frem, ptr%p3 466 ret void 467} 468 469define void @frem_v2f64(<2 x double> %a0, <2 x double> %a1, ptr%p3) nounwind { 470; CHECK-LABEL: frem_v2f64: 471; CHECK: # %bb.0: 472; CHECK-NEXT: pushq %rbx 473; CHECK-NEXT: subq $48, %rsp 474; CHECK-NEXT: movq %rdi, %rbx 475; CHECK-NEXT: movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 476; CHECK-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill 477; CHECK-NEXT: callq fmod@PLT 478; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 479; CHECK-NEXT: movaps (%rsp), %xmm0 # 16-byte Reload 480; CHECK-NEXT: movhlps {{.*#+}} xmm0 = xmm0[1,1] 481; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 482; CHECK-NEXT: movhlps {{.*#+}} xmm1 = xmm1[1,1] 483; CHECK-NEXT: callq fmod@PLT 484; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload 485; CHECK-NEXT: movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0] 486; CHECK-NEXT: movaps %xmm1, (%rbx) 487; CHECK-NEXT: addq $48, %rsp 488; CHECK-NEXT: popq %rbx 489; CHECK-NEXT: retq 490 %frem = frem <2 x double> %a0, %a1 491 store <2 x double> %frem, ptr%p3 492 ret void 493} 494 495define void @frem_v32f16(<32 x half> %a0, <32 x half> %a1, ptr%p3) nounwind { 496; CHECK-LABEL: frem_v32f16: 497; CHECK: # %bb.0: 498; CHECK-NEXT: pushq %rbp 499; CHECK-NEXT: pushq %r15 500; CHECK-NEXT: pushq %r14 501; CHECK-NEXT: pushq %r13 502; CHECK-NEXT: pushq %r12 503; CHECK-NEXT: pushq %rbx 504; CHECK-NEXT: subq $1032, %rsp # imm = 0x408 505; CHECK-NEXT: movq %rdi, %rbx 506; CHECK-NEXT: movss %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 507; CHECK-NEXT: movss %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 508; CHECK-NEXT: movss %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 509; CHECK-NEXT: movss %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 510; CHECK-NEXT: movss %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 511; CHECK-NEXT: movss %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 512; CHECK-NEXT: movd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Folded Spill 513; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 514; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 515; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 516; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 517; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 518; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 519; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 520; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 521; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 522; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 523; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 524; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 525; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 526; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 527; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 528; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 529; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 530; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 531; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 532; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 533; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 534; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 535; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 536; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 537; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 538; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 539; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 540; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 541; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 542; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 543; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 544; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 545; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 546; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 547; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 548; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 549; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 550; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 551; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 552; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 553; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 554; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 555; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 556; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 557; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 558; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 559; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 560; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 561; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 562; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 563; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 564; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 565; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 566; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 567; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 568; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 569; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 570; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 571; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 572; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 573; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 574; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 575; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 576; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 577; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 578; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 579; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 580; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 581; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 582; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 583; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 584; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 585; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 586; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 587; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 588; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 589; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 590; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 591; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 592; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 593; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 594; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 595; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 596; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 597; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 598; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 599; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 600; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 601; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 602; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 603; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 604; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 605; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 606; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 607; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 608; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 609; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 610; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 611; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 612; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 613; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 614; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 615; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 616; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 617; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 618; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 619; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 620; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 621; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 622; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 623; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 624; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 625; CHECK-NEXT: callq __extendhfsf2@PLT 626; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 627; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 628; CHECK-NEXT: callq __extendhfsf2@PLT 629; CHECK-NEXT: movaps %xmm0, %xmm1 630; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 631; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 632; CHECK-NEXT: callq fmodf@PLT 633; CHECK-NEXT: callq __truncsfhf2@PLT 634; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 635; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 636; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 637; CHECK-NEXT: callq __extendhfsf2@PLT 638; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 639; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 640; CHECK-NEXT: callq __extendhfsf2@PLT 641; CHECK-NEXT: movaps %xmm0, %xmm1 642; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 643; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 644; CHECK-NEXT: callq fmodf@PLT 645; CHECK-NEXT: callq __truncsfhf2@PLT 646; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 647; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 648; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 649; CHECK-NEXT: callq __extendhfsf2@PLT 650; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 651; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 652; CHECK-NEXT: callq __extendhfsf2@PLT 653; CHECK-NEXT: movaps %xmm0, %xmm1 654; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 655; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 656; CHECK-NEXT: callq fmodf@PLT 657; CHECK-NEXT: callq __truncsfhf2@PLT 658; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 659; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 660; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 661; CHECK-NEXT: callq __extendhfsf2@PLT 662; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 663; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 664; CHECK-NEXT: callq __extendhfsf2@PLT 665; CHECK-NEXT: movaps %xmm0, %xmm1 666; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 667; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 668; CHECK-NEXT: callq fmodf@PLT 669; CHECK-NEXT: callq __truncsfhf2@PLT 670; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 671; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 672; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 673; CHECK-NEXT: callq __extendhfsf2@PLT 674; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 675; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 676; CHECK-NEXT: callq __extendhfsf2@PLT 677; CHECK-NEXT: movaps %xmm0, %xmm1 678; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 679; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 680; CHECK-NEXT: callq fmodf@PLT 681; CHECK-NEXT: callq __truncsfhf2@PLT 682; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 683; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 684; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 685; CHECK-NEXT: callq __extendhfsf2@PLT 686; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 687; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 688; CHECK-NEXT: callq __extendhfsf2@PLT 689; CHECK-NEXT: movaps %xmm0, %xmm1 690; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 691; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 692; CHECK-NEXT: callq fmodf@PLT 693; CHECK-NEXT: callq __truncsfhf2@PLT 694; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 695; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 696; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 697; CHECK-NEXT: callq __extendhfsf2@PLT 698; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 699; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 700; CHECK-NEXT: callq __extendhfsf2@PLT 701; CHECK-NEXT: movaps %xmm0, %xmm1 702; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 703; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 704; CHECK-NEXT: callq fmodf@PLT 705; CHECK-NEXT: callq __truncsfhf2@PLT 706; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 707; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 708; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 709; CHECK-NEXT: callq __extendhfsf2@PLT 710; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 711; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 712; CHECK-NEXT: callq __extendhfsf2@PLT 713; CHECK-NEXT: movaps %xmm0, %xmm1 714; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 715; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 716; CHECK-NEXT: callq fmodf@PLT 717; CHECK-NEXT: callq __truncsfhf2@PLT 718; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 719; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 720; CHECK-NEXT: callq __extendhfsf2@PLT 721; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 722; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 723; CHECK-NEXT: callq __extendhfsf2@PLT 724; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 725; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 726; CHECK-NEXT: callq fmodf@PLT 727; CHECK-NEXT: callq __truncsfhf2@PLT 728; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 729; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 730; CHECK-NEXT: callq __extendhfsf2@PLT 731; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 732; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 733; CHECK-NEXT: callq __extendhfsf2@PLT 734; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 735; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 736; CHECK-NEXT: callq fmodf@PLT 737; CHECK-NEXT: callq __truncsfhf2@PLT 738; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 739; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 740; CHECK-NEXT: callq __extendhfsf2@PLT 741; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 742; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 743; CHECK-NEXT: callq __extendhfsf2@PLT 744; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 745; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 746; CHECK-NEXT: callq fmodf@PLT 747; CHECK-NEXT: callq __truncsfhf2@PLT 748; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 749; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 750; CHECK-NEXT: callq __extendhfsf2@PLT 751; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 752; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 753; CHECK-NEXT: callq __extendhfsf2@PLT 754; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 755; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 756; CHECK-NEXT: callq fmodf@PLT 757; CHECK-NEXT: callq __truncsfhf2@PLT 758; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 759; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 760; CHECK-NEXT: callq __extendhfsf2@PLT 761; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 762; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 763; CHECK-NEXT: callq __extendhfsf2@PLT 764; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 765; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 766; CHECK-NEXT: callq fmodf@PLT 767; CHECK-NEXT: callq __truncsfhf2@PLT 768; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 769; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 770; CHECK-NEXT: callq __extendhfsf2@PLT 771; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 772; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 773; CHECK-NEXT: callq __extendhfsf2@PLT 774; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 775; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 776; CHECK-NEXT: callq fmodf@PLT 777; CHECK-NEXT: callq __truncsfhf2@PLT 778; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 779; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 780; CHECK-NEXT: callq __extendhfsf2@PLT 781; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 782; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 783; CHECK-NEXT: callq __extendhfsf2@PLT 784; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 785; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 786; CHECK-NEXT: callq fmodf@PLT 787; CHECK-NEXT: callq __truncsfhf2@PLT 788; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 789; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 790; CHECK-NEXT: callq __extendhfsf2@PLT 791; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 792; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 793; CHECK-NEXT: callq __extendhfsf2@PLT 794; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 795; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 796; CHECK-NEXT: callq fmodf@PLT 797; CHECK-NEXT: callq __truncsfhf2@PLT 798; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 799; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 800; CHECK-NEXT: callq __extendhfsf2@PLT 801; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 802; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 803; CHECK-NEXT: callq __extendhfsf2@PLT 804; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 805; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 806; CHECK-NEXT: callq fmodf@PLT 807; CHECK-NEXT: callq __truncsfhf2@PLT 808; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 809; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 810; CHECK-NEXT: callq __extendhfsf2@PLT 811; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 812; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 813; CHECK-NEXT: callq __extendhfsf2@PLT 814; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 815; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 816; CHECK-NEXT: callq fmodf@PLT 817; CHECK-NEXT: callq __truncsfhf2@PLT 818; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 819; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 820; CHECK-NEXT: callq __extendhfsf2@PLT 821; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 822; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 823; CHECK-NEXT: callq __extendhfsf2@PLT 824; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 825; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 826; CHECK-NEXT: callq fmodf@PLT 827; CHECK-NEXT: callq __truncsfhf2@PLT 828; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 829; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 830; CHECK-NEXT: callq __extendhfsf2@PLT 831; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 832; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 833; CHECK-NEXT: callq __extendhfsf2@PLT 834; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 835; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 836; CHECK-NEXT: callq fmodf@PLT 837; CHECK-NEXT: callq __truncsfhf2@PLT 838; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 839; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 840; CHECK-NEXT: callq __extendhfsf2@PLT 841; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 842; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 843; CHECK-NEXT: callq __extendhfsf2@PLT 844; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 845; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 846; CHECK-NEXT: callq fmodf@PLT 847; CHECK-NEXT: callq __truncsfhf2@PLT 848; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 849; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 850; CHECK-NEXT: callq __extendhfsf2@PLT 851; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 852; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 853; CHECK-NEXT: callq __extendhfsf2@PLT 854; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 855; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 856; CHECK-NEXT: callq fmodf@PLT 857; CHECK-NEXT: callq __truncsfhf2@PLT 858; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 859; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 860; CHECK-NEXT: callq __extendhfsf2@PLT 861; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 862; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 863; CHECK-NEXT: callq __extendhfsf2@PLT 864; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 865; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 866; CHECK-NEXT: callq fmodf@PLT 867; CHECK-NEXT: callq __truncsfhf2@PLT 868; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 869; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 870; CHECK-NEXT: callq __extendhfsf2@PLT 871; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 872; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 873; CHECK-NEXT: callq __extendhfsf2@PLT 874; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 875; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 876; CHECK-NEXT: callq fmodf@PLT 877; CHECK-NEXT: callq __truncsfhf2@PLT 878; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 879; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 880; CHECK-NEXT: callq __extendhfsf2@PLT 881; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 882; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 883; CHECK-NEXT: callq __extendhfsf2@PLT 884; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 885; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 886; CHECK-NEXT: callq fmodf@PLT 887; CHECK-NEXT: callq __truncsfhf2@PLT 888; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 889; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 890; CHECK-NEXT: callq __extendhfsf2@PLT 891; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 892; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 893; CHECK-NEXT: callq __extendhfsf2@PLT 894; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 895; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 896; CHECK-NEXT: callq fmodf@PLT 897; CHECK-NEXT: callq __truncsfhf2@PLT 898; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 899; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 900; CHECK-NEXT: callq __extendhfsf2@PLT 901; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 902; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 903; CHECK-NEXT: callq __extendhfsf2@PLT 904; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 905; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 906; CHECK-NEXT: callq fmodf@PLT 907; CHECK-NEXT: callq __truncsfhf2@PLT 908; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 909; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 910; CHECK-NEXT: callq __extendhfsf2@PLT 911; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 912; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 913; CHECK-NEXT: callq __extendhfsf2@PLT 914; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 915; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 916; CHECK-NEXT: callq fmodf@PLT 917; CHECK-NEXT: callq __truncsfhf2@PLT 918; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 919; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 920; CHECK-NEXT: callq __extendhfsf2@PLT 921; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 922; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 923; CHECK-NEXT: callq __extendhfsf2@PLT 924; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 925; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 926; CHECK-NEXT: callq fmodf@PLT 927; CHECK-NEXT: callq __truncsfhf2@PLT 928; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 929; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 930; CHECK-NEXT: callq __extendhfsf2@PLT 931; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 932; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 933; CHECK-NEXT: callq __extendhfsf2@PLT 934; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 935; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 936; CHECK-NEXT: callq fmodf@PLT 937; CHECK-NEXT: callq __truncsfhf2@PLT 938; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 939; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 940; CHECK-NEXT: callq __extendhfsf2@PLT 941; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 942; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 943; CHECK-NEXT: callq __extendhfsf2@PLT 944; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 945; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 946; CHECK-NEXT: callq fmodf@PLT 947; CHECK-NEXT: callq __truncsfhf2@PLT 948; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 949; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 950; CHECK-NEXT: callq __extendhfsf2@PLT 951; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 952; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 953; CHECK-NEXT: callq __extendhfsf2@PLT 954; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 955; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 956; CHECK-NEXT: callq fmodf@PLT 957; CHECK-NEXT: callq __truncsfhf2@PLT 958; CHECK-NEXT: pextrw $0, %xmm0, %eax 959; CHECK-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 960; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 961; CHECK-NEXT: pextrw $0, %xmm0, %eax 962; CHECK-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 963; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 964; CHECK-NEXT: pextrw $0, %xmm0, %eax 965; CHECK-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 966; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 967; CHECK-NEXT: pextrw $0, %xmm0, %esi 968; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 969; CHECK-NEXT: pextrw $0, %xmm0, %edi 970; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 971; CHECK-NEXT: pextrw $0, %xmm0, %eax 972; CHECK-NEXT: movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 973; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 974; CHECK-NEXT: pextrw $0, %xmm0, %ecx 975; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 976; CHECK-NEXT: pextrw $0, %xmm0, %edx 977; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 978; CHECK-NEXT: pextrw $0, %xmm0, %r11d 979; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 980; CHECK-NEXT: pextrw $0, %xmm0, %ebp 981; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 982; CHECK-NEXT: pextrw $0, %xmm0, %r14d 983; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 984; CHECK-NEXT: pextrw $0, %xmm0, %r15d 985; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 986; CHECK-NEXT: pextrw $0, %xmm0, %r12d 987; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 988; CHECK-NEXT: pextrw $0, %xmm0, %r13d 989; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 990; CHECK-NEXT: pextrw $0, %xmm0, %r8d 991; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 992; CHECK-NEXT: pextrw $0, %xmm0, %r9d 993; CHECK-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %r10d # 4-byte Reload 994; CHECK-NEXT: movw %r10w, 62(%rbx) 995; CHECK-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload 996; CHECK-NEXT: movw %ax, 60(%rbx) 997; CHECK-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload 998; CHECK-NEXT: movw %ax, 58(%rbx) 999; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1000; CHECK-NEXT: pextrw $0, %xmm0, %r10d 1001; CHECK-NEXT: movw %si, 56(%rbx) 1002; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1003; CHECK-NEXT: pextrw $0, %xmm0, %esi 1004; CHECK-NEXT: movw %di, 54(%rbx) 1005; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1006; CHECK-NEXT: pextrw $0, %xmm0, %edi 1007; CHECK-NEXT: movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload 1008; CHECK-NEXT: movw %ax, 52(%rbx) 1009; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1010; CHECK-NEXT: pextrw $0, %xmm0, %eax 1011; CHECK-NEXT: movw %cx, 50(%rbx) 1012; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1013; CHECK-NEXT: pextrw $0, %xmm0, %ecx 1014; CHECK-NEXT: movw %dx, 48(%rbx) 1015; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1016; CHECK-NEXT: pextrw $0, %xmm0, %edx 1017; CHECK-NEXT: movw %r11w, 46(%rbx) 1018; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1019; CHECK-NEXT: pextrw $0, %xmm0, %r11d 1020; CHECK-NEXT: movw %bp, 44(%rbx) 1021; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1022; CHECK-NEXT: pextrw $0, %xmm0, %ebp 1023; CHECK-NEXT: movw %r14w, 42(%rbx) 1024; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1025; CHECK-NEXT: pextrw $0, %xmm0, %r14d 1026; CHECK-NEXT: movw %r15w, 40(%rbx) 1027; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1028; CHECK-NEXT: pextrw $0, %xmm0, %r15d 1029; CHECK-NEXT: movw %r12w, 38(%rbx) 1030; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1031; CHECK-NEXT: pextrw $0, %xmm0, %r12d 1032; CHECK-NEXT: movw %r13w, 36(%rbx) 1033; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1034; CHECK-NEXT: pextrw $0, %xmm0, %r13d 1035; CHECK-NEXT: movw %r8w, 34(%rbx) 1036; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1037; CHECK-NEXT: pextrw $0, %xmm0, %r8d 1038; CHECK-NEXT: movw %r9w, 32(%rbx) 1039; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1040; CHECK-NEXT: pextrw $0, %xmm0, %r9d 1041; CHECK-NEXT: movw %r10w, 30(%rbx) 1042; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1043; CHECK-NEXT: pextrw $0, %xmm0, %r10d 1044; CHECK-NEXT: movw %si, 28(%rbx) 1045; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1046; CHECK-NEXT: pextrw $0, %xmm0, %esi 1047; CHECK-NEXT: movw %di, 26(%rbx) 1048; CHECK-NEXT: movw %ax, 24(%rbx) 1049; CHECK-NEXT: movw %cx, 22(%rbx) 1050; CHECK-NEXT: movw %dx, 20(%rbx) 1051; CHECK-NEXT: movw %r11w, 18(%rbx) 1052; CHECK-NEXT: movw %bp, 16(%rbx) 1053; CHECK-NEXT: movw %r14w, 14(%rbx) 1054; CHECK-NEXT: movw %r15w, 12(%rbx) 1055; CHECK-NEXT: movw %r12w, 10(%rbx) 1056; CHECK-NEXT: movw %r13w, 8(%rbx) 1057; CHECK-NEXT: movw %r8w, 6(%rbx) 1058; CHECK-NEXT: movw %r9w, 4(%rbx) 1059; CHECK-NEXT: movw %r10w, 2(%rbx) 1060; CHECK-NEXT: movw %si, (%rbx) 1061; CHECK-NEXT: addq $1032, %rsp # imm = 0x408 1062; CHECK-NEXT: popq %rbx 1063; CHECK-NEXT: popq %r12 1064; CHECK-NEXT: popq %r13 1065; CHECK-NEXT: popq %r14 1066; CHECK-NEXT: popq %r15 1067; CHECK-NEXT: popq %rbp 1068; CHECK-NEXT: retq 1069 %frem = frem <32 x half> %a0, %a1 1070 store <32 x half> %frem, ptr%p3 1071 ret void 1072} 1073 1074define void @frem_v16f16(<16 x half> %a0, <16 x half> %a1, ptr%p3) nounwind { 1075; CHECK-LABEL: frem_v16f16: 1076; CHECK: # %bb.0: 1077; CHECK-NEXT: pushq %rbx 1078; CHECK-NEXT: subq $512, %rsp # imm = 0x200 1079; CHECK-NEXT: movq %rdi, %rbx 1080; CHECK-NEXT: movss %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1081; CHECK-NEXT: movss %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1082; CHECK-NEXT: movss %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1083; CHECK-NEXT: movss %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1084; CHECK-NEXT: movss %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1085; CHECK-NEXT: movss %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1086; CHECK-NEXT: movd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Folded Spill 1087; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1088; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1089; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1090; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1091; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1092; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1093; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1094; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1095; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1096; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1097; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1098; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1099; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1100; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1101; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1102; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1103; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1104; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1105; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1106; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1107; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1108; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1109; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1110; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1111; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1112; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1113; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1114; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1115; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1116; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1117; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1118; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1119; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1120; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1121; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1122; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1123; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1124; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1125; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1126; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1127; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1128; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1129; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1130; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1131; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1132; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1133; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1134; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1135; CHECK-NEXT: callq __extendhfsf2@PLT 1136; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1137; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1138; CHECK-NEXT: callq __extendhfsf2@PLT 1139; CHECK-NEXT: movaps %xmm0, %xmm1 1140; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1141; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1142; CHECK-NEXT: callq fmodf@PLT 1143; CHECK-NEXT: callq __truncsfhf2@PLT 1144; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1145; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1146; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1147; CHECK-NEXT: callq __extendhfsf2@PLT 1148; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1149; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1150; CHECK-NEXT: callq __extendhfsf2@PLT 1151; CHECK-NEXT: movaps %xmm0, %xmm1 1152; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1153; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1154; CHECK-NEXT: callq fmodf@PLT 1155; CHECK-NEXT: callq __truncsfhf2@PLT 1156; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1157; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1158; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1159; CHECK-NEXT: callq __extendhfsf2@PLT 1160; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1161; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1162; CHECK-NEXT: callq __extendhfsf2@PLT 1163; CHECK-NEXT: movaps %xmm0, %xmm1 1164; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1165; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1166; CHECK-NEXT: callq fmodf@PLT 1167; CHECK-NEXT: callq __truncsfhf2@PLT 1168; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1169; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1170; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1171; CHECK-NEXT: callq __extendhfsf2@PLT 1172; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1173; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1174; CHECK-NEXT: callq __extendhfsf2@PLT 1175; CHECK-NEXT: movaps %xmm0, %xmm1 1176; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1177; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1178; CHECK-NEXT: callq fmodf@PLT 1179; CHECK-NEXT: callq __truncsfhf2@PLT 1180; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1181; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1182; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1183; CHECK-NEXT: callq __extendhfsf2@PLT 1184; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1185; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1186; CHECK-NEXT: callq __extendhfsf2@PLT 1187; CHECK-NEXT: movaps %xmm0, %xmm1 1188; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1189; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1190; CHECK-NEXT: callq fmodf@PLT 1191; CHECK-NEXT: callq __truncsfhf2@PLT 1192; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1193; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1194; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1195; CHECK-NEXT: callq __extendhfsf2@PLT 1196; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1197; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1198; CHECK-NEXT: callq __extendhfsf2@PLT 1199; CHECK-NEXT: movaps %xmm0, %xmm1 1200; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1201; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1202; CHECK-NEXT: callq fmodf@PLT 1203; CHECK-NEXT: callq __truncsfhf2@PLT 1204; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1205; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1206; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1207; CHECK-NEXT: callq __extendhfsf2@PLT 1208; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1209; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1210; CHECK-NEXT: callq __extendhfsf2@PLT 1211; CHECK-NEXT: movaps %xmm0, %xmm1 1212; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1213; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1214; CHECK-NEXT: callq fmodf@PLT 1215; CHECK-NEXT: callq __truncsfhf2@PLT 1216; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1217; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1218; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1219; CHECK-NEXT: callq __extendhfsf2@PLT 1220; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1221; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1222; CHECK-NEXT: callq __extendhfsf2@PLT 1223; CHECK-NEXT: movaps %xmm0, %xmm1 1224; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1225; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1226; CHECK-NEXT: callq fmodf@PLT 1227; CHECK-NEXT: callq __truncsfhf2@PLT 1228; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1229; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1230; CHECK-NEXT: callq __extendhfsf2@PLT 1231; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1232; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1233; CHECK-NEXT: callq __extendhfsf2@PLT 1234; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 1235; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 1236; CHECK-NEXT: callq fmodf@PLT 1237; CHECK-NEXT: callq __truncsfhf2@PLT 1238; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1239; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1240; CHECK-NEXT: callq __extendhfsf2@PLT 1241; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1242; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1243; CHECK-NEXT: callq __extendhfsf2@PLT 1244; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 1245; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 1246; CHECK-NEXT: callq fmodf@PLT 1247; CHECK-NEXT: callq __truncsfhf2@PLT 1248; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1249; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1250; CHECK-NEXT: callq __extendhfsf2@PLT 1251; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1252; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1253; CHECK-NEXT: callq __extendhfsf2@PLT 1254; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 1255; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 1256; CHECK-NEXT: callq fmodf@PLT 1257; CHECK-NEXT: callq __truncsfhf2@PLT 1258; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1259; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1260; CHECK-NEXT: callq __extendhfsf2@PLT 1261; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1262; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1263; CHECK-NEXT: callq __extendhfsf2@PLT 1264; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 1265; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 1266; CHECK-NEXT: callq fmodf@PLT 1267; CHECK-NEXT: callq __truncsfhf2@PLT 1268; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1269; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1270; CHECK-NEXT: callq __extendhfsf2@PLT 1271; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1272; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1273; CHECK-NEXT: callq __extendhfsf2@PLT 1274; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 1275; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 1276; CHECK-NEXT: callq fmodf@PLT 1277; CHECK-NEXT: callq __truncsfhf2@PLT 1278; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1279; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1280; CHECK-NEXT: callq __extendhfsf2@PLT 1281; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1282; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1283; CHECK-NEXT: callq __extendhfsf2@PLT 1284; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 1285; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 1286; CHECK-NEXT: callq fmodf@PLT 1287; CHECK-NEXT: callq __truncsfhf2@PLT 1288; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1289; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1290; CHECK-NEXT: callq __extendhfsf2@PLT 1291; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1292; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1293; CHECK-NEXT: callq __extendhfsf2@PLT 1294; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 1295; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 1296; CHECK-NEXT: callq fmodf@PLT 1297; CHECK-NEXT: callq __truncsfhf2@PLT 1298; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1299; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1300; CHECK-NEXT: callq __extendhfsf2@PLT 1301; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1302; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1303; CHECK-NEXT: callq __extendhfsf2@PLT 1304; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload 1305; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 1306; CHECK-NEXT: callq fmodf@PLT 1307; CHECK-NEXT: callq __truncsfhf2@PLT 1308; CHECK-NEXT: pextrw $0, %xmm0, %eax 1309; CHECK-NEXT: movw %ax, 30(%rbx) 1310; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1311; CHECK-NEXT: pextrw $0, %xmm0, %eax 1312; CHECK-NEXT: movw %ax, 28(%rbx) 1313; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1314; CHECK-NEXT: pextrw $0, %xmm0, %eax 1315; CHECK-NEXT: movw %ax, 26(%rbx) 1316; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1317; CHECK-NEXT: pextrw $0, %xmm0, %eax 1318; CHECK-NEXT: movw %ax, 24(%rbx) 1319; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1320; CHECK-NEXT: pextrw $0, %xmm0, %eax 1321; CHECK-NEXT: movw %ax, 22(%rbx) 1322; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1323; CHECK-NEXT: pextrw $0, %xmm0, %eax 1324; CHECK-NEXT: movw %ax, 20(%rbx) 1325; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1326; CHECK-NEXT: pextrw $0, %xmm0, %eax 1327; CHECK-NEXT: movw %ax, 18(%rbx) 1328; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1329; CHECK-NEXT: pextrw $0, %xmm0, %eax 1330; CHECK-NEXT: movw %ax, 16(%rbx) 1331; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1332; CHECK-NEXT: pextrw $0, %xmm0, %eax 1333; CHECK-NEXT: movw %ax, 14(%rbx) 1334; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1335; CHECK-NEXT: pextrw $0, %xmm0, %eax 1336; CHECK-NEXT: movw %ax, 12(%rbx) 1337; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1338; CHECK-NEXT: pextrw $0, %xmm0, %eax 1339; CHECK-NEXT: movw %ax, 10(%rbx) 1340; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1341; CHECK-NEXT: pextrw $0, %xmm0, %eax 1342; CHECK-NEXT: movw %ax, 8(%rbx) 1343; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1344; CHECK-NEXT: pextrw $0, %xmm0, %eax 1345; CHECK-NEXT: movw %ax, 6(%rbx) 1346; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1347; CHECK-NEXT: pextrw $0, %xmm0, %eax 1348; CHECK-NEXT: movw %ax, 4(%rbx) 1349; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1350; CHECK-NEXT: pextrw $0, %xmm0, %eax 1351; CHECK-NEXT: movw %ax, 2(%rbx) 1352; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1353; CHECK-NEXT: pextrw $0, %xmm0, %eax 1354; CHECK-NEXT: movw %ax, (%rbx) 1355; CHECK-NEXT: addq $512, %rsp # imm = 0x200 1356; CHECK-NEXT: popq %rbx 1357; CHECK-NEXT: retq 1358 %frem = frem <16 x half> %a0, %a1 1359 store <16 x half> %frem, ptr%p3 1360 ret void 1361} 1362 1363define void @frem_v8f16(<8 x half> %a0, <8 x half> %a1, ptr%p3) nounwind { 1364; CHECK-LABEL: frem_v8f16: 1365; CHECK: # %bb.0: 1366; CHECK-NEXT: pushq %rbx 1367; CHECK-NEXT: subq $240, %rsp 1368; CHECK-NEXT: movq %rdi, %rbx 1369; CHECK-NEXT: movss %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1370; CHECK-NEXT: movss %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1371; CHECK-NEXT: movss %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1372; CHECK-NEXT: movss %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1373; CHECK-NEXT: movss %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1374; CHECK-NEXT: movss %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1375; CHECK-NEXT: movd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Folded Spill 1376; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1377; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1378; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1379; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1380; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1381; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1382; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1383; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1384; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1385; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1386; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1387; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1388; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1389; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1390; CHECK-NEXT: pinsrw $0, {{[0-9]+}}(%rsp), %xmm1 1391; CHECK-NEXT: movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1392; CHECK-NEXT: callq __extendhfsf2@PLT 1393; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1394; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1395; CHECK-NEXT: callq __extendhfsf2@PLT 1396; CHECK-NEXT: movaps %xmm0, %xmm1 1397; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1398; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1399; CHECK-NEXT: callq fmodf@PLT 1400; CHECK-NEXT: callq __truncsfhf2@PLT 1401; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1402; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1403; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1404; CHECK-NEXT: callq __extendhfsf2@PLT 1405; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1406; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1407; CHECK-NEXT: callq __extendhfsf2@PLT 1408; CHECK-NEXT: movaps %xmm0, %xmm1 1409; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1410; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1411; CHECK-NEXT: callq fmodf@PLT 1412; CHECK-NEXT: callq __truncsfhf2@PLT 1413; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1414; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1415; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1416; CHECK-NEXT: callq __extendhfsf2@PLT 1417; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1418; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1419; CHECK-NEXT: callq __extendhfsf2@PLT 1420; CHECK-NEXT: movaps %xmm0, %xmm1 1421; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1422; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1423; CHECK-NEXT: callq fmodf@PLT 1424; CHECK-NEXT: callq __truncsfhf2@PLT 1425; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1426; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1427; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1428; CHECK-NEXT: callq __extendhfsf2@PLT 1429; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1430; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1431; CHECK-NEXT: callq __extendhfsf2@PLT 1432; CHECK-NEXT: movaps %xmm0, %xmm1 1433; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1434; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1435; CHECK-NEXT: callq fmodf@PLT 1436; CHECK-NEXT: callq __truncsfhf2@PLT 1437; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1438; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1439; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1440; CHECK-NEXT: callq __extendhfsf2@PLT 1441; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1442; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1443; CHECK-NEXT: callq __extendhfsf2@PLT 1444; CHECK-NEXT: movaps %xmm0, %xmm1 1445; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1446; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1447; CHECK-NEXT: callq fmodf@PLT 1448; CHECK-NEXT: callq __truncsfhf2@PLT 1449; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1450; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1451; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1452; CHECK-NEXT: callq __extendhfsf2@PLT 1453; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1454; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1455; CHECK-NEXT: callq __extendhfsf2@PLT 1456; CHECK-NEXT: movaps %xmm0, %xmm1 1457; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1458; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1459; CHECK-NEXT: callq fmodf@PLT 1460; CHECK-NEXT: callq __truncsfhf2@PLT 1461; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1462; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1463; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1464; CHECK-NEXT: callq __extendhfsf2@PLT 1465; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1466; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1467; CHECK-NEXT: callq __extendhfsf2@PLT 1468; CHECK-NEXT: movaps %xmm0, %xmm1 1469; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1470; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1471; CHECK-NEXT: callq fmodf@PLT 1472; CHECK-NEXT: callq __truncsfhf2@PLT 1473; CHECK-NEXT: movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill 1474; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 1475; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1476; CHECK-NEXT: callq __extendhfsf2@PLT 1477; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 1478; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1479; CHECK-NEXT: callq __extendhfsf2@PLT 1480; CHECK-NEXT: movaps %xmm0, %xmm1 1481; CHECK-NEXT: movd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Folded Reload 1482; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 1483; CHECK-NEXT: callq fmodf@PLT 1484; CHECK-NEXT: callq __truncsfhf2@PLT 1485; CHECK-NEXT: pextrw $0, %xmm0, %eax 1486; CHECK-NEXT: movw %ax, 14(%rbx) 1487; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1488; CHECK-NEXT: pextrw $0, %xmm0, %eax 1489; CHECK-NEXT: movw %ax, 12(%rbx) 1490; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1491; CHECK-NEXT: pextrw $0, %xmm0, %eax 1492; CHECK-NEXT: movw %ax, 10(%rbx) 1493; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1494; CHECK-NEXT: pextrw $0, %xmm0, %eax 1495; CHECK-NEXT: movw %ax, 8(%rbx) 1496; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1497; CHECK-NEXT: pextrw $0, %xmm0, %eax 1498; CHECK-NEXT: movw %ax, 6(%rbx) 1499; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1500; CHECK-NEXT: pextrw $0, %xmm0, %eax 1501; CHECK-NEXT: movw %ax, 4(%rbx) 1502; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1503; CHECK-NEXT: pextrw $0, %xmm0, %eax 1504; CHECK-NEXT: movw %ax, 2(%rbx) 1505; CHECK-NEXT: movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload 1506; CHECK-NEXT: pextrw $0, %xmm0, %eax 1507; CHECK-NEXT: movw %ax, (%rbx) 1508; CHECK-NEXT: addq $240, %rsp 1509; CHECK-NEXT: popq %rbx 1510; CHECK-NEXT: retq 1511 %frem = frem <8 x half> %a0, %a1 1512 store <8 x half> %frem, ptr%p3 1513 ret void 1514} 1515 1516define void @frem_v4f80(<4 x x86_fp80> %a0, <4 x x86_fp80> %a1, ptr%p3) nounwind { 1517; CHECK-LABEL: frem_v4f80: 1518; CHECK: # %bb.0: 1519; CHECK-NEXT: pushq %rbx 1520; CHECK-NEXT: subq $128, %rsp 1521; CHECK-NEXT: movq %rdi, %rbx 1522; CHECK-NEXT: fldt {{[0-9]+}}(%rsp) 1523; CHECK-NEXT: fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill 1524; CHECK-NEXT: fldt {{[0-9]+}}(%rsp) 1525; CHECK-NEXT: fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill 1526; CHECK-NEXT: fldt {{[0-9]+}}(%rsp) 1527; CHECK-NEXT: fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill 1528; CHECK-NEXT: fldt {{[0-9]+}}(%rsp) 1529; CHECK-NEXT: fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill 1530; CHECK-NEXT: fldt {{[0-9]+}}(%rsp) 1531; CHECK-NEXT: fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill 1532; CHECK-NEXT: fldt {{[0-9]+}}(%rsp) 1533; CHECK-NEXT: fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill 1534; CHECK-NEXT: fldt {{[0-9]+}}(%rsp) 1535; CHECK-NEXT: fldt {{[0-9]+}}(%rsp) 1536; CHECK-NEXT: fstpt {{[0-9]+}}(%rsp) 1537; CHECK-NEXT: fstpt (%rsp) 1538; CHECK-NEXT: callq fmodl@PLT 1539; CHECK-NEXT: fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill 1540; CHECK-NEXT: fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload 1541; CHECK-NEXT: fstpt {{[0-9]+}}(%rsp) 1542; CHECK-NEXT: fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload 1543; CHECK-NEXT: fstpt (%rsp) 1544; CHECK-NEXT: callq fmodl@PLT 1545; CHECK-NEXT: fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill 1546; CHECK-NEXT: fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload 1547; CHECK-NEXT: fstpt {{[0-9]+}}(%rsp) 1548; CHECK-NEXT: fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload 1549; CHECK-NEXT: fstpt (%rsp) 1550; CHECK-NEXT: callq fmodl@PLT 1551; CHECK-NEXT: fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill 1552; CHECK-NEXT: fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload 1553; CHECK-NEXT: fstpt {{[0-9]+}}(%rsp) 1554; CHECK-NEXT: fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload 1555; CHECK-NEXT: fstpt (%rsp) 1556; CHECK-NEXT: callq fmodl@PLT 1557; CHECK-NEXT: fstpt 30(%rbx) 1558; CHECK-NEXT: fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload 1559; CHECK-NEXT: fstpt 20(%rbx) 1560; CHECK-NEXT: fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload 1561; CHECK-NEXT: fstpt 10(%rbx) 1562; CHECK-NEXT: fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload 1563; CHECK-NEXT: fstpt (%rbx) 1564; CHECK-NEXT: addq $128, %rsp 1565; CHECK-NEXT: popq %rbx 1566; CHECK-NEXT: retq 1567 %frem = frem <4 x x86_fp80> %a0, %a1 1568 store <4 x x86_fp80> %frem, ptr%p3 1569 ret void 1570} 1571