brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.5 KiB · 6e78f44 Raw
146 lines · plain
1# RUN: llc -mtriple=x86_64 -run-pass none -o - %s | FileCheck %s2# This test ensures that the MIR parser parses constant pool constants and3# constant pool operands correctly.4 5--- |6 7  define double @test(double %a, float %b) {8  entry:9    %c = fadd double %a, 3.250000e+0010    %d = fadd float %b, 6.250000e+0011    %e = fpext float %d to double12    %f = fmul double %c, %e13    ret double %f14  }15 16  define double @test2(double %a, float %b) {17  entry:18    %c = fadd double %a, 3.250000e+0019    %d = fadd float %b, 6.250000e+0020    %e = fpext float %d to double21    %f = fmul double %c, %e22    ret double %f23  }24 25  define double @test3(double %a, float %b) {26  entry:27    %c = fadd double %a, 3.250000e+0028    %d = fadd float %b, 6.250000e+0029    %e = fpext float %d to double30    %f = fmul double %c, %e31    ret double %f32  }33 34  define double @test4(double %a, float %b) {35  entry:36    %c = fadd double %a, 3.250000e+0037    %d = fadd float %b, 6.250000e+0038    %e = fpext float %d to double39    %f = fmul double %c, %e40    ret double %f41  }42...43---44# CHECK: name: test45# CHECK: constants:46# CHECK-NEXT: - id: 047# CHECK-NEXT:   value: 'double 3.250000e+00'48# CHECK-NEXT:   alignment: 849# CHECK-NEXT:   isTargetSpecific: false50# CHECK-NEXT: - id: 151# CHECK-NEXT:   value: 'float 6.250000e+00'52# CHECK-NEXT:   alignment: 453# CHECK-NEXT:   isTargetSpecific: false54name:            test55constants:56  - id:          057    value:       'double 3.250000e+00'58    alignment:   859  - id:          160    value:       'float 6.250000e+00'61    alignment:   462body: |63  bb.0.entry:64    ; CHECK:      $xmm0 = ADDSDrm killed $xmm0, $rip, 1, $noreg, %const.0, $noreg, implicit $mxcsr65    ; CHECK-NEXT: $xmm1 = ADDSSrm killed $xmm1, $rip, 1, $noreg, %const.1, $noreg, implicit $mxcsr66    $xmm0 = ADDSDrm killed $xmm0, $rip, 1, _, %const.0, _, implicit $mxcsr67    $xmm1 = ADDSSrm killed $xmm1, $rip, 1, _, %const.1, _, implicit $mxcsr68    $xmm1 = CVTSS2SDrr killed $xmm1, implicit $mxcsr69    $xmm0 = MULSDrr killed $xmm0, killed $xmm1, implicit $mxcsr70    RET64 $xmm071...72---73# Verify that alignment can be inferred:74# CHECK: name: test275# CHECK: constants:76# CHECK-NEXT: - id: 077# CHECK-NEXT:   value: 'double 3.250000e+00'78# CHECK-NEXT:   alignment: 879# CHECK-NEXT:   isTargetSpecific: false80# CHECK-NEXT: - id: 181# CHECK-NEXT:   value: 'float 6.250000e+00'82# CHECK-NEXT:   alignment: 483# CHECK-NEXT:   isTargetSpecific: false84name:            test285constants:86  - id:          087    value:       'double 3.250000e+00'88  - id:          189    value:       'float 6.250000e+00'90body: |91  bb.0.entry:92    $xmm0 = ADDSDrm killed $xmm0, $rip, 1, _, %const.0, _, implicit $mxcsr93    $xmm1 = ADDSSrm killed $xmm1, $rip, 1, _, %const.1, _, implicit $mxcsr94    $xmm1 = CVTSS2SDrr killed $xmm1, implicit $mxcsr95    $xmm0 = MULSDrr killed $xmm0, killed $xmm1, implicit $mxcsr96    RET64 $xmm097...98---99# Verify that the non-standard alignments are respected:100# CHECK: name: test3101# CHECK: constants:102# CHECK-NEXT: - id: 0103# CHECK-NEXT:   value: 'double 3.250000e+00'104# CHECK-NEXT:   alignment: 128105# CHECK-NEXT:   isTargetSpecific: false106# CHECK-NEXT: - id: 1107# CHECK-NEXT:   value: 'float 6.250000e+00'108# CHECK-NEXT:   alignment: 1109# CHECK-NEXT:   isTargetSpecific: false110name:            test3111constants:112  - id:          0113    value:       'double 3.250000e+00'114    alignment:   128115  - id:          1116    value:       'float 6.250000e+00'117    alignment:   1118body: |119  bb.0.entry:120    ; CHECK:      $xmm0 = ADDSDrm killed $xmm0, $rip, 1, $noreg, %const.0, $noreg, implicit $mxcsr121    ; CHECK-NEXT: $xmm1 = ADDSSrm killed $xmm1, $rip, 1, $noreg, %const.1, $noreg, implicit $mxcsr122    $xmm0 = ADDSDrm killed $xmm0, $rip, 1, _, %const.0, _, implicit $mxcsr123    $xmm1 = ADDSSrm killed $xmm1, $rip, 1, _, %const.1, _, implicit $mxcsr124    $xmm1 = CVTSS2SDrr killed $xmm1, implicit $mxcsr125    $xmm0 = MULSDrr killed $xmm0, killed $xmm1, implicit $mxcsr126    RET64 $xmm0127...128---129# CHECK:  name:  test4130name:            test4131constants:132  - id:          0133    value:       'double 3.250000e+00'134  - id:          1135    value:       'float 6.250000e+00'136body: |137  bb.0.entry:138    ; CHECK:      $xmm0 = ADDSDrm killed $xmm0, $rip, 1, $noreg, %const.1 - 12, $noreg, implicit $mxcsr139    ; CHECK-NEXT: $xmm1 = ADDSSrm killed $xmm1, $rip, 1, $noreg, %const.0 + 8, $noreg, implicit $mxcsr140    $xmm0 = ADDSDrm killed $xmm0, $rip, 1, _, %const.1 - 12, _, implicit $mxcsr141    $xmm1 = ADDSSrm killed $xmm1, $rip, 1, _, %const.0 + 8, _, implicit $mxcsr142    $xmm1 = CVTSS2SDrr killed $xmm1, implicit $mxcsr143    $xmm0 = MULSDrr killed $xmm0, killed $xmm1, implicit $mxcsr144    RET64 $xmm0145...146