Path: blob/21.2-virgl/src/compiler/glsl/builtin_int64.h
4545 views
ir_function_signature *1umul64(void *mem_ctx, builtin_available_predicate avail)2{3ir_function_signature *const sig =4new(mem_ctx) ir_function_signature(glsl_type::uvec2_type, avail);5ir_factory body(&sig->body, mem_ctx);6sig->is_defined = true;78exec_list sig_parameters;910ir_variable *const r0001 = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "a", ir_var_function_in);11sig_parameters.push_tail(r0001);12ir_variable *const r0002 = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "b", ir_var_function_in);13sig_parameters.push_tail(r0002);14ir_variable *const r0003 = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "result", ir_var_auto);15body.emit(r0003);16body.emit(assign(r0003, imul_high(swizzle_x(r0001), swizzle_x(r0002)), 0x02));1718body.emit(assign(r0003, mul(swizzle_x(r0001), swizzle_x(r0002)), 0x01));1920ir_expression *const r0004 = mul(swizzle_x(r0001), swizzle_y(r0002));21ir_expression *const r0005 = mul(swizzle_y(r0001), swizzle_x(r0002));22ir_expression *const r0006 = add(r0004, r0005);23body.emit(assign(r0003, add(swizzle_y(r0003), r0006), 0x02));2425body.emit(ret(r0003));2627sig->replace_parameters(&sig_parameters);28return sig;29}30ir_function_signature *31sign64(void *mem_ctx, builtin_available_predicate avail)32{33ir_function_signature *const sig =34new(mem_ctx) ir_function_signature(glsl_type::ivec2_type, avail);35ir_factory body(&sig->body, mem_ctx);36sig->is_defined = true;3738exec_list sig_parameters;3940ir_variable *const r0007 = new(mem_ctx) ir_variable(glsl_type::ivec2_type, "a", ir_var_function_in);41sig_parameters.push_tail(r0007);42ir_variable *const r0008 = new(mem_ctx) ir_variable(glsl_type::ivec2_type, "result", ir_var_auto);43body.emit(r0008);44body.emit(assign(r0008, rshift(swizzle_y(r0007), body.constant(int(31))), 0x02));4546ir_expression *const r0009 = bit_or(swizzle_x(r0007), swizzle_y(r0007));47ir_expression *const r000A = nequal(r0009, body.constant(int(0)));48ir_expression *const r000B = expr(ir_unop_b2i, r000A);49body.emit(assign(r0008, bit_or(swizzle_y(r0008), r000B), 0x01));5051body.emit(ret(r0008));5253sig->replace_parameters(&sig_parameters);54return sig;55}56ir_function_signature *57udivmod64(void *mem_ctx, builtin_available_predicate avail)58{59ir_function_signature *const sig =60new(mem_ctx) ir_function_signature(glsl_type::uvec4_type, avail);61ir_factory body(&sig->body, mem_ctx);62sig->is_defined = true;6364exec_list sig_parameters;6566ir_variable *const r000C = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "n", ir_var_function_in);67sig_parameters.push_tail(r000C);68ir_variable *const r000D = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "d", ir_var_function_in);69sig_parameters.push_tail(r000D);70ir_variable *const r000E = new(mem_ctx) ir_variable(glsl_type::int_type, "i", ir_var_auto);71body.emit(r000E);72ir_variable *const r000F = new(mem_ctx) ir_variable(glsl_type::uint64_t_type, "n64", ir_var_auto);73body.emit(r000F);74ir_variable *const r0010 = new(mem_ctx) ir_variable(glsl_type::int_type, "log2_denom", ir_var_auto);75body.emit(r0010);76ir_variable *const r0011 = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "quot", ir_var_auto);77body.emit(r0011);78body.emit(assign(r0011, ir_constant::zero(mem_ctx, glsl_type::uvec2_type), 0x03));7980ir_expression *const r0012 = expr(ir_unop_find_msb, swizzle_y(r000D));81body.emit(assign(r0010, add(r0012, body.constant(int(32))), 0x01));8283/* IF CONDITION */84ir_expression *const r0014 = equal(swizzle_y(r000D), body.constant(0u));85ir_expression *const r0015 = gequal(swizzle_y(r000C), swizzle_x(r000D));86ir_expression *const r0016 = logic_and(r0014, r0015);87ir_if *f0013 = new(mem_ctx) ir_if(operand(r0016).val);88exec_list *const f0013_parent_instructions = body.instructions;8990/* THEN INSTRUCTIONS */91body.instructions = &f0013->then_instructions;9293ir_variable *const r0017 = new(mem_ctx) ir_variable(glsl_type::int_type, "i", ir_var_auto);94body.emit(r0017);95ir_variable *const r0018 = body.make_temp(glsl_type::int_type, "findMSB_retval");96body.emit(assign(r0018, expr(ir_unop_find_msb, swizzle_x(r000D)), 0x01));9798body.emit(assign(r0010, r0018, 0x01));99100body.emit(assign(r0017, body.constant(int(31)), 0x01));101102/* LOOP BEGIN */103ir_loop *f0019 = new(mem_ctx) ir_loop();104exec_list *const f0019_parent_instructions = body.instructions;105106body.instructions = &f0019->body_instructions;107108/* IF CONDITION */109ir_expression *const r001B = less(r0017, body.constant(int(1)));110ir_if *f001A = new(mem_ctx) ir_if(operand(r001B).val);111exec_list *const f001A_parent_instructions = body.instructions;112113/* THEN INSTRUCTIONS */114body.instructions = &f001A->then_instructions;115116body.emit(new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_break));117118119body.instructions = f001A_parent_instructions;120body.emit(f001A);121122/* END IF */123124/* IF CONDITION */125ir_expression *const r001D = sub(body.constant(int(31)), r0017);126ir_expression *const r001E = lequal(r0018, r001D);127ir_expression *const r001F = lshift(swizzle_x(r000D), r0017);128ir_expression *const r0020 = lequal(r001F, swizzle_y(r000C));129ir_expression *const r0021 = logic_and(r001E, r0020);130ir_if *f001C = new(mem_ctx) ir_if(operand(r0021).val);131exec_list *const f001C_parent_instructions = body.instructions;132133/* THEN INSTRUCTIONS */134body.instructions = &f001C->then_instructions;135136ir_expression *const r0022 = lshift(swizzle_x(r000D), r0017);137body.emit(assign(r000C, sub(swizzle_y(r000C), r0022), 0x02));138139ir_expression *const r0023 = lshift(body.constant(1u), r0017);140body.emit(assign(r0011, bit_or(swizzle_y(r0011), r0023), 0x02));141142143body.instructions = f001C_parent_instructions;144body.emit(f001C);145146/* END IF */147148body.emit(assign(r0017, add(r0017, body.constant(int(-1))), 0x01));149150/* LOOP END */151152body.instructions = f0019_parent_instructions;153body.emit(f0019);154155/* IF CONDITION */156ir_expression *const r0025 = lequal(swizzle_x(r000D), swizzle_y(r000C));157ir_if *f0024 = new(mem_ctx) ir_if(operand(r0025).val);158exec_list *const f0024_parent_instructions = body.instructions;159160/* THEN INSTRUCTIONS */161body.instructions = &f0024->then_instructions;162163body.emit(assign(r000C, sub(swizzle_y(r000C), swizzle_x(r000D)), 0x02));164165body.emit(assign(r0011, bit_or(swizzle_y(r0011), body.constant(1u)), 0x02));166167168body.instructions = f0024_parent_instructions;169body.emit(f0024);170171/* END IF */172173174body.instructions = f0013_parent_instructions;175body.emit(f0013);176177/* END IF */178179ir_variable *const r0026 = body.make_temp(glsl_type::uint64_t_type, "packUint2x32_retval");180body.emit(assign(r0026, expr(ir_unop_pack_uint_2x32, r000D), 0x01));181182body.emit(assign(r000F, expr(ir_unop_pack_uint_2x32, r000C), 0x01));183184body.emit(assign(r000E, body.constant(int(31)), 0x01));185186/* LOOP BEGIN */187ir_loop *f0027 = new(mem_ctx) ir_loop();188exec_list *const f0027_parent_instructions = body.instructions;189190body.instructions = &f0027->body_instructions;191192/* IF CONDITION */193ir_expression *const r0029 = less(r000E, body.constant(int(1)));194ir_if *f0028 = new(mem_ctx) ir_if(operand(r0029).val);195exec_list *const f0028_parent_instructions = body.instructions;196197/* THEN INSTRUCTIONS */198body.instructions = &f0028->then_instructions;199200body.emit(new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_break));201202203body.instructions = f0028_parent_instructions;204body.emit(f0028);205206/* END IF */207208/* IF CONDITION */209ir_expression *const r002B = sub(body.constant(int(63)), r000E);210ir_expression *const r002C = lequal(r0010, r002B);211ir_expression *const r002D = lshift(r0026, r000E);212ir_expression *const r002E = lequal(r002D, r000F);213ir_expression *const r002F = logic_and(r002C, r002E);214ir_if *f002A = new(mem_ctx) ir_if(operand(r002F).val);215exec_list *const f002A_parent_instructions = body.instructions;216217/* THEN INSTRUCTIONS */218body.instructions = &f002A->then_instructions;219220ir_expression *const r0030 = lshift(r0026, r000E);221body.emit(assign(r000F, sub(r000F, r0030), 0x01));222223ir_expression *const r0031 = lshift(body.constant(1u), r000E);224body.emit(assign(r0011, bit_or(swizzle_x(r0011), r0031), 0x01));225226227body.instructions = f002A_parent_instructions;228body.emit(f002A);229230/* END IF */231232body.emit(assign(r000E, add(r000E, body.constant(int(-1))), 0x01));233234/* LOOP END */235236body.instructions = f0027_parent_instructions;237body.emit(f0027);238239/* IF CONDITION */240ir_expression *const r0033 = lequal(r0026, r000F);241ir_if *f0032 = new(mem_ctx) ir_if(operand(r0033).val);242exec_list *const f0032_parent_instructions = body.instructions;243244/* THEN INSTRUCTIONS */245body.instructions = &f0032->then_instructions;246247body.emit(assign(r000F, sub(r000F, r0026), 0x01));248249body.emit(assign(r0011, bit_or(swizzle_x(r0011), body.constant(1u)), 0x01));250251252body.instructions = f0032_parent_instructions;253body.emit(f0032);254255/* END IF */256257ir_variable *const r0034 = body.make_temp(glsl_type::uvec4_type, "vec_ctor");258body.emit(assign(r0034, r0011, 0x03));259260body.emit(assign(r0034, expr(ir_unop_unpack_uint_2x32, r000F), 0x0c));261262body.emit(ret(r0034));263264sig->replace_parameters(&sig_parameters);265return sig;266}267ir_function_signature *268udiv64(void *mem_ctx, builtin_available_predicate avail)269{270ir_function_signature *const sig =271new(mem_ctx) ir_function_signature(glsl_type::uvec2_type, avail);272ir_factory body(&sig->body, mem_ctx);273sig->is_defined = true;274275exec_list sig_parameters;276277ir_variable *const r0035 = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "n", ir_var_function_in);278sig_parameters.push_tail(r0035);279ir_variable *const r0036 = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "d", ir_var_function_in);280sig_parameters.push_tail(r0036);281ir_variable *const r0037 = body.make_temp(glsl_type::uvec2_type, "n");282body.emit(assign(r0037, r0035, 0x03));283284ir_variable *const r0038 = new(mem_ctx) ir_variable(glsl_type::int_type, "i", ir_var_auto);285body.emit(r0038);286ir_variable *const r0039 = new(mem_ctx) ir_variable(glsl_type::uint64_t_type, "n64", ir_var_auto);287body.emit(r0039);288ir_variable *const r003A = new(mem_ctx) ir_variable(glsl_type::int_type, "log2_denom", ir_var_auto);289body.emit(r003A);290ir_variable *const r003B = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "quot", ir_var_auto);291body.emit(r003B);292body.emit(assign(r003B, ir_constant::zero(mem_ctx, glsl_type::uvec2_type), 0x03));293294ir_expression *const r003C = expr(ir_unop_find_msb, swizzle_y(r0036));295body.emit(assign(r003A, add(r003C, body.constant(int(32))), 0x01));296297/* IF CONDITION */298ir_expression *const r003E = equal(swizzle_y(r0036), body.constant(0u));299ir_expression *const r003F = gequal(swizzle_y(r0035), swizzle_x(r0036));300ir_expression *const r0040 = logic_and(r003E, r003F);301ir_if *f003D = new(mem_ctx) ir_if(operand(r0040).val);302exec_list *const f003D_parent_instructions = body.instructions;303304/* THEN INSTRUCTIONS */305body.instructions = &f003D->then_instructions;306307ir_variable *const r0041 = new(mem_ctx) ir_variable(glsl_type::int_type, "i", ir_var_auto);308body.emit(r0041);309ir_variable *const r0042 = body.make_temp(glsl_type::int_type, "findMSB_retval");310body.emit(assign(r0042, expr(ir_unop_find_msb, swizzle_x(r0036)), 0x01));311312body.emit(assign(r003A, r0042, 0x01));313314body.emit(assign(r0041, body.constant(int(31)), 0x01));315316/* LOOP BEGIN */317ir_loop *f0043 = new(mem_ctx) ir_loop();318exec_list *const f0043_parent_instructions = body.instructions;319320body.instructions = &f0043->body_instructions;321322/* IF CONDITION */323ir_expression *const r0045 = less(r0041, body.constant(int(1)));324ir_if *f0044 = new(mem_ctx) ir_if(operand(r0045).val);325exec_list *const f0044_parent_instructions = body.instructions;326327/* THEN INSTRUCTIONS */328body.instructions = &f0044->then_instructions;329330body.emit(new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_break));331332333body.instructions = f0044_parent_instructions;334body.emit(f0044);335336/* END IF */337338/* IF CONDITION */339ir_expression *const r0047 = sub(body.constant(int(31)), r0041);340ir_expression *const r0048 = lequal(r0042, r0047);341ir_expression *const r0049 = lshift(swizzle_x(r0036), r0041);342ir_expression *const r004A = lequal(r0049, swizzle_y(r0037));343ir_expression *const r004B = logic_and(r0048, r004A);344ir_if *f0046 = new(mem_ctx) ir_if(operand(r004B).val);345exec_list *const f0046_parent_instructions = body.instructions;346347/* THEN INSTRUCTIONS */348body.instructions = &f0046->then_instructions;349350ir_expression *const r004C = lshift(swizzle_x(r0036), r0041);351body.emit(assign(r0037, sub(swizzle_y(r0037), r004C), 0x02));352353ir_expression *const r004D = lshift(body.constant(1u), r0041);354body.emit(assign(r003B, bit_or(swizzle_y(r003B), r004D), 0x02));355356357body.instructions = f0046_parent_instructions;358body.emit(f0046);359360/* END IF */361362body.emit(assign(r0041, add(r0041, body.constant(int(-1))), 0x01));363364/* LOOP END */365366body.instructions = f0043_parent_instructions;367body.emit(f0043);368369/* IF CONDITION */370ir_expression *const r004F = lequal(swizzle_x(r0036), swizzle_y(r0037));371ir_if *f004E = new(mem_ctx) ir_if(operand(r004F).val);372exec_list *const f004E_parent_instructions = body.instructions;373374/* THEN INSTRUCTIONS */375body.instructions = &f004E->then_instructions;376377body.emit(assign(r0037, sub(swizzle_y(r0037), swizzle_x(r0036)), 0x02));378379body.emit(assign(r003B, bit_or(swizzle_y(r003B), body.constant(1u)), 0x02));380381382body.instructions = f004E_parent_instructions;383body.emit(f004E);384385/* END IF */386387388body.instructions = f003D_parent_instructions;389body.emit(f003D);390391/* END IF */392393ir_variable *const r0050 = body.make_temp(glsl_type::uint64_t_type, "packUint2x32_retval");394body.emit(assign(r0050, expr(ir_unop_pack_uint_2x32, r0036), 0x01));395396body.emit(assign(r0039, expr(ir_unop_pack_uint_2x32, r0037), 0x01));397398body.emit(assign(r0038, body.constant(int(31)), 0x01));399400/* LOOP BEGIN */401ir_loop *f0051 = new(mem_ctx) ir_loop();402exec_list *const f0051_parent_instructions = body.instructions;403404body.instructions = &f0051->body_instructions;405406/* IF CONDITION */407ir_expression *const r0053 = less(r0038, body.constant(int(1)));408ir_if *f0052 = new(mem_ctx) ir_if(operand(r0053).val);409exec_list *const f0052_parent_instructions = body.instructions;410411/* THEN INSTRUCTIONS */412body.instructions = &f0052->then_instructions;413414body.emit(new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_break));415416417body.instructions = f0052_parent_instructions;418body.emit(f0052);419420/* END IF */421422/* IF CONDITION */423ir_expression *const r0055 = sub(body.constant(int(63)), r0038);424ir_expression *const r0056 = lequal(r003A, r0055);425ir_expression *const r0057 = lshift(r0050, r0038);426ir_expression *const r0058 = lequal(r0057, r0039);427ir_expression *const r0059 = logic_and(r0056, r0058);428ir_if *f0054 = new(mem_ctx) ir_if(operand(r0059).val);429exec_list *const f0054_parent_instructions = body.instructions;430431/* THEN INSTRUCTIONS */432body.instructions = &f0054->then_instructions;433434ir_expression *const r005A = lshift(r0050, r0038);435body.emit(assign(r0039, sub(r0039, r005A), 0x01));436437ir_expression *const r005B = lshift(body.constant(1u), r0038);438body.emit(assign(r003B, bit_or(swizzle_x(r003B), r005B), 0x01));439440441body.instructions = f0054_parent_instructions;442body.emit(f0054);443444/* END IF */445446body.emit(assign(r0038, add(r0038, body.constant(int(-1))), 0x01));447448/* LOOP END */449450body.instructions = f0051_parent_instructions;451body.emit(f0051);452453/* IF CONDITION */454ir_expression *const r005D = lequal(r0050, r0039);455ir_if *f005C = new(mem_ctx) ir_if(operand(r005D).val);456exec_list *const f005C_parent_instructions = body.instructions;457458/* THEN INSTRUCTIONS */459body.instructions = &f005C->then_instructions;460461body.emit(assign(r0039, sub(r0039, r0050), 0x01));462463body.emit(assign(r003B, bit_or(swizzle_x(r003B), body.constant(1u)), 0x01));464465466body.instructions = f005C_parent_instructions;467body.emit(f005C);468469/* END IF */470471body.emit(ret(r003B));472473sig->replace_parameters(&sig_parameters);474return sig;475}476ir_function_signature *477idiv64(void *mem_ctx, builtin_available_predicate avail)478{479ir_function_signature *const sig =480new(mem_ctx) ir_function_signature(glsl_type::ivec2_type, avail);481ir_factory body(&sig->body, mem_ctx);482sig->is_defined = true;483484exec_list sig_parameters;485486ir_variable *const r005E = new(mem_ctx) ir_variable(glsl_type::ivec2_type, "_n", ir_var_function_in);487sig_parameters.push_tail(r005E);488ir_variable *const r005F = new(mem_ctx) ir_variable(glsl_type::ivec2_type, "_d", ir_var_function_in);489sig_parameters.push_tail(r005F);490ir_variable *const r0060 = new(mem_ctx) ir_variable(glsl_type::bool_type, "negate", ir_var_auto);491body.emit(r0060);492ir_expression *const r0061 = less(swizzle_y(r005E), body.constant(int(0)));493ir_expression *const r0062 = less(swizzle_y(r005F), body.constant(int(0)));494body.emit(assign(r0060, nequal(r0061, r0062), 0x01));495496ir_variable *const r0063 = body.make_temp(glsl_type::uvec2_type, "n");497ir_expression *const r0064 = expr(ir_unop_pack_int_2x32, r005E);498ir_expression *const r0065 = expr(ir_unop_abs, r0064);499ir_expression *const r0066 = expr(ir_unop_i642u64, r0065);500body.emit(assign(r0063, expr(ir_unop_unpack_uint_2x32, r0066), 0x03));501502ir_variable *const r0067 = body.make_temp(glsl_type::uvec2_type, "d");503ir_expression *const r0068 = expr(ir_unop_pack_int_2x32, r005F);504ir_expression *const r0069 = expr(ir_unop_abs, r0068);505ir_expression *const r006A = expr(ir_unop_i642u64, r0069);506body.emit(assign(r0067, expr(ir_unop_unpack_uint_2x32, r006A), 0x03));507508ir_variable *const r006B = new(mem_ctx) ir_variable(glsl_type::int_type, "i", ir_var_auto);509body.emit(r006B);510ir_variable *const r006C = new(mem_ctx) ir_variable(glsl_type::uint64_t_type, "n64", ir_var_auto);511body.emit(r006C);512ir_variable *const r006D = new(mem_ctx) ir_variable(glsl_type::int_type, "log2_denom", ir_var_auto);513body.emit(r006D);514ir_variable *const r006E = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "quot", ir_var_auto);515body.emit(r006E);516body.emit(assign(r006E, ir_constant::zero(mem_ctx, glsl_type::uvec2_type), 0x03));517518ir_expression *const r006F = expr(ir_unop_find_msb, swizzle_y(r0067));519body.emit(assign(r006D, add(r006F, body.constant(int(32))), 0x01));520521/* IF CONDITION */522ir_expression *const r0071 = equal(swizzle_y(r0067), body.constant(0u));523ir_expression *const r0072 = gequal(swizzle_y(r0063), swizzle_x(r0067));524ir_expression *const r0073 = logic_and(r0071, r0072);525ir_if *f0070 = new(mem_ctx) ir_if(operand(r0073).val);526exec_list *const f0070_parent_instructions = body.instructions;527528/* THEN INSTRUCTIONS */529body.instructions = &f0070->then_instructions;530531ir_variable *const r0074 = new(mem_ctx) ir_variable(glsl_type::int_type, "i", ir_var_auto);532body.emit(r0074);533ir_variable *const r0075 = body.make_temp(glsl_type::int_type, "findMSB_retval");534body.emit(assign(r0075, expr(ir_unop_find_msb, swizzle_x(r0067)), 0x01));535536body.emit(assign(r006D, r0075, 0x01));537538body.emit(assign(r0074, body.constant(int(31)), 0x01));539540/* LOOP BEGIN */541ir_loop *f0076 = new(mem_ctx) ir_loop();542exec_list *const f0076_parent_instructions = body.instructions;543544body.instructions = &f0076->body_instructions;545546/* IF CONDITION */547ir_expression *const r0078 = less(r0074, body.constant(int(1)));548ir_if *f0077 = new(mem_ctx) ir_if(operand(r0078).val);549exec_list *const f0077_parent_instructions = body.instructions;550551/* THEN INSTRUCTIONS */552body.instructions = &f0077->then_instructions;553554body.emit(new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_break));555556557body.instructions = f0077_parent_instructions;558body.emit(f0077);559560/* END IF */561562/* IF CONDITION */563ir_expression *const r007A = sub(body.constant(int(31)), r0074);564ir_expression *const r007B = lequal(r0075, r007A);565ir_expression *const r007C = lshift(swizzle_x(r0067), r0074);566ir_expression *const r007D = lequal(r007C, swizzle_y(r0063));567ir_expression *const r007E = logic_and(r007B, r007D);568ir_if *f0079 = new(mem_ctx) ir_if(operand(r007E).val);569exec_list *const f0079_parent_instructions = body.instructions;570571/* THEN INSTRUCTIONS */572body.instructions = &f0079->then_instructions;573574ir_expression *const r007F = lshift(swizzle_x(r0067), r0074);575body.emit(assign(r0063, sub(swizzle_y(r0063), r007F), 0x02));576577ir_expression *const r0080 = lshift(body.constant(1u), r0074);578body.emit(assign(r006E, bit_or(swizzle_y(r006E), r0080), 0x02));579580581body.instructions = f0079_parent_instructions;582body.emit(f0079);583584/* END IF */585586body.emit(assign(r0074, add(r0074, body.constant(int(-1))), 0x01));587588/* LOOP END */589590body.instructions = f0076_parent_instructions;591body.emit(f0076);592593/* IF CONDITION */594ir_expression *const r0082 = lequal(swizzle_x(r0067), swizzle_y(r0063));595ir_if *f0081 = new(mem_ctx) ir_if(operand(r0082).val);596exec_list *const f0081_parent_instructions = body.instructions;597598/* THEN INSTRUCTIONS */599body.instructions = &f0081->then_instructions;600601body.emit(assign(r0063, sub(swizzle_y(r0063), swizzle_x(r0067)), 0x02));602603body.emit(assign(r006E, bit_or(swizzle_y(r006E), body.constant(1u)), 0x02));604605606body.instructions = f0081_parent_instructions;607body.emit(f0081);608609/* END IF */610611612body.instructions = f0070_parent_instructions;613body.emit(f0070);614615/* END IF */616617ir_variable *const r0083 = body.make_temp(glsl_type::uint64_t_type, "packUint2x32_retval");618body.emit(assign(r0083, expr(ir_unop_pack_uint_2x32, r0067), 0x01));619620body.emit(assign(r006C, expr(ir_unop_pack_uint_2x32, r0063), 0x01));621622body.emit(assign(r006B, body.constant(int(31)), 0x01));623624/* LOOP BEGIN */625ir_loop *f0084 = new(mem_ctx) ir_loop();626exec_list *const f0084_parent_instructions = body.instructions;627628body.instructions = &f0084->body_instructions;629630/* IF CONDITION */631ir_expression *const r0086 = less(r006B, body.constant(int(1)));632ir_if *f0085 = new(mem_ctx) ir_if(operand(r0086).val);633exec_list *const f0085_parent_instructions = body.instructions;634635/* THEN INSTRUCTIONS */636body.instructions = &f0085->then_instructions;637638body.emit(new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_break));639640641body.instructions = f0085_parent_instructions;642body.emit(f0085);643644/* END IF */645646/* IF CONDITION */647ir_expression *const r0088 = sub(body.constant(int(63)), r006B);648ir_expression *const r0089 = lequal(r006D, r0088);649ir_expression *const r008A = lshift(r0083, r006B);650ir_expression *const r008B = lequal(r008A, r006C);651ir_expression *const r008C = logic_and(r0089, r008B);652ir_if *f0087 = new(mem_ctx) ir_if(operand(r008C).val);653exec_list *const f0087_parent_instructions = body.instructions;654655/* THEN INSTRUCTIONS */656body.instructions = &f0087->then_instructions;657658ir_expression *const r008D = lshift(r0083, r006B);659body.emit(assign(r006C, sub(r006C, r008D), 0x01));660661ir_expression *const r008E = lshift(body.constant(1u), r006B);662body.emit(assign(r006E, bit_or(swizzle_x(r006E), r008E), 0x01));663664665body.instructions = f0087_parent_instructions;666body.emit(f0087);667668/* END IF */669670body.emit(assign(r006B, add(r006B, body.constant(int(-1))), 0x01));671672/* LOOP END */673674body.instructions = f0084_parent_instructions;675body.emit(f0084);676677/* IF CONDITION */678ir_expression *const r0090 = lequal(r0083, r006C);679ir_if *f008F = new(mem_ctx) ir_if(operand(r0090).val);680exec_list *const f008F_parent_instructions = body.instructions;681682/* THEN INSTRUCTIONS */683body.instructions = &f008F->then_instructions;684685body.emit(assign(r006C, sub(r006C, r0083), 0x01));686687body.emit(assign(r006E, bit_or(swizzle_x(r006E), body.constant(1u)), 0x01));688689690body.instructions = f008F_parent_instructions;691body.emit(f008F);692693/* END IF */694695ir_variable *const r0091 = body.make_temp(glsl_type::ivec2_type, "conditional_tmp");696/* IF CONDITION */697ir_if *f0092 = new(mem_ctx) ir_if(operand(r0060).val);698exec_list *const f0092_parent_instructions = body.instructions;699700/* THEN INSTRUCTIONS */701body.instructions = &f0092->then_instructions;702703ir_expression *const r0093 = expr(ir_unop_pack_uint_2x32, r006E);704ir_expression *const r0094 = expr(ir_unop_u642i64, r0093);705ir_expression *const r0095 = neg(r0094);706body.emit(assign(r0091, expr(ir_unop_unpack_int_2x32, r0095), 0x03));707708709/* ELSE INSTRUCTIONS */710body.instructions = &f0092->else_instructions;711712body.emit(assign(r0091, expr(ir_unop_u2i, r006E), 0x03));713714715body.instructions = f0092_parent_instructions;716body.emit(f0092);717718/* END IF */719720body.emit(ret(r0091));721722sig->replace_parameters(&sig_parameters);723return sig;724}725ir_function_signature *726umod64(void *mem_ctx, builtin_available_predicate avail)727{728ir_function_signature *const sig =729new(mem_ctx) ir_function_signature(glsl_type::uvec2_type, avail);730ir_factory body(&sig->body, mem_ctx);731sig->is_defined = true;732733exec_list sig_parameters;734735ir_variable *const r0096 = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "n", ir_var_function_in);736sig_parameters.push_tail(r0096);737ir_variable *const r0097 = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "d", ir_var_function_in);738sig_parameters.push_tail(r0097);739ir_variable *const r0098 = body.make_temp(glsl_type::uvec2_type, "n");740body.emit(assign(r0098, r0096, 0x03));741742ir_variable *const r0099 = new(mem_ctx) ir_variable(glsl_type::int_type, "i", ir_var_auto);743body.emit(r0099);744ir_variable *const r009A = new(mem_ctx) ir_variable(glsl_type::uint64_t_type, "n64", ir_var_auto);745body.emit(r009A);746ir_variable *const r009B = new(mem_ctx) ir_variable(glsl_type::int_type, "log2_denom", ir_var_auto);747body.emit(r009B);748ir_variable *const r009C = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "quot", ir_var_auto);749body.emit(r009C);750body.emit(assign(r009C, ir_constant::zero(mem_ctx, glsl_type::uvec2_type), 0x03));751752ir_expression *const r009D = expr(ir_unop_find_msb, swizzle_y(r0097));753body.emit(assign(r009B, add(r009D, body.constant(int(32))), 0x01));754755/* IF CONDITION */756ir_expression *const r009F = equal(swizzle_y(r0097), body.constant(0u));757ir_expression *const r00A0 = gequal(swizzle_y(r0096), swizzle_x(r0097));758ir_expression *const r00A1 = logic_and(r009F, r00A0);759ir_if *f009E = new(mem_ctx) ir_if(operand(r00A1).val);760exec_list *const f009E_parent_instructions = body.instructions;761762/* THEN INSTRUCTIONS */763body.instructions = &f009E->then_instructions;764765ir_variable *const r00A2 = new(mem_ctx) ir_variable(glsl_type::int_type, "i", ir_var_auto);766body.emit(r00A2);767ir_variable *const r00A3 = body.make_temp(glsl_type::int_type, "findMSB_retval");768body.emit(assign(r00A3, expr(ir_unop_find_msb, swizzle_x(r0097)), 0x01));769770body.emit(assign(r009B, r00A3, 0x01));771772body.emit(assign(r00A2, body.constant(int(31)), 0x01));773774/* LOOP BEGIN */775ir_loop *f00A4 = new(mem_ctx) ir_loop();776exec_list *const f00A4_parent_instructions = body.instructions;777778body.instructions = &f00A4->body_instructions;779780/* IF CONDITION */781ir_expression *const r00A6 = less(r00A2, body.constant(int(1)));782ir_if *f00A5 = new(mem_ctx) ir_if(operand(r00A6).val);783exec_list *const f00A5_parent_instructions = body.instructions;784785/* THEN INSTRUCTIONS */786body.instructions = &f00A5->then_instructions;787788body.emit(new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_break));789790791body.instructions = f00A5_parent_instructions;792body.emit(f00A5);793794/* END IF */795796/* IF CONDITION */797ir_expression *const r00A8 = sub(body.constant(int(31)), r00A2);798ir_expression *const r00A9 = lequal(r00A3, r00A8);799ir_expression *const r00AA = lshift(swizzle_x(r0097), r00A2);800ir_expression *const r00AB = lequal(r00AA, swizzle_y(r0098));801ir_expression *const r00AC = logic_and(r00A9, r00AB);802ir_if *f00A7 = new(mem_ctx) ir_if(operand(r00AC).val);803exec_list *const f00A7_parent_instructions = body.instructions;804805/* THEN INSTRUCTIONS */806body.instructions = &f00A7->then_instructions;807808ir_expression *const r00AD = lshift(swizzle_x(r0097), r00A2);809body.emit(assign(r0098, sub(swizzle_y(r0098), r00AD), 0x02));810811ir_expression *const r00AE = lshift(body.constant(1u), r00A2);812body.emit(assign(r009C, bit_or(swizzle_y(r009C), r00AE), 0x02));813814815body.instructions = f00A7_parent_instructions;816body.emit(f00A7);817818/* END IF */819820body.emit(assign(r00A2, add(r00A2, body.constant(int(-1))), 0x01));821822/* LOOP END */823824body.instructions = f00A4_parent_instructions;825body.emit(f00A4);826827/* IF CONDITION */828ir_expression *const r00B0 = lequal(swizzle_x(r0097), swizzle_y(r0098));829ir_if *f00AF = new(mem_ctx) ir_if(operand(r00B0).val);830exec_list *const f00AF_parent_instructions = body.instructions;831832/* THEN INSTRUCTIONS */833body.instructions = &f00AF->then_instructions;834835body.emit(assign(r0098, sub(swizzle_y(r0098), swizzle_x(r0097)), 0x02));836837body.emit(assign(r009C, bit_or(swizzle_y(r009C), body.constant(1u)), 0x02));838839840body.instructions = f00AF_parent_instructions;841body.emit(f00AF);842843/* END IF */844845846body.instructions = f009E_parent_instructions;847body.emit(f009E);848849/* END IF */850851ir_variable *const r00B1 = body.make_temp(glsl_type::uint64_t_type, "packUint2x32_retval");852body.emit(assign(r00B1, expr(ir_unop_pack_uint_2x32, r0097), 0x01));853854body.emit(assign(r009A, expr(ir_unop_pack_uint_2x32, r0098), 0x01));855856body.emit(assign(r0099, body.constant(int(31)), 0x01));857858/* LOOP BEGIN */859ir_loop *f00B2 = new(mem_ctx) ir_loop();860exec_list *const f00B2_parent_instructions = body.instructions;861862body.instructions = &f00B2->body_instructions;863864/* IF CONDITION */865ir_expression *const r00B4 = less(r0099, body.constant(int(1)));866ir_if *f00B3 = new(mem_ctx) ir_if(operand(r00B4).val);867exec_list *const f00B3_parent_instructions = body.instructions;868869/* THEN INSTRUCTIONS */870body.instructions = &f00B3->then_instructions;871872body.emit(new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_break));873874875body.instructions = f00B3_parent_instructions;876body.emit(f00B3);877878/* END IF */879880/* IF CONDITION */881ir_expression *const r00B6 = sub(body.constant(int(63)), r0099);882ir_expression *const r00B7 = lequal(r009B, r00B6);883ir_expression *const r00B8 = lshift(r00B1, r0099);884ir_expression *const r00B9 = lequal(r00B8, r009A);885ir_expression *const r00BA = logic_and(r00B7, r00B9);886ir_if *f00B5 = new(mem_ctx) ir_if(operand(r00BA).val);887exec_list *const f00B5_parent_instructions = body.instructions;888889/* THEN INSTRUCTIONS */890body.instructions = &f00B5->then_instructions;891892ir_expression *const r00BB = lshift(r00B1, r0099);893body.emit(assign(r009A, sub(r009A, r00BB), 0x01));894895ir_expression *const r00BC = lshift(body.constant(1u), r0099);896body.emit(assign(r009C, bit_or(swizzle_x(r009C), r00BC), 0x01));897898899body.instructions = f00B5_parent_instructions;900body.emit(f00B5);901902/* END IF */903904body.emit(assign(r0099, add(r0099, body.constant(int(-1))), 0x01));905906/* LOOP END */907908body.instructions = f00B2_parent_instructions;909body.emit(f00B2);910911/* IF CONDITION */912ir_expression *const r00BE = lequal(r00B1, r009A);913ir_if *f00BD = new(mem_ctx) ir_if(operand(r00BE).val);914exec_list *const f00BD_parent_instructions = body.instructions;915916/* THEN INSTRUCTIONS */917body.instructions = &f00BD->then_instructions;918919body.emit(assign(r009A, sub(r009A, r00B1), 0x01));920921body.emit(assign(r009C, bit_or(swizzle_x(r009C), body.constant(1u)), 0x01));922923924body.instructions = f00BD_parent_instructions;925body.emit(f00BD);926927/* END IF */928929ir_variable *const r00BF = body.make_temp(glsl_type::uvec4_type, "vec_ctor");930body.emit(assign(r00BF, r009C, 0x03));931932body.emit(assign(r00BF, expr(ir_unop_unpack_uint_2x32, r009A), 0x0c));933934ir_swizzle *const r00C0 = swizzle(r00BF, MAKE_SWIZZLE4(SWIZZLE_Z, SWIZZLE_W, SWIZZLE_X, SWIZZLE_X), 2);935body.emit(ret(r00C0));936937sig->replace_parameters(&sig_parameters);938return sig;939}940ir_function_signature *941imod64(void *mem_ctx, builtin_available_predicate avail)942{943ir_function_signature *const sig =944new(mem_ctx) ir_function_signature(glsl_type::ivec2_type, avail);945ir_factory body(&sig->body, mem_ctx);946sig->is_defined = true;947948exec_list sig_parameters;949950ir_variable *const r00C1 = new(mem_ctx) ir_variable(glsl_type::ivec2_type, "_n", ir_var_function_in);951sig_parameters.push_tail(r00C1);952ir_variable *const r00C2 = new(mem_ctx) ir_variable(glsl_type::ivec2_type, "_d", ir_var_function_in);953sig_parameters.push_tail(r00C2);954ir_variable *const r00C3 = new(mem_ctx) ir_variable(glsl_type::bool_type, "negate", ir_var_auto);955body.emit(r00C3);956ir_expression *const r00C4 = less(swizzle_y(r00C1), body.constant(int(0)));957ir_expression *const r00C5 = less(swizzle_y(r00C2), body.constant(int(0)));958body.emit(assign(r00C3, nequal(r00C4, r00C5), 0x01));959960ir_variable *const r00C6 = body.make_temp(glsl_type::uvec2_type, "n");961ir_expression *const r00C7 = expr(ir_unop_pack_int_2x32, r00C1);962ir_expression *const r00C8 = expr(ir_unop_abs, r00C7);963ir_expression *const r00C9 = expr(ir_unop_i642u64, r00C8);964body.emit(assign(r00C6, expr(ir_unop_unpack_uint_2x32, r00C9), 0x03));965966ir_variable *const r00CA = body.make_temp(glsl_type::uvec2_type, "d");967ir_expression *const r00CB = expr(ir_unop_pack_int_2x32, r00C2);968ir_expression *const r00CC = expr(ir_unop_abs, r00CB);969ir_expression *const r00CD = expr(ir_unop_i642u64, r00CC);970body.emit(assign(r00CA, expr(ir_unop_unpack_uint_2x32, r00CD), 0x03));971972ir_variable *const r00CE = new(mem_ctx) ir_variable(glsl_type::int_type, "i", ir_var_auto);973body.emit(r00CE);974ir_variable *const r00CF = new(mem_ctx) ir_variable(glsl_type::uint64_t_type, "n64", ir_var_auto);975body.emit(r00CF);976ir_variable *const r00D0 = new(mem_ctx) ir_variable(glsl_type::int_type, "log2_denom", ir_var_auto);977body.emit(r00D0);978ir_variable *const r00D1 = new(mem_ctx) ir_variable(glsl_type::uvec2_type, "quot", ir_var_auto);979body.emit(r00D1);980body.emit(assign(r00D1, ir_constant::zero(mem_ctx, glsl_type::uvec2_type), 0x03));981982ir_expression *const r00D2 = expr(ir_unop_find_msb, swizzle_y(r00CA));983body.emit(assign(r00D0, add(r00D2, body.constant(int(32))), 0x01));984985/* IF CONDITION */986ir_expression *const r00D4 = equal(swizzle_y(r00CA), body.constant(0u));987ir_expression *const r00D5 = gequal(swizzle_y(r00C6), swizzle_x(r00CA));988ir_expression *const r00D6 = logic_and(r00D4, r00D5);989ir_if *f00D3 = new(mem_ctx) ir_if(operand(r00D6).val);990exec_list *const f00D3_parent_instructions = body.instructions;991992/* THEN INSTRUCTIONS */993body.instructions = &f00D3->then_instructions;994995ir_variable *const r00D7 = new(mem_ctx) ir_variable(glsl_type::int_type, "i", ir_var_auto);996body.emit(r00D7);997ir_variable *const r00D8 = body.make_temp(glsl_type::int_type, "findMSB_retval");998body.emit(assign(r00D8, expr(ir_unop_find_msb, swizzle_x(r00CA)), 0x01));9991000body.emit(assign(r00D0, r00D8, 0x01));10011002body.emit(assign(r00D7, body.constant(int(31)), 0x01));10031004/* LOOP BEGIN */1005ir_loop *f00D9 = new(mem_ctx) ir_loop();1006exec_list *const f00D9_parent_instructions = body.instructions;10071008body.instructions = &f00D9->body_instructions;10091010/* IF CONDITION */1011ir_expression *const r00DB = less(r00D7, body.constant(int(1)));1012ir_if *f00DA = new(mem_ctx) ir_if(operand(r00DB).val);1013exec_list *const f00DA_parent_instructions = body.instructions;10141015/* THEN INSTRUCTIONS */1016body.instructions = &f00DA->then_instructions;10171018body.emit(new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_break));101910201021body.instructions = f00DA_parent_instructions;1022body.emit(f00DA);10231024/* END IF */10251026/* IF CONDITION */1027ir_expression *const r00DD = sub(body.constant(int(31)), r00D7);1028ir_expression *const r00DE = lequal(r00D8, r00DD);1029ir_expression *const r00DF = lshift(swizzle_x(r00CA), r00D7);1030ir_expression *const r00E0 = lequal(r00DF, swizzle_y(r00C6));1031ir_expression *const r00E1 = logic_and(r00DE, r00E0);1032ir_if *f00DC = new(mem_ctx) ir_if(operand(r00E1).val);1033exec_list *const f00DC_parent_instructions = body.instructions;10341035/* THEN INSTRUCTIONS */1036body.instructions = &f00DC->then_instructions;10371038ir_expression *const r00E2 = lshift(swizzle_x(r00CA), r00D7);1039body.emit(assign(r00C6, sub(swizzle_y(r00C6), r00E2), 0x02));10401041ir_expression *const r00E3 = lshift(body.constant(1u), r00D7);1042body.emit(assign(r00D1, bit_or(swizzle_y(r00D1), r00E3), 0x02));104310441045body.instructions = f00DC_parent_instructions;1046body.emit(f00DC);10471048/* END IF */10491050body.emit(assign(r00D7, add(r00D7, body.constant(int(-1))), 0x01));10511052/* LOOP END */10531054body.instructions = f00D9_parent_instructions;1055body.emit(f00D9);10561057/* IF CONDITION */1058ir_expression *const r00E5 = lequal(swizzle_x(r00CA), swizzle_y(r00C6));1059ir_if *f00E4 = new(mem_ctx) ir_if(operand(r00E5).val);1060exec_list *const f00E4_parent_instructions = body.instructions;10611062/* THEN INSTRUCTIONS */1063body.instructions = &f00E4->then_instructions;10641065body.emit(assign(r00C6, sub(swizzle_y(r00C6), swizzle_x(r00CA)), 0x02));10661067body.emit(assign(r00D1, bit_or(swizzle_y(r00D1), body.constant(1u)), 0x02));106810691070body.instructions = f00E4_parent_instructions;1071body.emit(f00E4);10721073/* END IF */107410751076body.instructions = f00D3_parent_instructions;1077body.emit(f00D3);10781079/* END IF */10801081ir_variable *const r00E6 = body.make_temp(glsl_type::uint64_t_type, "packUint2x32_retval");1082body.emit(assign(r00E6, expr(ir_unop_pack_uint_2x32, r00CA), 0x01));10831084body.emit(assign(r00CF, expr(ir_unop_pack_uint_2x32, r00C6), 0x01));10851086body.emit(assign(r00CE, body.constant(int(31)), 0x01));10871088/* LOOP BEGIN */1089ir_loop *f00E7 = new(mem_ctx) ir_loop();1090exec_list *const f00E7_parent_instructions = body.instructions;10911092body.instructions = &f00E7->body_instructions;10931094/* IF CONDITION */1095ir_expression *const r00E9 = less(r00CE, body.constant(int(1)));1096ir_if *f00E8 = new(mem_ctx) ir_if(operand(r00E9).val);1097exec_list *const f00E8_parent_instructions = body.instructions;10981099/* THEN INSTRUCTIONS */1100body.instructions = &f00E8->then_instructions;11011102body.emit(new(mem_ctx) ir_loop_jump(ir_loop_jump::jump_break));110311041105body.instructions = f00E8_parent_instructions;1106body.emit(f00E8);11071108/* END IF */11091110/* IF CONDITION */1111ir_expression *const r00EB = sub(body.constant(int(63)), r00CE);1112ir_expression *const r00EC = lequal(r00D0, r00EB);1113ir_expression *const r00ED = lshift(r00E6, r00CE);1114ir_expression *const r00EE = lequal(r00ED, r00CF);1115ir_expression *const r00EF = logic_and(r00EC, r00EE);1116ir_if *f00EA = new(mem_ctx) ir_if(operand(r00EF).val);1117exec_list *const f00EA_parent_instructions = body.instructions;11181119/* THEN INSTRUCTIONS */1120body.instructions = &f00EA->then_instructions;11211122ir_expression *const r00F0 = lshift(r00E6, r00CE);1123body.emit(assign(r00CF, sub(r00CF, r00F0), 0x01));11241125ir_expression *const r00F1 = lshift(body.constant(1u), r00CE);1126body.emit(assign(r00D1, bit_or(swizzle_x(r00D1), r00F1), 0x01));112711281129body.instructions = f00EA_parent_instructions;1130body.emit(f00EA);11311132/* END IF */11331134body.emit(assign(r00CE, add(r00CE, body.constant(int(-1))), 0x01));11351136/* LOOP END */11371138body.instructions = f00E7_parent_instructions;1139body.emit(f00E7);11401141/* IF CONDITION */1142ir_expression *const r00F3 = lequal(r00E6, r00CF);1143ir_if *f00F2 = new(mem_ctx) ir_if(operand(r00F3).val);1144exec_list *const f00F2_parent_instructions = body.instructions;11451146/* THEN INSTRUCTIONS */1147body.instructions = &f00F2->then_instructions;11481149body.emit(assign(r00CF, sub(r00CF, r00E6), 0x01));11501151body.emit(assign(r00D1, bit_or(swizzle_x(r00D1), body.constant(1u)), 0x01));115211531154body.instructions = f00F2_parent_instructions;1155body.emit(f00F2);11561157/* END IF */11581159ir_variable *const r00F4 = body.make_temp(glsl_type::uvec4_type, "vec_ctor");1160body.emit(assign(r00F4, r00D1, 0x03));11611162body.emit(assign(r00F4, expr(ir_unop_unpack_uint_2x32, r00CF), 0x0c));11631164ir_variable *const r00F5 = body.make_temp(glsl_type::ivec2_type, "conditional_tmp");1165/* IF CONDITION */1166ir_if *f00F6 = new(mem_ctx) ir_if(operand(r00C3).val);1167exec_list *const f00F6_parent_instructions = body.instructions;11681169/* THEN INSTRUCTIONS */1170body.instructions = &f00F6->then_instructions;11711172ir_swizzle *const r00F7 = swizzle(r00F4, MAKE_SWIZZLE4(SWIZZLE_Z, SWIZZLE_W, SWIZZLE_X, SWIZZLE_X), 2);1173ir_expression *const r00F8 = expr(ir_unop_pack_uint_2x32, r00F7);1174ir_expression *const r00F9 = expr(ir_unop_u642i64, r00F8);1175ir_expression *const r00FA = neg(r00F9);1176body.emit(assign(r00F5, expr(ir_unop_unpack_int_2x32, r00FA), 0x03));117711781179/* ELSE INSTRUCTIONS */1180body.instructions = &f00F6->else_instructions;11811182ir_swizzle *const r00FB = swizzle(r00F4, MAKE_SWIZZLE4(SWIZZLE_Z, SWIZZLE_W, SWIZZLE_X, SWIZZLE_X), 2);1183body.emit(assign(r00F5, expr(ir_unop_u2i, r00FB), 0x03));118411851186body.instructions = f00F6_parent_instructions;1187body.emit(f00F6);11881189/* END IF */11901191body.emit(ret(r00F5));11921193sig->replace_parameters(&sig_parameters);1194return sig;1195}119611971198