424 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; NOTE: The SelectionDAG checks have been added by hand.3 4; RUN: llc < %s -mtriple=mips-linux-gnu -verify-machineinstrs \5; RUN: | FileCheck %s --check-prefix=O326; RUN: llc < %s -mtriple=mips64-linux-gnu -target-abi n32 -verify-machineinstrs \7; RUN: | FileCheck %s --check-prefix=N328; RUN: llc < %s -mtriple=mips64-linux-gnu -target-abi n64 -verify-machineinstrs \9; RUN: | FileCheck %s --check-prefix=N6410 11; RUN: llc < %s -mtriple=mips-linux-gnu -verify-machineinstrs -debug 2>&1 \12; RUN: | FileCheck %s --check-prefix=O32-SDAG13; RUN: llc < %s -mtriple=mips64-linux-gnu -target-abi n32 -verify-machineinstrs \14; RUN: -debug 2>&1 | FileCheck %s --check-prefix=N32-SDAG15; RUN: llc < %s -mtriple=mips64-linux-gnu -target-abi n64 -verify-machineinstrs \16; RUN: -debug 2>&1 | FileCheck %s --check-prefix=N64-SDAG17 18; REQUIRES: asserts19 20; Test that reserved argument area is shared between the memcpy call and the21; call to f2. This eliminates the nested call sequence nodes.22 23; Also, test that a basic call to memcpy reserves its outgoing argument area.24 25; FIXME: We should also be explicit about testing that the loads for the26; arguments are scheduled after the memcpy, but that wasn't enforced in27; this patch.28 29%struct.S1 = type { [65520 x i8] }30 31; O32-SDAG-LABEL: Initial selection DAG: %bb.0 'g:entry'32; O32-SDAG: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i32<{{.*}}>33; O32-SDAG-NOT: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i32<{{.*}}>34; O32-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetExternalSymbol:i32'memcpy'35; O32-SDAG-NOT: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i32<{{.*}}>36; O32-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetGlobalAddress:i32<ptr @f2>37; O32-SDAG: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i32<{{.*}}>38 39; N32-SDAG-LABEL: Initial selection DAG: %bb.0 'g:entry'40; N32-SDAG: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i32<{{.*}}>41; N32-SDAG-NOT: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i32<{{.*}}>42; N32-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetExternalSymbol:i32'memcpy'43; N32-SDAG-NOT: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i32<{{.*}}>44; N32-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetGlobalAddress:i32<ptr @f2>45; N32-SDAG: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i32<{{.*}}>46 47; N64-SDAG-LABEL: Initial selection DAG: %bb.0 'g:entry'48; N64-SDAG: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i64<{{.*}}>49; N64-SDAG-NOT: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i64<{{.*}}>50; N64-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetExternalSymbol:i64'memcpy'51; N64-SDAG-NOT: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i64<{{.*}}>52; N64-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetGlobalAddress:i64<ptr @f2>53; N64-SDAG: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i64<{{.*}}>54 55define dso_local void @g() #0 {56; O32-LABEL: g:57; O32: # %bb.0: # %entry58; O32-NEXT: lui $1, 159; O32-NEXT: subu $sp, $sp, $160; O32-NEXT: .cfi_def_cfa_offset 6553661; O32-NEXT: lui $1, 162; O32-NEXT: addu $1, $sp, $163; O32-NEXT: sw $ra, -4($1) # 4-byte Folded Spill64; O32-NEXT: .cfi_offset 31, -465; O32-NEXT: ori $1, $zero, 6552066; O32-NEXT: subu $sp, $sp, $167; O32-NEXT: addiu $1, $sp, 868; O32-NEXT: addiu $5, $1, 1669; O32-NEXT: addiu $4, $sp, 1670; O32-NEXT: jal memcpy71; O32-NEXT: ori $6, $zero, 6550472; O32-NEXT: lw $7, 20($sp)73; O32-NEXT: lw $6, 16($sp)74; O32-NEXT: lw $5, 12($sp)75; O32-NEXT: jal f276; O32-NEXT: lw $4, 8($sp)77; O32-NEXT: ori $1, $zero, 6552078; O32-NEXT: addu $sp, $sp, $179; O32-NEXT: lui $1, 180; O32-NEXT: addu $1, $sp, $181; O32-NEXT: lw $ra, -4($1) # 4-byte Folded Reload82; O32-NEXT: lui $1, 183; O32-NEXT: jr $ra84; O32-NEXT: addu $sp, $sp, $185;86; N32-LABEL: g:87; N32: # %bb.0: # %entry88; N32-NEXT: lui $1, 189; N32-NEXT: subu $sp, $sp, $190; N32-NEXT: .cfi_def_cfa_offset 6553691; N32-NEXT: lui $1, 192; N32-NEXT: addu $1, $sp, $193; N32-NEXT: sd $ra, -8($1) # 8-byte Folded Spill94; N32-NEXT: .cfi_offset 31, -895; N32-NEXT: ori $1, $zero, 6545696; N32-NEXT: subu $sp, $sp, $197; N32-NEXT: addiu $1, $sp, 898; N32-NEXT: addiu $5, $1, 6499; N32-NEXT: ori $6, $zero, 65456100; N32-NEXT: jal memcpy101; N32-NEXT: move $4, $sp102; N32-NEXT: ld $11, 64($sp)103; N32-NEXT: ld $10, 56($sp)104; N32-NEXT: ld $9, 48($sp)105; N32-NEXT: ld $8, 40($sp)106; N32-NEXT: ld $7, 32($sp)107; N32-NEXT: ld $6, 24($sp)108; N32-NEXT: ld $5, 16($sp)109; N32-NEXT: jal f2110; N32-NEXT: ld $4, 8($sp)111; N32-NEXT: ori $1, $zero, 65456112; N32-NEXT: addu $sp, $sp, $1113; N32-NEXT: lui $1, 1114; N32-NEXT: addu $1, $sp, $1115; N32-NEXT: ld $ra, -8($1) # 8-byte Folded Reload116; N32-NEXT: lui $1, 1117; N32-NEXT: jr $ra118; N32-NEXT: addu $sp, $sp, $1119;120; N64-LABEL: g:121; N64: # %bb.0: # %entry122; N64-NEXT: lui $1, 1123; N64-NEXT: dsubu $sp, $sp, $1124; N64-NEXT: .cfi_def_cfa_offset 65536125; N64-NEXT: lui $1, 1126; N64-NEXT: daddu $1, $sp, $1127; N64-NEXT: sd $ra, -8($1) # 8-byte Folded Spill128; N64-NEXT: .cfi_offset 31, -8129; N64-NEXT: ori $1, $zero, 65456130; N64-NEXT: dsubu $sp, $sp, $1131; N64-NEXT: daddiu $1, $sp, 8132; N64-NEXT: daddiu $5, $1, 64133; N64-NEXT: ori $6, $zero, 65456134; N64-NEXT: jal memcpy135; N64-NEXT: move $4, $sp136; N64-NEXT: ld $11, 64($sp)137; N64-NEXT: ld $10, 56($sp)138; N64-NEXT: ld $9, 48($sp)139; N64-NEXT: ld $8, 40($sp)140; N64-NEXT: ld $7, 32($sp)141; N64-NEXT: ld $6, 24($sp)142; N64-NEXT: ld $5, 16($sp)143; N64-NEXT: jal f2144; N64-NEXT: ld $4, 8($sp)145; N64-NEXT: ori $1, $zero, 65456146; N64-NEXT: daddu $sp, $sp, $1147; N64-NEXT: lui $1, 1148; N64-NEXT: daddu $1, $sp, $1149; N64-NEXT: ld $ra, -8($1) # 8-byte Folded Reload150; N64-NEXT: lui $1, 1151; N64-NEXT: jr $ra152; N64-NEXT: daddu $sp, $sp, $1153entry:154 %a = alloca %struct.S1, align 8155 call void @f2(ptr byval(%struct.S1) align 4 %a)156 ret void157}158 159declare dso_local void @f2(ptr byval(%struct.S1) align 4) #1160 161; O32-SDAG-LABEL: Initial selection DAG: %bb.0 'g2:entry'162; O32-SDAG: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i32<{{.*}}>163; O32-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetExternalSymbol:i32'memcpy'164; O32-SDAG: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i32<{{.*}}>165; O32-SDAG: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i32<{{.*}}>166; O32-SDAG-NOT: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i32<{{.*}}>167; O32-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetExternalSymbol:i32'memcpy'168; O32-SDAG-NOT: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i32<{{.*}}>169; O32-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetGlobalAddress:i32<ptr @f2>170; O32-SDAG: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i32<{{.*}}>171 172; N32-SDAG-LABEL: Initial selection DAG: %bb.0 'g2:entry'173; N32-SDAG: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i32<{{.*}}>174; N32-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetExternalSymbol:i32'memcpy'175; N32-SDAG: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i32<{{.*}}>176; N32-SDAG: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i32<{{.*}}>177; N32-SDAG-NOT: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i32<{{.*}}>178; N32-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetExternalSymbol:i32'memcpy'179; N32-SDAG-NOT: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i32<{{.*}}>180; N32-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetGlobalAddress:i32<ptr @f2>181; N32-SDAG: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i32<{{.*}}>182 183; N64-SDAG-LABEL: Initial selection DAG: %bb.0 'g2:entry'184; N64-SDAG: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i64<{{.*}}>185; N64-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetExternalSymbol:i64'memcpy'186; N64-SDAG: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i64<{{.*}}>187; N64-SDAG: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i64<{{.*}}>188; N64-SDAG-NOT: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i64<{{.*}}>189; N64-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetExternalSymbol:i64'memcpy'190; N64-SDAG-NOT: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i64<{{.*}}>191; N64-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetGlobalAddress:i64<ptr @f2>192; N64-SDAG: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i64<{{.*}}>193 194define dso_local void @g2(ptr %a) {195; O32-LABEL: g2:196; O32: # %bb.0: # %entry197; O32-NEXT: lui $1, 1198; O32-NEXT: addiu $1, $1, 8199; O32-NEXT: subu $sp, $sp, $1200; O32-NEXT: .cfi_def_cfa_offset 65544201; O32-NEXT: lui $1, 1202; O32-NEXT: addu $1, $sp, $1203; O32-NEXT: sw $ra, 4($1) # 4-byte Folded Spill204; O32-NEXT: lui $1, 1205; O32-NEXT: addu $1, $sp, $1206; O32-NEXT: sw $16, 0($1) # 4-byte Folded Spill207; O32-NEXT: .cfi_offset 31, -4208; O32-NEXT: .cfi_offset 16, -8209; O32-NEXT: move $5, $4210; O32-NEXT: lui $1, 1211; O32-NEXT: addu $1, $sp, $1212; O32-NEXT: sw $4, -4($1)213; O32-NEXT: addiu $sp, $sp, -16214; O32-NEXT: addiu $16, $sp, 8215; O32-NEXT: ori $6, $zero, 65520216; O32-NEXT: jal memcpy217; O32-NEXT: move $4, $16218; O32-NEXT: addiu $sp, $sp, 16219; O32-NEXT: ori $1, $zero, 65520220; O32-NEXT: subu $sp, $sp, $1221; O32-NEXT: addiu $5, $16, 16222; O32-NEXT: addiu $4, $sp, 16223; O32-NEXT: jal memcpy224; O32-NEXT: ori $6, $zero, 65504225; O32-NEXT: lw $7, 20($sp)226; O32-NEXT: lw $6, 16($sp)227; O32-NEXT: lw $5, 12($sp)228; O32-NEXT: jal f2229; O32-NEXT: lw $4, 8($sp)230; O32-NEXT: ori $1, $zero, 65520231; O32-NEXT: addu $sp, $sp, $1232; O32-NEXT: lui $1, 1233; O32-NEXT: addu $1, $sp, $1234; O32-NEXT: lw $16, 0($1) # 4-byte Folded Reload235; O32-NEXT: lui $1, 1236; O32-NEXT: addu $1, $sp, $1237; O32-NEXT: lw $ra, 4($1) # 4-byte Folded Reload238; O32-NEXT: lui $1, 1239; O32-NEXT: addiu $1, $1, 8240; O32-NEXT: jr $ra241; O32-NEXT: addu $sp, $sp, $1242;243; N32-LABEL: g2:244; N32: # %bb.0: # %entry245; N32-NEXT: lui $1, 1246; N32-NEXT: addiu $1, $1, 16247; N32-NEXT: subu $sp, $sp, $1248; N32-NEXT: .cfi_def_cfa_offset 65552249; N32-NEXT: lui $1, 1250; N32-NEXT: addu $1, $sp, $1251; N32-NEXT: sd $ra, 8($1) # 8-byte Folded Spill252; N32-NEXT: lui $1, 1253; N32-NEXT: addu $1, $sp, $1254; N32-NEXT: sd $16, 0($1) # 8-byte Folded Spill255; N32-NEXT: .cfi_offset 31, -8256; N32-NEXT: .cfi_offset 16, -16257; N32-NEXT: move $5, $4258; N32-NEXT: lui $1, 1259; N32-NEXT: addu $1, $sp, $1260; N32-NEXT: sw $4, -4($1)261; N32-NEXT: addiu $16, $sp, 8262; N32-NEXT: ori $6, $zero, 65520263; N32-NEXT: jal memcpy264; N32-NEXT: move $4, $16265; N32-NEXT: addiu $5, $16, 64266; N32-NEXT: ori $1, $zero, 65456267; N32-NEXT: subu $sp, $sp, $1268; N32-NEXT: ori $6, $zero, 65456269; N32-NEXT: jal memcpy270; N32-NEXT: move $4, $sp271; N32-NEXT: ld $11, 64($sp)272; N32-NEXT: ld $10, 56($sp)273; N32-NEXT: ld $9, 48($sp)274; N32-NEXT: ld $8, 40($sp)275; N32-NEXT: ld $7, 32($sp)276; N32-NEXT: ld $6, 24($sp)277; N32-NEXT: ld $5, 16($sp)278; N32-NEXT: jal f2279; N32-NEXT: ld $4, 8($sp)280; N32-NEXT: ori $1, $zero, 65456281; N32-NEXT: addu $sp, $sp, $1282; N32-NEXT: lui $1, 1283; N32-NEXT: addu $1, $sp, $1284; N32-NEXT: ld $16, 0($1) # 8-byte Folded Reload285; N32-NEXT: lui $1, 1286; N32-NEXT: addu $1, $sp, $1287; N32-NEXT: ld $ra, 8($1) # 8-byte Folded Reload288; N32-NEXT: lui $1, 1289; N32-NEXT: addiu $1, $1, 16290; N32-NEXT: jr $ra291; N32-NEXT: addu $sp, $sp, $1292;293; N64-LABEL: g2:294; N64: # %bb.0: # %entry295; N64-NEXT: lui $1, 1296; N64-NEXT: daddiu $1, $1, 16297; N64-NEXT: dsubu $sp, $sp, $1298; N64-NEXT: .cfi_def_cfa_offset 65552299; N64-NEXT: lui $1, 1300; N64-NEXT: daddu $1, $sp, $1301; N64-NEXT: sd $ra, 8($1) # 8-byte Folded Spill302; N64-NEXT: lui $1, 1303; N64-NEXT: daddu $1, $sp, $1304; N64-NEXT: sd $16, 0($1) # 8-byte Folded Spill305; N64-NEXT: .cfi_offset 31, -8306; N64-NEXT: .cfi_offset 16, -16307; N64-NEXT: move $5, $4308; N64-NEXT: lui $1, 1309; N64-NEXT: daddu $1, $sp, $1310; N64-NEXT: sd $4, -8($1)311; N64-NEXT: daddiu $16, $sp, 8312; N64-NEXT: ori $6, $zero, 65520313; N64-NEXT: jal memcpy314; N64-NEXT: move $4, $16315; N64-NEXT: ori $1, $zero, 65456316; N64-NEXT: dsubu $sp, $sp, $1317; N64-NEXT: daddiu $5, $16, 64318; N64-NEXT: ori $6, $zero, 65456319; N64-NEXT: jal memcpy320; N64-NEXT: move $4, $sp321; N64-NEXT: ld $11, 64($sp)322; N64-NEXT: ld $10, 56($sp)323; N64-NEXT: ld $9, 48($sp)324; N64-NEXT: ld $8, 40($sp)325; N64-NEXT: ld $7, 32($sp)326; N64-NEXT: ld $6, 24($sp)327; N64-NEXT: ld $5, 16($sp)328; N64-NEXT: jal f2329; N64-NEXT: ld $4, 8($sp)330; N64-NEXT: ori $1, $zero, 65456331; N64-NEXT: daddu $sp, $sp, $1332; N64-NEXT: lui $1, 1333; N64-NEXT: daddu $1, $sp, $1334; N64-NEXT: ld $16, 0($1) # 8-byte Folded Reload335; N64-NEXT: lui $1, 1336; N64-NEXT: daddu $1, $sp, $1337; N64-NEXT: ld $ra, 8($1) # 8-byte Folded Reload338; N64-NEXT: lui $1, 1339; N64-NEXT: daddiu $1, $1, 16340; N64-NEXT: jr $ra341; N64-NEXT: daddu $sp, $sp, $1342entry:343 %a.addr = alloca ptr344 %byval-temp = alloca %struct.S1, align 8345 store ptr %a, ptr %a.addr, align 4346 %0 = load ptr, ptr %a.addr, align 4347 call void @llvm.memcpy.p0.p0.i32(ptr align 4 %byval-temp, ptr align 1 %0, i32 65520, i1 false)348 call void @f2(ptr byval(%struct.S1) align 4 %byval-temp)349 ret void350}351 352; O32-SDAG-LABEL: Initial selection DAG: %bb.0 'g3:entry'353; O32-SDAG: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i32<16>354; O32-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetExternalSymbol:i32'memcpy'355; O32-SDAG: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i32<16>356 357; N32-SDAG-LABEL: Initial selection DAG: %bb.0 'g3:entry'358; N32-SDAG: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i32<0>359; N32-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetExternalSymbol:i32'memcpy'360; N32-SDAG: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i32<0>361 362; N64-SDAG-LABEL: Initial selection DAG: %bb.0 'g3:entry'363; N64-SDAG: t{{.*}}: ch,glue = callseq_start t{{.*}}, TargetConstant:i64<0>364; N64-SDAG: t{{.*}}: ch,glue = MipsISD::JmpLink t{{.*}}, TargetExternalSymbol:i64'memcpy'365; N64-SDAG: t{{.*}}: ch,glue = callseq_end t{{.*}}, TargetConstant:i64<0>366 367define dso_local i32 @g3(ptr %a, ptr %b) #0 {368; O32-LABEL: g3:369; O32: # %bb.0: # %entry370; O32-NEXT: addiu $sp, $sp, -32371; O32-NEXT: .cfi_def_cfa_offset 32372; O32-NEXT: sw $ra, 28($sp) # 4-byte Folded Spill373; O32-NEXT: .cfi_offset 31, -4374; O32-NEXT: sw $5, 20($sp)375; O32-NEXT: sw $4, 24($sp)376; O32-NEXT: jal memcpy377; O32-NEXT: ori $6, $zero, 65520378; O32-NEXT: addiu $2, $zero, 4379; O32-NEXT: lw $ra, 28($sp) # 4-byte Folded Reload380; O32-NEXT: jr $ra381; O32-NEXT: addiu $sp, $sp, 32382;383; N32-LABEL: g3:384; N32: # %bb.0: # %entry385; N32-NEXT: addiu $sp, $sp, -16386; N32-NEXT: .cfi_def_cfa_offset 16387; N32-NEXT: sd $ra, 8($sp) # 8-byte Folded Spill388; N32-NEXT: .cfi_offset 31, -8389; N32-NEXT: sw $5, 0($sp)390; N32-NEXT: sw $4, 4($sp)391; N32-NEXT: jal memcpy392; N32-NEXT: ori $6, $zero, 65520393; N32-NEXT: addiu $2, $zero, 4394; N32-NEXT: ld $ra, 8($sp) # 8-byte Folded Reload395; N32-NEXT: jr $ra396; N32-NEXT: addiu $sp, $sp, 16397;398; N64-LABEL: g3:399; N64: # %bb.0: # %entry400; N64-NEXT: daddiu $sp, $sp, -32401; N64-NEXT: .cfi_def_cfa_offset 32402; N64-NEXT: sd $ra, 24($sp) # 8-byte Folded Spill403; N64-NEXT: .cfi_offset 31, -8404; N64-NEXT: sd $5, 8($sp)405; N64-NEXT: sd $4, 16($sp)406; N64-NEXT: jal memcpy407; N64-NEXT: ori $6, $zero, 65520408; N64-NEXT: addiu $2, $zero, 4409; N64-NEXT: ld $ra, 24($sp) # 8-byte Folded Reload410; N64-NEXT: jr $ra411; N64-NEXT: daddiu $sp, $sp, 32412entry:413 %a.addr = alloca ptr414 %b.addr = alloca ptr415 store ptr %a, ptr %a.addr, align 4416 store ptr %b, ptr %b.addr, align 4417 %0 = load ptr, ptr %a.addr, align 4418 %1 = load ptr, ptr %b.addr, align 4419 call void @llvm.memcpy.p0.p0.i32(ptr align 1 %0, ptr align 1 %1, i32 65520, i1 false)420 ret i32 4421}422 423declare void @llvm.memcpy.p0.p0.i32(ptr nocapture writeonly, ptr nocapture readonly, i32, i1) #2424