1 1. store_src_rg coords = src.rg 2 2. init_lane_masks CondMask = LoopMask = RetMask = true 3 3. copy_constant $0 = colorGreen(1) 4 4. cast_to_int_from_float $0 = FloatToInt($0) 5 5. copy_slot_unmasked x = $0 6 6. zero_slot_unmasked _0_ok = 0 7 7. store_loop_mask $0 = LoopMask 8 8. copy_slot_unmasked $1 = x 9 9. store_loop_mask $2 = LoopMask 10 10. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 11 11. case_op if ($1 == 0x00000002) { LoopMask = true; $2 = false; } 12 12. branch_if_no_active_lanes branch_if_no_active_lanes +2 (label 0 at #14) 13 13. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 14 14. label label 0x00000000 15 15. case_op if ($1 == 0x00000001) { LoopMask = true; $2 = false; } 16 16. label label 0x00000001 17 17. case_op if ($1 == 0x00000000) { LoopMask = true; $2 = false; } 18 18. branch_if_no_active_lanes branch_if_no_active_lanes +4 (label 2 at #22) 19 19. copy_constant $3 = 0xFFFFFFFF 20 20. copy_slot_masked _0_ok = Mask($3) 21 21. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 22 22. label label 0x00000002 23 23. reenable_loop_mask LoopMask |= $2 24 24. branch_if_no_active_lanes branch_if_no_active_lanes +2 (label 3 at #26) 25 25. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 26 26. label label 0x00000003 27 27. load_loop_mask LoopMask = $0 28 28. store_condition_mask $12 = CondMask 29 29. copy_slot_unmasked $13 = _0_ok 30 30. zero_slot_unmasked $0 = 0 31 31. merge_condition_mask CondMask = $12 & $13 32 32. branch_if_no_active_lanes branch_if_no_active_lanes +30 (label 5 at #62) 33 33. copy_slot_unmasked value = x 34 34. zero_slot_unmasked ok = 0 35 35. store_loop_mask $1 = LoopMask 36 36. copy_slot_unmasked $2 = value 37 37. store_loop_mask $3 = LoopMask 38 38. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 39 39. case_op if ($2 == 0x00000000) { LoopMask = true; $3 = false; } 40 40. branch_if_no_active_lanes branch_if_no_active_lanes +2 (label 7 at #42) 41 41. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 42 42. label label 0x00000007 43 43. case_op if ($2 == 0x00000001) { LoopMask = true; $3 = false; } 44 44. label label 0x00000008 45 45. case_op if ($2 == 0x00000002) { LoopMask = true; $3 = false; } 46 46. label label 0x00000009 47 47. case_op if ($2 == 0x00000003) { LoopMask = true; $3 = false; } 48 48. branch_if_no_active_lanes branch_if_no_active_lanes +4 (label 10 at #52) 49 49. copy_constant $4 = 0xFFFFFFFF 50 50. copy_slot_masked ok = Mask($4) 51 51. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 52 52. label label 0x0000000A 53 53. reenable_loop_mask LoopMask |= $3 54 54. branch_if_no_active_lanes branch_if_no_active_lanes +2 (label 11 at #56) 55 55. mask_off_loop_mask LoopMask &= ~(CondMask & LoopMask & RetMask) 56 56. label label 0x0000000B 57 57. load_loop_mask LoopMask = $1 58 58. copy_slot_unmasked $1 = ok 59 59. copy_slot_masked [switch_fallthrough_twice].result = Mask($1) 60 60. label label 0x00000006 61 61. copy_slot_masked $0 = Mask($1) 62 62. label label 0x00000005 63 63. load_condition_mask CondMask = $12 64 64. swizzle_4 $0..3 = ($0..3).xxxx 65 65. copy_4_constants $4..7 = colorRed 66 66. copy_4_constants $8..11 = colorGreen 67 67. mix_4_ints $0..3 = mix($4..7, $8..11, $0..3) 68 68. copy_4_slots_unmasked [main].result = $0..3 69 69. load_src src.rgba = [main].result 70