640 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i386-unknown | FileCheck %s --check-prefixes=X863; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s --check-prefixes=X644 5;6; FADD7;8 9define x86_fp80 @fiadd_fp80_i16(x86_fp80 %a0, i16 %a1) {10; X86-LABEL: fiadd_fp80_i16:11; X86: # %bb.0:12; X86-NEXT: pushl %eax13; X86-NEXT: .cfi_def_cfa_offset 814; X86-NEXT: fldt {{[0-9]+}}(%esp)15; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax16; X86-NEXT: movw %ax, {{[0-9]+}}(%esp)17; X86-NEXT: fiadds {{[0-9]+}}(%esp)18; X86-NEXT: popl %eax19; X86-NEXT: .cfi_def_cfa_offset 420; X86-NEXT: retl21;22; X64-LABEL: fiadd_fp80_i16:23; X64: # %bb.0:24; X64-NEXT: fldt {{[0-9]+}}(%rsp)25; X64-NEXT: movw %di, -{{[0-9]+}}(%rsp)26; X64-NEXT: fiadds -{{[0-9]+}}(%rsp)27; X64-NEXT: retq28 %1 = sitofp i16 %a1 to x86_fp8029 %2 = fadd x86_fp80 %a0, %130 ret x86_fp80 %231}32 33define x86_fp80 @fiadd_fp80_i16_ld(x86_fp80 %a0, ptr%a1) {34; X86-LABEL: fiadd_fp80_i16_ld:35; X86: # %bb.0:36; X86-NEXT: pushl %eax37; X86-NEXT: .cfi_def_cfa_offset 838; X86-NEXT: fldt {{[0-9]+}}(%esp)39; X86-NEXT: movl {{[0-9]+}}(%esp), %eax40; X86-NEXT: movzwl (%eax), %eax41; X86-NEXT: movw %ax, {{[0-9]+}}(%esp)42; X86-NEXT: fiadds {{[0-9]+}}(%esp)43; X86-NEXT: popl %eax44; X86-NEXT: .cfi_def_cfa_offset 445; X86-NEXT: retl46;47; X64-LABEL: fiadd_fp80_i16_ld:48; X64: # %bb.0:49; X64-NEXT: fldt {{[0-9]+}}(%rsp)50; X64-NEXT: movzwl (%rdi), %eax51; X64-NEXT: movw %ax, -{{[0-9]+}}(%rsp)52; X64-NEXT: fiadds -{{[0-9]+}}(%rsp)53; X64-NEXT: retq54 %1 = load i16, ptr%a155 %2 = sitofp i16 %1 to x86_fp8056 %3 = fadd x86_fp80 %a0, %257 ret x86_fp80 %358}59 60define x86_fp80 @fiadd_fp80_i32(x86_fp80 %a0, i32 %a1) {61; X86-LABEL: fiadd_fp80_i32:62; X86: # %bb.0:63; X86-NEXT: pushl %eax64; X86-NEXT: .cfi_def_cfa_offset 865; X86-NEXT: fldt {{[0-9]+}}(%esp)66; X86-NEXT: movl {{[0-9]+}}(%esp), %eax67; X86-NEXT: movl %eax, (%esp)68; X86-NEXT: fiaddl (%esp)69; X86-NEXT: popl %eax70; X86-NEXT: .cfi_def_cfa_offset 471; X86-NEXT: retl72;73; X64-LABEL: fiadd_fp80_i32:74; X64: # %bb.0:75; X64-NEXT: fldt {{[0-9]+}}(%rsp)76; X64-NEXT: movl %edi, -{{[0-9]+}}(%rsp)77; X64-NEXT: fiaddl -{{[0-9]+}}(%rsp)78; X64-NEXT: retq79 %1 = sitofp i32 %a1 to x86_fp8080 %2 = fadd x86_fp80 %a0, %181 ret x86_fp80 %282}83 84define x86_fp80 @fiadd_fp80_i32_ld(x86_fp80 %a0, ptr%a1) {85; X86-LABEL: fiadd_fp80_i32_ld:86; X86: # %bb.0:87; X86-NEXT: pushl %eax88; X86-NEXT: .cfi_def_cfa_offset 889; X86-NEXT: fldt {{[0-9]+}}(%esp)90; X86-NEXT: movl {{[0-9]+}}(%esp), %eax91; X86-NEXT: movl (%eax), %eax92; X86-NEXT: movl %eax, (%esp)93; X86-NEXT: fiaddl (%esp)94; X86-NEXT: popl %eax95; X86-NEXT: .cfi_def_cfa_offset 496; X86-NEXT: retl97;98; X64-LABEL: fiadd_fp80_i32_ld:99; X64: # %bb.0:100; X64-NEXT: fldt {{[0-9]+}}(%rsp)101; X64-NEXT: movl (%rdi), %eax102; X64-NEXT: movl %eax, -{{[0-9]+}}(%rsp)103; X64-NEXT: fiaddl -{{[0-9]+}}(%rsp)104; X64-NEXT: retq105 %1 = load i32, ptr%a1106 %2 = sitofp i32 %1 to x86_fp80107 %3 = fadd x86_fp80 %a0, %2108 ret x86_fp80 %3109}110 111;112; FSUB113;114 115define x86_fp80 @fisub_fp80_i16(x86_fp80 %a0, i16 %a1) {116; X86-LABEL: fisub_fp80_i16:117; X86: # %bb.0:118; X86-NEXT: pushl %eax119; X86-NEXT: .cfi_def_cfa_offset 8120; X86-NEXT: fldt {{[0-9]+}}(%esp)121; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax122; X86-NEXT: movw %ax, {{[0-9]+}}(%esp)123; X86-NEXT: fisubs {{[0-9]+}}(%esp)124; X86-NEXT: popl %eax125; X86-NEXT: .cfi_def_cfa_offset 4126; X86-NEXT: retl127;128; X64-LABEL: fisub_fp80_i16:129; X64: # %bb.0:130; X64-NEXT: fldt {{[0-9]+}}(%rsp)131; X64-NEXT: movw %di, -{{[0-9]+}}(%rsp)132; X64-NEXT: fisubs -{{[0-9]+}}(%rsp)133; X64-NEXT: retq134 %1 = sitofp i16 %a1 to x86_fp80135 %2 = fsub x86_fp80 %a0, %1136 ret x86_fp80 %2137}138 139define x86_fp80 @fisub_fp80_i16_ld(x86_fp80 %a0, ptr%a1) {140; X86-LABEL: fisub_fp80_i16_ld:141; X86: # %bb.0:142; X86-NEXT: pushl %eax143; X86-NEXT: .cfi_def_cfa_offset 8144; X86-NEXT: fldt {{[0-9]+}}(%esp)145; X86-NEXT: movl {{[0-9]+}}(%esp), %eax146; X86-NEXT: movzwl (%eax), %eax147; X86-NEXT: movw %ax, {{[0-9]+}}(%esp)148; X86-NEXT: fisubs {{[0-9]+}}(%esp)149; X86-NEXT: popl %eax150; X86-NEXT: .cfi_def_cfa_offset 4151; X86-NEXT: retl152;153; X64-LABEL: fisub_fp80_i16_ld:154; X64: # %bb.0:155; X64-NEXT: fldt {{[0-9]+}}(%rsp)156; X64-NEXT: movzwl (%rdi), %eax157; X64-NEXT: movw %ax, -{{[0-9]+}}(%rsp)158; X64-NEXT: fisubs -{{[0-9]+}}(%rsp)159; X64-NEXT: retq160 %1 = load i16, ptr%a1161 %2 = sitofp i16 %1 to x86_fp80162 %3 = fsub x86_fp80 %a0, %2163 ret x86_fp80 %3164}165 166define x86_fp80 @fisub_fp80_i32(x86_fp80 %a0, i32 %a1) {167; X86-LABEL: fisub_fp80_i32:168; X86: # %bb.0:169; X86-NEXT: pushl %eax170; X86-NEXT: .cfi_def_cfa_offset 8171; X86-NEXT: fldt {{[0-9]+}}(%esp)172; X86-NEXT: movl {{[0-9]+}}(%esp), %eax173; X86-NEXT: movl %eax, (%esp)174; X86-NEXT: fisubl (%esp)175; X86-NEXT: popl %eax176; X86-NEXT: .cfi_def_cfa_offset 4177; X86-NEXT: retl178;179; X64-LABEL: fisub_fp80_i32:180; X64: # %bb.0:181; X64-NEXT: fldt {{[0-9]+}}(%rsp)182; X64-NEXT: movl %edi, -{{[0-9]+}}(%rsp)183; X64-NEXT: fisubl -{{[0-9]+}}(%rsp)184; X64-NEXT: retq185 %1 = sitofp i32 %a1 to x86_fp80186 %2 = fsub x86_fp80 %a0, %1187 ret x86_fp80 %2188}189 190define x86_fp80 @fisub_fp80_i32_ld(x86_fp80 %a0, ptr%a1) {191; X86-LABEL: fisub_fp80_i32_ld:192; X86: # %bb.0:193; X86-NEXT: pushl %eax194; X86-NEXT: .cfi_def_cfa_offset 8195; X86-NEXT: fldt {{[0-9]+}}(%esp)196; X86-NEXT: movl {{[0-9]+}}(%esp), %eax197; X86-NEXT: movl (%eax), %eax198; X86-NEXT: movl %eax, (%esp)199; X86-NEXT: fisubl (%esp)200; X86-NEXT: popl %eax201; X86-NEXT: .cfi_def_cfa_offset 4202; X86-NEXT: retl203;204; X64-LABEL: fisub_fp80_i32_ld:205; X64: # %bb.0:206; X64-NEXT: fldt {{[0-9]+}}(%rsp)207; X64-NEXT: movl (%rdi), %eax208; X64-NEXT: movl %eax, -{{[0-9]+}}(%rsp)209; X64-NEXT: fisubl -{{[0-9]+}}(%rsp)210; X64-NEXT: retq211 %1 = load i32, ptr%a1212 %2 = sitofp i32 %1 to x86_fp80213 %3 = fsub x86_fp80 %a0, %2214 ret x86_fp80 %3215}216 217;218; FSUBR219;220 221define x86_fp80 @fisubr_fp80_i16(x86_fp80 %a0, i16 %a1) {222; X86-LABEL: fisubr_fp80_i16:223; X86: # %bb.0:224; X86-NEXT: pushl %eax225; X86-NEXT: .cfi_def_cfa_offset 8226; X86-NEXT: fldt {{[0-9]+}}(%esp)227; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax228; X86-NEXT: movw %ax, {{[0-9]+}}(%esp)229; X86-NEXT: fisubrs {{[0-9]+}}(%esp)230; X86-NEXT: popl %eax231; X86-NEXT: .cfi_def_cfa_offset 4232; X86-NEXT: retl233;234; X64-LABEL: fisubr_fp80_i16:235; X64: # %bb.0:236; X64-NEXT: fldt {{[0-9]+}}(%rsp)237; X64-NEXT: movw %di, -{{[0-9]+}}(%rsp)238; X64-NEXT: fisubrs -{{[0-9]+}}(%rsp)239; X64-NEXT: retq240 %1 = sitofp i16 %a1 to x86_fp80241 %2 = fsub x86_fp80 %1, %a0242 ret x86_fp80 %2243}244 245define x86_fp80 @fisubr_fp80_i16_ld(x86_fp80 %a0, ptr%a1) {246; X86-LABEL: fisubr_fp80_i16_ld:247; X86: # %bb.0:248; X86-NEXT: pushl %eax249; X86-NEXT: .cfi_def_cfa_offset 8250; X86-NEXT: fldt {{[0-9]+}}(%esp)251; X86-NEXT: movl {{[0-9]+}}(%esp), %eax252; X86-NEXT: movzwl (%eax), %eax253; X86-NEXT: movw %ax, {{[0-9]+}}(%esp)254; X86-NEXT: fisubrs {{[0-9]+}}(%esp)255; X86-NEXT: popl %eax256; X86-NEXT: .cfi_def_cfa_offset 4257; X86-NEXT: retl258;259; X64-LABEL: fisubr_fp80_i16_ld:260; X64: # %bb.0:261; X64-NEXT: fldt {{[0-9]+}}(%rsp)262; X64-NEXT: movzwl (%rdi), %eax263; X64-NEXT: movw %ax, -{{[0-9]+}}(%rsp)264; X64-NEXT: fisubrs -{{[0-9]+}}(%rsp)265; X64-NEXT: retq266 %1 = load i16, ptr%a1267 %2 = sitofp i16 %1 to x86_fp80268 %3 = fsub x86_fp80 %2, %a0269 ret x86_fp80 %3270}271 272define x86_fp80 @fisubr_fp80_i32(x86_fp80 %a0, i32 %a1) {273; X86-LABEL: fisubr_fp80_i32:274; X86: # %bb.0:275; X86-NEXT: pushl %eax276; X86-NEXT: .cfi_def_cfa_offset 8277; X86-NEXT: fldt {{[0-9]+}}(%esp)278; X86-NEXT: movl {{[0-9]+}}(%esp), %eax279; X86-NEXT: movl %eax, (%esp)280; X86-NEXT: fisubrl (%esp)281; X86-NEXT: popl %eax282; X86-NEXT: .cfi_def_cfa_offset 4283; X86-NEXT: retl284;285; X64-LABEL: fisubr_fp80_i32:286; X64: # %bb.0:287; X64-NEXT: fldt {{[0-9]+}}(%rsp)288; X64-NEXT: movl %edi, -{{[0-9]+}}(%rsp)289; X64-NEXT: fisubrl -{{[0-9]+}}(%rsp)290; X64-NEXT: retq291 %1 = sitofp i32 %a1 to x86_fp80292 %2 = fsub x86_fp80 %1, %a0293 ret x86_fp80 %2294}295 296define x86_fp80 @fisubr_fp80_i32_ld(x86_fp80 %a0, ptr%a1) {297; X86-LABEL: fisubr_fp80_i32_ld:298; X86: # %bb.0:299; X86-NEXT: pushl %eax300; X86-NEXT: .cfi_def_cfa_offset 8301; X86-NEXT: fldt {{[0-9]+}}(%esp)302; X86-NEXT: movl {{[0-9]+}}(%esp), %eax303; X86-NEXT: movl (%eax), %eax304; X86-NEXT: movl %eax, (%esp)305; X86-NEXT: fisubrl (%esp)306; X86-NEXT: popl %eax307; X86-NEXT: .cfi_def_cfa_offset 4308; X86-NEXT: retl309;310; X64-LABEL: fisubr_fp80_i32_ld:311; X64: # %bb.0:312; X64-NEXT: fldt {{[0-9]+}}(%rsp)313; X64-NEXT: movl (%rdi), %eax314; X64-NEXT: movl %eax, -{{[0-9]+}}(%rsp)315; X64-NEXT: fisubrl -{{[0-9]+}}(%rsp)316; X64-NEXT: retq317 %1 = load i32, ptr%a1318 %2 = sitofp i32 %1 to x86_fp80319 %3 = fsub x86_fp80 %2, %a0320 ret x86_fp80 %3321}322 323;324; FMUL325;326 327define x86_fp80 @fimul_fp80_i16(x86_fp80 %a0, i16 %a1) {328; X86-LABEL: fimul_fp80_i16:329; X86: # %bb.0:330; X86-NEXT: pushl %eax331; X86-NEXT: .cfi_def_cfa_offset 8332; X86-NEXT: fldt {{[0-9]+}}(%esp)333; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax334; X86-NEXT: movw %ax, {{[0-9]+}}(%esp)335; X86-NEXT: fimuls {{[0-9]+}}(%esp)336; X86-NEXT: popl %eax337; X86-NEXT: .cfi_def_cfa_offset 4338; X86-NEXT: retl339;340; X64-LABEL: fimul_fp80_i16:341; X64: # %bb.0:342; X64-NEXT: fldt {{[0-9]+}}(%rsp)343; X64-NEXT: movw %di, -{{[0-9]+}}(%rsp)344; X64-NEXT: fimuls -{{[0-9]+}}(%rsp)345; X64-NEXT: retq346 %1 = sitofp i16 %a1 to x86_fp80347 %2 = fmul x86_fp80 %a0, %1348 ret x86_fp80 %2349}350 351define x86_fp80 @fimul_fp80_i16_ld(x86_fp80 %a0, ptr%a1) {352; X86-LABEL: fimul_fp80_i16_ld:353; X86: # %bb.0:354; X86-NEXT: pushl %eax355; X86-NEXT: .cfi_def_cfa_offset 8356; X86-NEXT: fldt {{[0-9]+}}(%esp)357; X86-NEXT: movl {{[0-9]+}}(%esp), %eax358; X86-NEXT: movzwl (%eax), %eax359; X86-NEXT: movw %ax, {{[0-9]+}}(%esp)360; X86-NEXT: fimuls {{[0-9]+}}(%esp)361; X86-NEXT: popl %eax362; X86-NEXT: .cfi_def_cfa_offset 4363; X86-NEXT: retl364;365; X64-LABEL: fimul_fp80_i16_ld:366; X64: # %bb.0:367; X64-NEXT: fldt {{[0-9]+}}(%rsp)368; X64-NEXT: movzwl (%rdi), %eax369; X64-NEXT: movw %ax, -{{[0-9]+}}(%rsp)370; X64-NEXT: fimuls -{{[0-9]+}}(%rsp)371; X64-NEXT: retq372 %1 = load i16, ptr%a1373 %2 = sitofp i16 %1 to x86_fp80374 %3 = fmul x86_fp80 %a0, %2375 ret x86_fp80 %3376}377 378define x86_fp80 @fimul_fp80_i32(x86_fp80 %a0, i32 %a1) {379; X86-LABEL: fimul_fp80_i32:380; X86: # %bb.0:381; X86-NEXT: pushl %eax382; X86-NEXT: .cfi_def_cfa_offset 8383; X86-NEXT: fldt {{[0-9]+}}(%esp)384; X86-NEXT: movl {{[0-9]+}}(%esp), %eax385; X86-NEXT: movl %eax, (%esp)386; X86-NEXT: fimull (%esp)387; X86-NEXT: popl %eax388; X86-NEXT: .cfi_def_cfa_offset 4389; X86-NEXT: retl390;391; X64-LABEL: fimul_fp80_i32:392; X64: # %bb.0:393; X64-NEXT: fldt {{[0-9]+}}(%rsp)394; X64-NEXT: movl %edi, -{{[0-9]+}}(%rsp)395; X64-NEXT: fimull -{{[0-9]+}}(%rsp)396; X64-NEXT: retq397 %1 = sitofp i32 %a1 to x86_fp80398 %2 = fmul x86_fp80 %a0, %1399 ret x86_fp80 %2400}401 402define x86_fp80 @fimul_fp80_i32_ld(x86_fp80 %a0, ptr%a1) {403; X86-LABEL: fimul_fp80_i32_ld:404; X86: # %bb.0:405; X86-NEXT: pushl %eax406; X86-NEXT: .cfi_def_cfa_offset 8407; X86-NEXT: fldt {{[0-9]+}}(%esp)408; X86-NEXT: movl {{[0-9]+}}(%esp), %eax409; X86-NEXT: movl (%eax), %eax410; X86-NEXT: movl %eax, (%esp)411; X86-NEXT: fimull (%esp)412; X86-NEXT: popl %eax413; X86-NEXT: .cfi_def_cfa_offset 4414; X86-NEXT: retl415;416; X64-LABEL: fimul_fp80_i32_ld:417; X64: # %bb.0:418; X64-NEXT: fldt {{[0-9]+}}(%rsp)419; X64-NEXT: movl (%rdi), %eax420; X64-NEXT: movl %eax, -{{[0-9]+}}(%rsp)421; X64-NEXT: fimull -{{[0-9]+}}(%rsp)422; X64-NEXT: retq423 %1 = load i32, ptr%a1424 %2 = sitofp i32 %1 to x86_fp80425 %3 = fmul x86_fp80 %a0, %2426 ret x86_fp80 %3427}428 429;430; FDIV431;432 433define x86_fp80 @fidiv_fp80_i16(x86_fp80 %a0, i16 %a1) {434; X86-LABEL: fidiv_fp80_i16:435; X86: # %bb.0:436; X86-NEXT: pushl %eax437; X86-NEXT: .cfi_def_cfa_offset 8438; X86-NEXT: fldt {{[0-9]+}}(%esp)439; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax440; X86-NEXT: movw %ax, {{[0-9]+}}(%esp)441; X86-NEXT: fidivs {{[0-9]+}}(%esp)442; X86-NEXT: popl %eax443; X86-NEXT: .cfi_def_cfa_offset 4444; X86-NEXT: retl445;446; X64-LABEL: fidiv_fp80_i16:447; X64: # %bb.0:448; X64-NEXT: fldt {{[0-9]+}}(%rsp)449; X64-NEXT: movw %di, -{{[0-9]+}}(%rsp)450; X64-NEXT: fidivs -{{[0-9]+}}(%rsp)451; X64-NEXT: retq452 %1 = sitofp i16 %a1 to x86_fp80453 %2 = fdiv x86_fp80 %a0, %1454 ret x86_fp80 %2455}456 457define x86_fp80 @fidiv_fp80_i16_ld(x86_fp80 %a0, ptr%a1) {458; X86-LABEL: fidiv_fp80_i16_ld:459; X86: # %bb.0:460; X86-NEXT: pushl %eax461; X86-NEXT: .cfi_def_cfa_offset 8462; X86-NEXT: fldt {{[0-9]+}}(%esp)463; X86-NEXT: movl {{[0-9]+}}(%esp), %eax464; X86-NEXT: movzwl (%eax), %eax465; X86-NEXT: movw %ax, {{[0-9]+}}(%esp)466; X86-NEXT: fidivs {{[0-9]+}}(%esp)467; X86-NEXT: popl %eax468; X86-NEXT: .cfi_def_cfa_offset 4469; X86-NEXT: retl470;471; X64-LABEL: fidiv_fp80_i16_ld:472; X64: # %bb.0:473; X64-NEXT: fldt {{[0-9]+}}(%rsp)474; X64-NEXT: movzwl (%rdi), %eax475; X64-NEXT: movw %ax, -{{[0-9]+}}(%rsp)476; X64-NEXT: fidivs -{{[0-9]+}}(%rsp)477; X64-NEXT: retq478 %1 = load i16, ptr%a1479 %2 = sitofp i16 %1 to x86_fp80480 %3 = fdiv x86_fp80 %a0, %2481 ret x86_fp80 %3482}483 484define x86_fp80 @fidiv_fp80_i32(x86_fp80 %a0, i32 %a1) {485; X86-LABEL: fidiv_fp80_i32:486; X86: # %bb.0:487; X86-NEXT: pushl %eax488; X86-NEXT: .cfi_def_cfa_offset 8489; X86-NEXT: fldt {{[0-9]+}}(%esp)490; X86-NEXT: movl {{[0-9]+}}(%esp), %eax491; X86-NEXT: movl %eax, (%esp)492; X86-NEXT: fidivl (%esp)493; X86-NEXT: popl %eax494; X86-NEXT: .cfi_def_cfa_offset 4495; X86-NEXT: retl496;497; X64-LABEL: fidiv_fp80_i32:498; X64: # %bb.0:499; X64-NEXT: fldt {{[0-9]+}}(%rsp)500; X64-NEXT: movl %edi, -{{[0-9]+}}(%rsp)501; X64-NEXT: fidivl -{{[0-9]+}}(%rsp)502; X64-NEXT: retq503 %1 = sitofp i32 %a1 to x86_fp80504 %2 = fdiv x86_fp80 %a0, %1505 ret x86_fp80 %2506}507 508define x86_fp80 @fidiv_fp80_i32_ld(x86_fp80 %a0, ptr%a1) {509; X86-LABEL: fidiv_fp80_i32_ld:510; X86: # %bb.0:511; X86-NEXT: pushl %eax512; X86-NEXT: .cfi_def_cfa_offset 8513; X86-NEXT: fldt {{[0-9]+}}(%esp)514; X86-NEXT: movl {{[0-9]+}}(%esp), %eax515; X86-NEXT: movl (%eax), %eax516; X86-NEXT: movl %eax, (%esp)517; X86-NEXT: fidivl (%esp)518; X86-NEXT: popl %eax519; X86-NEXT: .cfi_def_cfa_offset 4520; X86-NEXT: retl521;522; X64-LABEL: fidiv_fp80_i32_ld:523; X64: # %bb.0:524; X64-NEXT: fldt {{[0-9]+}}(%rsp)525; X64-NEXT: movl (%rdi), %eax526; X64-NEXT: movl %eax, -{{[0-9]+}}(%rsp)527; X64-NEXT: fidivl -{{[0-9]+}}(%rsp)528; X64-NEXT: retq529 %1 = load i32, ptr%a1530 %2 = sitofp i32 %1 to x86_fp80531 %3 = fdiv x86_fp80 %a0, %2532 ret x86_fp80 %3533}534 535;536; FDIVR537;538 539define x86_fp80 @fidivr_fp80_i16(x86_fp80 %a0, i16 %a1) {540; X86-LABEL: fidivr_fp80_i16:541; X86: # %bb.0:542; X86-NEXT: pushl %eax543; X86-NEXT: .cfi_def_cfa_offset 8544; X86-NEXT: fldt {{[0-9]+}}(%esp)545; X86-NEXT: movzwl {{[0-9]+}}(%esp), %eax546; X86-NEXT: movw %ax, {{[0-9]+}}(%esp)547; X86-NEXT: fidivrs {{[0-9]+}}(%esp)548; X86-NEXT: popl %eax549; X86-NEXT: .cfi_def_cfa_offset 4550; X86-NEXT: retl551;552; X64-LABEL: fidivr_fp80_i16:553; X64: # %bb.0:554; X64-NEXT: fldt {{[0-9]+}}(%rsp)555; X64-NEXT: movw %di, -{{[0-9]+}}(%rsp)556; X64-NEXT: fidivrs -{{[0-9]+}}(%rsp)557; X64-NEXT: retq558 %1 = sitofp i16 %a1 to x86_fp80559 %2 = fdiv x86_fp80 %1, %a0560 ret x86_fp80 %2561}562 563define x86_fp80 @fidivr_fp80_i16_ld(x86_fp80 %a0, ptr%a1) {564; X86-LABEL: fidivr_fp80_i16_ld:565; X86: # %bb.0:566; X86-NEXT: pushl %eax567; X86-NEXT: .cfi_def_cfa_offset 8568; X86-NEXT: fldt {{[0-9]+}}(%esp)569; X86-NEXT: movl {{[0-9]+}}(%esp), %eax570; X86-NEXT: movzwl (%eax), %eax571; X86-NEXT: movw %ax, {{[0-9]+}}(%esp)572; X86-NEXT: fidivrs {{[0-9]+}}(%esp)573; X86-NEXT: popl %eax574; X86-NEXT: .cfi_def_cfa_offset 4575; X86-NEXT: retl576;577; X64-LABEL: fidivr_fp80_i16_ld:578; X64: # %bb.0:579; X64-NEXT: fldt {{[0-9]+}}(%rsp)580; X64-NEXT: movzwl (%rdi), %eax581; X64-NEXT: movw %ax, -{{[0-9]+}}(%rsp)582; X64-NEXT: fidivrs -{{[0-9]+}}(%rsp)583; X64-NEXT: retq584 %1 = load i16, ptr%a1585 %2 = sitofp i16 %1 to x86_fp80586 %3 = fdiv x86_fp80 %2, %a0587 ret x86_fp80 %3588}589 590define x86_fp80 @fidivr_fp80_i32(x86_fp80 %a0, i32 %a1) {591; X86-LABEL: fidivr_fp80_i32:592; X86: # %bb.0:593; X86-NEXT: pushl %eax594; X86-NEXT: .cfi_def_cfa_offset 8595; X86-NEXT: fldt {{[0-9]+}}(%esp)596; X86-NEXT: movl {{[0-9]+}}(%esp), %eax597; X86-NEXT: movl %eax, (%esp)598; X86-NEXT: fidivrl (%esp)599; X86-NEXT: popl %eax600; X86-NEXT: .cfi_def_cfa_offset 4601; X86-NEXT: retl602;603; X64-LABEL: fidivr_fp80_i32:604; X64: # %bb.0:605; X64-NEXT: fldt {{[0-9]+}}(%rsp)606; X64-NEXT: movl %edi, -{{[0-9]+}}(%rsp)607; X64-NEXT: fidivrl -{{[0-9]+}}(%rsp)608; X64-NEXT: retq609 %1 = sitofp i32 %a1 to x86_fp80610 %2 = fdiv x86_fp80 %1, %a0611 ret x86_fp80 %2612}613 614define x86_fp80 @fidivr_fp80_i32_ld(x86_fp80 %a0, ptr%a1) {615; X86-LABEL: fidivr_fp80_i32_ld:616; X86: # %bb.0:617; X86-NEXT: pushl %eax618; X86-NEXT: .cfi_def_cfa_offset 8619; X86-NEXT: fldt {{[0-9]+}}(%esp)620; X86-NEXT: movl {{[0-9]+}}(%esp), %eax621; X86-NEXT: movl (%eax), %eax622; X86-NEXT: movl %eax, (%esp)623; X86-NEXT: fidivrl (%esp)624; X86-NEXT: popl %eax625; X86-NEXT: .cfi_def_cfa_offset 4626; X86-NEXT: retl627;628; X64-LABEL: fidivr_fp80_i32_ld:629; X64: # %bb.0:630; X64-NEXT: fldt {{[0-9]+}}(%rsp)631; X64-NEXT: movl (%rdi), %eax632; X64-NEXT: movl %eax, -{{[0-9]+}}(%rsp)633; X64-NEXT: fidivrl -{{[0-9]+}}(%rsp)634; X64-NEXT: retq635 %1 = load i32, ptr%a1636 %2 = sitofp i32 %1 to x86_fp80637 %3 = fdiv x86_fp80 %2, %a0638 ret x86_fp80 %3639}640