1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=i386-unknown | FileCheck %s --check-prefix=X32 3; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s --check-prefix=X64 4 5target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 6 7define void @test(i256* %a, i256* %b, i256* %out) #0 { 8; X32-LABEL: test: 9; X32: # %bb.0: # %entry 10; X32-NEXT: pushl %ebp 11; X32-NEXT: .cfi_def_cfa_offset 8 12; X32-NEXT: pushl %ebx 13; X32-NEXT: .cfi_def_cfa_offset 12 14; X32-NEXT: pushl %edi 15; X32-NEXT: .cfi_def_cfa_offset 16 16; X32-NEXT: pushl %esi 17; X32-NEXT: .cfi_def_cfa_offset 20 18; X32-NEXT: subl $72, %esp 19; X32-NEXT: .cfi_def_cfa_offset 92 20; X32-NEXT: .cfi_offset %esi, -20 21; X32-NEXT: .cfi_offset %edi, -16 22; X32-NEXT: .cfi_offset %ebx, -12 23; X32-NEXT: .cfi_offset %ebp, -8 24; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 25; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx 26; X32-NEXT: movl 12(%ecx), %esi 27; X32-NEXT: movl 8(%ecx), %ebx 28; X32-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 29; X32-NEXT: movl (%eax), %edi 30; X32-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 31; X32-NEXT: movl %ebx, %eax 32; X32-NEXT: mull %edi 33; X32-NEXT: movl %edx, %ebp 34; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 35; X32-NEXT: movl %esi, %eax 36; X32-NEXT: movl %esi, %ecx 37; X32-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 38; X32-NEXT: mull %edi 39; X32-NEXT: movl %edx, %esi 40; X32-NEXT: movl %eax, %edi 41; X32-NEXT: addl %ebp, %edi 42; X32-NEXT: adcl $0, %esi 43; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 44; X32-NEXT: movl 4(%eax), %ebp 45; X32-NEXT: movl %ebx, %eax 46; X32-NEXT: mull %ebp 47; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 48; X32-NEXT: movl %edx, %ebx 49; X32-NEXT: addl %edi, %eax 50; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 51; X32-NEXT: adcl %esi, %ebx 52; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill 53; X32-NEXT: movl %ecx, %eax 54; X32-NEXT: mull %ebp 55; X32-NEXT: addl %ebx, %eax 56; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 57; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload 58; X32-NEXT: adcl %eax, %edx 59; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 60; X32-NEXT: movl {{[0-9]+}}(%esp), %edi 61; X32-NEXT: movl (%edi), %eax 62; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 63; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload 64; X32-NEXT: mull %ecx 65; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 66; X32-NEXT: movl %edx, %esi 67; X32-NEXT: movl 4(%edi), %eax 68; X32-NEXT: movl %eax, %edi 69; X32-NEXT: mull %ecx 70; X32-NEXT: movl %edx, %ebx 71; X32-NEXT: movl %eax, %ebp 72; X32-NEXT: addl %esi, %ebp 73; X32-NEXT: adcl $0, %ebx 74; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload 75; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload 76; X32-NEXT: mull %esi 77; X32-NEXT: movl %edx, %ecx 78; X32-NEXT: addl %ebp, %eax 79; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 80; X32-NEXT: adcl %ebx, %ecx 81; X32-NEXT: setb %bl 82; X32-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 83; X32-NEXT: movl %edi, %eax 84; X32-NEXT: mull %esi 85; X32-NEXT: movl %eax, %ebp 86; X32-NEXT: addl %ecx, %ebp 87; X32-NEXT: movzbl %bl, %eax 88; X32-NEXT: adcl %eax, %edx 89; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload 90; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload 91; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 92; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill 93; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill 94; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 95; X32-NEXT: movl 8(%eax), %ecx 96; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 97; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload 98; X32-NEXT: movl %esi, %eax 99; X32-NEXT: mull %ecx 100; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 101; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 102; X32-NEXT: movl %edi, %eax 103; X32-NEXT: mull %ecx 104; X32-NEXT: movl %edx, %ebx 105; X32-NEXT: movl %eax, %edi 106; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload 107; X32-NEXT: adcl $0, %ebx 108; X32-NEXT: movl {{[0-9]+}}(%esp), %eax 109; X32-NEXT: movl 12(%eax), %ecx 110; X32-NEXT: movl %esi, %eax 111; X32-NEXT: mull %ecx 112; X32-NEXT: movl %ecx, (%esp) # 4-byte Spill 113; X32-NEXT: movl %edx, %esi 114; X32-NEXT: addl %edi, %eax 115; X32-NEXT: movl %eax, %edi 116; X32-NEXT: adcl %ebx, %esi 117; X32-NEXT: setb %bl 118; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload 119; X32-NEXT: mull %ecx 120; X32-NEXT: movl %eax, %ecx 121; X32-NEXT: addl %esi, %ecx 122; X32-NEXT: movzbl %bl, %eax 123; X32-NEXT: adcl %eax, %edx 124; X32-NEXT: addl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill 125; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload 126; X32-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 127; X32-NEXT: adcl $0, %ecx 128; X32-NEXT: adcl $0, %edx 129; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload 130; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload 131; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 132; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill 133; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload 134; X32-NEXT: movl %esi, %eax 135; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload 136; X32-NEXT: mull %edi 137; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 138; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 139; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload 140; X32-NEXT: mull %edi 141; X32-NEXT: movl %edx, %ebx 142; X32-NEXT: movl %eax, %ebp 143; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload 144; X32-NEXT: adcl $0, %ebx 145; X32-NEXT: movl %esi, %eax 146; X32-NEXT: movl (%esp), %edi # 4-byte Reload 147; X32-NEXT: mull %edi 148; X32-NEXT: movl %edx, %esi 149; X32-NEXT: addl %ebp, %eax 150; X32-NEXT: movl %eax, %ebp 151; X32-NEXT: adcl %ebx, %esi 152; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill 153; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload 154; X32-NEXT: mull %edi 155; X32-NEXT: movl %edi, %ebx 156; X32-NEXT: addl %esi, %eax 157; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 1-byte Folded Reload 158; X32-NEXT: adcl %esi, %edx 159; X32-NEXT: addl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill 160; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload 161; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 162; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload 163; X32-NEXT: adcl %ecx, %eax 164; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 165; X32-NEXT: adcl $0, %edx 166; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 167; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx 168; X32-NEXT: movl 16(%ecx), %edi 169; X32-NEXT: imull %edi, %ebx 170; X32-NEXT: movl %edi, %eax 171; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload 172; X32-NEXT: mull %ebp 173; X32-NEXT: movl %eax, (%esp) # 4-byte Spill 174; X32-NEXT: addl %ebx, %edx 175; X32-NEXT: movl 20(%ecx), %eax 176; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 177; X32-NEXT: imull %eax, %ebp 178; X32-NEXT: addl %edx, %ebp 179; X32-NEXT: movl 24(%ecx), %eax 180; X32-NEXT: movl %eax, %ecx 181; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload 182; X32-NEXT: imull %ebx, %ecx 183; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload 184; X32-NEXT: mull %esi 185; X32-NEXT: addl %ecx, %edx 186; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx 187; X32-NEXT: movl 28(%ecx), %ecx 188; X32-NEXT: imull %esi, %ecx 189; X32-NEXT: addl %edx, %ecx 190; X32-NEXT: addl (%esp), %eax # 4-byte Folded Reload 191; X32-NEXT: movl %eax, (%esp) # 4-byte Spill 192; X32-NEXT: adcl %ebp, %ecx 193; X32-NEXT: movl %esi, %eax 194; X32-NEXT: mull %edi 195; X32-NEXT: movl %edx, %ebp 196; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 197; X32-NEXT: movl %ebx, %eax 198; X32-NEXT: mull %edi 199; X32-NEXT: movl %edx, %esi 200; X32-NEXT: movl %eax, %ebx 201; X32-NEXT: addl %ebp, %ebx 202; X32-NEXT: adcl $0, %esi 203; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload 204; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload 205; X32-NEXT: mull %ebp 206; X32-NEXT: movl %edx, %edi 207; X32-NEXT: addl %ebx, %eax 208; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 209; X32-NEXT: adcl %esi, %edi 210; X32-NEXT: setb %bl 211; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload 212; X32-NEXT: mull %ebp 213; X32-NEXT: addl %edi, %eax 214; X32-NEXT: movzbl %bl, %esi 215; X32-NEXT: adcl %esi, %edx 216; X32-NEXT: addl (%esp), %eax # 4-byte Folded Reload 217; X32-NEXT: movl %eax, (%esp) # 4-byte Spill 218; X32-NEXT: adcl %ecx, %edx 219; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 220; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx 221; X32-NEXT: movl 28(%ebx), %ecx 222; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload 223; X32-NEXT: imull %esi, %ecx 224; X32-NEXT: movl 24(%ebx), %edi 225; X32-NEXT: movl %esi, %eax 226; X32-NEXT: mull %edi 227; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 228; X32-NEXT: addl %ecx, %edx 229; X32-NEXT: imull {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload 230; X32-NEXT: addl %edx, %edi 231; X32-NEXT: movl 16(%ebx), %ebp 232; X32-NEXT: movl 20(%ebx), %ebx 233; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload 234; X32-NEXT: movl %eax, %ecx 235; X32-NEXT: imull %ebx, %ecx 236; X32-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 237; X32-NEXT: mull %ebp 238; X32-NEXT: addl %ecx, %edx 239; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload 240; X32-NEXT: imull %ebp, %ecx 241; X32-NEXT: addl %edx, %ecx 242; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload 243; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 244; X32-NEXT: adcl %edi, %ecx 245; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 246; X32-NEXT: movl %ebp, %eax 247; X32-NEXT: mull %esi 248; X32-NEXT: movl %edx, %edi 249; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill 250; X32-NEXT: movl %ebx, %eax 251; X32-NEXT: mull %esi 252; X32-NEXT: movl %edx, %ecx 253; X32-NEXT: movl %eax, %ebx 254; X32-NEXT: addl %edi, %ebx 255; X32-NEXT: adcl $0, %ecx 256; X32-NEXT: movl %ebp, %eax 257; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload 258; X32-NEXT: mull %ebp 259; X32-NEXT: movl %edx, %edi 260; X32-NEXT: movl %eax, %esi 261; X32-NEXT: addl %ebx, %esi 262; X32-NEXT: adcl %ecx, %edi 263; X32-NEXT: setb %cl 264; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload 265; X32-NEXT: mull %ebp 266; X32-NEXT: addl %edi, %eax 267; X32-NEXT: movzbl %cl, %ecx 268; X32-NEXT: adcl %ecx, %edx 269; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload 270; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload 271; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload 272; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload 273; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload 274; X32-NEXT: adcl (%esp), %eax # 4-byte Folded Reload 275; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload 276; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload 277; X32-NEXT: movl %ecx, %ebx 278; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload 279; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload 280; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload 281; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx 282; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload 283; X32-NEXT: movl %edi, (%ecx) 284; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload 285; X32-NEXT: movl %edi, 4(%ecx) 286; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload 287; X32-NEXT: movl %edi, 8(%ecx) 288; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload 289; X32-NEXT: movl %edi, 12(%ecx) 290; X32-NEXT: movl %ebx, 16(%ecx) 291; X32-NEXT: movl %esi, 20(%ecx) 292; X32-NEXT: movl %eax, 24(%ecx) 293; X32-NEXT: movl %edx, 28(%ecx) 294; X32-NEXT: addl $72, %esp 295; X32-NEXT: .cfi_def_cfa_offset 20 296; X32-NEXT: popl %esi 297; X32-NEXT: .cfi_def_cfa_offset 16 298; X32-NEXT: popl %edi 299; X32-NEXT: .cfi_def_cfa_offset 12 300; X32-NEXT: popl %ebx 301; X32-NEXT: .cfi_def_cfa_offset 8 302; X32-NEXT: popl %ebp 303; X32-NEXT: .cfi_def_cfa_offset 4 304; X32-NEXT: retl 305; 306; X64-LABEL: test: 307; X64: # %bb.0: # %entry 308; X64-NEXT: pushq %r15 309; X64-NEXT: .cfi_def_cfa_offset 16 310; X64-NEXT: pushq %r14 311; X64-NEXT: .cfi_def_cfa_offset 24 312; X64-NEXT: pushq %rbx 313; X64-NEXT: .cfi_def_cfa_offset 32 314; X64-NEXT: .cfi_offset %rbx, -32 315; X64-NEXT: .cfi_offset %r14, -24 316; X64-NEXT: .cfi_offset %r15, -16 317; X64-NEXT: movq %rdx, %r9 318; X64-NEXT: movq (%rdi), %r11 319; X64-NEXT: movq 8(%rdi), %r8 320; X64-NEXT: movq 16(%rdi), %rbx 321; X64-NEXT: movq 16(%rsi), %r10 322; X64-NEXT: movq (%rsi), %rcx 323; X64-NEXT: movq 8(%rsi), %r15 324; X64-NEXT: movq 24(%rdi), %rdi 325; X64-NEXT: imulq %rcx, %rdi 326; X64-NEXT: movq %rcx, %rax 327; X64-NEXT: mulq %rbx 328; X64-NEXT: movq %rax, %r14 329; X64-NEXT: addq %rdi, %rdx 330; X64-NEXT: imulq %r15, %rbx 331; X64-NEXT: addq %rdx, %rbx 332; X64-NEXT: movq %r10, %rdi 333; X64-NEXT: imulq %r8, %rdi 334; X64-NEXT: movq %r10, %rax 335; X64-NEXT: mulq %r11 336; X64-NEXT: movq %rax, %r10 337; X64-NEXT: addq %rdi, %rdx 338; X64-NEXT: movq 24(%rsi), %rdi 339; X64-NEXT: imulq %r11, %rdi 340; X64-NEXT: addq %rdx, %rdi 341; X64-NEXT: addq %r14, %r10 342; X64-NEXT: adcq %rbx, %rdi 343; X64-NEXT: movq %r11, %rax 344; X64-NEXT: mulq %rcx 345; X64-NEXT: movq %rdx, %rsi 346; X64-NEXT: movq %rax, %r14 347; X64-NEXT: movq %r8, %rax 348; X64-NEXT: mulq %rcx 349; X64-NEXT: movq %rdx, %rcx 350; X64-NEXT: movq %rax, %rbx 351; X64-NEXT: addq %rsi, %rbx 352; X64-NEXT: adcq $0, %rcx 353; X64-NEXT: movq %r11, %rax 354; X64-NEXT: mulq %r15 355; X64-NEXT: movq %rdx, %rsi 356; X64-NEXT: movq %rax, %r11 357; X64-NEXT: addq %rbx, %r11 358; X64-NEXT: adcq %rcx, %rsi 359; X64-NEXT: setb %al 360; X64-NEXT: movzbl %al, %ecx 361; X64-NEXT: movq %r8, %rax 362; X64-NEXT: mulq %r15 363; X64-NEXT: addq %rsi, %rax 364; X64-NEXT: adcq %rcx, %rdx 365; X64-NEXT: addq %r10, %rax 366; X64-NEXT: adcq %rdi, %rdx 367; X64-NEXT: movq %r14, (%r9) 368; X64-NEXT: movq %r11, 8(%r9) 369; X64-NEXT: movq %rax, 16(%r9) 370; X64-NEXT: movq %rdx, 24(%r9) 371; X64-NEXT: popq %rbx 372; X64-NEXT: .cfi_def_cfa_offset 24 373; X64-NEXT: popq %r14 374; X64-NEXT: .cfi_def_cfa_offset 16 375; X64-NEXT: popq %r15 376; X64-NEXT: .cfi_def_cfa_offset 8 377; X64-NEXT: retq 378entry: 379 %av = load i256, i256* %a 380 %bv = load i256, i256* %b 381 %r = mul i256 %av, %bv 382 store i256 %r, i256* %out 383 ret void 384} 385 386attributes #0 = { norecurse nounwind uwtable } 387