(set (ifield f-u12-l) (and (ifield f-u12) #x3f))
)
(sequence () ; extract
- (set (ifield f-u12) (or (sll (ifield f-u12-h) 6)
+ (set (ifield f-u12) (or (mul (ifield f-u12-h) 64)
(ifield f-u12-l)))
)
)
(df f-label16 "18 bit pc relative signed offset" (PCREL-ADDR) 15 16 INT
((value pc) (sra WI (sub WI value pc) (const 2)))
- ((value pc) (add WI (sll WI value (const 2)) pc))
+ ((value pc) (add WI (mul WI value (const 4)) pc))
)
(df f-labelH6 "upper 6 bits of label24" () 30 6 INT #f #f)
; extract
(sequence ()
(set (ifield f-label24)
- (add (sll (or (sll (ifield f-labelH6) (const 18))
+ (add (mul (or (mul (ifield f-labelH6) (sll 1 18))
(ifield f-labelL18))
- (const 2))
+ (const 4))
pc)))
)
(.splice (UNIT FMALL) (FR500-MAJOR F-1) (.unsplice attr))
(.str name "$pack $" src ",$" targ)
(+ pack targ op (rs-null) ope src)
- (set targ (conv mode src))
+ (set targ (conv mode FPCONV-DEFAULT src))
((fr500 (unit u-float-convert)) (fr550 (unit u-float-convert)))
)
)
(.str name "$pack $" src ",$" targ)
(+ pack targ op (rs-null) ope src)
(sequence ()
- (set targ (conv mode src))
+ (set targ (conv mode FPCONV-DEFAULT src))
(set (nextreg targ_hw targ 1)
- (conv mode (nextreg src_hw src 1))))
+ (conv mode FPCONV-DEFAULT (nextreg src_hw src 1))))
((fr500 (unit u-float-dual-convert)))
)
)
(+ pack targ op (rs-null) ope src)
(sequence ()
(c-call VOID "@cpu@_set_ne_index" (index-of targ))
- (set targ (conv mode src))
+ (set targ (conv mode FPCONV-DEFAULT src))
(c-call VOID "@cpu@_set_ne_index" (add (index-of targ) 1))
(set (nextreg targ_hw targ 1)
- (conv mode (nextreg src_hw src 1))))
+ (conv mode FPCONV-DEFAULT (nextreg src_hw src 1))))
((fr500 (unit u-float-dual-convert)))
)
)
(.str name "$pack $" src ",$" targ ",$CCi,$cond")
(+ pack targ op (rs-null) CCi cond ope src)
(if (eq CCi (or cond 2))
- (set targ (conv mode src)))
+ (set targ (conv mode FPCONV-DEFAULT src)))
((fr500 (unit u-float-convert)) (fr550 (unit u-float-convert)))
)
)
(+ pack targ op (rs-null) ope src)
(sequence ()
(c-call VOID "@cpu@_set_ne_index" (index-of targ))
- (set targ (conv mode src)))
+ (set targ (conv mode FPCONV-DEFAULT src)))
((fr500 (unit u-float-convert)) (fr550 (unit u-float-convert)))
)
)
(define-pmacro (float-parallel-mul-add-double-semantics add_sub arg1 arg2 targ)
(sequence ()
- (set targ (ftrunc SF (mul DF (fext DF arg1) (fext DF arg2))))
+ (set targ (ftrunc SF FPCONV-DEFAULT
+ (mul DF
+ (fext DF FPCONV-DEFAULT arg1)
+ (fext DF FPCONV-DEFAULT arg2))))
(set (nextreg h-fr targ 1)
- (ftrunc SF (add_sub DF
- (fext DF (nextreg h-fr arg1 1))
- (fext DF (nextreg h-fr arg2 1))))))
+ (ftrunc SF FPCONV-DEFAULT
+ (add_sub DF
+ (fext DF FPCONV-DEFAULT (nextreg h-fr arg1 1))
+ (fext DF FPCONV-DEFAULT (nextreg h-fr arg2 1))))))
)
(define-pmacro (float-parallel-mul-add-double