reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121
  122
  123
  124
  125
  126
  127
  128
  129
  130
  131
  132
  133
  134
  135
  136
  137
  138
; RUN: llc -march=mips < %s
; RUN: llc -march=mips -mattr=+msa,+fp64,+mips32r2 < %s
; RUN: llc -march=mipsel < %s
; RUN: llc -march=mipsel -mattr=+msa,+fp64,+mips32r2 < %s

; This test originally failed for MSA with a
; `Opc && "Cannot copy registers"' assertion.
; It should at least successfully build.

define void @autogen_SD1935737938(i8*, i32*, i64*, i32, i64, i8) {
BB:
  %A4 = alloca i64
  %A3 = alloca <4 x i32>
  %A2 = alloca i64
  %A1 = alloca i32
  %A = alloca <2 x i64>
  %L = load i8, i8* %0
  store i8 -1, i8* %0
  %E = extractelement <2 x i32> zeroinitializer, i32 0
  %Shuff = shufflevector <2 x i32> zeroinitializer, <2 x i32> zeroinitializer, <2 x i32> <i32 1, i32 3>
  %I = insertelement <1 x i64> <i64 -1>, i64 286689, i32 0
  %B = lshr i8 %L, -69
  %ZE = fpext float 0xBF2AA5FE80000000 to double
  %Sl = select i1 true, <1 x i64> <i64 -1>, <1 x i64> <i64 -1>
  %L5 = load i8, i8* %0
  store i8 -69, i8* %0
  %E6 = extractelement <16 x i64> <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>, i32 14
  %Shuff7 = shufflevector <2 x i32> zeroinitializer, <2 x i32> zeroinitializer, <2 x i32> <i32 1, i32 3>
  %I8 = insertelement <2 x i32> zeroinitializer, i32 135673, i32 1
  %B9 = udiv i8 %B, %B
  %FC = uitofp i32 %3 to double
  %Sl10 = select i1 true, <1 x i1> zeroinitializer, <1 x i1> zeroinitializer
  %Cmp = icmp ne <1 x i64> %I, <i64 -1>
  %L11 = load i8, i8* %0
  store i8 %L11, i8* %0
  %E12 = extractelement <1 x i64> <i64 -1>, i32 0
  %Shuff13 = shufflevector <1 x i64> %Sl, <1 x i64> <i64 -1>, <1 x i32> <i32 1>
  %I14 = insertelement <1 x i64> %I, i64 303290, i32 0
  %B15 = frem float 0.000000e+00, 0.000000e+00
  %Sl16 = select i1 true, <1 x i1> %Cmp, <1 x i1> zeroinitializer
  %Cmp17 = fcmp one float 0xBD946F9840000000, %B15
  br label %CF74

CF74:                                             ; preds = %CF74, %CF80, %CF76, %BB
  %L18 = load i8, i8* %0
  store i8 -69, i8* %0
  %E19 = extractelement <1 x i64> %Sl, i32 0
  %Shuff20 = shufflevector <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, <8 x i32> <i32 12, i32 14, i32 0, i32 2, i32 4, i32 6, i32 8, i32 10>
  %I21 = insertelement <2 x i32> %Shuff, i32 135673, i32 0
  %B22 = urem i32 135673, %3
  %FC23 = sitofp i8 %L to float
  %Sl24 = select i1 true, i8 %B, i8 %L18
  %L25 = load i8, i8* %0
  store i8 %L, i8* %0
  %E26 = extractelement <2 x i32> %Shuff, i32 1
  %Shuff27 = shufflevector <2 x i32> zeroinitializer, <2 x i32> zeroinitializer, <2 x i32> <i32 2, i32 0>
  %I28 = insertelement <16 x i64> <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>, i64 %E12, i32 8
  %B29 = frem double %ZE, 0x235104F0E94F406E
  %Tr = trunc i64 286689 to i8
  %Sl30 = select i1 true, float 0x45B13EA500000000, float %B15
  %Cmp31 = icmp eq i32 %B22, %B22
  br i1 %Cmp31, label %CF74, label %CF80

CF80:                                             ; preds = %CF74
  %L32 = load i8, i8* %0
  store i8 -1, i8* %0
  %E33 = extractelement <2 x i32> zeroinitializer, i32 1
  %Shuff34 = shufflevector <1 x i64> %Shuff13, <1 x i64> <i64 -1>, <1 x i32> zeroinitializer
  %I35 = insertelement <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>, i8 -1, i32 0
  %FC36 = sitofp <1 x i1> %Cmp to <1 x float>
  %Sl37 = select i1 true, <8 x i8> %Shuff20, <8 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
  %Cmp38 = icmp sgt <2 x i32> %I21, %Shuff27
  %L39 = load i8, i8* %0
  store i8 %Sl24, i8* %0
  %E40 = extractelement <8 x i64> zeroinitializer, i32 1
  %Shuff41 = shufflevector <2 x i1> zeroinitializer, <2 x i1> %Cmp38, <2 x i32> <i32 0, i32 2>
  %I42 = insertelement <4 x i32> zeroinitializer, i32 414573, i32 2
  %B43 = srem i8 %L5, %L39
  %Sl44 = select i1 %Cmp17, i8 %L, i8 %L
  %Cmp45 = fcmp une float 0x3AFCE1A0C0000000, 0.000000e+00
  br i1 %Cmp45, label %CF74, label %CF76

CF76:                                             ; preds = %CF80
  %L46 = load i8, i8* %0
  store i8 %L39, i8* %0
  %E47 = extractelement <2 x i32> %Shuff27, i32 0
  %Shuff48 = shufflevector <1 x i1> %Sl10, <1 x i1> %Sl10, <1 x i32> <i32 1>
  %I49 = insertelement <1 x i64> <i64 -1>, i64 %E12, i32 0
  %FC50 = fptosi double 0x235104F0E94F406E to i32
  %Sl51 = select i1 %Cmp17, <16 x i64> %I28, <16 x i64> %I28
  %Cmp52 = icmp ne i8 %Tr, %Sl24
  br i1 %Cmp52, label %CF74, label %CF75

CF75:                                             ; preds = %CF75, %CF76
  %L53 = load i8, i8* %0
  store i8 %L18, i8* %0
  %E54 = extractelement <8 x i8> %Shuff20, i32 5
  %Shuff55 = shufflevector <2 x i32> %Shuff, <2 x i32> zeroinitializer, <2 x i32> <i32 0, i32 2>
  %I56 = insertelement <4 x i32> %I42, i32 %B22, i32 2
  %B57 = sub i64 %E40, %E6
  %Sl58 = select i1 true, i64 303290, i64 %E40
  %Cmp59 = icmp slt i64 %E40, %E6
  br i1 %Cmp59, label %CF75, label %CF78

CF78:                                             ; preds = %CF75
  %L60 = load i8, i8* %0
  store i8 -69, i8* %0
  %E61 = extractelement <2 x i32> zeroinitializer, i32 0
  %Shuff62 = shufflevector <2 x i32> %Shuff7, <2 x i32> %I21, <2 x i32> <i32 1, i32 3>
  %I63 = insertelement <1 x i1> %Sl16, i1 %Cmp45, i32 0
  %B64 = and i8 %Sl44, -69
  %ZE65 = zext <1 x i1> %Shuff48 to <1 x i64>
  %Sl66 = select i1 true, <1 x i64> %I, <1 x i64> %I49
  %Cmp67 = icmp ugt i64 286689, %E40
  br label %CF

CF:                                               ; preds = %CF, %CF78
  %L68 = load i8, i8* %0
  store i64 %B57, i64* %2
  %E69 = extractelement <2 x i1> %Shuff41, i32 1
  br i1 %E69, label %CF, label %CF77

CF77:                                             ; preds = %CF77, %CF
  %Shuff70 = shufflevector <1 x i64> %Shuff34, <1 x i64> <i64 -1>, <1 x i32> zeroinitializer
  %I71 = insertelement <2 x i32> %Shuff, i32 %E26, i32 0
  %Se = sext i8 %L60 to i32
  %Sl72 = select i1 %Cmp45, <2 x i32> %Shuff62, <2 x i32> %I71
  %Cmp73 = fcmp ugt double 0x235104F0E94F406E, 0x235104F0E94F406E
  br i1 %Cmp73, label %CF77, label %CF79

CF79:                                             ; preds = %CF77
  store i8 %L18, i8* %0
  store i8 %E54, i8* %0
  store i8 %L39, i8* %0
  store i8 %L39, i8* %0
  store i8 %B, i8* %0
  ret void
}