target-arm: Signal InvalidOp for Neon GE and GT compares of QNaN

If the input to a Neon float comparison is a quiet NaN, the ARM ARM
specifies that we should raise InvalidOp if the comparison is GE or GT
but not for EQ. (Signaling NaNs raise InvalidOp regardless). This means
only EQ should use the _quiet version of the comparison function.

We implement this by cleaning up the comparison helpers to call the
appopriate versions of the softfloat simple comparison functions
(float32_le and friends) rather than the generic float32_compare functions.
This makes them simple enough that they are clearer opencoded rather
than macroised.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
1 file changed
tree: 3ff275e9ae2a667f106db9b9c21d60ae5e4a71b6
  1. audio/
  2. block/
  3. bsd-user/
  4. darwin-user/
  5. default-configs/
  6. docs/
  7. fpu/
  8. fsdev/
  9. gdb-xml/
  10. hw/
  11. libcacard/
  12. linux-user/
  13. net/
  14. pc-bios/
  15. QMP/
  16. roms/
  17. scripts/
  18. slirp/
  19. sysconfigs/
  20. target-alpha/
  21. target-arm/
  22. target-cris/
  23. target-i386/
  24. target-lm32/
  25. target-m68k/
  26. target-microblaze/
  27. target-mips/
  28. target-ppc/
  29. target-s390x/
  30. target-sh4/
  31. target-sparc/
  32. target-unicore32/
  33. tcg/
  34. tests/
  35. ui/
  36. .gitignore
  37. .gitmodules
  38. a.out.h
  39. acl.c
  40. acl.h
  41. aes.c
  42. aes.h
  43. aio.c
  44. alpha-dis.c
  45. alpha.ld
  46. arch_init.c
  47. arch_init.h
  48. arm-dis.c
  49. arm-semi.c
  50. arm.ld
  51. async.c
  52. balloon.c
  53. balloon.h
  54. bitmap.c
  55. bitmap.h
  56. bitops.c
  57. bitops.h
  58. block-migration.c
  59. block-migration.h
  60. block.c
  61. block.h
  62. block_int.h
  63. blockdev.c
  64. blockdev.h
  65. bswap.h
  66. bt-host.c
  67. bt-host.h
  68. bt-vhci.c
  69. buffered_file.c
  70. buffered_file.h
  71. cache-utils.c
  72. cache-utils.h
  73. Changelog
  74. check-qdict.c
  75. check-qfloat.c
  76. check-qint.c
  77. check-qjson.c
  78. check-qlist.c
  79. check-qstring.c
  80. cmd.c
  81. cmd.h
  82. CODING_STYLE
  83. compatfd.c
  84. compatfd.h
  85. config.h
  86. configure
  87. console.c
  88. console.h
  89. COPYING
  90. COPYING.LIB
  91. cpu-all.h
  92. cpu-common.h
  93. cpu-defs.h
  94. cpu-exec.c
  95. cpus.c
  96. cpus.h
  97. cris-dis.c
  98. cursor.c
  99. cursor_hidden.xpm
  100. cursor_left_ptr.xpm
  101. cutils.c
  102. def-helper.h
  103. device_tree.c
  104. device_tree.h
  105. dis-asm.h
  106. disas.c
  107. disas.h
  108. dma-helpers.c
  109. dma.h
  110. dyngen-exec.h
  111. elf.h
  112. envlist.c
  113. envlist.h
  114. exec-all.h
  115. exec.c
  116. gdbstub.c
  117. gdbstub.h
  118. gen-icount.h
  119. HACKING
  120. hmp-commands.hx
  121. host-utils.c
  122. host-utils.h
  123. hpet.h
  124. hppa-dis.c
  125. hppa.ld
  126. i386-dis.c
  127. i386.ld
  128. ia64-dis.c
  129. ia64.ld
  130. input.c
  131. iohandler.c
  132. ioport-user.c
  133. ioport.c
  134. ioport.h
  135. iorange.h
  136. iov.c
  137. iov.h
  138. json-lexer.c
  139. json-lexer.h
  140. json-parser.c
  141. json-parser.h
  142. json-streamer.c
  143. json-streamer.h
  144. kvm-all.c
  145. kvm-stub.c
  146. kvm.h
  147. libfdt_env.h
  148. LICENSE
  149. linux-aio.c
  150. m68k-dis.c
  151. m68k-semi.c
  152. m68k.ld
  153. MAINTAINERS
  154. Makefile
  155. Makefile.dis
  156. Makefile.hw
  157. Makefile.objs
  158. Makefile.target
  159. Makefile.user
  160. microblaze-dis.c
  161. migration-exec.c
  162. migration-fd.c
  163. migration-tcp.c
  164. migration-unix.c
  165. migration.c
  166. migration.h
  167. mips-dis.c
  168. mips.ld
  169. module.c
  170. module.h
  171. monitor.c
  172. monitor.h
  173. nbd.c
  174. nbd.h
  175. net.c
  176. net.h
  177. notify.c
  178. notify.h
  179. os-posix.c
  180. os-win32.c
  181. osdep.c
  182. osdep.h
  183. oslib-posix.c
  184. oslib-win32.c
  185. path.c
  186. pci-ids.txt
  187. pflib.c
  188. pflib.h
  189. poison.h
  190. posix-aio-compat.c
  191. ppc-dis.c
  192. ppc.ld
  193. ppc64.ld
  194. qbool.c
  195. qbool.h
  196. qdict-test-data.txt
  197. qdict.c
  198. qdict.h
  199. qemu-aio.h
  200. qemu-barrier.h
  201. qemu-char.c
  202. qemu-char.h
  203. qemu-common.h
  204. qemu-config.c
  205. qemu-config.h
  206. qemu-doc.texi
  207. qemu-error.c
  208. qemu-error.h
  209. qemu-img-cmds.hx
  210. qemu-img.c
  211. qemu-img.texi
  212. qemu-io.c
  213. qemu-lock.h
  214. qemu-log.h
  215. qemu-malloc.c
  216. qemu-nbd.c
  217. qemu-nbd.texi
  218. qemu-objects.h
  219. qemu-option.c
  220. qemu-option.h
  221. qemu-options.h
  222. qemu-options.hx
  223. qemu-os-posix.h
  224. qemu-os-win32.h
  225. qemu-progress.c
  226. qemu-queue.h
  227. qemu-sockets.c
  228. qemu-tech.texi
  229. qemu-thread-posix.c
  230. qemu-thread-posix.h
  231. qemu-thread-win32.c
  232. qemu-thread-win32.h
  233. qemu-thread.h
  234. qemu-timer-common.c
  235. qemu-timer.c
  236. qemu-timer.h
  237. qemu-tool.c
  238. qemu-x509.h
  239. qemu.sasl
  240. qemu_socket.h
  241. qerror.c
  242. qerror.h
  243. qfloat.c
  244. qfloat.h
  245. qint.c
  246. qint.h
  247. qjson.c
  248. qjson.h
  249. qlist.c
  250. qlist.h
  251. qmp-commands.hx
  252. qobject.h
  253. qstring.c
  254. qstring.h
  255. range.h
  256. readline.c
  257. readline.h
  258. README
  259. rules.mak
  260. rwhandler.c
  261. rwhandler.h
  262. s390-dis.c
  263. s390.ld
  264. savevm.c
  265. sh4-dis.c
  266. simpletrace.c
  267. simpletrace.h
  268. softmmu-semi.h
  269. softmmu_defs.h
  270. softmmu_exec.h
  271. softmmu_header.h
  272. softmmu_template.h
  273. sparc-dis.c
  274. sparc.ld
  275. sparc64.ld
  276. spice-qemu-char.c
  277. sysemu.h
  278. targphys.h
  279. tcg-runtime.c
  280. thunk.c
  281. thunk.h
  282. TODO
  283. trace-events
  284. translate-all.c
  285. uboot_image.h
  286. usb-bsd.c
  287. usb-linux.c
  288. usb-stub.c
  289. VERSION
  290. version.rc
  291. vgafont.h
  292. vl.c
  293. x86_64.ld
  294. xen-all.c
  295. xen-mapcache-stub.c
  296. xen-mapcache.c
  297. xen-mapcache.h
  298. xen-stub.c