431 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=sparc | FileCheck %s -check-prefix=SPARC3; RUN: llc < %s -mtriple=sparc -mattr=popc | FileCheck %s -check-prefix=SPARC-POPC4; RUN: llc < %s -mtriple=sparc -mattr=vis3 | FileCheck %s -check-prefix=SPARC-VIS35; RUN: llc < %s -mtriple=sparcv9 | FileCheck %s -check-prefix=SPARC646; RUN: llc < %s -mtriple=sparcv9 -mattr=popc | FileCheck %s -check-prefix=SPARC64-POPC7; RUN: llc < %s -mtriple=sparcv9 -mattr=vis3 | FileCheck %s -check-prefix=SPARC64-VIS38 9define i32 @i32_nopoison(i32 %x) nounwind {10; SPARC-LABEL: i32_nopoison:11; SPARC: ! %bb.0:12; SPARC-NEXT: cmp %o0, 013; SPARC-NEXT: be .LBB0_214; SPARC-NEXT: nop15; SPARC-NEXT: ! %bb.1: ! %cond.false16; SPARC-NEXT: sub %g0, %o0, %o117; SPARC-NEXT: and %o0, %o1, %o018; SPARC-NEXT: sethi 122669, %o119; SPARC-NEXT: or %o1, 305, %o120; SPARC-NEXT: smul %o0, %o1, %o021; SPARC-NEXT: srl %o0, 27, %o022; SPARC-NEXT: sethi %hi(.LCPI0_0), %o123; SPARC-NEXT: add %o1, %lo(.LCPI0_0), %o124; SPARC-NEXT: retl25; SPARC-NEXT: ldub [%o1+%o0], %o026; SPARC-NEXT: .LBB0_2:27; SPARC-NEXT: retl28; SPARC-NEXT: mov 32, %o029;30; SPARC-POPC-LABEL: i32_nopoison:31; SPARC-POPC: ! %bb.0:32; SPARC-POPC-NEXT: cmp %o0, 033; SPARC-POPC-NEXT: be .LBB0_234; SPARC-POPC-NEXT: nop35; SPARC-POPC-NEXT: ! %bb.1: ! %cond.false36; SPARC-POPC-NEXT: sub %g0, %o0, %o137; SPARC-POPC-NEXT: and %o0, %o1, %o038; SPARC-POPC-NEXT: sethi 122669, %o139; SPARC-POPC-NEXT: or %o1, 305, %o140; SPARC-POPC-NEXT: smul %o0, %o1, %o041; SPARC-POPC-NEXT: srl %o0, 27, %o042; SPARC-POPC-NEXT: sethi %hi(.LCPI0_0), %o143; SPARC-POPC-NEXT: add %o1, %lo(.LCPI0_0), %o144; SPARC-POPC-NEXT: retl45; SPARC-POPC-NEXT: ldub [%o1+%o0], %o046; SPARC-POPC-NEXT: .LBB0_2:47; SPARC-POPC-NEXT: retl48; SPARC-POPC-NEXT: mov 32, %o049;50; SPARC-VIS3-LABEL: i32_nopoison:51; SPARC-VIS3: ! %bb.0:52; SPARC-VIS3-NEXT: add %o0, -1, %o153; SPARC-VIS3-NEXT: andn %o1, %o0, %o054; SPARC-VIS3-NEXT: srl %o0, 0, %o055; SPARC-VIS3-NEXT: lzcnt %o0, %o056; SPARC-VIS3-NEXT: add %o0, -32, %o057; SPARC-VIS3-NEXT: mov 32, %o158; SPARC-VIS3-NEXT: retl59; SPARC-VIS3-NEXT: sub %o1, %o0, %o060;61; SPARC64-LABEL: i32_nopoison:62; SPARC64: ! %bb.0:63; SPARC64-NEXT: cmp %o0, 064; SPARC64-NEXT: be %icc, .LBB0_265; SPARC64-NEXT: nop66; SPARC64-NEXT: ! %bb.1: ! %cond.false67; SPARC64-NEXT: sub %g0, %o0, %o168; SPARC64-NEXT: and %o0, %o1, %o069; SPARC64-NEXT: sethi 122669, %o170; SPARC64-NEXT: or %o1, 305, %o171; SPARC64-NEXT: mulx %o0, %o1, %o072; SPARC64-NEXT: srl %o0, 27, %o073; SPARC64-NEXT: srl %o0, 0, %o074; SPARC64-NEXT: sethi %h44(.LCPI0_0), %o175; SPARC64-NEXT: add %o1, %m44(.LCPI0_0), %o176; SPARC64-NEXT: sllx %o1, 12, %o177; SPARC64-NEXT: add %o1, %l44(.LCPI0_0), %o178; SPARC64-NEXT: retl79; SPARC64-NEXT: ldub [%o1+%o0], %o080; SPARC64-NEXT: .LBB0_2:81; SPARC64-NEXT: retl82; SPARC64-NEXT: mov 32, %o083;84; SPARC64-POPC-LABEL: i32_nopoison:85; SPARC64-POPC: ! %bb.0:86; SPARC64-POPC-NEXT: add %o0, -1, %o187; SPARC64-POPC-NEXT: andn %o1, %o0, %o088; SPARC64-POPC-NEXT: srl %o0, 0, %o089; SPARC64-POPC-NEXT: retl90; SPARC64-POPC-NEXT: popc %o0, %o091;92; SPARC64-VIS3-LABEL: i32_nopoison:93; SPARC64-VIS3: ! %bb.0:94; SPARC64-VIS3-NEXT: sethi 0, %o195; SPARC64-VIS3-NEXT: or %o1, 0, %o296; SPARC64-VIS3-NEXT: or %o1, 1, %o197; SPARC64-VIS3-NEXT: sllx %o1, 32, %o198; SPARC64-VIS3-NEXT: or %o1, %o2, %o199; SPARC64-VIS3-NEXT: or %o0, %o1, %o0100; SPARC64-VIS3-NEXT: add %o0, -1, %o1101; SPARC64-VIS3-NEXT: andn %o1, %o0, %o0102; SPARC64-VIS3-NEXT: lzcnt %o0, %o0103; SPARC64-VIS3-NEXT: mov 64, %o1104; SPARC64-VIS3-NEXT: retl105; SPARC64-VIS3-NEXT: sub %o1, %o0, %o0106 %ret = call i32 @llvm.cttz.i32(i32 %x, i1 false)107 ret i32 %ret108}109 110define i32 @i32_poison(i32 %x) nounwind {111; SPARC-LABEL: i32_poison:112; SPARC: ! %bb.0:113; SPARC-NEXT: sub %g0, %o0, %o1114; SPARC-NEXT: and %o0, %o1, %o0115; SPARC-NEXT: sethi 122669, %o1116; SPARC-NEXT: or %o1, 305, %o1117; SPARC-NEXT: smul %o0, %o1, %o0118; SPARC-NEXT: srl %o0, 27, %o0119; SPARC-NEXT: sethi %hi(.LCPI1_0), %o1120; SPARC-NEXT: add %o1, %lo(.LCPI1_0), %o1121; SPARC-NEXT: retl122; SPARC-NEXT: ldub [%o1+%o0], %o0123;124; SPARC-POPC-LABEL: i32_poison:125; SPARC-POPC: ! %bb.0:126; SPARC-POPC-NEXT: sub %g0, %o0, %o1127; SPARC-POPC-NEXT: and %o0, %o1, %o0128; SPARC-POPC-NEXT: sethi 122669, %o1129; SPARC-POPC-NEXT: or %o1, 305, %o1130; SPARC-POPC-NEXT: smul %o0, %o1, %o0131; SPARC-POPC-NEXT: srl %o0, 27, %o0132; SPARC-POPC-NEXT: sethi %hi(.LCPI1_0), %o1133; SPARC-POPC-NEXT: add %o1, %lo(.LCPI1_0), %o1134; SPARC-POPC-NEXT: retl135; SPARC-POPC-NEXT: ldub [%o1+%o0], %o0136;137; SPARC-VIS3-LABEL: i32_poison:138; SPARC-VIS3: ! %bb.0:139; SPARC-VIS3-NEXT: add %o0, -1, %o1140; SPARC-VIS3-NEXT: andn %o1, %o0, %o0141; SPARC-VIS3-NEXT: srl %o0, 0, %o0142; SPARC-VIS3-NEXT: lzcnt %o0, %o0143; SPARC-VIS3-NEXT: add %o0, -32, %o0144; SPARC-VIS3-NEXT: mov 32, %o1145; SPARC-VIS3-NEXT: retl146; SPARC-VIS3-NEXT: sub %o1, %o0, %o0147;148; SPARC64-LABEL: i32_poison:149; SPARC64: ! %bb.0:150; SPARC64-NEXT: sub %g0, %o0, %o1151; SPARC64-NEXT: and %o0, %o1, %o0152; SPARC64-NEXT: sethi 122669, %o1153; SPARC64-NEXT: or %o1, 305, %o1154; SPARC64-NEXT: mulx %o0, %o1, %o0155; SPARC64-NEXT: srl %o0, 27, %o0156; SPARC64-NEXT: srl %o0, 0, %o0157; SPARC64-NEXT: sethi %h44(.LCPI1_0), %o1158; SPARC64-NEXT: add %o1, %m44(.LCPI1_0), %o1159; SPARC64-NEXT: sllx %o1, 12, %o1160; SPARC64-NEXT: add %o1, %l44(.LCPI1_0), %o1161; SPARC64-NEXT: retl162; SPARC64-NEXT: ldub [%o1+%o0], %o0163;164; SPARC64-POPC-LABEL: i32_poison:165; SPARC64-POPC: ! %bb.0:166; SPARC64-POPC-NEXT: add %o0, -1, %o1167; SPARC64-POPC-NEXT: andn %o1, %o0, %o0168; SPARC64-POPC-NEXT: srl %o0, 0, %o0169; SPARC64-POPC-NEXT: retl170; SPARC64-POPC-NEXT: popc %o0, %o0171;172; SPARC64-VIS3-LABEL: i32_poison:173; SPARC64-VIS3: ! %bb.0:174; SPARC64-VIS3-NEXT: add %o0, -1, %o1175; SPARC64-VIS3-NEXT: andn %o1, %o0, %o0176; SPARC64-VIS3-NEXT: lzcnt %o0, %o0177; SPARC64-VIS3-NEXT: mov 64, %o1178; SPARC64-VIS3-NEXT: retl179; SPARC64-VIS3-NEXT: sub %o1, %o0, %o0180 %ret = call i32 @llvm.cttz.i32(i32 %x, i1 true)181 ret i32 %ret182}183 184define i64 @i64_nopoison(i64 %x) nounwind {185; SPARC-LABEL: i64_nopoison:186; SPARC: ! %bb.0:187; SPARC-NEXT: orcc %o1, %o0, %g0188; SPARC-NEXT: be .LBB2_3189; SPARC-NEXT: nop190; SPARC-NEXT: ! %bb.1: ! %cond.false191; SPARC-NEXT: sethi 122669, %o2192; SPARC-NEXT: or %o2, 305, %o2193; SPARC-NEXT: sethi %hi(.LCPI2_0), %o3194; SPARC-NEXT: cmp %o1, 0195; SPARC-NEXT: bne .LBB2_4196; SPARC-NEXT: add %o3, %lo(.LCPI2_0), %o3197; SPARC-NEXT: ! %bb.2: ! %cond.false198; SPARC-NEXT: sub %g0, %o0, %o1199; SPARC-NEXT: and %o0, %o1, %o0200; SPARC-NEXT: smul %o0, %o2, %o0201; SPARC-NEXT: srl %o0, 27, %o0202; SPARC-NEXT: ldub [%o3+%o0], %o0203; SPARC-NEXT: add %o0, 32, %o1204; SPARC-NEXT: retl205; SPARC-NEXT: mov %g0, %o0206; SPARC-NEXT: .LBB2_3:207; SPARC-NEXT: mov %g0, %o0208; SPARC-NEXT: retl209; SPARC-NEXT: mov 64, %o1210; SPARC-NEXT: .LBB2_4:211; SPARC-NEXT: sub %g0, %o1, %o0212; SPARC-NEXT: and %o1, %o0, %o0213; SPARC-NEXT: smul %o0, %o2, %o0214; SPARC-NEXT: srl %o0, 27, %o0215; SPARC-NEXT: ldub [%o3+%o0], %o1216; SPARC-NEXT: retl217; SPARC-NEXT: mov %g0, %o0218;219; SPARC-POPC-LABEL: i64_nopoison:220; SPARC-POPC: ! %bb.0:221; SPARC-POPC-NEXT: orcc %o1, %o0, %g0222; SPARC-POPC-NEXT: be .LBB2_3223; SPARC-POPC-NEXT: nop224; SPARC-POPC-NEXT: ! %bb.1: ! %cond.false225; SPARC-POPC-NEXT: sethi 122669, %o2226; SPARC-POPC-NEXT: or %o2, 305, %o2227; SPARC-POPC-NEXT: sethi %hi(.LCPI2_0), %o3228; SPARC-POPC-NEXT: cmp %o1, 0229; SPARC-POPC-NEXT: bne .LBB2_4230; SPARC-POPC-NEXT: add %o3, %lo(.LCPI2_0), %o3231; SPARC-POPC-NEXT: ! %bb.2: ! %cond.false232; SPARC-POPC-NEXT: sub %g0, %o0, %o1233; SPARC-POPC-NEXT: and %o0, %o1, %o0234; SPARC-POPC-NEXT: smul %o0, %o2, %o0235; SPARC-POPC-NEXT: srl %o0, 27, %o0236; SPARC-POPC-NEXT: ldub [%o3+%o0], %o0237; SPARC-POPC-NEXT: add %o0, 32, %o1238; SPARC-POPC-NEXT: retl239; SPARC-POPC-NEXT: mov %g0, %o0240; SPARC-POPC-NEXT: .LBB2_3:241; SPARC-POPC-NEXT: mov %g0, %o0242; SPARC-POPC-NEXT: retl243; SPARC-POPC-NEXT: mov 64, %o1244; SPARC-POPC-NEXT: .LBB2_4:245; SPARC-POPC-NEXT: sub %g0, %o1, %o0246; SPARC-POPC-NEXT: and %o1, %o0, %o0247; SPARC-POPC-NEXT: smul %o0, %o2, %o0248; SPARC-POPC-NEXT: srl %o0, 27, %o0249; SPARC-POPC-NEXT: ldub [%o3+%o0], %o1250; SPARC-POPC-NEXT: retl251; SPARC-POPC-NEXT: mov %g0, %o0252;253; SPARC-VIS3-LABEL: i64_nopoison:254; SPARC-VIS3: ! %bb.0:255; SPARC-VIS3-NEXT: add %o0, -1, %o2256; SPARC-VIS3-NEXT: andn %o2, %o0, %o0257; SPARC-VIS3-NEXT: srl %o0, 0, %o0258; SPARC-VIS3-NEXT: lzcnt %o0, %o0259; SPARC-VIS3-NEXT: add %o0, -32, %o0260; SPARC-VIS3-NEXT: mov 64, %o2261; SPARC-VIS3-NEXT: sub %o2, %o0, %o2262; SPARC-VIS3-NEXT: add %o1, -1, %o0263; SPARC-VIS3-NEXT: andn %o0, %o1, %o0264; SPARC-VIS3-NEXT: srl %o0, 0, %o0265; SPARC-VIS3-NEXT: lzcnt %o0, %o0266; SPARC-VIS3-NEXT: add %o0, -32, %o0267; SPARC-VIS3-NEXT: mov 32, %o3268; SPARC-VIS3-NEXT: sub %o3, %o0, %o0269; SPARC-VIS3-NEXT: cmp %o1, 0270; SPARC-VIS3-NEXT: movne %icc, %o0, %o2271; SPARC-VIS3-NEXT: mov %g0, %o0272; SPARC-VIS3-NEXT: retl273; SPARC-VIS3-NEXT: mov %o2, %o1274;275; SPARC64-LABEL: i64_nopoison:276; SPARC64: ! %bb.0:277; SPARC64-NEXT: brz %o0, .LBB2_2278; SPARC64-NEXT: nop279; SPARC64-NEXT: ! %bb.1: ! %cond.false280; SPARC64-NEXT: sub %g0, %o0, %o1281; SPARC64-NEXT: and %o0, %o1, %o0282; SPARC64-NEXT: sethi 3362647, %o1283; SPARC64-NEXT: or %o1, 447, %o1284; SPARC64-NEXT: sethi 34344, %o2285; SPARC64-NEXT: or %o2, 914, %o2286; SPARC64-NEXT: sllx %o2, 32, %o2287; SPARC64-NEXT: or %o2, %o1, %o1288; SPARC64-NEXT: mulx %o0, %o1, %o0289; SPARC64-NEXT: srlx %o0, 58, %o0290; SPARC64-NEXT: sethi %h44(.LCPI2_0), %o1291; SPARC64-NEXT: add %o1, %m44(.LCPI2_0), %o1292; SPARC64-NEXT: sllx %o1, 12, %o1293; SPARC64-NEXT: add %o1, %l44(.LCPI2_0), %o1294; SPARC64-NEXT: retl295; SPARC64-NEXT: ldub [%o1+%o0], %o0296; SPARC64-NEXT: .LBB2_2:297; SPARC64-NEXT: retl298; SPARC64-NEXT: mov 64, %o0299;300; SPARC64-POPC-LABEL: i64_nopoison:301; SPARC64-POPC: ! %bb.0:302; SPARC64-POPC-NEXT: add %o0, -1, %o1303; SPARC64-POPC-NEXT: andn %o1, %o0, %o0304; SPARC64-POPC-NEXT: retl305; SPARC64-POPC-NEXT: popc %o0, %o0306;307; SPARC64-VIS3-LABEL: i64_nopoison:308; SPARC64-VIS3: ! %bb.0:309; SPARC64-VIS3-NEXT: add %o0, -1, %o1310; SPARC64-VIS3-NEXT: andn %o1, %o0, %o0311; SPARC64-VIS3-NEXT: lzcnt %o0, %o0312; SPARC64-VIS3-NEXT: mov 64, %o1313; SPARC64-VIS3-NEXT: retl314; SPARC64-VIS3-NEXT: sub %o1, %o0, %o0315 %ret = call i64 @llvm.cttz.i64(i64 %x, i1 false)316 ret i64 %ret317}318 319define i64 @i64_poison(i64 %x) nounwind {320; SPARC-LABEL: i64_poison:321; SPARC: ! %bb.0:322; SPARC-NEXT: sethi 122669, %o2323; SPARC-NEXT: or %o2, 305, %o2324; SPARC-NEXT: sethi %hi(.LCPI3_0), %o3325; SPARC-NEXT: cmp %o1, 0326; SPARC-NEXT: bne .LBB3_2327; SPARC-NEXT: add %o3, %lo(.LCPI3_0), %o3328; SPARC-NEXT: ! %bb.1:329; SPARC-NEXT: sub %g0, %o0, %o1330; SPARC-NEXT: and %o0, %o1, %o0331; SPARC-NEXT: smul %o0, %o2, %o0332; SPARC-NEXT: srl %o0, 27, %o0333; SPARC-NEXT: ldub [%o3+%o0], %o0334; SPARC-NEXT: add %o0, 32, %o1335; SPARC-NEXT: retl336; SPARC-NEXT: mov %g0, %o0337; SPARC-NEXT: .LBB3_2:338; SPARC-NEXT: sub %g0, %o1, %o0339; SPARC-NEXT: and %o1, %o0, %o0340; SPARC-NEXT: smul %o0, %o2, %o0341; SPARC-NEXT: srl %o0, 27, %o0342; SPARC-NEXT: ldub [%o3+%o0], %o1343; SPARC-NEXT: retl344; SPARC-NEXT: mov %g0, %o0345;346; SPARC-POPC-LABEL: i64_poison:347; SPARC-POPC: ! %bb.0:348; SPARC-POPC-NEXT: sethi 122669, %o2349; SPARC-POPC-NEXT: or %o2, 305, %o2350; SPARC-POPC-NEXT: sethi %hi(.LCPI3_0), %o3351; SPARC-POPC-NEXT: cmp %o1, 0352; SPARC-POPC-NEXT: bne .LBB3_2353; SPARC-POPC-NEXT: add %o3, %lo(.LCPI3_0), %o3354; SPARC-POPC-NEXT: ! %bb.1:355; SPARC-POPC-NEXT: sub %g0, %o0, %o1356; SPARC-POPC-NEXT: and %o0, %o1, %o0357; SPARC-POPC-NEXT: smul %o0, %o2, %o0358; SPARC-POPC-NEXT: srl %o0, 27, %o0359; SPARC-POPC-NEXT: ldub [%o3+%o0], %o0360; SPARC-POPC-NEXT: add %o0, 32, %o1361; SPARC-POPC-NEXT: retl362; SPARC-POPC-NEXT: mov %g0, %o0363; SPARC-POPC-NEXT: .LBB3_2:364; SPARC-POPC-NEXT: sub %g0, %o1, %o0365; SPARC-POPC-NEXT: and %o1, %o0, %o0366; SPARC-POPC-NEXT: smul %o0, %o2, %o0367; SPARC-POPC-NEXT: srl %o0, 27, %o0368; SPARC-POPC-NEXT: ldub [%o3+%o0], %o1369; SPARC-POPC-NEXT: retl370; SPARC-POPC-NEXT: mov %g0, %o0371;372; SPARC-VIS3-LABEL: i64_poison:373; SPARC-VIS3: ! %bb.0:374; SPARC-VIS3-NEXT: add %o0, -1, %o2375; SPARC-VIS3-NEXT: andn %o2, %o0, %o0376; SPARC-VIS3-NEXT: srl %o0, 0, %o0377; SPARC-VIS3-NEXT: lzcnt %o0, %o0378; SPARC-VIS3-NEXT: add %o0, -32, %o0379; SPARC-VIS3-NEXT: mov 64, %o2380; SPARC-VIS3-NEXT: sub %o2, %o0, %o2381; SPARC-VIS3-NEXT: add %o1, -1, %o0382; SPARC-VIS3-NEXT: andn %o0, %o1, %o0383; SPARC-VIS3-NEXT: srl %o0, 0, %o0384; SPARC-VIS3-NEXT: lzcnt %o0, %o0385; SPARC-VIS3-NEXT: add %o0, -32, %o0386; SPARC-VIS3-NEXT: mov 32, %o3387; SPARC-VIS3-NEXT: sub %o3, %o0, %o0388; SPARC-VIS3-NEXT: cmp %o1, 0389; SPARC-VIS3-NEXT: movne %icc, %o0, %o2390; SPARC-VIS3-NEXT: mov %g0, %o0391; SPARC-VIS3-NEXT: retl392; SPARC-VIS3-NEXT: mov %o2, %o1393;394; SPARC64-LABEL: i64_poison:395; SPARC64: ! %bb.0:396; SPARC64-NEXT: sub %g0, %o0, %o1397; SPARC64-NEXT: and %o0, %o1, %o0398; SPARC64-NEXT: sethi 3362647, %o1399; SPARC64-NEXT: or %o1, 447, %o1400; SPARC64-NEXT: sethi 34344, %o2401; SPARC64-NEXT: or %o2, 914, %o2402; SPARC64-NEXT: sllx %o2, 32, %o2403; SPARC64-NEXT: or %o2, %o1, %o1404; SPARC64-NEXT: mulx %o0, %o1, %o0405; SPARC64-NEXT: srlx %o0, 58, %o0406; SPARC64-NEXT: sethi %h44(.LCPI3_0), %o1407; SPARC64-NEXT: add %o1, %m44(.LCPI3_0), %o1408; SPARC64-NEXT: sllx %o1, 12, %o1409; SPARC64-NEXT: add %o1, %l44(.LCPI3_0), %o1410; SPARC64-NEXT: retl411; SPARC64-NEXT: ldub [%o1+%o0], %o0412;413; SPARC64-POPC-LABEL: i64_poison:414; SPARC64-POPC: ! %bb.0:415; SPARC64-POPC-NEXT: add %o0, -1, %o1416; SPARC64-POPC-NEXT: andn %o1, %o0, %o0417; SPARC64-POPC-NEXT: retl418; SPARC64-POPC-NEXT: popc %o0, %o0419;420; SPARC64-VIS3-LABEL: i64_poison:421; SPARC64-VIS3: ! %bb.0:422; SPARC64-VIS3-NEXT: add %o0, -1, %o1423; SPARC64-VIS3-NEXT: andn %o1, %o0, %o0424; SPARC64-VIS3-NEXT: lzcnt %o0, %o0425; SPARC64-VIS3-NEXT: mov 64, %o1426; SPARC64-VIS3-NEXT: retl427; SPARC64-VIS3-NEXT: sub %o1, %o0, %o0428 %ret = call i64 @llvm.cttz.i64(i64 %x, i1 true)429 ret i64 %ret430}431