Skip to content

Instantly share code, notes, and snippets.

; ModuleID = 'main.ll'
source_filename = "main.ll"
target datalayout = "e-p:16:8-i8:8-i16:8-i32:8-i64:8-f32:8-f64:8-n8-a:8"
target triple = "avr-atmel-linux-gnueabihf"
%TSf = type <{ float }>
%T4main8TestModeO = type <{ i8 }>
%T4main4iLEDV = type <{ %Ts5UInt8V, [3 x i8], %T4main4iLEDV13Configuration33_2F33BF8CAB42E877BE364AC90BA6E106LLV, [2 x i8], %T4main4iLEDV5State33_2F33BF8CAB42E877BE364AC90BA6E106LLV }>
%Ts5UInt8V = type <{ i8 }>
%T4main4iLEDV13Configuration33_2F33BF8CAB42E877BE364AC90BA6E106LLV = type <{ %Ts6UInt16V, %TSb, %TSb, %Ts6UInt16V, [2 x i8], %T4main4iLEDV13AnimationModeO, %TSb, [2 x i8], %Ts6UInt32V, %Ts6UInt16V }>
// Demo from live coding demo on Twitter.
// Swift for Arduino. Arduino UNO native code, using Grove 'neopixel' stick.
// Gives the effect of the scanner on 'K.I.T.T.' from Knight Rider.
//
// Libraries: iLEDHelpers.swift
//------------------------------------------------------------------------------
import AVR
typealias IntegerLiteralType = Pin
PR37143.ll failing but it might not need a fail, new version uses X which is less efficient, could see why selection isn't using Z
FAIL: LLVM :: CodeGen/AVR/PR37143.ll (3 of 125)
******************** TEST 'LLVM :: CodeGen/AVR/PR37143.ll' FAILED ********************
Script:
--
: 'RUN: at line 1'; /Code/llvm-build3/bin/llc -mattr=avr6,sram < /Code/llvm/test/CodeGen/AVR/PR37143.ll -march=avr | /Code/llvm-build3/bin/FileCheck /Code/llvm/test/CodeGen/AVR/PR37143.ll
--
Exit Code: 1
diff --git a/lib/Target/AVR/AVRISelLowering.cpp b/lib/Target/AVR/AVRISelLowering.cpp
index fa8b5d4d3d7..1ff97910e4d 100644
--- a/lib/Target/AVR/AVRISelLowering.cpp
+++ b/lib/Target/AVR/AVRISelLowering.cpp
@@ -1307,32 +1307,36 @@ SDValue AVRTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
InVals);
}
-/// Reverse splitted return values to get the "big endian" format required
+/// Reverse splitted return values to "big endian" order
@carlos4242
carlos4242 / gist:e7bd5c8bba0d7fb94f02ce02f9ed5189
Created January 30, 2019 11:23
Debug output from llvm AVR backend umul.with.overflow.i16 bug
Carls-MacBook-Air:AVR carlpeto$ ../../../build/llvm-patched/bin/llc -O3 -march=avr -debug < umul.with.overflow.i16-bug.ll
Args: ../../../build/llvm-patched/bin/llc -O3 -march=avr -debug
Features:
CPU:avr2
discovered a new reachable node %entry
.text
.file "<stdin>"
discovered a new reachable node %entry
Carls-MacBook-Air:AVR carlpeto$ /Users/carlpeto/llvm/llvm2/llvm-avr/build/llvm/bin/llc < mc-block-order-regression.ll -O1 -march=avr -debug -print-after-all
Args: /Users/carlpeto/llvm/llvm2/llvm-avr/build/llvm/bin/llc -O1 -march=avr -debug -print-after-all
Features:
CPU:avr2
discovered a new reachable node %entry
discovered a new reachable node %9
discovered a new reachable node %2
discovered a new reachable node %8
let storedBrightnessLocation: UInt16 = 34
let storedOnOffLocation: UInt16 = 35
let brightnessi2cRegister = 6
let onOffi2cRegister = 7
// defaults until EEPROM is read
var delayFactor = 90
var delayUs: UInt32 = 9000
var enabled = false
// the core of the program, a delayed triac fire a set time after zero cross
setupPin2InterruptCallback(edgeType: RISING_EDGE) {
setupTimerSingleShotInterruptCallback(microseconds: delayUs) {
digitalWrite(pin: triacPin, value: HIGH)
delay(microseconds: 200)
digitalWrite(pin: triacPin, value: LOW)
}
}
@carlos4242
carlos4242 / gist:3409e0762bfaa7b4223e5252e18642bd
Created February 16, 2017 18:27
using BDD to test my RxSwift enabled service, how to stop a variable emitting a value when first bound
context("get messages") {
var messagesReceived: [Message]?
var parameterVariable = Variable<GetMessageParams>?((nil,nil,nil,nil))
beforeEach {
MessagesService.observableService(parametersObservable: parameterVariable.asObservable())
{ (service: MessagesService, params: GetMessageParams, callback: @escaping ([Message]?)->Void) in
service.getMessages(params: params) { messages in
callback(messages)
}