macro ('declare-simple-instruction-alias-binop-64 (op-alias op-code op-type)) ( fragment op-alias := λ: DontChain(: l op-type+Constant)(: r op-type+Constant). (: ( (.program( \t 'movq \s '$ (.expression l) , \s '%RAX \n \t 'movq \s '$ (.expression r) , \s '%R14 \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+Constant)(: r op-type+LocalVariable). (: ( (.program( \t 'movq \s '$ (.expression l) , \s '%RAX \n \t 'movq \s (.expression r) \[ '%RBP \] , \s '%R14 \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+Constant)(: r op-type+GlobalVariable). (: ( (.program( \t 'movq \s '$ (.expression l) , \s '%RAX \n \t 'movq \s '$ (.expression r) , \s '%R14 \n \t 'movq \s '0 \[ '%R14 \] , \s '%R14 \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+Constant)(: r op-type+Reg64). (: ( (.program( (.program r) \t 'movq \s '% (.expression r) , \s '%R14 \n \t 'movq \s '$ (.expression l) , \s '%RAX \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+LocalVariable)(: r op-type+Constant). (: ( (.program( \t 'movq \s (.expression l) \[ '%RBP \] , \s '%RAX \n \t 'movq \s '$ (.expression r) , \s '%R14 \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+LocalVariable)(: r op-type+LocalVariable). (: ( (.program( \t 'movq \s (.expression l) \[ '%RBP \] , \s '%RAX \n \t 'movq \s (.expression r) \[ '%RBP \] , \s '%R14 \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+LocalVariable)(: r op-type+GlobalVariable). (: ( (.program( \t 'movq \s (.expression l) \[ '%RBP \] , \s '%RAX \n \t 'movq \s '$ (.expression r) , \s '%R14 \n \t 'movq \s '0 \[ '%R14 \] , \s '%R14 \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+LocalVariable)(: r op-type+Reg64). (: ( (.program( (.program r) \t 'movq \s '% (.expression r) , \s '%R14 \n \t 'movq \s (.expression l) \[ '%RBP \] , \s '%RAX \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+GlobalVariable)(: r op-type+Constant). (: ( (.program( \t 'movq \s '$ (.expression l) , \s '%RAX \n \t 'movq \s '0 \[ '%RAX \] , \s '%RAX \n \t 'movq \s '$ (.expression r) , \s '%R14 \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+GlobalVariable)(: r op-type+LocalVariable). (: ( (.program( \t 'movq \s '$ (.expression l) , \s '%RAX \n \t 'movq \s '0 \[ '%RAX \] , \s '%RAX \n \t 'movq \s (.expression r) \[ '%RBP \] , \s '%R14 \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+GlobalVariable)(: r op-type+GlobalVariable). (: ( (.program( \t 'movq \s '$ (.expression l) , \s '%RAX \n \t 'movq \s '0 \[ '%RAX \] , \s '%RAX \n \t 'movq \s '$ (.expression r) , \s '%R14 \n \t 'movq \s '0 \[ '%R14 \] , \s '%R14 \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+GlobalVariable)(: r op-type+Reg64). (: ( (.program( (.program r) \t 'movq \s '% (.expression r) , \s '%R14 \n \t 'movq \s '$ (.expression l) , \s '%RAX \n \t 'movq \s '0 \[ '%RAX \] , \s '%RAX \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+Reg64)(: r op-type+Constant). (: ( (.program( (.program l) \t 'movq \s '% (.expression l) , \s '%RAX \n \t 'movq \s '$ (.expression r) , \s '%R14 \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+Reg64)(: r op-type+LocalVariable). (: ( (.program( (.program l) \t 'movq \s '% (.expression l) , \s '%RAX \n \t 'movq \s (.expression r) \[ '%RBP \] , \s '%R14 \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+Reg64)(: r op-type+GlobalVariable). (: ( (.program( (.program l) \t 'movq \s '% (.expression l) , \s '%RAX \n \t 'movq \s '$ (.expression r) , \s '%R14 \n \t 'movq \s '0 \[ '%R14 \] , \s '%R14 \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); fragment op-alias := λ: DontChain(: l op-type+Reg64+Meta)(: r op-type+Reg64). (: ( (.program( (.program l) \t 'pushq \s '% (.expression l) \n (.program r) \t 'movq \s '% (.expression r) , \s '%R14 \n \t 'popq \s '%RAX \n \t op-code \s '%R14 , \s '%RAX \n )) (.data( (.data l) (.data r) )) (.frame( (.text l) (.text r) )) (.frame( (.frame l) (.frame r) )) (.unframe( (.unframe l) (.unframe r) )) (.expression( 'RAX )) ) op-type+Reg64); );