Activity log for bug #1695572

Date Who What changed Old value New value Message
2017-06-03 03:51:45 Dan Lewis bug added bug
2017-06-03 03:54:02 Dan Lewis description The pseudo-instruction (identified as a pseudo-instruction by the equals sign) VLDR S0,=constant should be replaced by one of: VMOV S0,#constant // The "#" may be omitted if using the directive, ".syntax unified" or: VLDR S0,label ... label: .float constant However, it only seems to work when "constant" is an integer (e.g., 3) and fails for any floating-point constant - even if the fractional part is zero (as in 3.0). For example, the assembler rejects the following: VLDR S0,=3.14159 and issue the error message: "Error: garbage following instruction -- 'vldr S0,=3.14159' This is using toolchain version 5.4 and the gnu assembler (as) version 2.26.0. The pseudo-instruction (identified as a pseudo-instruction by the equals sign)     VLDR S0,=constant should be replaced by one of:     VMOV S0,#constant // "#" may be omitted using directive, ".syntax unified" or:     VLDR S0,label     ... label: .float constant However, it only seems to work when "constant" is an integer (e.g., 3) and fails for any floating-point constant - even if the fractional part is zero (as in 3.0). For example, the assembler rejects the following:     VLDR S0,=3.14159 and issue the error message: "Error: garbage following instruction -- 'vldr S0,=3.14159' This is using toolchain version 5.4 and the gnu assembler (as) version 2.26.0.
2017-06-03 03:54:46 Dan Lewis description The pseudo-instruction (identified as a pseudo-instruction by the equals sign)     VLDR S0,=constant should be replaced by one of:     VMOV S0,#constant // "#" may be omitted using directive, ".syntax unified" or:     VLDR S0,label     ... label: .float constant However, it only seems to work when "constant" is an integer (e.g., 3) and fails for any floating-point constant - even if the fractional part is zero (as in 3.0). For example, the assembler rejects the following:     VLDR S0,=3.14159 and issue the error message: "Error: garbage following instruction -- 'vldr S0,=3.14159' This is using toolchain version 5.4 and the gnu assembler (as) version 2.26.0. The pseudo-instruction (identified as a pseudo-instruction by the equals sign)     VLDR S0,=constant should be replaced by one of:     VMOV S0,#constant // "#" may be omitted using directive, ".syntax unified" or:     VLDR S0,label     ... label: .float constant However, it only seems to work when "constant" is an integer (e.g., 3) and fails for any floating-point constant - even if the fractional part is zero (as in 3.0). For example, the assembler rejects the following:     VLDR S0,=3.14159 and issues the error message: "Error: garbage following instruction -- 'vldr S0,=3.14159' This is using toolchain version 5.4 and the gnu assembler (as) version 2.26.0.
2019-06-01 15:43:37 Dan Lewis description The pseudo-instruction (identified as a pseudo-instruction by the equals sign)     VLDR S0,=constant should be replaced by one of:     VMOV S0,#constant // "#" may be omitted using directive, ".syntax unified" or:     VLDR S0,label     ... label: .float constant However, it only seems to work when "constant" is an integer (e.g., 3) and fails for any floating-point constant - even if the fractional part is zero (as in 3.0). For example, the assembler rejects the following:     VLDR S0,=3.14159 and issues the error message: "Error: garbage following instruction -- 'vldr S0,=3.14159' This is using toolchain version 5.4 and the gnu assembler (as) version 2.26.0. The pseudo-instruction (identified as a pseudo-instruction by the equals sign)     VLDR S0,=constant should be replaced by one of:     VMOV S0,#constant // "#" may be omitted using directive, ".syntax unified" or:     VLDR S0,label     ... label: .float constant However, it only "seems" to work when the constant is an integer. The assembler rejects "VLDR S0,=1.0" with the error message:     "Error: garbage following instruction -- 'vldr S0,=1.0' but happily accepts "VLDR S0,=1". However the latter does NOT load the floating-point equivalent (1.0) into S0. This is using the 8-2018-q4-update of GNU ARM Embedded Toolchain.
2019-06-01 15:45:51 Dan Lewis summary VLDR pseudo instruction only works with integer constants VLDR pseudo instruction accepts integers but generates incorrect code; does NOT accept f.p. constants.
2019-06-01 15:47:26 Dan Lewis summary VLDR pseudo instruction accepts integers but generates incorrect code; does NOT accept f.p. constants. "VLDR S0,=1.0" rejected, but "VLDR S0,=1" accepted but generates incorrect code.
2019-06-01 15:48:13 Dan Lewis summary "VLDR S0,=1.0" rejected, but "VLDR S0,=1" accepted but generates incorrect code. "VLDR S0,=1.0" rejected, but "VLDR S0,=1" accepted but generates bad code.
2019-06-01 15:49:07 Dan Lewis summary "VLDR S0,=1.0" rejected, but "VLDR S0,=1" accepted but generates bad code. "VLDR S0,=1.0" rejected, but "VLDR S0,=1" accepted and generates bad code.
2019-06-01 15:50:43 Dan Lewis summary "VLDR S0,=1.0" rejected, but "VLDR S0,=1" accepted and generates bad code. "VLDR S0,=1.0" rejected, but accepts "VLDR S0,=1" and generates bad code.
2019-06-01 15:51:31 Dan Lewis description The pseudo-instruction (identified as a pseudo-instruction by the equals sign)     VLDR S0,=constant should be replaced by one of:     VMOV S0,#constant // "#" may be omitted using directive, ".syntax unified" or:     VLDR S0,label     ... label: .float constant However, it only "seems" to work when the constant is an integer. The assembler rejects "VLDR S0,=1.0" with the error message:     "Error: garbage following instruction -- 'vldr S0,=1.0' but happily accepts "VLDR S0,=1". However the latter does NOT load the floating-point equivalent (1.0) into S0. This is using the 8-2018-q4-update of GNU ARM Embedded Toolchain. The pseudo-instruction (identified as a pseudo-instruction by the equals sign)     VLDR S0,=constant should be replaced by one of:     VMOV S0,#constant // "#" may be omitted using directive, ".syntax unified" or:     VLDR S0,label     ... label: .float constant However, it only "seems" to work when the constant is an integer. The assembler rejects "VLDR S0,=1.0" with the error message:     "Error: garbage following instruction -- 'vldr S0,=1.0' but happily accepts "VLDR S0,=1". However the latter does NOT load the floating-point equivalent (1.0) into S0. It loads 0.0 into S0. This is using the 8-2018-q4-update of GNU ARM Embedded Toolchain.
2019-06-01 16:44:57 Dan Lewis description The pseudo-instruction (identified as a pseudo-instruction by the equals sign)     VLDR S0,=constant should be replaced by one of:     VMOV S0,#constant // "#" may be omitted using directive, ".syntax unified" or:     VLDR S0,label     ... label: .float constant However, it only "seems" to work when the constant is an integer. The assembler rejects "VLDR S0,=1.0" with the error message:     "Error: garbage following instruction -- 'vldr S0,=1.0' but happily accepts "VLDR S0,=1". However the latter does NOT load the floating-point equivalent (1.0) into S0. It loads 0.0 into S0. This is using the 8-2018-q4-update of GNU ARM Embedded Toolchain. The pseudo-instruction (identified as a pseudo-instruction by the equals sign)     VLDR S0,=constant should be replaced by one of:     VMOV S0,#constant // "#" may be omitted using directive, ".syntax unified" or:     VLDR S0,label     ... label: .float constant However, it only "seems" to work when the constant is an integer. The assembler rejects "VLDR S0,=1.0" with the error message:     "Error: garbage following instruction -- 'vldr S0,=1.0' but happily accepts "VLDR S0,=1". However the latter does NOT load the floating-point representation of 1.0 (0x3F800000) into S0. It loads the integer representation of 1 (0x00000001) into S0. This is using the 8-2018-q4-update of GNU ARM Embedded Toolchain.
2021-03-05 17:12:42 Dan Lewis description The pseudo-instruction (identified as a pseudo-instruction by the equals sign)     VLDR S0,=constant should be replaced by one of:     VMOV S0,#constant // "#" may be omitted using directive, ".syntax unified" or:     VLDR S0,label     ... label: .float constant However, it only "seems" to work when the constant is an integer. The assembler rejects "VLDR S0,=1.0" with the error message:     "Error: garbage following instruction -- 'vldr S0,=1.0' but happily accepts "VLDR S0,=1". However the latter does NOT load the floating-point representation of 1.0 (0x3F800000) into S0. It loads the integer representation of 1 (0x00000001) into S0. This is using the 8-2018-q4-update of GNU ARM Embedded Toolchain. The pseudo-instruction (identified as a pseudo-instruction by the equals sign)     VLDR S0,=constant should be replaced by one of:     VMOV S0,#constant // "#" may be omitted using directive, ".syntax unified" or:     VLDR S0,label     ... label: .float constant However, it only "seems" to work when the constant is an integer. The assembler rejects "VLDR S0,=1.0" with the error message:     "Error: garbage following instruction -- 'vldr S0,=1.0' but happily accepts "VLDR S0,=1" (Note: It also happily accepts "VLDR S0,=label", where "label" is the label on a .float directive, and is apparently loading the address of the label into S0!) However the latter does NOT load the floating-point representation of 1.0 (0x3F800000) into S0. It loads the integer representation of 1 (0x00000001) into S0. This is using the 8-2018-q4-update of GNU ARM Embedded Toolchain.