@@ -329,13 +329,14 @@ define void @test_fadd(ptr %p, ptr %q) nounwind {
329329; V8-OPT-LABEL: test_fadd:
330330; V8-OPT: ! %bb.0:
331331; V8-OPT-NEXT: save %sp, -104, %sp
332+ ; V8-OPT-NEXT: lduh [%i0], %i2
332333; V8-OPT-NEXT: call __extendhfsf2
333- ; V8-OPT-NEXT: lduh [%i0 ], %o0
334+ ; V8-OPT-NEXT: lduh [%i1 ], %o0
334335; V8-OPT-NEXT: st %f0, [%fp+-8] ! 4-byte Folded Spill
335336; V8-OPT-NEXT: call __extendhfsf2
336- ; V8-OPT-NEXT: lduh [%i1] , %o0
337+ ; V8-OPT-NEXT: mov %i2 , %o0
337338; V8-OPT-NEXT: ld [%fp+-8], %f1 ! 4-byte Folded Reload
338- ; V8-OPT-NEXT: fadds %f1 , %f0 , %f0
339+ ; V8-OPT-NEXT: fadds %f0 , %f1 , %f0
339340; V8-OPT-NEXT: st %f0, [%fp+-4]
340341; V8-OPT-NEXT: call __truncsfhf2
341342; V8-OPT-NEXT: ld [%fp+-4], %o0
@@ -346,13 +347,14 @@ define void @test_fadd(ptr %p, ptr %q) nounwind {
346347; V8-UNOPT-LABEL: test_fadd:
347348; V8-UNOPT: ! %bb.0:
348349; V8-UNOPT-NEXT: save %sp, -104, %sp
349- ; V8-UNOPT-NEXT: call __extendhfsf2
350- ; V8-UNOPT-NEXT: lduh [%i0], %o0
351- ; V8-UNOPT-NEXT: st %f0, [%fp+-8] ! 4-byte Folded Spill
350+ ; V8-UNOPT-NEXT: lduh [%i0], %i2
351+ ; V8-UNOPT-NEXT: st %i2, [%fp+-12] ! 4-byte Folded Spill
352352; V8-UNOPT-NEXT: call __extendhfsf2
353353; V8-UNOPT-NEXT: lduh [%i1], %o0
354- ; V8-UNOPT-NEXT: fmovs %f0, %f1
355- ; V8-UNOPT-NEXT: ld [%fp+-8], %f0 ! 4-byte Folded Reload
354+ ; V8-UNOPT-NEXT: ld [%fp+-12], %o0 ! 4-byte Folded Reload
355+ ; V8-UNOPT-NEXT: call __extendhfsf2
356+ ; V8-UNOPT-NEXT: st %f0, [%fp+-8]
357+ ; V8-UNOPT-NEXT: ld [%fp+-8], %f1 ! 4-byte Folded Reload
356358; V8-UNOPT-NEXT: fadds %f0, %f1, %f0
357359; V8-UNOPT-NEXT: st %f0, [%fp+-4]
358360; V8-UNOPT-NEXT: call __truncsfhf2
@@ -364,13 +366,14 @@ define void @test_fadd(ptr %p, ptr %q) nounwind {
364366; V9-LABEL: test_fadd:
365367; V9: ! %bb.0:
366368; V9-NEXT: save %sp, -104, %sp
369+ ; V9-NEXT: lduh [%i0], %i2
367370; V9-NEXT: call __extendhfsf2
368- ; V9-NEXT: lduh [%i0 ], %o0
371+ ; V9-NEXT: lduh [%i1 ], %o0
369372; V9-NEXT: st %f0, [%fp+-8] ! 4-byte Folded Spill
370373; V9-NEXT: call __extendhfsf2
371- ; V9-NEXT: lduh [%i1] , %o0
374+ ; V9-NEXT: mov %i2 , %o0
372375; V9-NEXT: ld [%fp+-8], %f1 ! 4-byte Folded Reload
373- ; V9-NEXT: fadds %f1 , %f0 , %f0
376+ ; V9-NEXT: fadds %f0 , %f1 , %f0
374377; V9-NEXT: st %f0, [%fp+-4]
375378; V9-NEXT: call __truncsfhf2
376379; V9-NEXT: ld [%fp+-4], %o0
@@ -381,14 +384,15 @@ define void @test_fadd(ptr %p, ptr %q) nounwind {
381384; SPARC64-LABEL: test_fadd:
382385; SPARC64: ! %bb.0:
383386; SPARC64-NEXT: save %sp, -192, %sp
387+ ; SPARC64-NEXT: lduh [%i0], %i2
384388; SPARC64-NEXT: call __extendhfsf2
385- ; SPARC64-NEXT: lduh [%i0 ], %o0
389+ ; SPARC64-NEXT: lduh [%i1 ], %o0
386390; SPARC64-NEXT: st %f0, [%fp+2043] ! 4-byte Folded Spill
387391; SPARC64-NEXT: call __extendhfsf2
388- ; SPARC64-NEXT: lduh [%i1] , %o0
392+ ; SPARC64-NEXT: mov %i2 , %o0
389393; SPARC64-NEXT: ld [%fp+2043], %f1 ! 4-byte Folded Reload
390394; SPARC64-NEXT: call __truncsfhf2
391- ; SPARC64-NEXT: fadds %f1 , %f0 , %f1
395+ ; SPARC64-NEXT: fadds %f0 , %f1 , %f1
392396; SPARC64-NEXT: sth %o0, [%i0]
393397; SPARC64-NEXT: ret
394398; SPARC64-NEXT: restore
@@ -403,13 +407,14 @@ define void @test_fmul(ptr %p, ptr %q) nounwind {
403407; V8-OPT-LABEL: test_fmul:
404408; V8-OPT: ! %bb.0:
405409; V8-OPT-NEXT: save %sp, -104, %sp
410+ ; V8-OPT-NEXT: lduh [%i0], %i2
406411; V8-OPT-NEXT: call __extendhfsf2
407- ; V8-OPT-NEXT: lduh [%i0 ], %o0
412+ ; V8-OPT-NEXT: lduh [%i1 ], %o0
408413; V8-OPT-NEXT: st %f0, [%fp+-8] ! 4-byte Folded Spill
409414; V8-OPT-NEXT: call __extendhfsf2
410- ; V8-OPT-NEXT: lduh [%i1] , %o0
415+ ; V8-OPT-NEXT: mov %i2 , %o0
411416; V8-OPT-NEXT: ld [%fp+-8], %f1 ! 4-byte Folded Reload
412- ; V8-OPT-NEXT: fmuls %f1 , %f0 , %f0
417+ ; V8-OPT-NEXT: fmuls %f0 , %f1 , %f0
413418; V8-OPT-NEXT: st %f0, [%fp+-4]
414419; V8-OPT-NEXT: call __truncsfhf2
415420; V8-OPT-NEXT: ld [%fp+-4], %o0
@@ -420,13 +425,14 @@ define void @test_fmul(ptr %p, ptr %q) nounwind {
420425; V8-UNOPT-LABEL: test_fmul:
421426; V8-UNOPT: ! %bb.0:
422427; V8-UNOPT-NEXT: save %sp, -104, %sp
423- ; V8-UNOPT-NEXT: call __extendhfsf2
424- ; V8-UNOPT-NEXT: lduh [%i0], %o0
425- ; V8-UNOPT-NEXT: st %f0, [%fp+-8] ! 4-byte Folded Spill
428+ ; V8-UNOPT-NEXT: lduh [%i0], %i2
429+ ; V8-UNOPT-NEXT: st %i2, [%fp+-12] ! 4-byte Folded Spill
426430; V8-UNOPT-NEXT: call __extendhfsf2
427431; V8-UNOPT-NEXT: lduh [%i1], %o0
428- ; V8-UNOPT-NEXT: fmovs %f0, %f1
429- ; V8-UNOPT-NEXT: ld [%fp+-8], %f0 ! 4-byte Folded Reload
432+ ; V8-UNOPT-NEXT: ld [%fp+-12], %o0 ! 4-byte Folded Reload
433+ ; V8-UNOPT-NEXT: call __extendhfsf2
434+ ; V8-UNOPT-NEXT: st %f0, [%fp+-8]
435+ ; V8-UNOPT-NEXT: ld [%fp+-8], %f1 ! 4-byte Folded Reload
430436; V8-UNOPT-NEXT: fmuls %f0, %f1, %f0
431437; V8-UNOPT-NEXT: st %f0, [%fp+-4]
432438; V8-UNOPT-NEXT: call __truncsfhf2
@@ -438,13 +444,14 @@ define void @test_fmul(ptr %p, ptr %q) nounwind {
438444; V9-LABEL: test_fmul:
439445; V9: ! %bb.0:
440446; V9-NEXT: save %sp, -104, %sp
447+ ; V9-NEXT: lduh [%i0], %i2
441448; V9-NEXT: call __extendhfsf2
442- ; V9-NEXT: lduh [%i0 ], %o0
449+ ; V9-NEXT: lduh [%i1 ], %o0
443450; V9-NEXT: st %f0, [%fp+-8] ! 4-byte Folded Spill
444451; V9-NEXT: call __extendhfsf2
445- ; V9-NEXT: lduh [%i1] , %o0
452+ ; V9-NEXT: mov %i2 , %o0
446453; V9-NEXT: ld [%fp+-8], %f1 ! 4-byte Folded Reload
447- ; V9-NEXT: fmuls %f1 , %f0 , %f0
454+ ; V9-NEXT: fmuls %f0 , %f1 , %f0
448455; V9-NEXT: st %f0, [%fp+-4]
449456; V9-NEXT: call __truncsfhf2
450457; V9-NEXT: ld [%fp+-4], %o0
@@ -455,14 +462,15 @@ define void @test_fmul(ptr %p, ptr %q) nounwind {
455462; SPARC64-LABEL: test_fmul:
456463; SPARC64: ! %bb.0:
457464; SPARC64-NEXT: save %sp, -192, %sp
465+ ; SPARC64-NEXT: lduh [%i0], %i2
458466; SPARC64-NEXT: call __extendhfsf2
459- ; SPARC64-NEXT: lduh [%i0 ], %o0
467+ ; SPARC64-NEXT: lduh [%i1 ], %o0
460468; SPARC64-NEXT: st %f0, [%fp+2043] ! 4-byte Folded Spill
461469; SPARC64-NEXT: call __extendhfsf2
462- ; SPARC64-NEXT: lduh [%i1] , %o0
470+ ; SPARC64-NEXT: mov %i2 , %o0
463471; SPARC64-NEXT: ld [%fp+2043], %f1 ! 4-byte Folded Reload
464472; SPARC64-NEXT: call __truncsfhf2
465- ; SPARC64-NEXT: fmuls %f1 , %f0 , %f1
473+ ; SPARC64-NEXT: fmuls %f0 , %f1 , %f1
466474; SPARC64-NEXT: sth %o0, [%i0]
467475; SPARC64-NEXT: ret
468476; SPARC64-NEXT: restore
0 commit comments