Video instructions and help with filling out and completing Can Form 1094 B Tracker

Instructions and Help about Can Form 1094 B Tracker

Okay Guyo welcome to another videos so I've got some exciting news we reached seven thousand subscribers on this channel so that's just brilliant really and thank you very much for subbing in celebration of reaching seven thousand subscribers I've decided to upload a mathematics competition containing unusually difficult questions I'll say that's what I'll say unusually difficult questions the first person to decipher a hidden message by answering 10 riddles within seven days of the upload is going to win a hundred dollars so that should be pretty good fun that's coming up shortly and keep your eye on this channel alrighty but on to the topic for today so today's topic is the min and Max instructions in sses sorry something stuck to my head it's been a really long time since I did a video video just dedicated to instructions in x86 and I think we pretty much done it covered about half of them maybe this video today is going to be a bit of a return to form the min and Max instructions in assume d you can think of these a bit like a conditional move yeah they're sort of like a compare and then a move what they do is compare corresponding elements from two registers in simdi so that's MMX registers or the sse registers or AVX if you've got it they compare corresponding elements and store either the minimum of each pair or the maximum of each pair the first ones that will look out will and look at these briefly to the sse floating-point versions max SS max PS max SD max pd and then minimum versions are the same thing so these are for discovering the minimum and the maximum of each pair of either singles or doubles so what you'll find I think if you look at these instructions up is that these single versions were included with SSC one and i think the double versions come about in SSC to the parameters for these operations I think for all of the instructions we're looking at today the parameters are an SEC register is the first source and the destination and the second source is either an sse register on right now so you can use mem 64 if you're using SD or mem 32 if you're using scale are single and of course min SS and max SD that's a minimum of scalar singles and Max of scalar doubles you've got to SSC registers as you parameter or the second parameter can be a 128-bit memory operand alright that's good but what do they do well this is a bit of an illustration down here so if if the CPU reads the instruction midden PS XM m 0 XM m 1 imagining that these numbers just here are in X mm oh and these numbers are in xmm one what the CPU is going to do is compare each pair so it's going to compare 12.3 to 5.9 and because it's min PS minimum of packed singles it's going to record the smallest of the two so that's 5.9 now it's going to record that in the first operand now so this first operand here is a source operand it's also the destination anyway it's pretty simple really so each pair of each pair of singles is going to get compared and you just knit up with the minimum of each pair in the result max PD so this is looking for the maximum of packed doubles this is just as easy really so instead of the registers being read as for packed singles you could obviously read SSC registers as packs doubles too packed doubles and this is what this instruction is going to do so it's going to compare 17.9 and 1.2 it's going to find the maximum because it's max pd and it's going to store that maximum in the result x mm oh yeah I hope that makes a bit of sense it's pretty simple really what they do but moving along we're getting closer to having a bit of a demonstration we'll do a demo at the end if you want to compare integers instead of floating point there's more integer data types in there are floating points so we've got bites words d words keywords there's more of these instructions than there are for the floating point you've also got signed and unsigned so originally we only had four instructions so P min swp max swp menu be and p.m. you be that's packed min of signed words packed max of signed words p minimum or packed minimum of unsigned bites impact maximum of unsigned bites these were originally included in MMX now so these instructions and only these for that we're looking at today only these four will work with MMX registers to which is quite cool if you want to do 64-bit simdi later on they were extended to include 128 bit operands so that's in that sse2 yeah so you can use amex or SSE registers with these particular instructions and rather cool in SSC 4.1 so this is about eight years later we finally got the rest of the integer min and Max instructions so this is SSE 4.1 12 more instructions I don't think 12 12 more instructions but there's 12 instructions all up 12 enters your comparison instructions the mnemonic is something like this so first of all you put P for packed then you can choose min or max depending on what you're looking for then you choose s or you which means signed or unsigned and then you put your data type so be four byte d 4 D word and W forward 16-bit words for example if you're looking for the minimum of signed bites you would use P min SB now or just another example if you're looking for the maximum of unsigned d words then your mnemonic would be