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