+ fun sfx Byte = "b"
+ | sfx Word = "w"
+ | sfx Long = "l"
+ | sfx Quad = "q"
+
+ fun name (t,s, sz) = "+t" ^ Int.toString t ^ "[" ^ s ^ "]" ^ sfx sz
+ fun size (t, s, sz) = sz
+ fun compare ((t1,_,_),(t2,_,_)) = Int.compare (t1,t2)
+
+ fun eq ((t1,_,_), (t2,_,_)) = t1 = t2
+
+ fun cmpsize (Quad,Quad) = EQUAL
+ | cmpsize (Quad,_) = GREATER
+ | cmpsize (_,Quad) = LESS
+ | cmpsize (Long,Long) = EQUAL
+ | cmpsize (Long,_) = GREATER
+ | cmpsize (_,Long) = LESS
+ | cmpsize (Word,Word) = EQUAL
+ | cmpsize (Word,_) = GREATER
+ | cmpsize (_,Word) = LESS
+ | cmpsize (Byte,Byte) = EQUAL
+
+ fun sts 8 = Quad
+ | sts 4 = Long
+ | sts 2 = Word
+ | sts 1 = Byte
+ | sts _ = raise ErrorMsg.InternalError "Temp.sts: invalid size"
+